Skip to content
Snippets Groups Projects
Commit 7ba5756f authored by Paul McCarthy's avatar Paul McCarthy
Browse files

Unit tests for featdesign module. Still need to test voxelwise EVs

parent 2b5d433f
No related branches found
No related tags found
No related merge requests found
Showing
with 976 additions and 0 deletions
#!/usr/bin/env python
#
# test_featdesign.py -
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""Test data sets (in testdata/test_feat) were generated with FSL 5.0.9, and
then 'cleaned' to remove unnecessary files and reduce size, with the following
commands:
First level analyses:
find . -name "*png" -delete
find . -name "*ppm" -delete
find . -name "*html" -delete
rm -r logs .files tsplot .ramp.gif
for f in `find . -name "*nii.gz"`; do
echo $f > $f
done
Second level analyses:
find . -name "*png" -delete
find . -name "*ppm" -delete
find . -name "*html" -delete
rm -r logs .files .ramp.gif
for f in `find . -name "*nii.gz"`; do
echo $f > $f
done
Second level cope?.feats:
rm -r logs .files tsplot .ramp.gif
`1stlevel_1.feat`
- 45 time points
- 10 EVs in total:
- 2 stimulus EVs
- 2 temporal derivative EVs
- 6 Standard motion parameters
- 2 contrasts - one on each stimulus EV
`1stlevel_2.feat`
- 45 time points
- 11 EVs in total:
- 2 stimulus EVs
- 2 temporal derivative EVs
- 1 voxelwise EV
- 6 Standard motion parameters
- 2 contrasts - one on each stimulus EV
`1stlevel_3.feat`
- 45 time points
- 32 EVs in total:
- 2 stimulus EVs
- 1 Temporal derivative EV on first
- 2 gamma basis functions on second
- 24 Standard+extended motion parameters
- 2 Confound EVs
- 1 Voxelwise confound EV
- 2 contrasts - one on each stimulus EV
`2ndlevel_1.feat`
- Three inputs
- Two copes
- One main EV - group average
`2ndlevel_1.feat`
- Three inputs
- Two copes
- One main EV - group average
- One voxelwise EV
"""
import os.path as op
import pytest
import fsl.data.featdesign as featdesign
import fsl.data.featanalysis as featanalysis
datadir = op.join(op.dirname(__file__), 'testdata', 'test_feat')
def test_FeatFSFDesign():
featdirs = ['1stlevel_1.feat', '1stlevel_2.feat', '1stlevel_3.feat',
'2ndlevel_1.gfeat', '2ndlevel_2.gfeat']
nevs = [10, 11, 32, 1, 2]
shapes = [(45, 10), (45, 11), (45, 32), (3, 1), (3, 2)]
for featdir, nev, shape in zip(featdirs, nevs, shapes):
featdir = op.join(datadir, featdir)
settings = featanalysis.loadSettings(featdir)
# We can't load the voxelwise EVs
# here, because all of the .nii.gz
# files in the test directory are
# stubs.
#
# See the test_firstLevelVoxelwiseEV
# function
des = featdesign.FEATFSFDesign(featdir,
loadVoxelwiseEVs=False)
# Can also specify the design.fsf settings
featdesign.FEATFSFDesign(featdir,
settings=settings,
loadVoxelwiseEVs=False)
assert len(des.getEVs()) == nev
assert des.getDesign().shape == shape
assert des.getDesign((10, 10, 3)).shape == shape
def test_getFirstLevelEVs_1():
featdir = op.join(datadir, '1stlevel_1.feat')
settings = featanalysis.loadSettings(featdir)
matrix = featdesign.loadDesignMat(op.join(featdir, 'design.mat'))
expected = [(featdesign.NormalEV, {'index' : 0, 'origIndex' : 0}),
(featdesign.TemporalDerivativeEV, {'index' : 1}),
(featdesign.NormalEV, {'index' : 2, 'origIndex' : 1}),
(featdesign.TemporalDerivativeEV, {'index' : 3}),
(featdesign.MotionParameterEV, {'index' : 4, 'motionIndex' : 0}),
(featdesign.MotionParameterEV, {'index' : 5, 'motionIndex' : 1}),
(featdesign.MotionParameterEV, {'index' : 6, 'motionIndex' : 2}),
(featdesign.MotionParameterEV, {'index' : 7, 'motionIndex' : 3}),
(featdesign.MotionParameterEV, {'index' : 8, 'motionIndex' : 4}),
(featdesign.MotionParameterEV, {'index' : 9, 'motionIndex' : 5})]
evs = featdesign.getFirstLevelEVs(featdir, settings, matrix)
assert len(evs) == 10
for i, (evtype, atts) in enumerate(expected):
assert isinstance(evs[i], evtype)
for k, v in atts.items():
assert getattr(evs[i], k) == v
def test_getFirstLevelEVs_2():
featdir = op.join(datadir, '1stlevel_2.feat')
settings = featanalysis.loadSettings(featdir)
matrix = featdesign.loadDesignMat(op.join(featdir, 'design.mat'))
expected = [(featdesign.NormalEV, {'index' : 0, 'origIndex' : 0}),
(featdesign.TemporalDerivativeEV, {'index' : 1}),
(featdesign.NormalEV, {'index' : 2, 'origIndex' : 1}),
(featdesign.TemporalDerivativeEV, {'index' : 3}),
(featdesign.VoxelwiseEV, {'index' : 4, 'origIndex' : 2}),
(featdesign.MotionParameterEV, {'index' : 5, 'motionIndex' : 0}),
(featdesign.MotionParameterEV, {'index' : 6, 'motionIndex' : 1}),
(featdesign.MotionParameterEV, {'index' : 7, 'motionIndex' : 2}),
(featdesign.MotionParameterEV, {'index' : 8, 'motionIndex' : 3}),
(featdesign.MotionParameterEV, {'index' : 9, 'motionIndex' : 4}),
(featdesign.MotionParameterEV, {'index' : 10, 'motionIndex' : 5})]
evs = featdesign.getFirstLevelEVs(featdir, settings, matrix)
assert len(evs) == 11
for i, (evtype, atts) in enumerate(expected):
assert isinstance(evs[i], evtype)
for k, v in atts.items():
assert getattr(evs[i], k) == v
def test_getFirstLevelEVs_3():
featdir = op.join(datadir, '1stlevel_3.feat')
settings = featanalysis.loadSettings(featdir)
matrix = featdesign.loadDesignMat(op.join(featdir, 'design.mat'))
expected = [(featdesign.NormalEV, {'index' : 0, 'origIndex' : 0}),
(featdesign.TemporalDerivativeEV, {'index' : 1}),
(featdesign.NormalEV, {'index' : 2, 'origIndex' : 1}),
(featdesign.BasisFunctionEV, {'index' : 3}),
(featdesign.BasisFunctionEV, {'index' : 4}),
(featdesign.VoxelwiseConfoundEV, {'index' : 5, 'voxIndex' : 0}),
(featdesign.MotionParameterEV, {'index' : 6, 'motionIndex' : 0}),
(featdesign.MotionParameterEV, {'index' : 7, 'motionIndex' : 1}),
(featdesign.MotionParameterEV, {'index' : 8, 'motionIndex' : 2}),
(featdesign.MotionParameterEV, {'index' : 9, 'motionIndex' : 3}),
(featdesign.MotionParameterEV, {'index' : 10, 'motionIndex' : 4}),
(featdesign.MotionParameterEV, {'index' : 11, 'motionIndex' : 5}),
(featdesign.MotionParameterEV, {'index' : 12, 'motionIndex' : 6}),
(featdesign.MotionParameterEV, {'index' : 13, 'motionIndex' : 7}),
(featdesign.MotionParameterEV, {'index' : 14, 'motionIndex' : 8}),
(featdesign.MotionParameterEV, {'index' : 15, 'motionIndex' : 9}),
(featdesign.MotionParameterEV, {'index' : 16, 'motionIndex' : 10}),
(featdesign.MotionParameterEV, {'index' : 17, 'motionIndex' : 11}),
(featdesign.MotionParameterEV, {'index' : 18, 'motionIndex' : 12}),
(featdesign.MotionParameterEV, {'index' : 19, 'motionIndex' : 13}),
(featdesign.MotionParameterEV, {'index' : 20, 'motionIndex' : 14}),
(featdesign.MotionParameterEV, {'index' : 21, 'motionIndex' : 15}),
(featdesign.MotionParameterEV, {'index' : 22, 'motionIndex' : 16}),
(featdesign.MotionParameterEV, {'index' : 23, 'motionIndex' : 17}),
(featdesign.MotionParameterEV, {'index' : 24, 'motionIndex' : 18}),
(featdesign.MotionParameterEV, {'index' : 25, 'motionIndex' : 19}),
(featdesign.MotionParameterEV, {'index' : 26, 'motionIndex' : 20}),
(featdesign.MotionParameterEV, {'index' : 27, 'motionIndex' : 21}),
(featdesign.MotionParameterEV, {'index' : 28, 'motionIndex' : 22}),
(featdesign.MotionParameterEV, {'index' : 29, 'motionIndex' : 23}),
(featdesign.ConfoundEV, {'index' : 30, 'confIndex' : 0}),
(featdesign.ConfoundEV, {'index' : 31, 'confIndex' : 1})]
evs = featdesign.getFirstLevelEVs(featdir, settings, matrix)
assert len(evs) == 32
for i, (evtype, atts) in enumerate(expected):
print(i, evs[i])
assert isinstance(evs[i], evtype)
for k, v in atts.items():
assert getattr(evs[i], k) == v
def test_getHigherLevelEVs_1():
featdir = op.join(datadir, '2ndlevel_1.gfeat')
settings = featanalysis.loadSettings(featdir)
matrix = featdesign.loadDesignMat(op.join(featdir, 'design.mat'))
evs = featdesign.getHigherLevelEVs(featdir, settings, matrix)
assert len(evs) == 1
assert isinstance(evs[0], featdesign.NormalEV)
assert evs[0].index == 0
assert evs[0].origIndex == 0
def test_getHigherLevelEVs_2():
featdir = op.join(datadir, '2ndlevel_2.gfeat')
settings = featanalysis.loadSettings(featdir)
matrix = featdesign.loadDesignMat(op.join(featdir, 'design.mat'))
evs = featdesign.getHigherLevelEVs(featdir, settings, matrix)
assert len(evs) == 2
assert isinstance(evs[0], featdesign.NormalEV)
assert evs[0].index == 0
assert evs[0].origIndex == 0
assert isinstance(evs[1], featdesign.VoxelwiseEV)
def test_loadDesignMat():
analyses = ['1stlevel_1.feat', '1stlevel_2.feat', '1stlevel_3.feat',
'2ndlevel_1.gfeat', '2ndlevel_2.gfeat']
shapes = [(45, 10), (45, 11), (45, 32), (3, 1), (3, 2)]
for analysis, shape in zip(analyses, shapes):
featdir = op.join(datadir, analysis)
fname = op.join(featdir, 'design.mat')
mat = featdesign.loadDesignMat(fname)
assert mat.shape == shape
nonfile = op.join(datadir, 'non-existent-file')
badfile = op.join(datadir, '1stlevel_1.feat', 'design.fsf')
with pytest.raises(Exception):
featdesign.loadDesignMat(nonfile)
with pytest.raises(Exception):
featdesign.loadDesignMat(badfile)
1000.0
./cluster_mask_zstat1.nii.gz
./cluster_mask_zstat2.nii.gz
Cluster Index Voxels P -log10(P) Z-MAX Z-MAX X (vox) Z-MAX Y (vox) Z-MAX Z (vox) Z-COG X (vox) Z-COG Y (vox) Z-COG Z (vox) COPE-MAX COPE-MAX X (vox) COPE-MAX Y (vox) COPE-MAX Z (vox) COPE-MEAN
1 296 1.79e-27 26.7 6.03 34 10 1 31.4 12.3 1.72 612 34 10 1 143
Cluster Index Voxels P -log10(P) Z-MAX Z-MAX X (mm) Z-MAX Y (mm) Z-MAX Z (mm) Z-COG X (mm) Z-COG Y (mm) Z-COG Z (mm) COPE-MAX COPE-MAX X (mm) COPE-MAX Y (mm) COPE-MAX Z (mm) COPE-MEAN
1 296 1.79e-27 26.7 6.03 -8.41 -89.9 -2.42 3.01 -81.2 2.15 612 -8.41 -89.9 -2.42 143
Cluster Index Voxels P -log10(P) Z-MAX Z-MAX X (vox) Z-MAX Y (vox) Z-MAX Z (vox) Z-COG X (vox) Z-COG Y (vox) Z-COG Z (vox) COPE-MAX COPE-MAX X (vox) COPE-MAX Y (vox) COPE-MAX Z (vox) COPE-MEAN
5 271 7.77e-26 25.1 6.27 47 27 2 44.3 29.7 1.72 468 46 25 3 113
4 169 1.53e-18 17.8 5.75 20 32 2 23.9 28.4 1.45 304 19 31 1 100
3 24 0.000341 3.47 4.58 17 39 3 18.8 38.3 2.23 157 22 39 0 62
2 19 0.00202 2.69 4.88 25 44 0 26.3 42.1 0 197 26 43 0 118
1 13 0.0213 1.67 3.73 26 19 2 26.6 21.3 1.85 97.1 26 19 2 69.2
Cluster Index Voxels P -log10(P) Z-MAX Z-MAX X (mm) Z-MAX Y (mm) Z-MAX Z (mm) Z-COG X (mm) Z-COG Y (mm) Z-COG Z (mm) COPE-MAX COPE-MAX X (mm) COPE-MAX Y (mm) COPE-MAX Z (mm) COPE-MEAN
5 271 7.77e-26 25.1 6.27 -63.6 -21.8 4 -51.3 -11.2 1.84 468 -59.6 -29.9 10.8 113
4 169 1.53e-18 17.8 5.75 55.4 -4.27 2.45 37.9 -18.1 -0.842 304 59.8 -8.19 -4.25 100
3 24 0.000341 3.47 4.58 69.3 23 8.65 61.3 20.6 3.62 157 47.6 23.8 -11.3 62
2 19 0.00202 2.69 4.88 35 43.8 -11.4 29.3 36.5 -11.2 197 30.5 39.9 -11.3 118
1 13 0.0213 1.67 3.73 27.6 -55.1 3.43 25.3 -46.1 2.31 97.1 27.6 -55.1 3.43 69.2
0 -0.000264589 0.000183168 0.0217952 -0.0424268 -0.0254739
0.00070214 -0.000526306 0.000397315 0.0337431 -0.0193044 -0.0283846
0.000498598 -0.000809397 0 0.0395197 -0.0131337 -0.0452989
0.000579988 -0.000221715 8.21135e-05 0.0258738 0.0348006 -0.0129759
0.000381893 -0.000506425 0 0.0167397 0.0709324 -0.0453051
0.000388283 -0.000809397 0 0.0215977 -0.00161064 -0.0651091
0.00028076 -0.000604851 0 0.0241783 -0.0191748 -0.0536596
0 -0.000155116 0 0.0128543 -0.0191748 -0.0452136
0.000384396 -7.84812e-05 0 0.00734347 0.021921 -0.0415896
0.000321737 -0.000393791 0 0.00375303 -0.0230888 -0.0415753
0 0.000111998 0 -0.000902616 0.0727951 -0.0415698
0.000215285 -0.000136386 0 -0.00282623 -0.0354858 -0.0415777
0.000261125 -9.06374e-05 0 0.000629449 -0.0731166 -0.0415577
0.000486193 -0.000133878 0 0.00314586 0.000714271 -0.0452225
5.40494e-05 -2.19574e-05 0 0.00489143 -0.0056629 0.0214406
0.000459199 0.0004553 -0.000374243 -0.031751 -0.075842 0.0214637
0.000347496 0.000667638 -0.000316943 -0.0241288 -0.0550503 0.052287
0.000153477 -2.19574e-05 -0.000196968 -0.0113862 -0.0806421 0.0129587
0.000459199 0.000326759 -0.000257516 -0.018521 -0.0673269 0.0310445
-0.00010422 -0.000709562 -0.000551959 -0.0343409 -0.0673334 0.0190272
-4.78084e-05 -0.000709562 -0.000167275 -0.00978313 -0.0746766 -0.00060184
0.000459199 -0.000265855 -8.30117e-05 -0.00650845 -0.0269721 -0.00502952
-7.98919e-06 -0.000265855 9.6357e-06 -0.00184664 0.000679341 0.000189414
8.2695e-05 7.07945e-05 9.6357e-06 0.00353303 -0.0269518 -0.00502371
0.000151626 -0.000265855 -9.28369e-05 -0.00184551 -0.0269531 -0.012929
0.000381967 -0.000265855 -4.45114e-07 0.00220544 -0.0269575 -0.00503093
0.000198744 0.000212547 -4.45114e-07 -0.00184187 -0.0334269 0.0113516
-7.04892e-05 -0.000265855 -0.000111352 -0.00183592 -0.0434752 -0.0156616
0.000118964 -0.000265855 -4.45114e-07 -0.00184005 -0.0223293 -0.00503604
0.000458349 -0.000265855 -4.45114e-07 0.0217036 -0.00490347 -0.00509171
0.000571088 0.000180565 -0.000332005 0.0027614 -0.0223381 -0.00508851
0.000362825 0.000104016 -4.45114e-07 -0.0050014 -0.0505434 -0.00502399
0.00036589 -7.31897e-05 3.36877e-05 0.00123403 -0.0879296 -0.0285882
0.000133338 -0.000211688 -0.000144184 -0.00941317 -0.0856607 -0.00688414
0.000177832 0.000215669 -0.000185755 -0.0128922 -0.0856624 0.0114737
-0.000130942 -8.65635e-05 -1.11437e-05 -0.0021262 -0.0156379 -0.0286166
4.3281e-05 0.000387841 -0.00013645 -0.00962933 -0.0459189 0.0222458
-2.70728e-05 0.000729944 -0.000153679 -0.0179646 -0.0459249 0.0222224
4.3281e-05 0.000247161 -0.000452448 -0.0306068 -0.0621157 0.00586292
0.000128363 0.000237582 -0.00027413 -0.0180748 -0.065616 -0.00337989
4.3281e-05 0.000239086 -0.000195342 -0.018503 -0.0773948 -0.0033793
0.00038521 0.000105191 -0.000219467 -0.0197604 -0.0525178 -0.00335665
0.000186606 -0.000411083 -0.000184065 -0.0228653 -0.059242 -0.00333508
0.000446345 -0.000305936 -0.000125382 -0.0135317 -0.0429802 0.00123055
0.000197933 -0.000176617 -0.000408 -0.0193382 -0.0681025 1.65356e-05
/ContrastName1 auditory
/ContrastName2 visual
/NumWaves 10
/NumContrasts 2
/PPheights 1.470856e+00 1.389712e+00
/RequiredEffect 3.840 3.963
/Matrix
1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
0.000000e+00 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
1
1
2
2
3
3
3
3
3
3
# FEAT version number
set fmri(version) 6.00
# Are we in MELODIC?
set fmri(inmelodic) 0
# Analysis level
# 1 : First-level analysis
# 2 : Higher-level analysis
set fmri(level) 1
# Which stages to run
# 0 : No first-level analysis (registration and/or group stats only)
# 7 : Full first-level analysis
# 1 : Pre-processing
# 2 : Statistics
set fmri(analysis) 7
# Use relative filenames
set fmri(relative_yn) 0
# Balloon help
set fmri(help_yn) 1
# Run Featwatcher
set fmri(featwatcher_yn) 1
# Cleanup first-level standard-space images
set fmri(sscleanup_yn) 0
# Output directory
set fmri(outputdir) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/fmri"
# TR(s)
set fmri(tr) 3.000000
# Total volumes
set fmri(npts) 45
# Delete volumes
set fmri(ndelete) 0
# Perfusion tag/control order
set fmri(tagfirst) 1
# Number of first-level analyses
set fmri(multiple) 3
# Higher-level input type
# 1 : Inputs are lower-level FEAT directories
# 2 : Inputs are cope images from FEAT directories
set fmri(inputtype) 2
# Carry out pre-stats processing?
set fmri(filtering_yn) 1
# Brain/background threshold, %
set fmri(brain_thresh) 10
# Critical z for design efficiency calculation
set fmri(critical_z) 5.3
# Noise level
set fmri(noise) 0.66
# Noise AR(1)
set fmri(noisear) 0.34
# Motion correction
# 0 : None
# 1 : MCFLIRT
set fmri(mc) 1
# Spin-history (currently obsolete)
set fmri(sh_yn) 0
# B0 fieldmap unwarping?
set fmri(regunwarp_yn) 0
# EPI dwell time (ms)
set fmri(dwell) 0.7
# EPI TE (ms)
set fmri(te) 35
# % Signal loss threshold
set fmri(signallossthresh) 10
# Unwarp direction
set fmri(unwarp_dir) y-
# Slice timing correction
# 0 : None
# 1 : Regular up (0, 1, 2, 3, ...)
# 2 : Regular down
# 3 : Use slice order file
# 4 : Use slice timings file
# 5 : Interleaved (0, 2, 4 ... 1, 3, 5 ... )
set fmri(st) 0
# Slice timings file
set fmri(st_file) ""
# BET brain extraction
set fmri(bet_yn) 1
# Spatial smoothing FWHM (mm)
set fmri(smooth) 5
# Intensity normalization
set fmri(norm_yn) 0
# Perfusion subtraction
set fmri(perfsub_yn) 0
# Highpass temporal filtering
set fmri(temphp_yn) 1
# Lowpass temporal filtering
set fmri(templp_yn) 0
# MELODIC ICA data exploration
set fmri(melodic_yn) 0
# Carry out main stats?
set fmri(stats_yn) 1
# Carry out prewhitening?
set fmri(prewhiten_yn) 1
# Add motion parameters to model
# 0 : No
# 1 : Yes
set fmri(motionevs) 1
set fmri(motionevsbeta) ""
set fmri(scriptevsbeta) ""
# Robust outlier detection in FLAME?
set fmri(robust_yn) 0
# Higher-level modelling
# 3 : Fixed effects
# 0 : Mixed Effects: Simple OLS
# 2 : Mixed Effects: FLAME 1
# 1 : Mixed Effects: FLAME 1+2
set fmri(mixed_yn) 2
# Number of EVs
set fmri(evs_orig) 2
set fmri(evs_real) 4
set fmri(evs_vox) 0
# Number of contrasts
set fmri(ncon_orig) 2
set fmri(ncon_real) 2
# Number of F-tests
set fmri(nftests_orig) 0
set fmri(nftests_real) 0
# Add constant column to design matrix? (obsolete)
set fmri(constcol) 0
# Carry out post-stats steps?
set fmri(poststats_yn) 1
# Pre-threshold masking?
set fmri(threshmask) ""
# Thresholding
# 0 : None
# 1 : Uncorrected
# 2 : Voxel
# 3 : Cluster
set fmri(thresh) 3
# P threshold
set fmri(prob_thresh) 0.05
# Z threshold
set fmri(z_thresh) 2.3
# Z min/max for colour rendering
# 0 : Use actual Z min/max
# 1 : Use preset Z min/max
set fmri(zdisplay) 0
# Z min in colour rendering
set fmri(zmin) 2
# Z max in colour rendering
set fmri(zmax) 8
# Colour rendering type
# 0 : Solid blobs
# 1 : Transparent blobs
set fmri(rendertype) 1
# Background image for higher-level stats overlays
# 1 : Mean highres
# 2 : First highres
# 3 : Mean functional
# 4 : First functional
# 5 : Standard space template
set fmri(bgimage) 1
# Create time series plots
set fmri(tsplot_yn) 1
# Registration to initial structural
set fmri(reginitial_highres_yn) 1
# Search space for registration to initial structural
# 0 : No search
# 90 : Normal search
# 180 : Full search
set fmri(reginitial_highres_search) 90
# Degrees of Freedom for registration to initial structural
set fmri(reginitial_highres_dof) 3
# Registration to main structural
set fmri(reghighres_yn) 1
# Search space for registration to main structural
# 0 : No search
# 90 : Normal search
# 180 : Full search
set fmri(reghighres_search) 90
# Degrees of Freedom for registration to main structural
set fmri(reghighres_dof) BBR
# Registration to standard image?
set fmri(regstandard_yn) 1
# Use alternate reference images?
set fmri(alternateReference_yn) 0
# Standard image
set fmri(regstandard) "/Users/paulmc/fsl_builds/fsl-5_0_9/data/standard/MNI152_T1_2mm_brain"
# Search space for registration to standard space
# 0 : No search
# 90 : Normal search
# 180 : Full search
set fmri(regstandard_search) 90
# Degrees of Freedom for registration to standard space
set fmri(regstandard_dof) 12
# Do nonlinear registration from structural to standard space?
set fmri(regstandard_nonlinear_yn) 0
# Control nonlinear warp field resolution
set fmri(regstandard_nonlinear_warpres) 10
# High pass filter cutoff
set fmri(paradigm_hp) 100
# Total voxels
set fmri(totalVoxels) 921600
# Number of lower-level copes feeding into higher-level analysis
set fmri(ncopeinputs) 0
# 4D AVW data or FEAT directory (1)
set feat_files(1) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/fmri1"
# 4D AVW data or FEAT directory (2)
set feat_files(2) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/fmri2"
# 4D AVW data or FEAT directory (3)
set feat_files(3) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/fmri3"
# Add confound EVs text file
set fmri(confoundevs) 0
# Session's structural image for analysis 1
set initial_highres_files(1) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/epiwholehead"
# Session's structural image for analysis 2
set initial_highres_files(2) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/epiwholehead"
# Session's structural image for analysis 3
set initial_highres_files(3) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/epiwholehead"
# Subject's structural image for analysis 1
set highres_files(1) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/structural_brain"
# Subject's structural image for analysis 2
set highres_files(2) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/structural_brain"
# Subject's structural image for analysis 3
set highres_files(3) "/Users/paulmc/Projects/fslpy/tests/testdata/test_feat/structural_brain"
# EV 1 title
set fmri(evtitle1) "visual"
# Basic waveform shape (EV 1)
# 0 : Square
# 1 : Sinusoid
# 2 : Custom (1 entry per volume)
# 3 : Custom (3 column format)
# 4 : Interaction
# 10 : Empty (all zeros)
set fmri(shape1) 0
# Convolution (EV 1)
# 0 : None
# 1 : Gaussian
# 2 : Gamma
# 3 : Double-Gamma HRF
# 4 : Gamma basis functions
# 5 : Sine basis functions
# 6 : FIR basis functions
set fmri(convolve1) 2
# Convolve phase (EV 1)
set fmri(convolve_phase1) 0
# Apply temporal filtering (EV 1)
set fmri(tempfilt_yn1) 1
# Add temporal derivative (EV 1)
set fmri(deriv_yn1) 1
# Skip (EV 1)
set fmri(skip1) 0
# Off (EV 1)
set fmri(off1) 30
# On (EV 1)
set fmri(on1) 30
# Phase (EV 1)
set fmri(phase1) 30
# Stop (EV 1)
set fmri(stop1) -1
# Gamma sigma (EV 1)
set fmri(gammasigma1) 3
# Gamma delay (EV 1)
set fmri(gammadelay1) 6
# Orthogonalise EV 1 wrt EV 0
set fmri(ortho1.0) 0
# Orthogonalise EV 1 wrt EV 1
set fmri(ortho1.1) 0
# Orthogonalise EV 1 wrt EV 2
set fmri(ortho1.2) 0
# EV 2 title
set fmri(evtitle2) "auditory"
# Basic waveform shape (EV 2)
# 0 : Square
# 1 : Sinusoid
# 2 : Custom (1 entry per volume)
# 3 : Custom (3 column format)
# 4 : Interaction
# 10 : Empty (all zeros)
set fmri(shape2) 0
# Convolution (EV 2)
# 0 : None
# 1 : Gaussian
# 2 : Gamma
# 3 : Double-Gamma HRF
# 4 : Gamma basis functions
# 5 : Sine basis functions
# 6 : FIR basis functions
set fmri(convolve2) 2
# Convolve phase (EV 2)
set fmri(convolve_phase2) 0
# Apply temporal filtering (EV 2)
set fmri(tempfilt_yn2) 1
# Add temporal derivative (EV 2)
set fmri(deriv_yn2) 1
# Skip (EV 2)
set fmri(skip2) 0
# Off (EV 2)
set fmri(off2) 45
# On (EV 2)
set fmri(on2) 45
# Phase (EV 2)
set fmri(phase2) 45
# Stop (EV 2)
set fmri(stop2) -1
# Gamma sigma (EV 2)
set fmri(gammasigma2) 3
# Gamma delay (EV 2)
set fmri(gammadelay2) 6
# Orthogonalise EV 2 wrt EV 0
set fmri(ortho2.0) 0
# Orthogonalise EV 2 wrt EV 1
set fmri(ortho2.1) 0
# Orthogonalise EV 2 wrt EV 2
set fmri(ortho2.2) 0
# Contrast & F-tests mode
# real : control real EVs
# orig : control original EVs
set fmri(con_mode_old) orig
set fmri(con_mode) orig
# Display images for contrast_real 1
set fmri(conpic_real.1) 1
# Title for contrast_real 1
set fmri(conname_real.1) "auditory"
# Real contrast_real vector 1 element 1
set fmri(con_real1.1) 1
# Real contrast_real vector 1 element 2
set fmri(con_real1.2) 0
# Real contrast_real vector 1 element 3
set fmri(con_real1.3) 0
# Real contrast_real vector 1 element 4
set fmri(con_real1.4) 0
# Display images for contrast_real 2
set fmri(conpic_real.2) 1
# Title for contrast_real 2
set fmri(conname_real.2) "visual"
# Real contrast_real vector 2 element 1
set fmri(con_real2.1) 0
# Real contrast_real vector 2 element 2
set fmri(con_real2.2) 0
# Real contrast_real vector 2 element 3
set fmri(con_real2.3) 1
# Real contrast_real vector 2 element 4
set fmri(con_real2.4) 0
# Display images for contrast_orig 1
set fmri(conpic_orig.1) 1
# Title for contrast_orig 1
set fmri(conname_orig.1) "auditory"
# Real contrast_orig vector 1 element 1
set fmri(con_orig1.1) 1
# Real contrast_orig vector 1 element 2
set fmri(con_orig1.2) 0
# Display images for contrast_orig 2
set fmri(conpic_orig.2) 1
# Title for contrast_orig 2
set fmri(conname_orig.2) "visual"
# Real contrast_orig vector 2 element 1
set fmri(con_orig2.1) 0
# Real contrast_orig vector 2 element 2
set fmri(con_orig2.2) 1
# Contrast masking - use >0 instead of thresholding?
set fmri(conmask_zerothresh_yn) 0
# Mask real contrast/F-test 1 with real contrast/F-test 2?
set fmri(conmask1_2) 0
# Mask real contrast/F-test 2 with real contrast/F-test 1?
set fmri(conmask2_1) 0
# Do contrast masking at all?
set fmri(conmask1_1) 0
##########################################################
# Now options that don't appear in the GUI
# Alternative (to BETting) mask image
set fmri(alternative_mask) ""
# Initial structural space registration initialisation transform
set fmri(init_initial_highres) ""
# Structural space registration initialisation transform
set fmri(init_highres) ""
# Standard space registration initialisation transform
set fmri(init_standard) ""
# For full FEAT analysis: overwrite existing .feat output dir?
set fmri(overwrite_yn) 0
/NumWaves 10
/NumPoints 45
/PPheights 1.000000e+00 7.177538e-01 1.000000e+00 7.176320e-01 8.330820e-04 1.539341e-03 9.492741e-04 7.386060e-02 1.607247e-01 1.173961e-01
/Matrix
8.273322e-02 1.370124e-02 -1.466625e-02 3.071752e-02 -3.592555e-04 1.477740e-04 1.011112e-04 9.546830e-04 -4.475104e-02 1.432601e-02
1.116071e-01 1.230935e-02 1.931900e-02 3.041906e-02 3.514549e-04 -1.342390e-04 3.279311e-04 1.456864e-02 -1.961891e-02 9.472378e-03
1.392951e-01 1.036381e-02 5.278270e-02 2.981382e-02 1.562587e-04 -4.369680e-04 -5.720387e-05 2.195038e-02 -1.145035e-02 -9.357386e-03
1.658102e-01 8.465335e-03 8.563168e-02 2.911651e-02 2.457701e-04 1.317185e-04 3.660835e-05 9.849632e-03 3.846691e-02 2.108108e-02
1.911687e-01 6.617652e-03 1.177736e-01 2.832911e-02 5.557265e-05 -1.713619e-04 -3.427523e-05 2.201787e-03 7.656402e-02 -1.309857e-02
2.153919e-01 4.824789e-03 1.491191e-01 2.745463e-02 6.963766e-05 -4.920981e-04 -2.350075e-05 8.488371e-03 5.966213e-03 -3.471601e-02
2.385053e-01 3.088905e-03 1.795816e-01 2.649490e-02 -3.043119e-05 -3.047297e-04 -1.316758e-05 1.244125e-02 -9.674905e-03 -2.504033e-02
2.605358e-01 1.412043e-03 2.090751e-01 2.545223e-02 -3.039557e-04 1.283931e-04 -3.260831e-06 2.434733e-03 -7.775902e-03 -1.832618e-02
2.815147e-01 -2.032793e-04 2.375177e-01 2.433007e-02 8.745953e-05 1.889597e-04 6.235032e-06 -1.811810e-03 3.519330e-02 -1.638996e-02
3.014756e-01 -1.177113e-02 2.648300e-01 2.313136e-02 3.160655e-05 -1.418967e-04 1.533617e-05 -4.189435e-03 -7.970006e-03 -1.801756e-02
3.004235e-01 -1.810264e-01 2.909357e-01 2.185918e-02 -2.835346e-04 3.488449e-04 2.405928e-05 -7.681923e-03 8.973243e-02 -1.960649e-02
-1.818422e-02 -3.536136e-01 3.157616e-01 2.051676e-02 -6.186031e-05 8.588991e-05 3.242156e-05 -8.490135e-03 -1.675871e-02 -2.116003e-02
-3.820436e-01 -2.670479e-01 3.392375e-01 1.910741e-02 -9.834183e-06 1.175213e-04 4.044066e-05 -3.964833e-03 -5.262913e-02 -2.263578e-02
-5.476570e-01 -1.027889e-01 3.612967e-01 1.763442e-02 2.212206e-04 6.059486e-05 4.813456e-05 -4.225377e-04 2.293236e-02 -2.774556e-02
-5.921639e-01 -1.948424e-02 3.818756e-01 6.085612e-03 -2.051318e-04 1.592389e-04 5.552161e-05 2.307278e-03 1.825582e-02 3.752398e-02
-5.936311e-01 7.862981e-03 3.808828e-01 -1.638036e-01 2.056174e-04 6.236075e-04 -3.116226e-04 -3.339040e-02 -5.025264e-02 3.620542e-02
-5.835248e-01 1.465431e-02 6.168101e-02 -3.455533e-01 9.932612e-05 8.234236e-04 -2.474931e-04 -2.486075e-02 -2.782016e-02 6.573923e-02
-5.708501e-01 1.553945e-02 -3.035190e-01 -2.694434e-01 -8.946509e-05 1.216532e-04 -1.209390e-04 -1.124579e-02 -5.180078e-02 2.517370e-02
-5.582720e-01 1.483750e-02 -4.713110e-01 -1.104634e-01 2.213045e-04 4.585224e-04 -1.751389e-04 -1.754106e-02 -3.690358e-02 4.207447e-02
-5.463051e-01 2.393122e-02 -5.189230e-01 -2.930725e-02 -3.372435e-04 -5.893360e-04 -4.634456e-04 -3.255199e-02 -3.535673e-02 2.892411e-02
-5.148773e-01 1.908326e-01 -5.245084e-01 -3.048970e-03 -2.761339e-04 -6.005804e-04 -7.281746e-05 -7.213539e-03 -4.117459e-02 8.213614e-03
-1.673683e-01 3.611846e-01 -5.196162e-01 2.880321e-03 2.354017e-04 -1.678404e-04 1.721724e-05 -3.184160e-03 8.027981e-03 2.755573e-03
2.239958e-01 2.725002e-01 -5.133321e-01 2.894631e-03 -2.274250e-04 -1.785440e-04 1.154830e-04 2.208670e-03 3.715103e-02 6.994610e-03
4.157953e-01 1.062364e-01 -5.083975e-01 1.246068e-03 -1.325431e-04 1.476525e-04 1.209679e-04 8.297986e-03 1.096592e-02 8.513002e-04
4.852464e-01 2.103735e-02 -5.053995e-01 -7.077888e-04 -5.957558e-05 -1.992104e-04 2.386663e-05 3.610028e-03 1.238604e-02 -7.935326e-03
5.104915e-01 -8.097320e-03 -5.043659e-01 -2.685395e-03 1.746429e-04 -2.091935e-04 1.215358e-04 8.334799e-03 1.377945e-02 -8.707073e-04
5.230704e-01 -1.657339e-02 -5.053209e-01 -4.683267e-03 -4.859663e-06 2.594479e-04 1.267389e-04 4.946845e-03 8.685297e-03 1.472519e-02
5.320596e-01 -1.904529e-02 -5.082852e-01 -6.697717e-03 -2.705279e-04 -2.284979e-04 2.098069e-05 5.599974e-03 -9.225252e-06 -1.302897e-02
5.401921e-01 -1.983729e-02 -5.132756e-01 -8.725059e-03 -7.766417e-05 -2.378287e-04 1.370015e-04 6.233121e-03 2.247010e-02 -3.099953e-03
5.480474e-01 -3.033747e-02 -5.203056e-01 -7.458574e-04 2.649778e-04 -2.469483e-04 1.421002e-04 3.040640e-02 4.121013e-02 -3.809056e-03
5.356143e-01 -1.985637e-01 -5.093533e-01 1.655120e-01 3.808204e-04 1.905636e-04 -1.843565e-04 1.208843e-02 2.507163e-02 -4.417578e-03
2.063291e-01 -3.701652e-01 -1.838433e-01 3.435760e-01 1.755075e-04 1.053206e-04 1.523304e-04 4.946651e-03 -1.854468e-03 -4.924532e-03
-1.675307e-01 -2.826616e-01 1.839590e-01 2.637339e-01 1.813682e-04 -8.036030e-05 1.916334e-04 1.180209e-02 -3.797724e-02 -2.902150e-02
-3.424992e-01 -1.175166e-01 3.506004e-01 1.009829e-01 -4.854353e-05 -2.271078e-04 1.899433e-05 1.776037e-03 -3.445954e-02 -7.813066e-03
-3.957522e-01 -3.338180e-02 3.932703e-01 1.602525e-02 -1.566701e-06 1.922356e-04 -1.726275e-05 -1.078612e-03 -3.322597e-02 1.008463e-02
-4.053984e-01 -5.264170e-03 3.900911e-01 -1.405686e-02 -3.080177e-04 -1.177629e-04 1.627625e-04 1.031707e-02 3.802138e-02 -3.043201e-02
-4.029501e-01 2.234324e-03 3.725897e-01 -2.382392e-02 -1.316347e-04 3.491380e-04 4.298846e-05 3.450923e-03 8.951866e-03 2.003611e-02
-3.974638e-01 3.759978e-03 3.498375e-01 -2.768142e-02 -1.999952e-04 6.840171e-04 3.142815e-05 -4.238116e-03 1.014700e-02 1.964873e-02
-3.916605e-01 3.628807e-03 3.245707e-01 -2.987275e-02 -1.278192e-04 1.943097e-04 -2.615182e-04 -1.622296e-02 -4.852042e-03 2.953765e-03
-3.861153e-01 1.322050e-02 2.973799e-01 -3.174652e-02 -4.109137e-05 1.781287e-04 -7.720638e-05 -3.020681e-03 -7.169048e-03 -6.597840e-03
-3.608218e-01 1.805443e-01 2.683052e-01 -3.357526e-02 -1.247098e-04 1.733782e-04 7.763064e-06 -2.763966e-03 -1.777217e-02 -6.881186e-03
-1.922919e-02 3.512408e-01 2.373924e-01 -3.535336e-02 2.184939e-04 3.360437e-05 -9.976886e-06 -3.320194e-03 8.273680e-03 -7.119446e-03
3.663621e-01 2.628205e-01 2.046929e-01 -3.707514e-02 2.096828e-05 -4.881420e-04 3.202901e-05 -5.706147e-03 2.712203e-03 -7.337583e-03
5.524539e-01 9.673835e-02 1.702640e-01 -3.873503e-02 2.815810e-04 -3.880274e-04 9.754928e-05 4.365581e-03 2.013122e-02 -2.992273e-03
6.161798e-01 3.379199e-02 1.341684e-01 -3.952834e-02 3.382905e-05 -2.632648e-04 -1.779844e-04 -6.823223e-04 -3.838828e-03 -4.409004e-03
16
\ No newline at end of file
-5.000000e-01 1.950000e+01 3.950000e+01 17.000000
-5.000000e-01 1.950000e+01 3.950000e+01 17.000000
-5.000000e-01 2.950000e+01 15.500000
-5.000000e-01 2.950000e+01 15.500000
0
0
0
0
0
0
./example_func.nii.gz
./filtered_func_data.nii.gz
Cluster Index Z x y z
1 6.03 34 10 1
1 5.72 35 7 3
1 5.6 30 9 3
1 5.42 33 14 0
1 4.94 38 10 2
1 4.82 37 12 1
Cluster Index Z x y z
1 6.03 -8.41 -89.9 -2.42
1 5.72 -13.3 -102 11.2
1 5.6 8.83 -94.4 10.9
1 5.42 -3.46 -74.1 -9.4
1 4.94 -26.1 -89.7 4.48
1 4.82 -21.3 -81.8 -2.39
Cluster Index Z x y z
5 6.27 47 27 2
5 5.68 47 22 1
5 5.66 44 25 3
5 5.34 45 31 2
5 5.2 45 33 1
5 5.08 40 33 0
4 5.75 20 32 2
4 5.38 20 30 2
4 4.71 20 34 0
4 4.65 32 29 1
4 4.6 32 22 1
4 4.41 26 27 2
3 4.58 17 39 3
3 3.47 19 38 3
3 2.85 18 38 1
3 2.59 22 40 0
2 4.88 25 44 0
2 3.29 28 41 0
2 2.68 29 38 0
1 3.73 26 19 2
1 2.9 29 23 1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment