<> = Downloading and Installing FIX = Requirements: * [[http://www.fmrib.ox.ac.uk/fsl|FSL]] * MATLAB (though see notes in Introduction page), with official toolboxes: * Statistics * Signal Processing * [[http://www.r-project.org/|R]] free statistics software (version >=3.3.0), with the following packages: * 'kernlab' version 0.9.24 * 'ROCR' version 1.0.7 * 'class' version 7.3.14 * 'party' version 1.0.25 * 'e1071' version 1.6.7 * 'randomForest' version 4.6.12 Setup FIX: * Unpack [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix.tar.gz|FIX (1.06.15)]] with {{{tar xvfz fix.tar.gz}}} (or {{{tar xvf fix.tar}}} if your browser has already uncompressed the file). * Download and install matlab compiled runtime (MCR) for your operating system ([[https://ssd.mathworks.com/supportfiles/downloads/R2019a/Release/7/deployment_files/installer/complete/maci64/MATLAB_Runtime_R2019a_Update_7_maci64.dmg.zip|mac]], [[https://ssd.mathworks.com/supportfiles/downloads/R2017b/deployment_files/R2017b/installers/glnxa64/MCR_R2017b_glnxa64_installer.zip|linux]]) * See the {{{README}}} file for further setup instructions = Running FIX = == Simple usage, assuming training data already exists: == To run use the script "fix" in the FIX directory, e.g.: {{{ /usr/local/fix/fix /usr/local/fix/training_files/Standard.RData 20 }}} You need to feed in a full "first-level" (single-session) output directory () created by the MELODIC or FEAT GUIs, with full registration run, including using a structural. If using FEAT, you need to have had ICA turned on in the {{{Prestats}}}. For the single-subject ICA you should in general use MELODIC's automatic dimensionality estimation (which creates the sub-folder /filtered_func_data.ica). The {{{20}}} refers to the thresholding of good vs bad components; sensible values are generally in the range of 5-20. However, if it is very important to you that almost no good components are removed, and hence you would prefer to leave in the data a larger number of bad components, then use a low threshold (e.g., in the range 1-5). It is strongly recommended that you look at the ICA components yourself to check at least a few of your subjects' classifications - look in the file called something like fix4melview_Standard_thr20.txt - the final line lists the components that are considered as noise to be removed (with counting starting at 1 not 0). When running fix as shown above, you will end up with a cleaned version of the 4D preprocessed FMRI data: {{{filtered_func_data_clean.nii.gz}}}. If you have a compute cluster you can send the whole command to the cluster by preceding it with something like {{{fsl_sub -q long.q ... }}} However, if you are using fix to train the classifier and run leave-one-out testing (see 2.2.3), we recommend that you run fix locally, if your local computer is able to submit jobs to your cluster, as it will do this for you, parallelising the LOO, and greatly speeding it up). == Usage for each stage separately: == The command described above is equivalent to run the following 3 steps: Extract features (for later training and/or classifying). {{{ /usr/local/fix/fix -f }}} Classify ICA components using a specific training dataset ( is in the range 0-100, typically 5-20). {{{ /usr/local/fix/fix -c }}} Apply cleanup, using artefacts listed in the .txt file, to the data inside the enclosing Feat/Melodic directory. This text file can be the output from the step above or can be created manually, in case you want to manually remove the artefactual components. In the second case make sure that the txt file contains a single line (or, at least, should have as its final line) with a list of the bad components only, with the format (for example): [1, 4, 99, ... 140] - note that the square brackets, and use of commas, is required. Also, make sure there is an empty line at the end (i.e. hit return after writing the list). Counting starts at 1, not 0. {{{ /usr/local/fix/fix -a [-m [-h ]] [-A] }}} . -m : optionally also cleanup motion confounds (24 regressors), with highpass filtering of motion confounds controlled by: . - if -h is omitted, fix will look to see if a design.fsf file is present, to find the highpass cutoff. - if -h is omitted, and no design.fsf is present, no filtering of the motion confounds will take place. - if -h is set, then: . -h -1 apply no filtering to motion confounds. -h 0 apply linear detrending only. -h with a positive value, apply highpass with being full-width (2*sigma) in seconds. -A : apply aggressive (full variance) cleanup, instead of the default less-aggressive (unique variance) cleanup. == Training datasets == === Trained-weights files === FIX needs to be trained from multiple datasets that have already had the ICA components classified into "good" and "bad" by hand. We have so far hand-trained a few different types of data, and the trained-weights files from these are supplied with FIX. If you want to train FIX yourself (which in general is recommended), to better optimise it for the kind of data you have, you will need to do this hand classification yourself (at ''least'' 10 subjects). Alternatively, you can use one of the trained-weights {{{*.RData}}} files supplied with FIX. There are currently several trained-weights files supplied: * {{{Standard.RData}}} - for use on more "standard" FMRI datasets / analyses; e.g., TR=3s, Resolution=3.5x3.5x3.5mm, Session=6mins, default FEAT preprocessing (including default spatial smoothing). * {{{HCP_hp2000.RData}}} for use on "minimally-preprocessed" 3T HCP-like datasets, e.g., TR=0.7s, Resolution=2x2x2mm, Session=15mins, no spatial smoothing, minimal (2000s FWHM) highpass temporal filtering. * {{{HCP7T_hp2000.RData}}} for use on "minimally-preprocessed" 7T HCP-like datasets, e.g., TR=1.0s, Resolution=1.6x1.6x1.6mm, Session=15mins, no spatial smoothing, minimal (2000s FWHM) highpass temporal filtering. * {{{WhII_MB6.RData}}} derived from the Whitehall imaging study, using multiband x6 EPI acceleration: TR=1.3s, Resolution=2x2x2mm, Session=10mins, no spatial smoothing, 100s FWHM highpass temporal filtering. * {{{WhII_Standard.RData}}} derived from more traditional early parallel scanning in the Whitehall imaging study, using no EPI acceleration: TR=3s, Resolution=3x3x3mm, Session=10mins, no spatial smoothing, 100s FWHM highpass temporal filtering. * {{{UKBiobank.RData}}} derived from fairly HCP-like scanning in the UK Biobank imaging study: 40 subjects, TR=0.735s, Resolution=2.4x2.4x2.4mm, Session=6mins, no spatial smoothing, 100s FWHM highpass temporal filtering. You can find example training-input data, including our hand-labellings, [[http://www.fmrib.ox.ac.uk/analysis/FIX-training|here]] (note that you do not need this example training-input data in order to run FIX; you just need the trained-weights files included in the FIX directory). === How to create and use a new trained-weights file === To do your own training, for each FEAT/MELODIC output directory, you will need to create a hand_labels_noise.txt file in the output directory. This text file should contain a single line (or, at least, should have as its final line), a list of the bad components only, with the format (for example): [1, 4, 99, ... 140] - note that the square brackets, and use of commas, is required. Counting starts at 1, not 0. Once you have created all of the hand label files, you can then train the classifier (creating the trained-weights file .RData) using the -t option: {{{ /usr/local/fix/fix -t [-l] ... }}} If you include the -l option after the trained-weights output filename, a full leave-one-out test will be run; the results file that gets created at the end has a set of numbers at the end of it that tell you the true-positive-rate (TPR, proportion of "good" components correctly labelled) and the true-negative-rate (TNR, proportion of "bad" components correctly labelled) for a wide range of thresholds (see higher up in the output file for the list of thresholds tested). The output from this command are: Training.RData - the your new trained-weights file to be used for subsequent classification Training - a folder with a copy of the labels and the features of the subjects used to build the training dataset Traning_LOO - a folder containing the intermediate files for the leave-one-out test (if you used the -l option) Traning_LOO_results - a file with the results of the leave-one-out test (if you used the -l option) You can now use your new trained-weights file to classify components in new datasets and then run the cleanup on the new data (see 2.2.2.): /usr/local/fix/fix -c /usr/local/fix/fix -a [-m [-h ]] [-A] [-x ] [-x ] If you want to test the accuracy of an existing training dataset on a set of hand-labelled subjects (e.g. to test whether an existing trained-weights file is suitable to be used for your study or if it’s better to create a new one), you can run the following command: {{{ /usr/local/fix/fix -C ... }}} which classifies the components for all listed Melodic directories over a range of thresholds and produce LOO-style accuracy testing using existing hand classifications. Every Melodic directory must contain hand_labels_noise.txt listing the artefact components, e.g.: [1, 4, 99, ... 140]. == Input files required - in more detail == If you haven't done the full GUI-based MELODIC/FEAT analysis, you will need, in one directory: {{{ filtered_func_data.nii.gz preprocessed 4D data filtered_func_data.ica melodic (command-line program) full output directory mc/prefiltered_func_data_mcf.par motion parameters created by mcflirt (in mc subdirectory) mask.nii.gz valid mask relating to the 4D data mean_func.nii.gz temporal mean of 4D data reg/example_func.nii.gz example image from 4D data reg/highres.nii.gz brain-extracted structural reg/highres2example_func.mat FLIRT transform from structural to functional space design.fsf FEAT/MELODIC setup file; if present, this controls the default temporal filtering of motion parameters }}} = Download past versions of FIX = A selection of past versions of FIX are available at the links below. * [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix-1.06.14.tar.gz|fix-1.06.14.tar.gz]] (MCR: [[https://ssd.mathworks.com/supportfiles/downloads/R2019a/Release/7/deployment_files/installer/complete/maci64/MATLAB_Runtime_R2019a_Update_7_maci64.dmg.zip|mac]], [[https://ssd.mathworks.com/supportfiles/downloads/R2017b/deployment_files/R2017b/installers/glnxa64/MCR_R2017b_glnxa64_installer.zip|linux]]) * [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix-1.06.13.tar.gz|fix-1.06.13.tar.gz]] (MCR: [[https://ssd.mathworks.com/supportfiles/downloads/R2019a/Release/7/deployment_files/installer/complete/maci64/MATLAB_Runtime_R2019a_Update_7_maci64.dmg.zip|mac]], [[https://ssd.mathworks.com/supportfiles/downloads/R2017b/deployment_files/R2017b/installers/glnxa64/MCR_R2017b_glnxa64_installer.zip|linux]]) * [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix-1.06.12.tar.gz|fix-1.06.12.tar.gz]] (MCR: [[https://ssd.mathworks.com/supportfiles/downloads/R2019a/Release/7/deployment_files/installer/complete/maci64/MATLAB_Runtime_R2019a_Update_7_maci64.dmg.zip|mac]], [[https://ssd.mathworks.com/supportfiles/downloads/R2017b/deployment_files/R2017b/installers/glnxa64/MCR_R2017b_glnxa64_installer.zip|linux]]) * [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix-1.06.10.tar.gz|fix-1.06.10.tar.gz]] (MCR: [[https://ssd.mathworks.com/supportfiles/downloads/R2019a/Release/7/deployment_files/installer/complete/maci64/MATLAB_Runtime_R2019a_Update_7_maci64.dmg.zip|mac]], [[https://ssd.mathworks.com/supportfiles/downloads/R2017b/deployment_files/R2017b/installers/glnxa64/MCR_R2017b_glnxa64_installer.zip|linux]]) * [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix1.069.tar.gz|fix1.069.tar.gz]] * [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix1.068.tar.gz|fix1.068.tar.gz]] * [[http://www.fmrib.ox.ac.uk/~steve/ftp/fix1.066.tar.gz|fix1.066.tar.gz]] = Pre-1.069 Changelog = * v1.061 has a tiny change from 1.06, in that it can work with the newest flavours of R that had started to create problems for 1.06. 1.061 can be used with features from 1.05-1.06 and training files from 1.06. * v1.062 has a couple of minor changes to matlab code that means that near-rank-deficiency across the cleanup timeseries is more robustly handled. * v1.063 and v1.064 have a couple of minor bugfixes in matlab code. * v1.065 has a minor change to be compatible with an upcoming change in a future FSL release of smoothest (while still being compatible with older FSL versions). * v1.066 adds an option to only process CIFTI data. * v1.067 adds ability to write out variance normalisation factor images for use in HCP. * v1.068 has some configuration file bugfixes and compiled matlab for MacOS and Linux.)