fslpy release history¶
This document contains the fslpy release history in reverse chronological
order.
3.4.0 (Tuesday 20th October 2020)¶
Changed¶
Calls to functions in the
assertionsmodule are disabled when a wrapper function is called withcmdonly=True.
3.3.3 (Wednesday 13th October 2020)¶
Changed¶
The
fileOrImage()(and related) decorators will not manipulate the return value of a decorated function if an argumentcmdonly=Trueis passed. This is so that wrapper functions will directly return the command that would be executed whencmdonly=True.
3.3.2 (Tuesday 12th October 2020)¶
Changed¶
Most
wrapper()functions now accept an argument calledcmdonlywhich, ifTrue, will cause the generated command-line call to be returned, instead of executed.
3.3.1 (Thursday 8th October 2020)¶
Changed¶
The
affine.decompose()andaffine.compose()functions now have the ability to return/accept shear components.
Fixed¶
Fixed a bug in the
affine.decompose()function which was corrupting the scale estimates when given an affine containing shears.
3.3.0 (Tuesday 22nd September 2020)¶
Added¶
New ported versions of various core FSL tools, including
imrm,imln,imtest,fsl_abspath,remove_ext,Text2Vest, andVest2Text.New
gps()function, wrapping the FSLgpscommand.New
vest.loadVestFile()andvest.generateVest()functions.
Changed¶
Updates to the BIDS filetree specification.
Fixed¶
The
CoefficientFieldclass now works with alternate reference images (i.e. a reference image with different dimensions to that which was originally used when the non-linear transformation was calculated).
3.2.2 (Thursday 9th July 2020)¶
Changed¶
The
fslsub.func_to_cmd()function allows more fine-grained control over whether the script file is removed after the job has finished running.
3.2.0 (Thursday 11th June 2020)¶
Added¶
A new
fslsub.hold()function to wait on previously submitted jobs, to be used in place of thewaitfunction.
Removed¶
The
fslsub.wait()(andrun.wait()) function has been removed, as repeated calls toqstatcan adversely affect the cluster job submission system.
3.1.0 (Thursday 21st May 2020)¶
Added¶
New
ciftimodule, providing classes and functions for working with CIFTI data.New
winpath()andwslpath()functions for working with paths when using FSL in a Windows Subsystem for Linux (WSL) environment.New
wslcmd()function for generating a path to a FSL command installed in a WSL environment.New
Platform.fslwsl()attribute for detecting whether FSL is installed in a WSL environment.New
Image.niftiDataType()property.The
FileTreeclass has been updated to allow creation of deep copies via the newFileTree.copy()method.
3.0.1 (Wednesday 15th April 2020)¶
Changed¶
The
isMelodicDir()function now accepts directories that do not end with.ica, as long as all required files are present.Added the
dataclassesbackport, sofslpyis now compatible with Python 3.6 again.
3.0.0 (Sunday 29th March 2020)¶
Added¶
New wrapper functions for the FSL
fslstats,prelude()andapplyxfm4D()commands.New
firstDotoption to thepath.getExt(),path.removeExt(), andpath.splitExt(), functions, offering rudimentary support for double-barrelled filenames.The
nonlinear.applyDeformation()function now accepts apremataffine, which is applied to the input image before the deformation field.New
SubmitParamsclass, providing a higer level interface for cluster submission.New
FileTree.load_json()andFileTree.save_json()methods.
Changed¶
fslpynow requires a minimum Python version of 3.7.The default value for the
partial_filloption toFileTree.read()has been changed toFalse. Accordingly, theFileTreeQuerycalls theFileTree.partial_fill()method on theFileTreeit is given.The
gifti.relatedFiles()function now supports files with BIDS-style naming conventions.The
run.run()andrun.runfsl()functions now pass through any additional keyword arguments tosubprocess.Popenor, ifsubmit=True, tofslsub.submit().The
fslsub.submit()function now accepts anenvoption, allowing environment variables to be specified.The
run.runfsl()function now raises an error on attempts to run a command which is not present in$FSLDIR/bin/(e.g.ls).The
bidsmodule has been updated to support files with any extension, not just those in the core BIDS specification (.nii,.nii.gz,.json,.tsv).The return value of a function decorated with
fileOrImage(),fileOrArray(), orfileOrText()is now accessed via an attribute calledstdout, instead ofoutput.Output files of functions decorated with
fileOrImage(),fileOrArray(), orfileOrText(), which have been loaded via theLOADsymbol, can now be accessed as attributes of the returned results object, in addition to being accessed as dict items.Wrapper functions decorated with the
fileOrImage(),fileOrArray(), orfileOrText()decorators will now pass all arguments and return values through unchanged if an argument calledsubmitis passed in, and is set toTrue(or any non-Falsevalue). Furthermore, in such a scenario aValueErrorwill be raised if any in-memory objects orLOADsymbols are passed.The
fileOrText()decorator has been updated to work with input values - file paths must be passed in aspathlib.Pathobjects, so they can be differentiated from input values.Loaded
Imageobjects returned byfsl.wrappersfunctions are now named according to the wrapper function argument name.
Fixed¶
Updated the
prepareArgs()function to useshlex.splitwhen preparing shell command arguments, instead of performing a naive whitespace split.Fixed some bugs in the
fslsub.info()andfslinfo.wait()functions.Fixed the
DeformationField.transform()method so it works with a single set of coordinates.Imagecreation does not fail ifloadMetais set, and a sidecar file containing invalid JSON is present.
Removed¶
Removed the deprecated
.StatisticAtlas.proportions,.StatisticAtlas.coordProportions, and.StatisticAtlas.maskProportionsmethods.Removed the deprecated
indexedoption toImage.__init__().Removed the deprecated
.Image.resamplemethod.Removed the deprecated
.image.loadIndexedImageFilefunction.Removed the deprecatd
.FileTreeQuery.short_namesand.Match.short_nameproperties.Removed the deprecated
.idle.inIdle,.idle.cancelIdle,.idle.idleReset,.idle.getIdleTimeout, and.idle.setIdleTimeoutfunctions.Removed the deprecated
resample.calculateMatrixfunction.
2.8.4 (Monday 2nd March 2020)¶
Added¶
Added a new
partial_filloption toFileTree.read(), which effectively eliminates any variables which only have one value. This was added to accommodate some behavioural changes that were introduced in 2.8.2.
2.8.3 (Friday 28th February 2020)¶
Fixed¶
Fixed a bug in the
Image.save()method.
2.8.2 (Thursday 27th February 2020)¶
Fixed¶
Fixed some subtle bugs in the
filetree.utils.get_all()function.
2.8.1 (Thursday 20th February 2020)¶
Fixed¶
Fixed a bug where an error would be raised on attempts to load an image file without a BIDS-compatible name from a BIDS-like directory.
2.8.0 (Wednesday 29th January 2020)¶
Added¶
New
Nifti.adjust()method, for creating a copy of aNiftiheader with adjusted shape, pixdims, and affine. This can be useful for creating a resampling reference.New
affine.rescale()function, for adjusting a scaling matrix.New
mghimage.voxToSurfMat()function, for creating a voxel-to-freesurfer affine transform from any image.
Changed¶
The
ImageWrappernow maintains its own image data cache, rather than depending onnibabel.Internal changes to avoid using the deprecated
nibabel.dataobj_images.DataobjImage.get_datamethod.
Fixed¶
Improved the algorithm used by the
mesh.needsFixing()function.The
fslmaths.run()method now acceptswrappers.LOADas an output specification.Fixed a bug in the
Meshclass to prevent indices from being loaded as floating point type.Fixed a bug in the
resample()function.Fixed a bug in the
MGHImageclass, which was causing pixdims to be overridden by scales derived from the affine.
Deprecated¶
calculateMatrix()- its functionality has been moved to theaffine.rescale()function.
2.7.0 (Wednesday 6th November 2019)¶
Added¶
New
untiloption to theidle.block()function.New
Idle.neverQueue()setting, which can be used to force all tasks passed toidle.idle()to be executed synchronously.New
IdleLoop.synchronous()context manager, to temporarily change the value ofIdleLoop.neverQueue().New
bidsmodule, containing a few simple functions for working with BIDS datasets.New
image.loadMetadata()function, andloadMetaoption to theImageclass, to automatically find and load any sidecar JSON files associated with an image file.
Fixed¶
Fixed incorrect usage of
setuptools.find_packages, which was causing unit tests to be installed.
Deprecated¶
idle.inIdle()- replaced byIdleLoop.inIdle().idle.cancelIdle()- replaced byIdleLoop.cancelIdle().idle.idleReser()- replaced byIdleLoop.idleReset().idle.getIdleTimeout()- replaced byIdleLoop.callRate().idle.setIdleTimeout()- replaced byIdleLoop.callRate().
2.6.2 (Monday 7th October 2019)¶
Changed¶
Added a debugging hook in the
idlemodule.The
fslsub.submit()function is now more flexible in the way it accepts the command and input arguments.The
run.prepareArgs()function has been renamed (from_prepareArgs).
2.6.1 (Thursday 19th September 2019)¶
Changed¶
fslpyis no longer tested against Python 3.5, and is now tested against Python 3.6, 3.7, and 3.8.
2.6.0 (Tuesday 10th September 2019)¶
Added¶
New
Image.iscomplex()attribute.Support for a new
Statisticatlas type.
Changed¶
The
Cacheclass has a newlruoption, allowing it to be used as a least-recently-used cache.The
fsl.utils.filetreemodule has been refactored to make it easier for thequerymodule to work with file tree hierarchies.The
LabelAtlas.get()method has a newbinaryflag, allowing either a binary mask, or a mask with the original label value, to be returned.The
dicommodule has been updated to work with the latest version ofdcm2niix.
Deprecated¶
ProbabilisticAtlas.proportions(),ProbabilisticAtlas.maskProportions(), andProbabilisticAtlas.labelProportions()have been deprecated in favour ofStatisticAtlas.values(),StatisticAtlas.maskValues(), andStatisticAtlas.labelValues()
2.5.0 (Tuesday 6th August 2019)¶
Added¶
New
Image.getAffine()method, for retrieving an affine between any of the voxel, FSL, or world coordinate systems.New
fsl.transformspackage, which contains classes and functions for working with linear and non-linear FLIRT and FNIRT transformations.New static methods
Nifti.determineShape(),Nifti.determineAffine(),Nifti.generateAffines(), andNifti.identifyAffine().New prototype
fsl.transforms.x5module, for reading/writing linear and non-linear X5 files (preliminary release, subject to change).New prototype
fsl_convert_x5fsl_apply_x5programs, for working with X5 transformations (preliminary release, subject to change).
Changed¶
The
vest.looksLikeVestLutFilefunction has been made slightly more lenient.h5py has been added to the
fslpydependencies.
Deprecated¶
The
fsl.utils.transformmodule has been deprecated; its functions can now be found in thefsl.transforms.affineandfsl.transform.flirtmodules.
2.4.0 (Wednesday July 24th 2019)¶
Changed¶
The
resample_imagescript has been updated to support resampling of images with more than 3 dimensions.
2.3.1 (Friday July 5th 2019)¶
2.3.0 (Tuesday June 25th 2019)¶
Added¶
New
Bitmapclass, for loading bitmap images. TheBitmap.asImage()method can be used to convert aBitmapinto anImage.The
Imageclass now has support for theRGB24andRGBA32NIfTI data types.New
Image.nvalsproperty, for use withRGB24/RGBA32images.New
LabelAtlas.get()andProbabilisticAtlas.get()methods, which return anImagefor a specific region.The
AtlasDescription.find()method also now anameparameter, allowing labels to be looked up by name.New
FileTree.defines()andFileTree.on_disk()methods, to replace theFileTree.exists()method.
Fixed¶
The
makeWriteable()function will always create a copy of anarrayif its base is abytesobject.Fixed a bug in the
GitfitMesh.loadVertices()method.Fixed a bug in the
Mesh.addVertices()method where the wrong face normals could be used for newly added vertex sets.
2.2.0 (Wednesday May 8th 2019)¶
Added¶
New
resample_imagescript.New
resamplemodule (replacing theImage.resample()method), containing functions to resample anImage.New
resample.resampleToPixdim()andresample.resampleToReference()functions, convenience wrappers aroundresample.resample().New
idle.block()function.
Changed¶
The
resample()function (formerlyImage.resample()) now acceptsoriginandmatrixparameters, which can be used to adjust the alignment of the voxel grids of the input and output images.The
transform.decompose()function now accepts both(3, 3)and(4, 4)matrices.
Fixed¶
Minor fixes to some
filetree.filetreetree definitions.
Deprecated¶
The
Image.resample()method has been deprecated in favour of theresample.resample()function.
2.1.0 (Saturday April 13th 2019)¶
Added¶
New tensor conversion routines in the
dtifitmodule (Michiel Cottaar).New
makeWriteable()function which ensures that anumpy.arrayis writeable, and creates a copy if necessary
Changed¶
2.0.1 (Monday April 1st 2019)¶
Fixed¶
Fixed a bug with the
gifti.relatedFiles()function returning duplicate files.
2.0.0 (Friday March 20th 2019)¶
Added¶
New
fsl.utils.filetreepackage for defining and working with file/directory templates (Michiel Cottaar).Simple built-in
deprecateddecorator.New
fsl.data.utilsmodule, which currently contains one functionguessType(), which guesses the data type of a file/directory path.New
commonBase()function for finding the common prefix of a set of file/directory paths.
Changed¶
Removed support for Python 2.7 and 3.4.
Minimum required version of
nibabelis now 2.3.The
Imageclass now fully delegates tonibabelfor managing file handles.The
GiftiMeshclass can now load surface files which contain vertex data, and will accept surface files which end in.gii, rather than requiring files which end in.surf.gii.The
nameproperty ofMeshinstances can now be updated.
Removed¶
Many deprecated items removed.
1.13.3 (Friday February 8th 2019)¶
Fixed¶
Fixed an issue with the
dicom.loadSeries()using memory-mapping for image files that would subsequently be deleted.Fixed an issue in the
GiftiMeshclass, wherenumpy/nibabelwas returning read-only index arrays.
1.13.2 (Friday November 30th 2018)¶
Changed¶
The
Image.resample()method now supports images with more than three dimensions.The
fsl.utils.fslsub.submit()now returns the job-id as a string rather than a one-element tuple. It now also accepts a nested sequence of job ids rather than just a flat sequence. This will also changes the output from the function wrappers infsl.wrappersif submitted.
Fixed¶
Fix to the
ImageWrapperregarding complex data types.
1.13.1 (Friday November 23rd 2018)¶
Fixed¶
Added a missing
imageattribute in theVoxelwiseConfoundEVclass.Make sure that FEAT
Clusterobjects (created by theloadClusterResults()function) containpandlogpattributes, even when cluster thresholding was not used.
1.13.0 (Thursday 22nd November 2018)¶
Added¶
New wrapper functions for
fsl_anat(),applytopup()(Martin Craig).New
fileOrText()decorator for use in wrapper functions (Martin Craig).
Changed¶
Various minor changes and enhancements to the FSL function
wrappersinterfaces (Martin Craig).
Fixed¶
The
immvandimcpscripts now accept incorrect file extensions on input arguments.
1.12.0 (Sunday October 21st 2018)¶
Changed¶
The
extract_noisescript has been renamed tofsl_ents.Increased the minimum required version of
dcm2niixin thefsl.data.dicommodule.
Deprecated¶
The
extract_noisescript.
1.11.0 (Thursday September 13th 2018)¶
Changed¶
Development (test and documentation dependencies) are no longer listed in
setup.py- they now need to be installed manually.Removed conda build infrastructure.
1.10.3 (Sunday September 9th 2018)¶
Added¶
The
parseVersionString()function accepts (and ignores) local version identifer strings.
1.10.2 (Friday September 7th 2018)¶
Fixed¶
The
Image.save()method was not handling memory-mapped images correctly.
1.10.1 (Friday August 3rd 2018)¶
Changed¶
Minor adjustmenets to improve Windows compatibility.
Fixed¶
The
FEATImage.getCOPEmethod was returning PE images.
1.10.0 (Wednesday July 18th 2018)¶
Added¶
A new script,
extract_noise, which can be used to extract ICA component time courses from a MELODIC ICA analysis.New
path.allFiles()function which returns all files underneath a directory.The
fileOrImage()andfileOrArray()decorators now support loading of files which are specified with an output basename.New
fastwrapper function for the FSL FAST tool.
1.9.0 (Monday June 4th 2018)¶
Added¶
New
Image.data()property method, for easy access to image data as anumpyarray.New
logoption to therun.run()function, allowing more fine-grained control over sub-process output streams.New
Platform.fsldevdir()property, allowing the$FSLDEVDIRenvironment variable to be queried/changed.
Changed¶
Image.ndims()has been renamed toImage.ndim(), to align more closely withnumpynaming conventions.The
errandretparameters to therun.run()function have been renamed tostderrandexitcoderespectively.The
runfsl()function will give priority to the$FSLDEVDIRenvironment variable if it is set.
1.8.1 (Friday May 11th 2018)¶
Changed¶
The
fileOrImage()decorator function now acceptsImageobjects as well asnibabelimage objects.
1.8.0 (Thursday May 3rd 2018)¶
Added¶
New
wrapperspackage, containing wrapper functions for a range of FSL tools.New
fsl.utils.runmodule, to replace thefsl.utils.callfslmodule.New
fsl.utils.fslsubmodule, containing afslsub.submit()function which submits a cluster job viafsl_sub.Assertions (in the
assertionsmodule) can be disabled with the newassertions.disabled()context manager.New
fsl.utils.parse_datamodule containing various neuroimaging data constructors for use withargparse.The
memoize.skipUnchanged()decorator has aninvalidatefunction which allows its cache to be cleared.
Deprecated¶
The
fsl.utils.callfslmodule (replaced withfsl.utils.run).
1.7.2 (Monday March 19th 2018)¶
Added¶
Added the
MGHImage.voxToSurfMat()and related properties, giving access to the voxel-to-surface affine for an MGH image.
1.7.1 (Monday March 12th 2018)¶
Changed¶
Adjusted
parseVersionString()so it accepts.dev*suffixes.
Fixed¶
Removed deprecated use of
imagewrapper.canonicalShape().
1.7.0 (Tuesday March 6th 2018)¶
Added¶
The
fsl.utils.assertionsmodule contains a range of functions which can be used to assert that some condition is met.The
fsl.utils.ensuremodule contains a range of functions (currently just one) which can be used to ensure that some condiution is met.
Changed¶
The
settingsmodule now saves its files in a format that is compatible with Python 2 and 3.The
tempdir()function now accepts arootargument, which specifies the location in which the temporary directory should be created.An image’s data source can now be set via
Image.__init__().MGHImage()objects now have aMGHImage.save()method.Adjustments to the
condapackage build and deployment process.The
ImageWrapper.canonicalShape()function has been moved to thedata.imageclass.The
ImageWrapper.naninfrange()function has been moved into its ownnaninfrangemodule.
Fixed¶
Fixed a bug in the
MutexFactoryclass.
Deprecated¶
ImageWrapper.canonicalShape()(moved to thedata.imagemodule)ImageWrapper.naninfrange()function (moved to thenaninfrangemodule)
1.6.8 (Monday February 12th 2018)¶
The atlasq, immv, imcp and imglob scripts suppress some warnings.
1.6.7 (Friday February 9th 2018)¶
More further adjustments to the
condapackage build.Adjustments to pypi source distribution - the
requirements-extra.txtfile was not being included.
1.6.6 (Thursday February 8th 2018)¶
Further adjustments to the
condapackage build.
1.6.5 (Tuesday February 6th 2018)¶
Adjustments to the
condapackage build.
1.6.3 (Friday February 2nd 2018)¶
Minor enhancements to the
WeakFunctionRefclass.Some bugfixes to the
fsl.utils.imcpmodule, with respect to handling relative path names, moving file groups (e.g. .img/.hdr pairs), and non-existent directories.
1.6.2 (Tuesday January 30th 2018)¶
Updates to the
condainstallation process.A new script is installed when
fslpyis installed viapiporconda-atlasquery, which emulates the FSLatlasquerytool.
1.6.1 (Monday January 29th 2018)¶
Removed
lxmlas a dependency - this was necessary in older versions oftrimesh.
1.6.0 (Friday January 26th 2018)¶
The new
Meshclass is now the base class for all mesh types. It has been written to allow multiple sets of vertices to be associated with a mesh object (to support e.g. white matter, inflated, spherical models for a GIFTI/freeusrfer mesh).The new
VTKMeshclass must now be used for loading VTK model files, instead of the oldTriangleMeshclass.The new
Meshclass uses thetrimeshlibrary (https://github.com/mikedh/trimesh) to perform various geometrical operations, accessible via newMesh.rayIntersection(),Mesh.planeIntersection(),Mesh.nearestVertex()methods.The
NiftiandMeshclasses have new methods allowing arbitrary metadata to be stored with the image, as key-value pairs. These are provided by a new mixin class,Meta.Freesurer surface files and vertex data can now be loaded via the
FreesurferMeshclass, in the newfreesurfermodule.Freesurfer
mgz/mghimage files can now be loaded via the newmghimagemodule. Internally, these image files are converted to NIFTI - theMGHImageclass derives from theImageclass.Meta-data access methods on the
DicomImageclass have been deprecated, as their functionality is provided by the newMetamixin.The
TriangleMeshclass has been deprecated in favour of the newMeshclass.Optional dependencies
wxpython,indexed_gzip,trimesh, andrtreeare now listed separately, sofslpycan be used without them (although relevant functionality will be disabled if they are not present).
1.5.4 (Wednesday January 10th 2018)¶
Actually included the fix that was supposed to be in version 1.5.3.
1.5.3 (Tuesday January 9th 2018)¶
Bug fix to
ImageWrapper.__expandCoverage()- was not correctly handling large images with lots ofnanvalues.
1.5.2 (Tuesday January 2nd 2018)¶
Fixed issue with
MANIFEST.infile.
1.5.1 (Thursday December 14th 2017)¶
Fixed bug in
dicom.scanDir()function related to data series ordering.
1.5.0 (Wednesday December 13th 2017)¶
New module
dicom, which provides a thin wrapper on top of Chris Rorden’s dcm2niix.New module
tempdir, which has a convenience function for creating temporary directories.Fixed small issue in
Image.dtype()- making sure that it access image data via theImageWrapper, rather than via the Nifti1Image object.
1.4.2 (Tuesday December 5th 2017)¶
New function
transform.rmsdev()function, which implements the RMS deviation equation for comparing two affine transformations (FMRIB Technical Report TR99MJ1, available at https://www.fmrib.ox.ac.uk/datasets/techrep/).
1.4.1 (Thursday November 9th 2017)¶
Fixed bug in
setup.py.
1.4.0 (Thursday November 9th 2017)¶
The
uniquePrefix()function now raises aPathErrorinstead of aValueError, when an invalid path is provided.The
fsl.utils.asyncmodule is now deprecated, asasyncwill become a reserved word in Python 3.7. It has been renamed tofsl.utils.idle, with no other API changes.For image file pairs, the
hdrextension now takes precedence over theimgextension, when using thefsl.data.image.addExt()(and related) functions.The
fsl.utils.path.addExt()function accepts a new parameter,unambiguouswhich causes it to allow an ambiguous prefix, and return all matching paths.New
atlasqapplication, intended to replace the FSLatlasquerytool.New
imglobapplication, intended to replace the FSLimglobtool.The
Image.resample()method explicitly raises aValueErrorif incompatible shapes are provided.
1.3.1 (Wednesday October 25th 2017)¶
Fixed bug in
Platform.wxPlatform()causing it to always returnWX_UNKNOWN.
1.3.0 (Wednesday October 25th 2017)¶
Atlasclasses can now passkwargsthrough to theImageconstructor.LabelAtlasimage values no longer need to match the index of the label into theAtlasDescriptionlabelslist. This means that label atlas XML files may contain non-sequential label values.Cachenow implements__getitem__and__setitem__The
image.read_segments()function (monkey-patched intonibabel) is deprecated, as it is no longer necessary as ofnibabel2.2.0.platform.isWidgetAlive()is deprecated in favour of an equivalent function in thefsleyes-widgetslibrary.scipyis now explicitly listed as a requirement (this should have been done in 1.2.1).
1.2.2 (Saturday October 21st 2017)¶
The
image.read_segments()function is only monkey-patched intonibabel2.1.0, as it breaks when used with 2.2.0.
1.2.1 (Saturday October 7th 2017)¶
If an
Imageis passed an existingnibabelheader object, it creates a copy, rather than using the original.New
Image.resample()method, which resamples the image data to a different resolution.New
LabelAtlas.coordLabel(),LabelAtlas.maskLabel(),ProbabilisticAtlas.coordProportions()andProbabilisticAtlas.maskProportions()methods. Thecoordmethods perform coordinate queries in voxel or world coordinates, and themaskmethods perform mask-based queries.
1.2.0 (Thursday September 21st 2017)¶
fsl.data.image.Nifti.voxelsToScaledVoxels()method deprecated in favour of newNifti.voxToScaledVoxMat()andNifti.scaledVoxToVoxMat()properties.
1.1.0 (Monday September 11th 2017)¶
The
fslpackage is now apkgutil-style namespace package, so it can be used for different projects.Updates to
fsl.data.image.Niftiandfsl.data.image.Imageto add support for images with more than 4 dimensions: - Newndimsproperty -is4DImagemethod deprecated
1.0.5 (Thursday August 10th 2017)¶
New functions and further adjustments in
fsl.utils.transformmodule:
transform.rotMatToAffine()converts a(3, 3)rotation matrix into a(4, 4)affine.
transform.transformNormal()applies an affine transform to one or more vectors.
transform.veclength()calculates the length of a vector
transform.normalise()normalises a vector
transform.scaleOffsetXform()adjusted to have more flexibility with respect to inputs.
transform.decompose()can return rotations either as three axis-angles, or as a rotation matrix
Updates to
fsl.data.mesh.TriangleMesh-verticesandindicesare nowpropertyattributes. New lazily generatednormalsandvnormalsproperties (face and vertex normals respectively). Option to__init__to fix the face winding order of a mesh.fsl.utils.memoize.memoize()decorator made into a class rather than a function. The newMemoizeclass has aninvalidatemethod, which clears the cache.
1.0.4 (Friday July 14th 2017)¶
Python 2/3 compatibility fix to
fsl.utils.callfsl.Fix to
fsl.utils.transform.scaleOffsetXform()- accepts inputs that are not lists.fsl.utils.transform.compose()accepts either a sequence of three axis angles, or a(3, 3)rotation matrix.
1.0.3 (Sunday June 11th 2017)¶
Fix to
fsl.utils.asyncwhich was breaking environments where multiplewx.Appinstances were being created.
1.0.2 (Thursday June 8th 2017)¶
Python 2/3 compatibility fixes
New
fsl.version.patchVersion()function.
1.0.1 (Sunday 4th June 2017)¶
New version number parsing functions in
fsl.version.
1.0.0 (Saturday May 27th 2017)¶
Removed many GUI-related modules - they have been moved to the
fsleyes-widgetsproject. The following modules have been removed: -fsl.utils.colourbarbitmap-fsl.utils.dialog-fsl.utils.imagepanel-fsl.utils.layout-fsl.utils.platform-fsl.utils.runwindow-fsl.utils.status-fsl.utils.textbitmap-fsl.utils.typedict-fsl.utils.webpagefsl.utils.settingsmodule rewritten. It no longer useswx, but instead stores plain-text andpicklefiles in the user’s home directory.Software GL renderer test in
fsl.utils.platformis more lenientNew
AtlasLabelclassImage.__init__()allows arguments to be passed through tonibabel.load.New
Nifti.strval()method to handle escaped strings in NIFTI headers.Python 2/3 compatibility fixes
0.11.0 (Thursday April 20th 2017)¶
First public release as part of FSL 5.0.10