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
Michiel Cottaar
fslpy
Commits
51522048
Commit
51522048
authored
Oct 05, 2018
by
Paul McCarthy
🚵
Browse files
MNT: Removed all the deprecated things
parent
0904c833
Changes
9
Hide whitespace changes
Inline
Side-by-side
fsl/data/dicom.py
View file @
51522048
...
...
@@ -32,7 +32,6 @@ import re
import
glob
import
json
import
logging
import
deprecation
import
nibabel
as
nib
...
...
@@ -80,38 +79,6 @@ class DicomImage(fslimage.Image):
return
self
.
__dicomDir
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use metaKeys instead'
)
def
keys
(
self
):
"""Deprecated - use :meth:`.Image.metaKeys`. """
return
self
.
metaKeys
()
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use metaValues instead'
)
def
values
(
self
):
"""Deprecated - use :meth:`.Image.metaValues`. """
return
self
.
metaValues
()
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use metaItems instead'
)
def
items
(
self
):
"""Deprecated - use :meth:`.Image.metaItems`. """
return
self
.
metaItems
()
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use getMeta instead'
)
def
get
(
self
,
*
args
,
**
kwargs
):
"""Deprecated - use :meth:`.Image.getMeta`. """
return
self
.
getMeta
(
*
args
,
**
kwargs
)
@
memoize
.
memoize
def
enabled
():
"""Returns ``True`` if ``dcm2niix`` is present, and recent enough,
...
...
fsl/data/gifti.py
View file @
51522048
...
...
@@ -25,7 +25,6 @@ are available:
import
glob
import
os.path
as
op
import
deprecation
import
numpy
as
np
import
nibabel
as
nib
...
...
@@ -306,48 +305,3 @@ def relatedFiles(fname, ftypes=None):
glob
.
glob
(
op
.
join
(
dirname
,
'{}*{}'
.
format
(
prefix
,
ftype
))))
return
[
r
for
r
in
related
if
r
!=
path
]
class
GiftiSurface
(
fslmesh
.
TriangleMesh
):
"""Deprecated - use GiftiMesh instead. """
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use GiftiMesh instead'
)
def
__init__
(
self
,
infile
,
fixWinding
=
False
):
"""Deprecated - use GiftiMesh instead. """
surfimg
,
vertices
,
indices
=
loadGiftiSurface
(
infile
)
fslmesh
.
TriangleMesh
.
__init__
(
self
,
vertices
,
indices
,
fixWinding
)
name
=
fslpath
.
removeExt
(
op
.
basename
(
infile
),
ALLOWED_EXTENSIONS
)
infile
=
op
.
abspath
(
infile
)
self
.
_Mesh__name
=
name
self
.
_Mesh__dataSource
=
infile
self
.
surfImg
=
surfimg
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use GiftiMesh instead'
)
def
loadVertexData
(
self
,
dataSource
,
vertexData
=
None
):
"""Deprecated - use GiftiMesh instead. """
if
vertexData
is
None
:
if
dataSource
.
endswith
(
'.gii'
):
vertexData
=
loadGiftiVertexData
(
dataSource
)[
1
]
else
:
vertexData
=
None
return
fslmesh
.
TriangleMesh
.
loadVertexData
(
self
,
dataSource
,
vertexData
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use loadGiftiMesh instead'
)
def
loadGiftiSurface
(
filename
):
"""Deprecated - use loadGiftiMesh instead."""
return
loadGiftiMesh
(
filename
)
fsl/data/image.py
View file @
51522048
...
...
@@ -41,7 +41,6 @@ import logging
import
tempfile
import
six
import
deprecation
import
numpy
as
np
import
scipy.ndimage
as
ndimage
...
...
@@ -502,23 +501,6 @@ class Nifti(notifier.Notifier, meta.Meta):
return
len
(
self
.
__shape
)
@
property
@
deprecation
.
deprecated
(
deprecated_in
=
'1.9.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use ndim instead'
)
def
ndims
(
self
):
"""Deprecated - use :mod::meth:``ndim`` instead. """
return
self
.
ndim
@
deprecation
.
deprecated
(
deprecated_in
=
'1.1.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use ndims instead'
)
def
is4DImage
(
self
):
"""Returns ``True`` if this image is 4D, ``False`` otherwise. """
return
len
(
self
.
__shape
)
>
3
and
self
.
__shape
[
3
]
>
1
def
getXFormCode
(
self
,
code
=
None
):
"""This method returns the code contained in the NIFTI header,
indicating the space to which the (transformed) image is oriented.
...
...
@@ -605,15 +587,6 @@ class Nifti(notifier.Notifier, meta.Meta):
return
npla
.
det
(
self
.
__voxToWorldMat
)
>
0
@
memoize
.
Instanceify
(
memoize
.
memoize
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.2.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use voxToScaledVoxMat instead'
)
def
voxelsToScaledVoxels
(
self
):
"""See :meth:`voxToScaledVoxMat`."""
return
self
.
voxToScaledVoxMat
@
property
def
voxToScaledVoxMat
(
self
):
"""Returns a transformation matrix which transforms from voxel
...
...
@@ -1519,78 +1492,3 @@ def loadIndexedImageFile(filename):
image
=
ftype
.
from_file_map
(
fmap
)
return
image
,
fobj
@
deprecation
.
deprecated
(
deprecated_in
=
'1.3.0'
,
removed_in
=
'2.0.0'
,
details
=
'Upgrade to nibabel 2.2.0'
)
def
read_segments
(
fileobj
,
segments
,
n_bytes
):
"""This function is used in place of the
``nibabel.fileslice.read_segments`` function to ensure thread-safe read
access to image data via the ``nibabel.arrayproxy.ArrayProxy`` (the
``dataobj`` attribute of a ``nibabel`` image).
The ``nibabel`` implementation uses multiple calls to ``seek`` and
``read`` to read segments of data from the file. When accessed by multiple
threads, these seeks and reads can become intertwined, which causes a read
from one thread to read data from the seek location requested by the other
thread.
This implementation protects the seek/read pairs with a
``threading.Lock``, which is added to ``IndexedGzipFile`` instances that
are created in the :func:`loadIndexedImageFile` function.
.. note:: This patch is not required in nibabel 2.2.0 and newer. It will
be removed from ``fslpy`` in version 2.0.0.
"""
from
mmap
import
mmap
try
:
# fileobj is a nibabel.openers.ImageOpener - the
# actual file is available via the fobj attribute
lock
=
getattr
(
fileobj
.
fobj
,
'_arrayproxy_lock'
)
except
AttributeError
:
return
fileslice
.
orig_read_segments
(
fileobj
,
segments
,
n_bytes
)
if
len
(
segments
)
==
0
:
if
n_bytes
!=
0
:
raise
ValueError
(
"No segments, but non-zero n_bytes"
)
return
b
''
if
len
(
segments
)
==
1
:
offset
,
length
=
segments
[
0
]
lock
.
acquire
()
try
:
fileobj
.
seek
(
offset
)
bytes
=
fileobj
.
read
(
length
)
finally
:
lock
.
release
()
if
len
(
bytes
)
!=
n_bytes
:
raise
ValueError
(
"Whoops, not enough data in file"
)
return
bytes
# More than one segment
bytes
=
mmap
(
-
1
,
n_bytes
)
for
offset
,
length
in
segments
:
lock
.
acquire
()
try
:
fileobj
.
seek
(
offset
)
bytes
.
write
(
fileobj
.
read
(
length
))
finally
:
lock
.
release
()
if
bytes
.
tell
()
!=
n_bytes
:
raise
ValueError
(
"Oh dear, n_bytes does not look right"
)
return
bytes
# Monkey-patch the above implementation into
# nibabel. FSLeyes requires at least 2.1.0 -
# newer versions do not need to be patched.
if
nib
.
__version__
==
'2.1.0'
:
fileslice
.
orig_read_segments
=
fileslice
.
read_segments
fileslice
.
read_segments
=
read_segments
fsl/data/imagewrapper.py
View file @
51522048
...
...
@@ -41,8 +41,6 @@ import logging
import
collections
import
itertools
as
it
import
deprecation
import
numpy
as
np
import
nibabel
as
nib
...
...
@@ -717,16 +715,6 @@ class ImageWrapper(notifier.Notifier):
self
.
__updateDataRangeOnWrite
(
slices
,
values
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.7.0'
,
removed_in
=
'2.0.0'
,
details
=
'Moved to fsl.utils.naninfrange'
)
def
naninfrange
(
data
):
"""Deprecated - moved to :mod:`fsl.utils.naninfrange`. """
from
fsl.utils.naninfrange
import
naninfrange
return
naninfrange
(
data
)
def
isValidFancySliceObj
(
sliceobj
,
shape
):
"""Returns ``True`` if the given ``sliceobj`` is a valid and fancy slice
object.
...
...
@@ -768,15 +756,6 @@ def canonicalSliceObj(sliceobj, shape):
return
nib
.
fileslice
.
canonical_slicers
(
sliceobj
,
shape
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.7.0'
,
removed_in
=
'2.0.0'
,
details
=
'moved to the fsl.data.image module'
)
def
canonicalShape
(
shape
):
"""Deprecated - moved to the :mod:`fsl.data.image` module. """
from
fsl.data.image
import
canonicalShape
return
canonicalShape
(
shape
)
def
expectedShape
(
sliceobj
,
shape
):
"""Given a slice object, and the shape of an array to which
that slice object is going to be applied, returns the expected
...
...
fsl/data/mesh.py
View file @
51522048
...
...
@@ -30,9 +30,6 @@ various things with meshes:
import
logging
import
collections
import
six
import
deprecation
import
os.path
as
op
import
numpy
as
np
...
...
@@ -763,109 +760,3 @@ def needsFixing(vertices, indices, fnormals, loBounds, hiBounds):
# If it isn't, we need to flip the
# triangle winding order.
return
np
.
dot
(
n
,
transform
.
normalise
(
camera
-
vert
))
<
0
class
TriangleMesh
(
Mesh
):
"""Deprecated - use :class:`fsl.data.mesh.Mesh`, or one of its sub-classes
instead.
"""
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use fsl.data.mesh.Mesh, or one '
'of its sub-classes instead'
)
def
__init__
(
self
,
data
,
indices
=
None
,
fixWinding
=
False
):
import
fsl.data.vtk
as
fslvtk
if
isinstance
(
data
,
six
.
string_types
):
name
=
op
.
basename
(
data
)
dataSource
=
data
mesh
=
fslvtk
.
VTKMesh
(
data
,
fixWinding
=
False
)
vertices
=
mesh
.
vertices
indices
=
mesh
.
indices
else
:
name
=
'TriangleMesh'
dataSource
=
None
vertices
=
data
Mesh
.
__init__
(
self
,
indices
,
name
=
name
,
dataSource
=
dataSource
)
self
.
addVertices
(
vertices
,
'default'
,
fixWinding
=
fixWinding
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use the Mesh class instead'
)
def
loadVertexData
(
self
,
dataSource
,
vertexData
=
None
):
nvertices
=
self
.
vertices
.
shape
[
0
]
# Currently only white-space delimited
# text files are supported
if
vertexData
is
None
:
vertexData
=
np
.
loadtxt
(
dataSource
)
vertexData
.
reshape
(
nvertices
,
-
1
)
if
vertexData
.
shape
[
0
]
!=
nvertices
:
raise
ValueError
(
'Incompatible size: {}'
.
format
(
dataSource
))
self
.
addVertexData
(
dataSource
,
vertexData
)
return
vertexData
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use bounds instead'
)
def
getBounds
(
self
):
"""Deprecated - use :meth:`bounds` instead. """
return
self
.
bounds
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use the Mesh class instead'
)
def
getVertexData
(
self
,
dataSource
):
try
:
return
Mesh
.
getVertexData
(
self
,
dataSource
)
except
KeyError
:
return
self
.
loadVertexData
(
dataSource
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use fsl.data.vtk.loadVTKPolydataFile instead'
)
def
loadVTKPolydataFile
(
*
args
,
**
kwargs
):
"""Deprecated - use :func:`fsl.data.vtk.loadVTKPolydataFile` instead. """
import
fsl.data.vtk
as
fslvtk
return
fslvtk
.
loadVTKPolydataFile
(
*
args
,
**
kwargs
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use fsl.data.vtk.getFIRSTPrefix instead'
)
def
getFIRSTPrefix
(
*
args
,
**
kwargs
):
"""Deprecated - use :func:`fsl.data.vtk.getFIRSTPrefix` instead. """
import
fsl.data.vtk
as
fslvtk
return
fslvtk
.
getFIRSTPrefix
(
*
args
,
**
kwargs
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.6.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use fsl.data.vtk.findReferenceImage instead'
)
def
findReferenceImage
(
*
args
,
**
kwargs
):
"""Deprecated - use :func:`fsl.data.vtk.findReferenceImage` instead. """
import
fsl.data.vtk
as
fslvtk
return
fslvtk
.
findReferenceImage
(
*
args
,
**
kwargs
)
ALLOWED_EXTENSIONS
=
[
'.vtk'
]
"""Deprecated, will be removed in fslpy 2.0.0. Use
:attr:`fsl.data.vtk.ALLOWED_EXTENSIONS` instead."""
EXTENSION_DESCRIPTIONS
=
[
'VTK polygon model file'
]
"""Deprecated, will be removed in fslpy 2.0.0. Use
:attr:`fsl.data.vtk.EXTENSION_DESCRIPTIONS` instead."""
fsl/utils/async.py
deleted
100644 → 0
View file @
0904c833
#!/usr/bin/env python
#
# async.py - Deprecaed - use the idle module instead.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""This module is deprecated - use the :mod:`.idle` module instead. """
import
logging
import
warnings
from
.idle
import
(
run
,
# noqa
idleReset
,
getIdleTimeout
,
setIdleTimeout
,
inIdle
,
cancelIdle
,
idle
,
idleWhen
,
wait
,
TaskThreadVeto
,
TaskThread
,
mutex
)
log
=
logging
.
getLogger
(
__name__
)
warnings
.
warn
(
'fsl.utils.async is deprecated and will be removed '
'in fslpy 2.0.0 - use fsl.utils.idle instead'
,
DeprecationWarning
)
log
.
warning
(
'fsl.utils.async is deprecated and will be removed '
'in fslpy 2.0.0 - use fsl.utils.idle instead'
)
fsl/utils/callfsl.py
deleted
100644 → 0
View file @
0904c833
#!/usr/bin/env python
#
# callfsl.py - The callFSL function.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""Deprecated - use :mod:`fsl.utils.run` instead.
This module provides the :func:`callFSL` function, which can be
used to call a FSL command, and retrieve the result.
"""
import
logging
import
subprocess
as
sp
import
os.path
as
op
import
deprecation
from
fsl.utils.platform
import
platform
as
fslplatform
log
=
logging
.
getLogger
(
__name__
)
@
deprecation
.
deprecated
(
deprecated_in
=
'1.8.0'
,
removed_in
=
'2.0.0'
,
details
=
'Use fsl.utils.run.runfsl instead'
)
def
callFSL
(
*
args
):
"""Call a FSL command and return the result.
You can pass the command and arguments as a single string, or as a
list/tuple.
"""
if
fslplatform
.
fsldir
is
None
:
raise
RuntimeError
(
'FSL cannot be found!'
)
# If we've been given a single argument,
# assume it is a string containing the
# command and its arguments. Otherwise,
# assume it is a sequence containing
# separate command and arguments.
if
len
(
args
)
==
1
:
args
=
args
[
0
].
split
()
args
=
list
(
args
)
args
[
0
]
=
op
.
join
(
fslplatform
.
fsldir
,
'bin'
,
args
[
0
])
log
.
debug
(
'callfsl: {}'
.
format
(
' '
.
join
(
args
)))
result
=
sp
.
check_output
(
args
).
decode
(
'utf-8'
)
log
.
debug
(
'result: {}'
.
format
(
result
))
return
result
fsl/utils/platform.py
View file @
51522048
...
...
@@ -17,7 +17,6 @@ import os
import
os.path
as
op
import
sys
import
importlib
import
deprecation
import
fsl.utils.notifier
as
notifier
...
...
@@ -73,34 +72,6 @@ are running the Linux/GTK wx build.
"""
@
deprecation
.
deprecated
(
deprecated_in
=
'1.2.2'
,
removed_in
=
'2.0.0'
,
details
=
'Use fsleyes_widgets.isalive instead'
)
def
isWidgetAlive
(
widget
):
"""Returns ``True`` if the given ``wx.Window`` object is "alive" (i.e.
has not been destroyed), ``False`` otherwise. Works in both wxPython
and wxPython/Phoenix.
.. warning:: Don't try to test whether a ``wx.MenuItem`` has been
destroyed, as it will probably result in segmentation
faults. Check the parent ``wx.Menu`` instead.
"""
import
wx
if
platform
.
wxFlavour
==
platform
.
WX_PHOENIX
:
excType
=
RuntimeError
elif
platform
.
wxFlavour
==
platform
.
WX_PYTHON
:
excType
=
wx
.
PyDeadObjectError
try
:
widget
.
GetParent
()
return
True
except
excType
:
return
False
class
Platform
(
notifier
.
Notifier
):
"""The ``Platform`` class contains a handful of properties which contain
information about the platform we are running on.
...
...
@@ -138,7 +109,6 @@ class Platform(notifier.Notifier):
self
.
WX_MAC_COCOA
=
WX_MAC_COCOA
self
.
WX_MAC_CARBON
=
WX_MAC_CARBON
self
.
WX_GTK
=
WX_GTK
self
.
isWidgetAlive
=
isWidgetAlive
self
.
__inSSHSession
=
False
self
.
__inVNCSession
=
False
...
...
fsl/utils/run.py
View file @
51522048
...
...
@@ -144,10 +144,6 @@ def run(*args, **kwargs):
exception is not raised. Ignored if ``submit`` is
specified.
:arg err: Deprecated - use ``stderr`` instead.
:arg ret: Deprecated - use ``exitcode`` instead.
:arg submit: Must be passed as a keyword argument. Defaults to ``None``.
If ``True``, the command is submitted as a cluster job via
the :func:`.fslsub.submit` function. May also be a
...
...
@@ -175,17 +171,6 @@ def run(*args, **kwargs):
``stderr``, and ``exitcode`` arguments.
"""
if
'err'
in
kwargs
:
warnings
.
warn
(
'err is deprecated and will be removed '
'in fslpy 2.0.0 - use stderr instead'
,
DeprecationWarning
)
kwargs
[
'stderr'
]
=
kwargs
.
get
(
'stderr'
,
kwargs
[
'err'
])
if
'ret'
in
kwargs
:
warnings
.
warn
(
'ret is deprecated and will be removed '
'in fslpy 2.0.0 - use exitcode instead'
,
DeprecationWarning
)
kwargs
[
'exitcode'
]
=
kwargs
.
get
(
'exitcode'
,
kwargs
[
'ret'
])
returnStdout
=
kwargs
.
get
(
'stdout'
,
True
)
returnStderr
=
kwargs
.
get
(
'stderr'
,
False
)
returnExitcode
=
kwargs
.
get
(
'exitcode'
,
False
)
...
...
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