Skip to content

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_csv
  • MNT: Don't pass empty dataframes to pd.concat
  • MNT: Another use of delim_whitespace; use raw strings for regexes
  • TEST: remove use of infer_datetime_format; kwargs only for calls to to_csv; don't pass errors argument to to_datetime
  • MNT: Explicitly make CTYPES integer, otherwise pandas warns about enum->float64 conversion
  • TEST: More pandas/numpy deprecation fixes
  • MNT: 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 element
  • MNT: Update UKB schema
  • DOC,TEST: version
  • MNT: Fix bug in UKB schema file
  • TEST: -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 testing
  • MNT: Revert enum change as it caused more problems
  • TEST: Need a space
  • MNT: Explicitly handle empty data
  • RF: Adjust ctypes enum issue in yet a different way
  • TEST: 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.AuiFloatingFrame class 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

  • MNT: Adjust mipmap generation for older GL versions

  • DOC: Add dark mode toggle to user and API documentation
  • BF: Lookup table label names not being read correctly from .lut files 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 glTexImage3D function, when replacing the data for an existing 3D texture.

    For 3D textures of a certain size, the glTexImage3D function does not seem to successfully populate texture data for existing textures. After a texture has been created, the first call to glTexImage3D succeeds, 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 uint8 image (created as a 3D GL_RED texture with internal format GL_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 a GL_MAX_3D_TEXTURE_SIZE of 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 now
  • BF: Typo in __createWXGLContext
  • MNT: Seems that mipmap generation is always required on macOS
  • MNT: Adjust mipmap generation for older GL versions
  • DOC: Add rtd dark mode extension to user and API docs [skip ci]
  • DOC: Fix little typo in cmap overview
  • BF: Names not being read correctly from lut file which contains comments
  • TEST: regression test
  • DOC: Fix MR number
  • MNT: Remove mip-mapping, and vbox chromium driver workarounds from 3D texture configuration
  • MNT: 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

Detailed history

  • TEST: fix error in adjusted imports
  • Adding new wrapper to bedpostx
  • DOC: apidoc
  • TEST: unit test for bedpostx_postproc wrapper
  • Adding wrappers for bedpostx and bedpostx_gpu
  • MNT: Remove bedpostx_postproc, and deprecate bedpostx_postproc_gpu, as they're not intended to be called directly. Add bedpostx[_gpu] wrapper functions
  • TEST: add bedpostx[_gpu] tests
  • CI: Drop py38, add py312
  • ENH: new platform.wsl property for detecting WSL
  • TEST: Smoke tests for platform properties
  • MNT: Pre-release version bump
  • TEST: 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.:

    Error occurred when preparing to fnirt
    Exception thrown with message: >"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 variable
  • Fixed logic that detects out-of-FOV voxels when --in > --ref
  • Fixed tiny bug in mean dilation

fsl-pyfix 0.7.0 -> 0.8.0

Detailed history

  • MNT: Allow custom masks to be passed in via --species argument.
  • TEST: Test passing custom mask directory
  • MNT: Print reference image in log message
  • MNT: Allow feature extractor decorator to be used without registration - useful for testing
  • TEST: 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-sub conda package has been renamed from fsl_sub to fsl-sub for 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 commands.txt may contain:

    cmd1 subject1/; cmd2 subject1/
    cmd1 subject2/; cmd2 subject2/
    
    and be submitted via fsl_sub -t commands.txt

    However, when given a command file which contains multiple commands per line, where the first command does not take any arguments, fsl_sub throws an error. For example,. this file:

    cmd1; cmd2 subject1/
    cmd1; cmd2 subject2/
    

    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_file function, which essentially rejects command files where shutil.which(shlex.split(line)[0]) returns None, for any line in the file. In the second example above, this would resolve to shutil.which('cmd1;'), with the trailing semi-colon causing shutil.which to return None.

    This PR simply ensures that trailing semi-colons are stripped from the tested command, and adds a regression test to that effect.

  • Update changelog and version number

Detailed history

  • Return False when projects key not present in method options
  • Disable mail options when mail_support key missing
  • Incorrect usage of the 'del' keyword
  • Handle miss-configuration where Parallel Environments are enabled but none are configured in the queues Fixes issue #16
  • DOC: Emphasise that package name contains hyphens; some formatting fixes
  • BF: Ignore trailing semi-colons in first command read from command file
  • TEST: Make sure commands with semi-colons are accepted
  • Changelog/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 eddy
  • Added --acqp as alternative to --datain
  • Added --featout option and fixed buglet

fsl-xtract 2.0.4 -> 2.0.5

Detailed history

  • Merge pull request #6 from SPMIC-UoN/xpy
  • fix typo
  • return to accepting any format warp fields
  • fix bug with missing tracts
  • bug fix with savetxt