Skip to content

Commit b4109a7

Browse files
committed
Updated source analysis tutorial
1 parent 91d00b4 commit b4109a7

File tree

6 files changed

+240
-506
lines changed

6 files changed

+240
-506
lines changed
143 KB
Loading
39.1 KB
Loading
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
2+
### Group Statistics on Source Reconstructions
3+
4+
Now we have a new set of 16$\times$<!-- -->3 GIfTI images for the power
5+
between 10-20Hz and 100-250ms for each subject for each condition after
6+
group-inversion, we can put them into the same repeated-measures ANOVA
7+
that we used above, i.e., the `batch_stats_rmANOVA_job.m` file. This can
8+
be scripted as (i.e, simply changing the output directories at the start
9+
from, e.g, `IndMSPStats` to `GrpMSPStats`).
10+
11+
```matlab
12+
srcstatsdir{1} = fullfile(outpth,'MEEG','GrpMSPStats');
13+
srcstatsdir{2} = fullfile(outpth,'MEEG','GrpMNMStats');
14+
15+
jobfile = {fullfile(scrpth,'batch_stats_rmANOVA_job.m')};
16+
17+
for val = 1:length(srcstatsdir)
18+
if ~exist(srcstatsdir{val})
19+
eval(sprintf('!mkdir %s',srcstatsdir{val}));
20+
end
21+
22+
inputs = cell(nsub+1, 1);
23+
inputs{1} = {srcstatsdir{val}};
24+
for s = 1:nsub
25+
inputs{s+1,1} = cellstr(strvcat(spm_select('FPList',fullfile(outpth,subdir{s},'MEEG'),sprintf('^apMcbdspmeeg_run_01_sss_%d.*\.gii',val))));
26+
end
27+
28+
spm_jobman('serial', jobfile, '', inputs{:});
29+
end
30+
```
31+
32+
When it has run, press "Results" from the SPM Menu window and select the
33+
`SPM.mat` file in the relevant output directories. You will notice that
34+
the results for minimum norm have not changed much -- a lot of voxels
35+
remain significant after correction, but in a broadly distributed swathe
36+
of ventral temporal lobe. For the results in the `MEEG/GrpMSPStats`
37+
directory, there is a small anterior right temporal cluster that
38+
survives correction. But if you lower the threshold to $p<.001$
39+
uncorrected, you should see results like in
40+
Figure <a href="#multi:fig:15" data-reference-type="ref"
41+
data-reference="multi:fig:15">1.15</a>, which includes more focal
42+
regions in the ventral temporal lobe, and importantly, more such regions
43+
that for the individual MSP inversions the `MEEG/IndMSPStats` directory
44+
(demonstrating the advantage of group-based inversion).
45+
46+
<figure id="multi:fig:15">
47+
<div class="center">
48+
<img src="../../../../assets/figures/manual/multi/figure15.png" style="width:150mm" />
49+
</div>
50+
<figcaption><em>Group SPM for Faces vs Scrambled power on cortical mesh
51+
between 10-20Hz and 100-250ms across all 16 subjects at <span
52+
class="math inline"><em>p</em> &lt; .001</span>uncorrected, using
53+
Group-optimised MSP. <span id="multi:fig:15"
54+
label="multi:fig:15"></span></em></figcaption>
55+
</figure>
56+
57+
## Group MEEG Source Reconstruction with fMRI priors
58+
59+
Finally, in an example of full multi-modal integration, we will use the
60+
significant clusters in the group fMRI analysis as separate spatial
61+
priors for the group-optimised source reconstruction of the fused MEG
62+
and EEG data (see \[Henson et al, 2011\]). Each cluster becomes a
63+
separate prior, allowing for fact that activity in those clusters may
64+
occur at different post-stimulus times.
65+
66+
This group-based inversion can be implemented in SPM simply by selecting
67+
the binary (thresholded) image we created from the group fMRI statistics
68+
(`fac-scr_fmri_05_cor.nii` in the `BOLD` directory), which contains
69+
non-zero values for voxels to be included in the clustered priors. This
70+
is simply an option in the inversion module, so can scripted like this
71+
(using the same batch file as before, noting that this includes two
72+
inversions -- MNM and MSP -- hence the two inputs of the same data files
73+
below):
74+
75+
```matlab
76+
jobfile = {fullfile(scrpth,'batch_localise_evoked_job.m')};
77+
tmp = cell(nsub,1);
78+
for s = 1:nsub
79+
tmp{s} = spm_select('FPList',fullfile(outpth,subdir{s},'MEEG'),'^apMcbdspmeeg.*\.mat');
80+
end
81+
inputs = cell(4,1);
82+
inputs{1} = cellstr(strvcat(tmp{:}));
83+
inputs{2} = {fullfile(outpth,'BOLD','fac-scr_fmri_05cor.nii')}; % Group fMRI priors
84+
inputs{3} = cellstr(strvcat(tmp{:}));
85+
inputs{4} = {fullfile(outpth,'BOLD','fac-scr_fmri_05cor.nii')}; % Group fMRI priors
86+
spm_jobman('serial', jobfile, '', inputs{:});
87+
```
88+
89+
Note again that once you have run this, the previous "group" inversions
90+
in the data files will have been overwritten (you could modify the batch
91+
to add new inversion indices `5` and `6`, so as to compare with previous
92+
inversions above, but the file will get very big). Note also that we
93+
have used group-defined fMRI priors, but the scripts can easily be
94+
modified to define fMRI clusters on each individual subject's 1st-level
95+
fMRI models, and use subject-specific source priors here.
96+
97+
### Group Statistics on Source Reconstructions
98+
99+
After running the attached script, we will have a new set of
100+
16$\times$<!-- -->3 GIfTI images for the power between 10-20Hz and
101+
100-250ms for each subject for each condition after group-inversion
102+
using fMRI priors, and can put them into the same repeated-measures
103+
ANOVA that we used above, i.e. the `batch_stats_rmANOVA_job.m` file.
104+
This can be scripted as (i.e. simply changing the output directories at
105+
the start from, e.g. `GrpMNMStats` to `fMRIGrpMNMStats`).
106+
107+
```matlab
108+
srcstatsdir{1} = fullfile(outpth,'MEEG','fMRIGrpMSPStats');
109+
srcstatsdir{2} = fullfile(outpth,'MEEG','fMRIGrpMNMStats');
110+
111+
jobfile = {fullfile(scrpth,'batch_stats_rmANOVA_job.m')};
112+
113+
for val = 1:length(srcstatsdir)
114+
if ~exist(srcstatsdir{val})
115+
eval(sprintf('!mkdir %s',srcstatsdir{val}));
116+
end
117+
118+
inputs = cell(nsub+1, 1);
119+
inputs{1} = {srcstatsdir{val}};
120+
for s = 1:nsub
121+
inputs{s+1,1} = cellstr(strvcat(spm_select('FPList',fullfile(outpth,subdir{s},'MEEG'),...
122+
sprintf('^apMcbdspmeeg_run_01_sss_%d.*\.gii$',val))));
123+
end
124+
125+
spm_jobman('serial', jobfile, '', inputs{:});
126+
end
127+
```
128+
129+
When it has run, press "Results" from the SPM Menu window an select the
130+
`SPM.mat` file from the `fMRIGrpMSPStats` directory, and choose an
131+
uncorrected threshold of $p<.001$. You should see results like in
132+
Figure <a href="#multi:fig:16" data-reference-type="ref"
133+
data-reference="multi:fig:16">1.16</a>, which you can compare to
134+
Figure <a href="#multi:fig:15" data-reference-type="ref"
135+
data-reference="multi:fig:15">1.15</a>. The fMRI priors have improved
136+
consistency across subjects, even in medial temporal lobe regions, as
137+
well as increasing significance of more posterior and lateral temporal
138+
regions (cf., Figure <a href="#multi:fig:11" data-reference-type="ref"
139+
data-reference="multi:fig:11">1.11</a>, at $p<.001$ uncorrected).
140+
141+
<figure id="multi:fig:16">
142+
<div class="center">
143+
<img src="../../../../assets/figures/manual/multi/figure16.png" style="width:150mm" />
144+
</div>
145+
<figcaption><em>Group SPM for Faces vs Scrambled power on cortical mesh
146+
between 10-20Hz and 100-250ms across all 16 subjects at <span
147+
class="math inline"><em>p</em> &lt; .001</span> uncorrected, using
148+
Group-optimised MSP and fMRI priors. <span id="multi:fig:16"
149+
label="multi:fig:16"></span></em></figcaption>
150+
</figure>
151+
152+
--8<-- "addons/abbreviations.md"
109 KB
Loading
22.6 KB
Loading

0 commit comments

Comments
 (0)