FSL

## Appendix B: Design Matrix Rules

This section describes the rules which are followed in order to take the FEAT setup and produce a design matrix, for use in the FILM GLM processing.

Here HTR model means "high temporal resolution" model - a time series of values that is used temporarily to create a model and apply the relevant HRF convolution before resampling down in time to match the temporal sampling of the FMRI data.

Note that it is assumed that every voxel was captured instantaneously in time, and at the same time, exactly halfway through a volume's time period, not at the beginning. This minimises timing errors, if slice-timing correction has not been applied.

No constant column is added to the model - instead, each EV is demeaned, and each voxel's time-course is demeaned before the GLM is applied.

    for each EV
    (
      if ( square waveform )
        fill HTR model with 0s or 1s
      else if ( sinusoidal waveform )
        fill HTR model with sinusoid scaled to lie in the range 0:1
      else if ( custom waveform )
        fill HTR model with custom information, with 0s outside of
        specified periods

      demean

      create "triggers" i.e. record the start and end of event or block

      create blurring+delaying HTR HRF convolution kernel, normalised so
      that the sum of values is 1 (in the case of basis functions, several
      related kernels are created)

      convolve HTR model with HRF convolution kernel (values in HTR model
      for t<0 are set to 0 to allow simple convolution)
         OR
      in the case of sinusoidal original waveform; create harmonics (if
      requested)

      subsample HTR model to match the temporal resolution of the data;
      take the value in the centre of each volume's time period

      add motion parameters as confound EVs if requested on the command
      line

      do two passes
      (
        take model produced by subsampling step above

        if pass=2 then apply high-pass temporal filtering

        re-demean

        instead of all the above - if this EV is an "interaction"
        (nonlinear interaction between other EVs);
        model = PRODUCT(other EVs, after subtracting the min value from
        each)

        orthogonalise current EV wrt earlier EVs if requested (form
        temporary matrix from selected EVs, carry out SVD, and subtract
        projection of current EV onto each vector in SVD output)

        orthogonalise main model wrt motion parameter EVs if requested

        if requested, create a new EV, calculated as the temporal derivative
        of the current EV

        re-demean

        if pass=1 then estimate peak-peak model heights
        if pass=2 then estimate contrast estimability information
      )
    )