Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
FSL
fslpy
Commits
71fcd8fc
Commit
71fcd8fc
authored
Apr 18, 2017
by
Paul McCarthy
Browse files
Unit tests for melodicanalysis module. Made indexed 4D test a bit smaller/faster
parent
16a98f34
Changes
2
Hide whitespace changes
Inline
Side-by-side
tests/test_image_advanced.py
View file @
71fcd8fc
...
...
@@ -71,7 +71,7 @@ def _test_image_indexed_read4D(threaded):
# Data range grows with volume
nvols
=
50
data
=
np
.
zeros
((
10
0
,
10
0
,
10
0
,
nvols
))
data
=
np
.
zeros
((
5
0
,
5
0
,
5
0
,
nvols
))
for
vol
in
range
(
nvols
):
data
[...,
vol
]
=
vol
...
...
@@ -88,7 +88,7 @@ def _test_image_indexed_read4D(threaded):
# 4D (e.g. voxel time course)
#
# n.b. This is SUPER SLOW!!
voxels
=
tests
.
random_voxels
((
10
0
,
10
0
,
10
0
),
5
)
voxels
=
tests
.
random_voxels
((
5
0
,
5
0
,
5
0
),
5
)
for
i
,
xyz
in
enumerate
(
voxels
):
x
,
y
,
z
=
[
int
(
v
)
for
v
in
xyz
]
...
...
tests/test_melodicanalysis.py
0 → 100644
View file @
71fcd8fc
#!/usr/bin/env python
#
# test_melodicanalysis.py -
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
import
os
import
os.path
as
op
import
itertools
as
it
import
numpy
as
np
import
pytest
import
tests
import
fsl.utils.path
as
fslpath
import
fsl.data.melodicanalysis
as
mela
def
test_isMelodicImage
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
,
'analysis.blica/melodic_IC.nii.gz'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
for
p
in
paths
:
expected
=
p
==
'analysis.ica/melodic_IC.nii.gz'
assert
mela
.
isMelodicImage
(
op
.
join
(
testdir
,
p
))
==
expected
def
test_isMelodicDir
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
assert
mela
.
isMelodicDir
(
meldir
)
# Directory must end in .ica
with
tests
.
testdir
([
p
.
replace
(
'.ica'
,
'.blob'
)
for
p
in
paths
])
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.blob'
)
assert
not
mela
.
isMelodicDir
(
meldir
)
# Directory must exist!
assert
not
mela
.
isMelodicDir
(
'non-existent.ica'
)
# Directory must contain all of the above files
perms
=
it
.
chain
(
it
.
combinations
(
paths
,
1
),
it
.
combinations
(
paths
,
2
))
for
p
in
perms
:
with
tests
.
testdir
(
p
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
assert
not
mela
.
isMelodicDir
(
meldir
)
def
test_getAnalysisDir
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
testpaths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/log.txt'
,
'analysis.ica/stats/thresh_zstat1.nii.gz'
,
'analysis.ica/report/00index.html'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
expected
=
op
.
join
(
testdir
,
'analysis.ica'
)
for
tp
in
testpaths
:
assert
mela
.
getAnalysisDir
(
op
.
join
(
testdir
,
tp
))
==
expected
def
test_getTopLevelAnalysisDir
():
testpaths
=
[
(
'REST.ica/filtered_func_data.ica/melodic_IC.nii.gz'
,
'REST.ica'
),
(
'REST.ica/filtered_func_data.ica/melodic_mix'
,
'REST.ica'
),
(
'analysis.gica/groupmelodic.ica/melodic_IC.nii.gz'
,
'analysis.gica'
),
(
'analysis.feat/filtered_func_data.ica/melodic_mix'
,
'analysis.feat'
)]
for
tp
,
expected
in
testpaths
:
assert
mela
.
getTopLevelAnalysisDir
(
tp
)
==
expected
def
test_getDataFile
():
testcases
=
[([
'analysis.ica/filtfunc.ica/melodic_IC.nii.gz'
,
'analysis.ica/filtfunc.ica/melodic_mix'
,
'analysis.ica/filtfunc.ica/melodic_FTmix'
,
'analysis.ica/filtered_func_data.nii.gz'
],
'analysis.ica/filtfunc.ica'
,
'analysis.ica/filtered_func_data.nii.gz'
),
([
'analysis.feat/filtfunc.ica/melodic_IC.nii.gz'
,
'analysis.feat/filtfunc.ica/melodic_mix'
,
'analysis.feat/filtfunc.ica/melodic_FTmix'
,
'analysis.feat/filtered_func_data.nii.gz'
],
'analysis.feat/filtfunc.ica'
,
'analysis.feat/filtered_func_data.nii.gz'
)]
for
paths
,
meldir
,
expected
in
testcases
:
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
meldir
)
expected
=
op
.
join
(
testdir
,
expected
)
assert
mela
.
getDataFile
(
meldir
)
==
expected
def
test_getMeanFile
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
,
'analysis.ica/mean.nii.gz'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
expected
=
op
.
join
(
testdir
,
'analysis.ica/mean.nii.gz'
)
assert
mela
.
getMeanFile
(
meldir
)
==
expected
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
,
'analysis.ica/mean.txt'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
with
pytest
.
raises
(
fslpath
.
PathError
):
mela
.
getMeanFile
(
meldir
)
def
test_getICFile
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
expected
=
op
.
join
(
testdir
,
'analysis.ica/melodic_IC.nii.gz'
)
assert
mela
.
getICFile
(
meldir
)
==
expected
paths
=
[
'analysis.ica/melodic_IC.txt'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
with
pytest
.
raises
(
fslpath
.
PathError
):
mela
.
getICFile
(
meldir
)
def
test_getMixFile
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
expected
=
op
.
join
(
testdir
,
'analysis.ica/melodic_mix'
)
assert
mela
.
getMixFile
(
meldir
)
==
expected
paths
=
[
'analysis.ica/melodic_IC.ni.gz'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
assert
mela
.
getMixFile
(
meldir
)
is
None
def
test_getFTMixFile
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
expected
=
op
.
join
(
testdir
,
'analysis.ica/melodic_FTmix'
)
assert
mela
.
getFTMixFile
(
meldir
)
==
expected
paths
=
[
'analysis.ica/melodic_IC.ni.gz'
,
'analysis.ica/melodic_mix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
assert
mela
.
getFTMixFile
(
meldir
)
is
None
def
test_getReportFile
():
paths
=
[
'analysis.ica/filtfunc.ica/melodic_IC.nii.gz'
,
'analysis.ica/filtfunc.ica/melodic_mix'
,
'analysis.ica/filtfunc.ica/melodic_FTmix'
,
'analysis.ica/report.html'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica/filtfunc.ica'
)
expected
=
op
.
join
(
testdir
,
'analysis.ica/report.html'
)
assert
op
.
abspath
(
mela
.
getReportFile
(
meldir
))
==
expected
paths
=
[
'analysis.ica/filtfunc.ica/melodic_IC.ni.gz'
,
'analysis.ica/filtfunc.ica/melodic_mix'
,
'analysis.ica/filtfunc.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
assert
mela
.
getReportFile
(
meldir
)
is
None
def
test_getNumComponents
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
icfile
=
op
.
join
(
meldir
,
'melodic_IC.nii.gz'
)
tests
.
make_random_image
(
icfile
,
(
10
,
10
,
10
,
17
))
assert
mela
.
getNumComponents
(
meldir
)
==
17
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
with
pytest
.
raises
(
Exception
):
mela
.
getNumComponents
(
meldir
)
def
test_getComponentTimeSeries
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
mixfile
=
op
.
join
(
meldir
,
'melodic_mix'
)
data
=
np
.
zeros
((
40
,
20
))
for
i
in
range
(
20
):
data
[:,
i
]
=
np
.
arange
(
i
,
i
+
40
)
np
.
savetxt
(
mixfile
,
data
)
assert
np
.
all
(
mela
.
getComponentTimeSeries
(
meldir
)
==
data
)
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
with
pytest
.
raises
(
Exception
):
mela
.
getComponentTimeSeries
(
meldir
)
def
test_getComponentPowerSpectra
():
paths
=
[
'analysis.ica/melodic_IC.nii.gz'
,
'analysis.ica/melodic_mix'
,
'analysis.ica/melodic_FTmix'
]
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
ftmixfile
=
op
.
join
(
meldir
,
'melodic_FTmix'
)
data
=
np
.
zeros
((
40
,
20
))
for
i
in
range
(
20
):
data
[:,
i
]
=
np
.
arange
(
i
,
i
+
40
)
np
.
savetxt
(
ftmixfile
,
data
)
assert
np
.
all
(
mela
.
getComponentPowerSpectra
(
meldir
)
==
data
)
with
tests
.
testdir
(
paths
)
as
testdir
:
meldir
=
op
.
join
(
testdir
,
'analysis.ica'
)
with
pytest
.
raises
(
Exception
):
mela
.
getComponentPowerSpectra
(
meldir
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment