Individual Subject FEAT
Once pre-processing (pre-stats) have been performed, individual runs can be analyzed. The heart and soul of the FEAT run is the stats tab, where regressors are applied to the matrix. However it is good practice to work through the top two buttons and then the tabs in order from left to right.
Step 1: Top Tabs
Analysis tab: choose ‘first level analysis’
This button, at the top left, allows you to specify whether you are doing a) an individual analysis (called ‘first-level’) or b) a within-subject or between-subject (called ‘higher level’) analysis. Because group analyses can be within-subject (eg, comparing a subject’s response to a Stroop task pre- and post- some condition, like receiving a medication or getting sad) or between subjects (eg, comparing all subjects on a Stroop task) this tab calls group analyses ‘higher level’ rather than ‘group’. For an individual subject’s single run on a task, select ‘First-level analysis.’
This button, at the top left, specifies whether you are pre-processing, applying regressors to your matrix, or determining cluster size. Depending on what you select, different tabs will be available in the GUI. You can play around with various settings to see how this works.
1. Pre-stats = pre-processing. You don’t specify regressors or obtain contrasts here, you just do motion correction and spatial smoothing. As explained above, by keeping this stage separate from stats, you save time in the long run by completing only pre-processing your data once, with the almost certain knowledge that you will try several different regressors to model your data.
2. Stats = applying regressors to your model, and generating contrasts. This is what you are most interested in.
3. Post-stats = specifying what a) voxel intensity and b) cluster size you are interested in. In general you will be minimally specific in FEAT, and then manipulate these variables in FSL View, explained several chapers from now.
For individual studies, select ‘Stats and Post-Stats,’ because you have already pre-processed your data (if you haven’t go complete the pre-processing steps – explained in separate writeup.)
Step 2: Misc Tab
Balloon Help: Allows you to place cursor over a tab or box of interest and an FSL explanation will pop up. Once these become annoying enough, turn Balloon Help off.
Featwatcher: When you plress ‘go’ a the end of setting up your GUI, a progress box will open telling you about a) errors that FSL encounters, thereby explaining program failures b) what percent complete you are c) when the run is complete.
Delay before starting (hours): If you know that there is a lot of demand for processor power, and that your run will take so long to complete that it might as well be done overnight, you can set the delay here to allow you or others to use the CPU for other programs. IF you press ‘go’ and no Featwatcher pops up, it is likely that you have set the delay – as in this example – for an hour or more. If this was a mistake, delete the directory, correct the value to ‘0’, and run again.
Brain/background threshold, %: Normally should be set to 10%.
Step 3: Data Tab
The data tab should look like this:
Select 4D- Data: Choose the preprocessed data you completed earlier.
Output Directory: For individual results, this will be in x### (eg, subject number)/S1.
Delete Volumes: You always need to delete 6 seconds worth – 2 volumes if TR = 3, 3 volumes if TR = 2. This is the industry standard. Why do this? Practically this is because the first 6 seconds of your experiment were – if you designed it right – fixation as the subject waited for things to begin. Conceptually, the reason you designed things this way can be seen by opening any functional scan .hdr file before deleting the first volumes. Look at the difference between the first 3 (if TR = 2) or 2 (if TR = 3) acquisitions and the rest. See how much variation there is in signal early on? This is a product of the RF pulse hitting the brain and throwing it for an intial loop before going into steady state. You need to eliminate this.
Total volumes should load automatically when you select your
High pass filter cutoff: Set to 100 s
Step 4: Pre-Stats Tab
This should have been done during the preprocessing. So if you have selected ‘Stats + Post-stats’ this tab will be greyed out.
Step 5: Stats Tab – EVs and Contrasts
The production of regressors (explanatory variables) has been reviewed conceptually elsewhere.
Number of EVs: Specify how many regressors you want here. A tab should magically appear for each one. SPM users and statisticians – note that in an individual analaysis, a column of 1s (looking for a baseline of common activation across all blocks/events) is automatically added by FSL and does NOT need to be specified. Add only the EVs that you are interested in. Note that you can leave your baseline regressor implicit and specify only regressors that you are actually interested in. For example, in a study design with three block types – fixation, neutral, and emotional – you could leave fixation implicit and specify only emotion and neutral. This kind of design allows you to see what activity is present in neutral but not fixation. If you are not interested in this, your design should not have included fixation, and you would specify only emotion, while leaving neutral implicit.
Basic shape: Custom 3-column format. Then create a text file specifying the regressor. These text files should be stored in the ‘model’ folder at the study level if they are generic, or at the individual level if they are unique to individuals. The 3 columns are:
1. Starting second
2. Duration of block/event (in seconds)
3. Magnitude of regressor
Filename: Choose the .txt file you just made!
Convolution: Double-gamma HRF
Apply temporal filtering: yes
Orthogonalize: This is a concept topic and should be discussed with a statistician. However in a general way checking this box applies common variance to ONLY the checked regressor.
Add temporal Derivative box:
This is a decision point; there is no right answer. FSL explains temporal derivatives like this:
“Adding a fraction of the temporal derivative of the blurred original waveform is equivalent to shifting the waveform slightly in time, in order to achieve a slightly better fit to the data. Thus adding in the temporal derivative of a waveform into the design matrix allows a better fit for the whole model, reducing unexplained noise, and increasing resulting statistical significances. Thus, setting Add temporal derivative produces a new waveform in the final design matrix (next to the waveform from which it was derived) This option is not available if you are using basis functions.”
Adding a temporal derivative is therefore, in a sense, a ‘hedge’ against your regressor being too specific. In the vernacular, adding a temporal derivative is like asking for a little ‘wiggle room’, or like saying ‘can you give me a break if my derivative is ‘close’ to the behavior of a voxel; it’s like asking for partial credit on a test, and so on and so forth. To some it is a way of cheating; to others it is a frank acknowledgement that your prediction of a voxel’s behavior may be close but no cigar, and that you need to be a bit generous with yourself.
From another perspective, the temporal derivative is a safeguard against the diverse distribution of hemodynamic lags throughout the brain. The hemodynamic response has displayed immense temporal variation in different parts of the brain, a feature of neurophysiology that could prove devastating to your analysis if not considered. Imagine what would happen if the prefrontal cortex and the amygdala were simultaneously active during some cognitive task, but each structure responded differently. In four seconds, the prefrontal cortex receives increased bloodflow, while the amygdala takes six seconds for its hemodynamic response to kick in. If we were to use a uniform hemodynamic response curve in our statistical analysis, it is unlikely that these areas would be found to activate together and fit to one EV. Adding fractions of the temporal derivative compensates by shifting your regressor in time slightly if it helps achieve a better fit with a voxel’s activity in some brain area.
Contrasts & F-Tests Tab
Contrast tab allows you to manipulate your various regressors. This is where ‘subtractions’ occur (eg, affect greater than neutral – see tab below). It is crucial to remember the order of these OCs – original contrasts – because this order determines the order of zstats in the final run that you will be viewing in FSLview. Use a system for recording this order; in addition, as discussed earlier, you may want to specify this order in the name of your file.
Be thoughtful about the ‘title’ given to each OC, as this determines how the results will be listed in your FEAT report and in your design graph.
View design/ View covariance
Design (convolved with hemodynamic response) Covariance matrix
The design tab should produce an image like this. The red lines and the tone of the block convey the SAME information. The red line is your EV convolved with the canonical hemodynamic response. Viewing the named contrast at the bottom (look for the 1s) allows you to visually inspect each regressor. Light blocks and rightward deviations of the line imply ELEVATIONS relative to baseline; dark blocks and leftward deviations imply DECREASES. White = bad design, black = good design.
For unclear reasons FSL leaves these columns and rows unlabled. However they are determined by the contrasts you specify – left to right, and again top to bottom, each row/column stands for one of your contrasts. The resultant tone denotes the degree of covariance of these two contrasts. The less overlap – eg, the more independent the two predictions are – the darker the block. This explains why the diagonal white line is always white – each contrast is a linear combination of itself.
Done: Once you have reviewed your design, press ‘done’. This box will pop up. It is good practice to write down your linear combination score, as low scores help explain null results for regressors of interest – there may have been too much competition between common EVs to explain variance for the good of the model.
Step 6: Post-Stats Tab
The two things that you change on this tab are the z threshold and the cluster p threshold.
The z threshold simply determines the minimum z-score a voxel needs to be published. You can always raise your threshold later, in FSL view, but your blobs get uglier then than they will if you set the right threshold here.
1.65 is publishable (p=.05) . 2.3 (p=.01)is very respectable and you probably don’t want to go higher at this stage. Please note that many people publish voxels with p’s in the .0000001 range. Why? Because they had a lot of crap in their images, activations in CSF and white matter and the cursed cerebellum, and they don’t want it, so they raise the threshold to get what they like. Publishing at low thresholds, if you can still produce nice images, is actually very impressive. P’s aren’t all they are cracked up to be.
The cluster p is FSL’s version of SPM’s option of deciding how many voxels need to be adjacent to one another to be shown. SPM gives you more control over your images.
There’s a lot of theory behind choosing these numbers, but from a practical perspective, what you will find is this: the higher your z the fewer spare voxels you’ll get (pepperoni pizza syndrome) but, on the other hand, the more likely you are to lose activaitons you like. And the higher your cluster, the more smooth and round and less hole-filled your clusters will be, but again, you are going to lose activations.
It is smart to start at z= 1.65 and cluster p = .05, and from there to move to 1.96/.01v.05, and from there to 2.3 and .05/.01
Step 7: Registration
Registration is a three step process:
a. take your functional image and
b. map it onto the individual subject’s brain and
c. map that onto the global Montreal Neurological Institute Brain.
When you pre-processed your data you did not register it. Now you will. Key concept: the entire Registration tab ‘assumes’ that you are registering the subjects middle T2* image to the MNI image.
If you leave initial structural image unchecked, it will register the subject’s middle T2* image against the subject’s highres image and then that against the MNI brain. If you use the subject’s middle lowres (T2*) image against the first T2* image against the highres against the MNI brain. This adds more specificity because the initial image has greater contrast.
Initial structural image: This is going to be a .hdr.gz or .hdr file (depending on if its’ unzipped). In general, if you following the naming rules used here, for run 1 it will be r1.hdr.gz, for run 2 it will be r2.hdr.gz.
WHAT IS THIS THING? Well, it is the initial volume from your functional scan. That’s right, it is incredibly stupidly named in the GUI, because it has nothing to do with your highres image. Its the first functional image.
Main structural image: That’s right, its your highres image! It should be stored in the subject’s highres folder!
Standard space: The montreal brain.
Degrees of freedom: Discuss with colleagues what they use. The defauls is 7 12 12 but 6 12 12 is reasonable also. Different scanners do best with different specifications.
Now run your design.fsf!
FEATwatcher should inform you of its progress. When done, check results in FSLview (reviewed elsewhere)
What if I press go, and my FEATWATCHER doesn’t pop up?
You probably set the MISC tab to run the program several hours in the future. Re-set to 0 and run.
What if FEAT is running super slowly?
Type ‘top I’ and see how much CPU space you are getting. Not much, because a lot of other people are running? Consider programming your other runs to start at midnight (eg, see FAQ above).
One good thing when a program crashes: the .fsf program that ran it is saved in the .feat or .gfeat folder that was produced.
1. Look at the report.log of that run to find the error
2. Load the .fsf
THEN and ONLY then rm –r the .feat folder before running again.
Saving programs before you run them
It may be a good idea to save your program from the start, and to resave periodically. At the end, you will have an .fsf to load next time you want to run the program, rather than having to load all the values in again. This is one of the primary advantages of FSL over SPM – you can do this sort of repeat work.
Click on ‘Save’ at the bottom of the FEAT GUI. You get this:
1. “Filter” indicates where the file will be stored, and FSL conveniently plans to name your file .fsf, that’s what /*.fsf means. All you will need to do is provide the name.
2. Under ‘Selection” at the bottom you write the name of the file. Remember, DON’T name it for the specific subject you are running – name it for the generic task it is performing. You will be changing individual specifications to run your various subjects. This is what will save you a lot of time.
3. Name should follow naming rules that make sense to you. I use a name that specifies the regressors and z-score cutoff and date.