Downloading and Installing FIX


Setup FIX:

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 <mel.ica> /usr/local/fix/training_files/Standard.RData  20

You need to feed in a full "first-level" (single-session) output directory (<mel.ica>) 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 <mel.ica>/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 <mel.ica>

Classify ICA components using a specific training dataset (<thresh> is in the range 0-100, typically 5-20).

/usr/local/fix/fix -c <mel.ica> <training.RData> <thresh>

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 <mel.ica/fix4melview_TRAIN_thr.txt>  [-m [-h <highpass>]]  [-A]

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:

You can find example training-input data, including our hand-labellings, 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 <Training>.RData) using the -t option:

/usr/local/fix/fix -t <Training> [-l]  <Melodic1.ica> <Melodic2.ica> ...

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 <Melodic-output.ica> <Training.RData> <thresh>

/usr/local/fix/fix -a <mel.ica/fix4melview_TRAIN_thr.txt> [-m [-h <highpass>]] [-A] [-x <confound>] [-x <confound2>]

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 <training.RData> <output> <mel1.ica> <mel2.ica> ...

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.

Pre-1.069 Changelog


FIX/UserGuide (last edited 13:51:49 25-03-2020 by MatthewWebster)