Make_first_level_design_matrix

Hello,

I have some questions about the argument in make_first_level_design_matrix:

  1. do I need to adjust drift_order if I use a multi-band sequence? how can I get the drift_order?
  2. does fir_delay do anything with the slice_time _ref?
  3. I have 6 runs of scan per subject, am I right to fit all the design matrices per subject as
    FirstLevelModel.fit(bold, design_matrices=design_matrices)
    in which the design_matrices are the .append(design_matrix) of each run of the design_matrix per subject from design_matrix = make_first_level_design_matrix(frame_times, this_event, add_regs=this_conf, hrf_model='spm', high_pass=1./128) ?
  4. I can retrieve the design matrices after fitting the first-level model by FirstLevelModel.design_matrices_
    when I do FirstLevelModel.compute_contrast, does it compute the 6 runs together?
    In FirstLevelModel, it says “In multi-run case, outputs the fixed effects map.”, what does it mean " fixed effects map"?
  5. If I want to extract the beta value from a condition vs baseline, does it mean I need to do stat_type = ‘F’?

drift_order has nothing to do with multi-band sequence. drift_order relates to the type of model you want to use to model the low frequency noise in your data due to the drift in the scanner data.

No: FIR stands for finite impulse response which is a type of model more commonly used to estimate the shape of the HRF rather than estimate activation.

See this video for more details:

if you have already all the information to construct the design matrix, it seems easier to pass them directly to the fit function which will take care of constructing the design matrix for you.

firs_level = FirstLevelModel(hrf_model='spm', drift_model='cosine', high_pass=1/128)
firs_level.fit(bold, events=this_event, confounds=this_conf)

yes

I think you may want to go through this example see what a fixed effect is in practice: Simple example of two-runs fMRI model fitting - Nilearn

If you want to check “condition vs baseline”, a stat_type = ‘F’ would tell show you things that are significantly above OR below the baseline (so activated AND deactivated regions).
In many cases this is not what you want and so you will probably use a stat_type = ‘t’ to only show you things that are activated.

1 Like

Thank you very much Rémi for all of the information.