FSL 6.0.7.12, 17th June 2024
fmrib-unpack 3.8.0 -> 3.8.1
Detailed history
MNT: remove use of deprecated delim_whitespace argument to pd.read_csvMNT: Don't pass empty dataframes to pd.concatMNT: Another use of delim_whitespace; use raw strings for regexesTEST: remove use of infer_datetime_format; kwargs only for calls to to_csv; don't pass errors argument to to_datetimeMNT: Explicitly make CTYPES integer, otherwise pandas warns about enum->float64 conversionTEST: More pandas/numpy deprecation fixesMNT: pd.unique will not accept pythonlist in the future, use np.unique instead; pd.DataFrame.dtypes is a pd.Series, so use iloc to get first elementMNT: Update UKB schemaDOC,TEST: versionMNT: Fix bug in UKB schema fileTEST: -nd was not being applied in test_demo calls, which was causing demo tests to fail because the current online version of field.txt is malformed. Yay.CI: Drop pandas 1.x testingMNT: Revert enum change as it caused more problemsTEST: Need a spaceMNT: Explicitly handle empty dataRF: Adjust ctypes enum issue in yet a different wayTEST: bugs in prior refactor
fsleyes 1.11.0 -> 1.12.3
-
MNT: Force PyOpenGL to use EGL or GLX as needed When running under Wayland, PyOpenGL will default to selecting EGL as its backend. This is not always the correct choice, as applications compiled against X11 can be run under Wayland. The current wxWidgets/wxPython packages on conda-forge are compiled against X11, and are compiled to use GLX for GL initialisation. This means that we must force PyOpenGL to use GLX, and not EGL, as its backend.
This MR also contains an adjustment to the
wx.agw.aui.framemanager.AuiFloatingFrameclass which will hopefully resolve issues with frozen dialog windows when running under the built-in Windows WSL Wayland server. -
BF: Adjust work-around for mipmap generation under macOS Display of 4D images can be corrupted in some macOS environments, unless mipmap generation is enabled. See also !107
- DOC: Add dark mode toggle to user and API documentation
- BF: Lookup table label names not being read correctly from
.lutfiles containing comments -
BF: More adjustements to displaying 4D images on macOS There appears to be a bug in the OpenGL driver on Intel-based macbooks where an integrated Intel GPU is in use. The bug affects use of the
glTexImage3Dfunction, when replacing the data for an existing 3D texture.For 3D textures of a certain size, the
glTexImage3Dfunction does not seem to successfully populate texture data for existing textures. After a texture has been created, the first call toglTexImage3Dsucceeds, but then subsequent calls (e.g. to refresh the texture for a 4D image when the volume is changed) return without any error, leaving us with a corrupted texture and display.The issue seems to related to both the dimensions, and the overall size of the data being transferred. For example, 4D
uint8image (created as a 3DGL_REDtexture with internal formatGL_R8) with 3D dimensions (435, 300, 300) and (870, 150, 300) display fine, but images with dimensions (1740, 150, 150) and (436, 300, 300) are corrupted. This is on a GPU which reports aGL_MAX_3D_TEXTURE_SIZEof 2048.The only workaround I have come up with is to delete and recreate the texture handle every time the texture is refreshed. This doesn't seem to have a substantial impact on performance, as the overhead is likely to be the data transfer, which has to happen anyway.
The issue has been observed on macbooks with these GPUs: - Intel Iris Pro OpenGL Engine - Intel Iris Plus Graphics 625/645/655
Detailed history
CI: Looks like pip behaviour is changed - I'm sure it used to downgrade dev packages to stable packages, but it seems to be ok nowBF: Typo in __createWXGLContextMNT: Seems that mipmap generation is always required on macOSMNT: Adjust mipmap generation for older GL versionsDOC: Add rtd dark mode extension to user and API docs [skip ci]DOC: Fix little typo in cmap overviewBF: Names not being read correctly from lut file which contains commentsTEST: regression testDOC: Fix MR numberMNT: Remove mip-mapping, and vbox chromium driver workarounds from 3D texture configurationMNT: Delete/recreate texture handle on every refresh on intel macs using an integratedd intel GPU, to work around texture corruption issues
fslpy 3.18.2 -> 3.19.0
-
BF: Fix issue with
fsl.wrappersfunctions ignoring$FSLOUTPUTTYPEwhen searching for output files Reported on the FSL mailing list at https://www.jiscmail.ac.uk/cgi-bin/wa-jisc.exe?A2=FSL;673217e7.2405fsl.wrappersfunctions which allow output image files to be loaded (viafsl.wrappers.LOAD) were only searching for files ending in.nii.gz, instead of honouring theFSLOUTPUTTYPEenvironment variable. -
Adding a new wrapper for bedpostx Adding a new wrapper for bedpostx so that there is a bedpostx_postproc that does not use gpu
-
ENH: Add wrapper functions for
bedpostxandbedpostx_gpuThe (unreleased)bedpostx_postprocwrapper function has been removed, and thebedpostx_postproc_gpuwrapper function has been deprecated, as thebedpostx_postproc[_gpu].shscripts are not intended to be called directly. -
ENH: Add new
platform.wslproperty for detecting whether we are running under WSL
Detailed history
TEST: fix error in adjusted importsAdding new wrapper to bedpostxDOC: apidocTEST: unit test for bedpostx_postproc wrapperAdding wrappers for bedpostx and bedpostx_gpuMNT: Remove bedpostx_postproc, and deprecate bedpostx_postproc_gpu, as they're not intended to be called directly. Add bedpostx[_gpu] wrapper functionsTEST: add bedpostx[_gpu] testsCI: Drop py38, add py312ENH: new platform.wsl property for detecting WSLTEST: Smoke tests for platform propertiesMNT: Pre-release version bumpTEST: Typo in test
fsl-bet2 2111.7 -> 2111.8
Detailed history
ENH: Compatibility with BSD sed
fsl-feat5 2201.5 -> 2201.6
Detailed history
BF: Pass fnirt_config through
fsl-fnirt 2203.0 -> 2203.1
-
BF: Fix
fnirt_error.what()- was returning a pointer to a local variable This could result in garbage error messages being emitted, e.g.: -
Fixed logic in invwarp that detects out-of-FOV voxels when --in > --ref It turned out invwarp was very slow. This was due to a failure to properly detect voxels in the inverse warp field that was out of the FOV of the original --ref. That meant that there as a sharp edge between the "valid" and the "invalid" parts of the field in the inverse field. These edges were then detected as singularities, and "nudged" by NEWIMAGE::constrain_topology, which took a very long time. It now correctly detects the "out of FOV" voxels and use a mean dilation from the "valid" to the "invalid" parts of the field. This makes it much faster, and also a little more accurate.
-
Fixed tiny bug in mean dilation Fixed bug that meant that the mean was calculated very mildly wrong if the voxel happened to have the index 1 in any of the directions.
Detailed history
BF: Fix fnirt_error.what() - was returning a pointer to a local variableFixed logic that detects out-of-FOV voxels when --in > --refFixed tiny bug in mean dilation
fsl-pyfix 0.7.0 -> 0.8.0
- MNT: Allow custom mask image directory to be passed via
--speciesargument This allows pyFIX to be used on data from different species, or aligned to a reference image other than the MNI152, without the sagittal masks having to be explicitly added into pyFIX.
Detailed history
MNT: Allow custom masks to be passed in via --species argument.TEST: Test passing custom mask directoryMNT: Print reference image in log messageMNT: Allow feature extractor decorator to be used without registration - useful for testingTEST: MAke sure that custom species directory is passed through from command-line when doing feature extraction
fsl-sub 2.8.3 -> 2.8.4
-
Return False when projects key not present in Fixes issue #16 A malformed configuration file can cause a crash when parsing the command line Fix incorrect 'del' usage Handle missing mail_support and projects configuration options when parsing the command line
-
DOC: Emphasise that package name contains hyphens; some formatting fixes The
fsl-subconda package has been renamed fromfsl_subtofsl-subfor parity with the PyPi and conda-forge releases. This is an annoying constraint of publishing to PyPi - it automatically converts underscores to hyphens. -
BF: Accept command-file with semi-colons (Discovered by @flange)
Submitting an array task file with multiple commands per line is common practice, e.g. a file called
and be submitted viacommands.txtmay contain:fsl_sub -t commands.txtHowever, when given a command file which contains multiple commands per line, where the first command does not take any arguments,
fsl_subthrows an error. For example,. this file:would result in an error such as:
Traceback (most recent call last): File "fsl_sub/utils.py", line 305, in check_command_file check_command(cmd) File "fsl_sub/utils.py", line 282, in check_command raise CommandError("Cannot find script/binary '{}'".format(cmd)) fsl_sub.exceptions.CommandError: Cannot find script/binary 'cmd1;'This error originates in the
fsl_sub.utils.check_command_filefunction, which essentially rejects command files whereshutil.which(shlex.split(line)[0])returnsNone, for any line in the file. In the second example above, this would resolve toshutil.which('cmd1;'), with the trailing semi-colon causingshutil.whichto returnNone.This PR simply ensures that trailing semi-colons are stripped from the tested command, and adds a regression test to that effect.
Detailed history
Return False when projects key not present in method optionsDisable mail options when mail_support key missingIncorrect usage of the 'del' keywordHandle miss-configuration where Parallel Environments are enabled but none are configured in the queues Fixes issue #16DOC: Emphasise that package name contains hyphens; some formatting fixesBF: Ignore trailing semi-colons in first command read from command fileTEST: Make sure commands with semi-colons are acceptedChangelog/version
fsl-topup 2203.2 -> 2203.4
-
Coordinated check of readout time with eddy topup used to accept total readout values which were later rejected by eddy, which could be very annoying. Now the checks are the same for topup and eddy.
-
Added --acqp as alternative to --datain Added --acqp as alternative to --datain. It has irked me for a long time that the exact same parameter has different names in topup and eddy. I have retained the option to use --datain, so as not to brake any existing scripts.
-
Added --featout option and fixed buglet I have added a --featout option that will generate two files. If one specifies --featout=my_fname the files will be named my_fname_fieldmap_rads and my_fname_fieldmap_mag, where the first is the field in rad/s and the second is the average unwarped image. These can be directly used in FEAT. In the process of doing that I discovered a "buglet", which meant that, even in the absence of movement, the most basal slice would get replicated at the very top. This had been reported as a bug, but I had not seen it because of the masking that is done. But it did mean that there would always be a missing slice at the top, which could have been a problem if the FOV was very tight in the slice direction. And it prevented me from outputting an unwarped image that wasn't truncated at the top and/or bottom. I have now fixed the bug, which means that my_fname_fieldmap_mag will have full FOV. I also added writing of a mean unwarped image as part of the --iout output, also with full FOV. This will be useful for creating a mask for eddy and/or dtifit. It means that for data with very tight FOV the estimated field will be slightly different, especially in the topmost slice. But the field generated by the new version will be, slightly, more accurate.
Detailed history
Coordinated check of readout time with eddyAdded --acqp as alternative to --datainAdded --featout option and fixed buglet
fsl-xtract 2.0.4 -> 2.0.5
Detailed history
Merge pull request #6 from SPMIC-UoN/xpyfix typoreturn to accepting any format warp fieldsfix bug with missing tractsbug fix with savetxt