Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
fslpy
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Analyze
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
FSL
fslpy
Commits
b5ab4482
Commit
b5ab4482
authored
7 years ago
by
Paul McCarthy
Browse files
Options
Downloads
Patches
Plain Diff
Assertions can be disabled via a "disabled" context manager function.
parent
f4cda5e1
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
fsl/utils/assertions.py
+56
-0
56 additions, 0 deletions
fsl/utils/assertions.py
with
56 additions
and
0 deletions
fsl/utils/assertions.py
+
56
−
0
View file @
b5ab4482
...
...
@@ -6,22 +6,72 @@
# Paul McCarthy <pauldmccarthy@gmail.com>
#
"""
This module contains a handful of miscellaneous assertion routines.
.. autosummary::
:nosignatures:
assertFileExists
assertIsNifti3D
assertIsNifti4D
assertIsNifti
assertNiftiShape
assertIsSurfGifti
assertIsFuncGifti
assertIsMelodicDir
The :func:`disabled` context manager can be used to temporarily disable
assertion checks.
"""
import
os.path
as
op
import
contextlib
import
nibabel
as
nib
import
fsl.utils.ensure
as
ensure
import
fsl.data.melodicanalysis
as
fslma
_DISABLE_ASSERTIONS
=
False
"""
"""
@contextlib.contextmanager
def
disabled
():
"""
Context manager which allows assertion checks to be temporarily
disabled.
"""
global
_DISABLE_ASSERTIONS
oldval
=
_DISABLE_ASSERTIONS
_DISABLE_ASSERTIONS
=
True
try
:
yield
finally
:
_DISABLE_ASSERTIONS
=
oldval
def
_canDisable
(
func
):
"""
Decorator used on assertion functions, allowing them to be disabled
via the :func:`disabled` context manager.
"""
def
wrapper
(
*
args
,
**
kwargs
):
if
not
_DISABLE_ASSERTIONS
:
return
func
(
*
args
,
**
kwargs
)
return
wrapper
@_canDisable
def
assertFileExists
(
*
args
):
"""
Raise an exception if the specified file/folder/s do not exist.
"""
for
f
in
args
:
assert
op
.
exists
(
f
),
'
file/folder does not exist: {}
'
.
format
(
f
)
@_canDisable
def
assertIsNifti3D
(
*
args
):
"""
Raise an exception if the specified file/s are not 3D nifti.
"""
for
f
in
args
:
...
...
@@ -31,6 +81,7 @@ def assertIsNifti3D(*args):
'
incorrect shape for 3D nifti: {}:{}
'
.
format
(
d
.
shape
,
f
)
@_canDisable
def
assertIsNifti4D
(
*
args
):
"""
Raise an exception if the specified file/s are not 4D nifti.
"""
for
f
in
args
:
...
...
@@ -40,6 +91,7 @@ def assertIsNifti4D(*args):
'
incorrect shape for 4D nifti: {}:{}
'
.
format
(
d
.
shape
,
f
)
@_canDisable
def
assertIsNifti
(
*
args
):
"""
Raise an exception if the specified file/s are not nifti.
"""
for
f
in
args
:
...
...
@@ -51,6 +103,7 @@ def assertIsNifti(*args):
'
file must be a nifti (.nii or .nii.gz): {}
'
.
format
(
f
)
@_canDisable
def
assertNiftiShape
(
shape
,
*
args
):
"""
Raise an exception if the specified nifti/s are not specified shape.
"""
for
fname
in
args
:
...
...
@@ -60,6 +113,7 @@ def assertNiftiShape(shape, *args):
shape
,
d
.
shape
,
fname
)
@_canDisable
def
assertIsSurfGifti
(
*
args
):
"""
Raise an exception if the specified file/s are not surface gifti.
"""
for
fname
in
args
:
...
...
@@ -67,6 +121,7 @@ def assertIsSurfGifti(*args):
'
file must be a surface gifti (surf.gii): {}
'
.
format
(
fname
)
@_canDisable
def
assertIsFuncGifti
(
*
args
):
"""
Raise an exception if the specified file/s are not functional gifti.
"""
for
fname
in
args
:
...
...
@@ -74,6 +129,7 @@ def assertIsFuncGifti(*args):
'
file must be a functional gifti (func.gii): {}
'
.
format
(
fname
)
@_canDisable
def
assertIsMelodicDir
(
path
):
"""
Raise an exception if the specified path is not a melodic directory.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment