Skip to content

FSL 6.0.7.23, 27th July 2026

fmrib-unpack 3.8.1 -> 4.0.1

  • Edit README.rst to correct spelling from BioBank to Biobank

  • ENH: Update FUNPACK to work with CSV files generated on the RAP

    A range of changes updating funpack to work with CSV files generated on the UK Biobank Research Analysis Platform (RAP), and for compatibility with new versions of pandas and pyparsing.

    • funpack can now read input files which use the p<datafield>[_i<instance>][_a<index>] column naming convention.
    • funpack can now read input files which contain "compressed" multi-valued columns - this is described below.
    • New --normalise_names option, which converts column names to the <datafield>-<instance>.<index> format.
    • Migrate to setuptools-scm for version number management.
    • Various updates to address changes and deprecations in recent versions of pandas and pyparsing.

    The most important change in this release is the new ability of funpack to load "compressed" multi-valued columns, such as data field 41202 (ICD10 diagnosis codes). CSV files generated on the RAP store these datafields in a different format to how they are stored in CSV files downloaded from the UKB Showcase.

    Traditionally, these multi-valued data fields are stored with a separate column for each value, for example:

    eid,  41202-0.0, 41202-0.1, 41202-0.2, ..., 41202-0.<N-1>
    1001, C751,      C792,      ,          ...,
    1002, S051,      ,          ,          ...,
    1003, E091,      C751,      Q123,      ..., X998
    1004, ,          ,          ,          ...,
    1005, G443,      G451,      G459,      ...,
    

    i.e. there are as many columns as needed to store the maximum number of values (N) for any individual.

    In files generated on the RAP, some of these multi-valued datafields have been "compressed" into a single column, with values separated by pipe (|) characters, e.g.:

    eid,  41202-0.0
    1001, C751|C792
    1002, S051
    1003, E091|C751|Q123|...|X998
    1004,
    1005, G443|G451|G459
    

    funpack has been updated to automatically detect columns of this type, and convert them to the previous format, so that the values are stored across multiple columns. This expansion is performed by default, but can be inhibited via the new --no_expand_compressed option.

    CSV files generated on the RAP may also use an alternative column naming scheme of the form:

    p<datafield>[_i<instance>][_a<index>]
    

    where the instance and array index sections are only present for datafields with multiple instances or values, e.g.:

    • p31 for sex
    • p53_i0, for date of attending assessment centre (first visit)
    • p22600_a1 for job title (second several values)
    • p20003_i1_a2 for verbally reported treatments/medications (second visit, third of several values)

    funpack has been updated to correctly interpret files which use this column naming convention, and to optionally convert them to the more conventional <datafield>-<instance>.<index> format via the new --normalise_names option (which would convert the above column names to 31-0.0, 53-0.0, 22600-0.1 and 20003-1.2).

  • DOC: Re-generate demo notebooks

    pandoc was inserting newlines into the base64-encoded images, which prevented sphinx from understanding them.

  • DOC: Fix demo notebook generation, and make some adjustments to documentation

  • DOC: Minor fixes to documentation

Detailed history

  • Edit README.rst to correct spelling from BioBank to Biobank
  • ENH: New (not yet implemented) --rap_table_exporter flag, for accepting RAP CSV files. This may be able to be applied automatically without user request, so may be removed later. Add support for parsing "p..." column names in input files.
  • MNT: Try and clear up visit/instance/index terminology
  • ENH: New option to normalise column names
  • TEST: Test normaliseNames logic
  • TEST: Test loading and interpreting alternative UKB style column names
  • MNT: Add array_max from UKB schema to funpack variable table
  • ENH: Scaffolding for expanding compressed multi-valued datafields
  • CI: Drop Python 3.9 from testing, add python 3.13+3.14
  • RF: Store ArrayMax as float so it is nannable
  • CI: Drop py310 as well
  • MNT: Use df.at instead of df.loc for storing iterables in dataframe - new Pandas versions are stricter.
  • TEST: Add ArrayMax column into test variable table
  • MNT: Update UKB schema files
  • TEST: Variable table incomplete
  • MNT: Update pyparsing usage
  • MNT: np.issubtype errors on new pandas string type
  • MNT: Pandas copy arg will be removed in the future
  • TEST: Use df.at to insert object types into dataframes
  • MNT: not all pyparsing attributes have been renamed
  • MNT: Work around another pandas string error
  • MNT: More pandas/pyparsing deprecations
  • TEST: More tests with incomplete variable table
  • MNT: Make sure array is writeable
  • MNT: Work around apparent pandas bug - .at operator raises an error when trying to insert a new row, when the value is an iterable
  • BF: Make sure exprmask is not None before merging/assigning mask
  • TEST: Make sure vartable is complete; use .at instead of .loc when assigning iterables
  • TEST: Seem to no longer be able to modify series in place
  • TEST: Coerce series type
  • MNT: delim_whitespace has been removed in pandas 3
  • MNT: notedown has been abandoned; replace with pandoc
  • MNT: Pandoc embeds images, so I no longer have to
  • MNT: pandoc needs to be told which code blocks should be turned into code cells
  • MNT: Re-generate notebooks
  • MNT: Migrate to setuptools-scm for versioning
  • CI: Hopefully fix zenodo deposition
  • TEST: Adjust version patching strategy in test_demo_commands
  • MNT: Remove git callout in version function
  • TEST: Make sure mp start method is set for tests
  • TEST: Inject scm version into expected demo command output
  • ENH: Logic for expanding compressed columns. Currently always on, will add an option to disable.
  • ENH,BF: Add option to importData to drop empty expanded columns if there are fewer than ArrayMax values. Adjust identifyCompressedColumn to populate all fields of Column objects, so that the first expanded column will be deemed equivalent to the compressed column.
  • DOC: expandCompressedColumn docs
  • ENH: Remove --rap_table_exporter - expansion logic is on by default. Option to disable it with "--no_expand_comppressed".
  • MNT: Remove broadcasting logic
  • TEST: Remove broadcasting tests
  • RF: Refactor column name parsing code, adding a detectColumnNameFormat function.
  • TEST: Rework column name format tests, add test for detectColumnNameFormat
  • RF: Honour column name format when expanding compressed columns
  • BF: Group datafields by (id, instance), not just by id
  • RF: Convert unspecified index/instance to 0 for UKB column format
  • TEST: Unit test for expandCompressed flags
  • RF: Adjust generateColumnName to honour instanced/arrayed datafield state if vartable is provided
  • TEST: Unit test for --no_expand_compressed option
  • DOC: BioBank -> Biobank
  • ENH: Update reindexing by visit logic to work with compressed column expansion
  • TEST: Test reindex by visit with column expansion
  • MNT: Add a few log messages for new functionality
  • RF: Patch executed notebook so it doesn't contain local file paths
  • MNT: Re-generate demo notebooks
  • MNT: Bump versions in docs
  • CI: Update coverage regex
  • DOC: Instructions on preparing data for FUNPACK on the RAP
  • DOC: Re-generate demo notebooks - pandoc was inserting newlines into the base64-encoded images, which broke sphinx.
  • DOC: Fix notebook generation - prevent pandoc from wrapping lines (although it still wraps base64 images). Pandoc also stores each output line in a separate node, so long output truncation logic needed updating
  • DOC: Updates to notebook - don't use funpack=fmrib_unpack alias, use "data-field" instead of "variable" where possible, other miscellaneous fixes/changes.
  • DOC: Various tweaks/fixes
  • DOC: Minor fixes to documentation
  • MNT: Showcase refresh
  • DOC: Make logo a bit smaller

fsleyes 1.18.0 -> 1.20.1

  • RF: Use wx.aui instead of wx.lib.agw.aui for panel layout management

    The wx.lib.agw.aui/wx.aui libraries are used by FSLeyes for panel management - they allow the user to arrange, resize, dock and float control panels. The wx.aui library is part of wxWidgets, written in C++, with Python bindings provided by wxPython. wx.lib.agw.aui is a Python implementation of wx.aui with a range of improvements and fixes.

    Early on in the development of FSLeyes I decided to use wx.lib.agw.aui over wx.aui due to instabilities in the latter in some environments (e.g. wx.aui would regularly cause segmentation faults on macOS). However, wx.aui has seen quite a lot of development over the past few years, and now seems to be stable on Linux, macOS, and Windows/WSL. In contrast, wx.lib.agw.aui has not seen any major development in many years, and has been an endless source of problems. The code base is very messy and complicated, and has required a number of patches over the years to get it to behave.

    This MR also contains some other changes: - A bug fix to the plot views, ensuring that multiple data series from the same image/overlay will be grouped together in the plot legend. - No longer create a "dummy" frame at startup for OpenGL initialisation - the splash screen is used instead. This is another early hack that I implemented to work around instabilities in wxWidgets/wxPython in different environments, but which no longer seems to be necessary. - A work-around to a very strange refresh/rendering issue - the default ActionProvider.getActions() implementation (used for populating view panel settings menus) was using inspect.getmembers() to access all attributes of a ViewPanel. This caused the wx.Window.Handle attribute to be accessed, which resulted in bad flickering and refresh issues. I'm not sure why, but I've re-worked the coupling between the Action and ActionProvider classes so that it is no longer necessary to iterate over all attributes of an object. This unfortunately means that all manually created Action objects must now be explicitly registered via the new ActionProvider.addAction method (all actions that are decorated with @action are automatically registered).

    I've patched the FSLeyes MRS plugin accordingly, and have checked all of the third-party FSLeyes plugins that I am aware of - it doesn't look like any will be affected by this change.

  • ENH: Support for TRX tractogram files

    Courtesy of Ariel Rokem: https://github.com/pauldmccarthy/fsleyes/pull/150

    TRX is a new community-developed file format for storing streamline tractograms. FSLeyes uses the trx-python library to load TRX tractograms, although support for the format may be added to nibabel in the future.

  • ENH: New "loader" plugin entry point

    FSLeyes plugins can now provide custom "loader" functions, for loading images/overlays. This allows plugins to override the default loading logic used by FSLeyes. Loader functions must have the following signature (the argument names and type annotations must match exactly):

    def load(filename : str, check : bool):
        ...
    

    Loader functions must return an overlay with a type supported by FSLeyes, e.g. an instance of the fsl.data.image.Image class, or a subclass thereof.

  • ENH: Support MRtrix3 .mif image files

    FSLeyes can now load MRtrix3 .mif image files. The files are converted to NIfTI on load, so appear as unsaved.

  • ENH,RF: Use information in tractogram headers to position them in the display coordinate system

    Some tractogram file types contain sufficient information for FSLeyes to correctly position them in the display coordinate system (the source image shape, and voxel to world affine). FSLeyes now uses this information when present, meaning that the user no longer needs to set a reference image for tractograms where this information is present.

    This change involved some code reorganisation: - The core transformation matrix logic has been moved from the NiftiOpts class into a standalone fsleyes.displaycontext.transformer.Transformer class, which can be created for any Nifti instance - it is not restricted for use with loaded overlays. - The RefImageOpts class has been updated to allow a default reference image to be set - when specified, it will be used when the refImage property is not set. - The TractogramOpts class creates a reference Nifti isntance (when the required information is present in the header), and passes it to RefImageOpts as the default reference image.

    This MR also contains some unrelated changes: - The overlay display panel has been re-worked so that widgets are organised into collapsible groups. This is to make it easier to use on smaller screens (e.g. laptops). - Plot views now plot data series according to the overlay order, and also allow the order to be changed.

Detailed history

  • MNT: Don't use get_legend_handles_labels, as it filters mpl artists with labels that start with an underscore (see https://github.com/matplotlib/matplotlib/issues/21295)
  • DOC: Fix a few issues in docs
  • BF: Fix legend logic (don't consider disabled/alpha=0/etc series)
  • TEST: Update benchmark - fsleyes_widgets.utils.textbitmap producing very slightly different results when run on my laptop vs in docker container.
  • BF: Prefilter each channel of RGB volume separately. Apply prefilter to float32, as applying it to uint8 seems to have different behvaiour in different environments
  • TEST: Update rgb true spline benchmark; print score on passed CLI tests
  • MNT: Guard against invalid plugin entry points
  • BF: Fix janky logic in OverlayPlotPanel.getDataSeriesToPlot to ensure that dataseries from the same overlay are grouped together
  • ENH: New rgbtohex/hextorgb functions. Adjust applyBricon, brighten, darken, and complementaryColour to accept hex strings
  • TEST: Test rgbtohex/hextorgb
  • MNT: Update doc url; update string formatting
  • MNT: Add typing hints to ViewPanel/ControlPanel; fix name bug in layouts error clause
  • RF: Experimenting with replacing wx.lib.agw.aui with wx.aui. Top level AUI manager in FSLeyesFrame done, although still some issues to iron out
  • RF: Replaced wx.lib.agw.aui with wx.aui in ViewPanel. Still some things to fix
  • MNT: Remove layout properties that are used by wx.lib.agw.aui, but not used by wx.aui. Replace collections.OrderedDict with builtin dict.
  • RF: Use wx.Control instead of wx.Panel in toolbar items, for compatibility with wx.aui.AuiToolBar.
  • MNT: Update layout module docs. Re-generate built in layouts
  • RF: Tweaks to control panel layout management
  • MNT: Update aui-related comments, rework control panel close logic, and floating settings panel resize logic
  • RF: Change docking hint - transparent hint appears to be flaky on windows/wsl. Remove old macOS app menu logic
  • MNT: Remove segfault work around regarding closing splash screen - no longer appears to be an issue. Also, it turns out that EVT_WINDOW_DESTROY was being called for every child of the FSLeyesFrame, which was never intended.
  • RF: Use splash frame instead of a temp wx.Frame during GL initialisation
  • MNT: Bump props/widgets versions
  • BF: ev.Skip() causes the event to be re-raised - this is wny __onPaneClose was being called twice - my fault
  • BF: Another agw.aui layout property that is not supported by wx.aui
  • MNT: There used to be a hack which allowed getActions to contain {name : [action]} mappings, which would be turned intoa sub menu. This was removed in b00e6200 (April 2021).
  • MNT: String formatting
  • RF: MAke FSLeyesFrame an ActionProvider - this should always have been the case (e.g. the @action decorator is used to attach actions to the frame in fsleyes/actions/frameactions.py)
  • MNT: Remove p.wrapperclass metaclass - I never documented why it was necessary, but it doesn't seem to be anymore. It may have been related to the old use of the PropertyOwner metaclass in props (which is no longer used). And it turns out that "__metaclass__ = ..." is Python 2 syntax and has no effect in python 3!
  • RF, BF: Rework the way that Action objects are aded to ActionProviders. Instead of setting the "Action.instance" property, and then using setattr, one must now call "ActionProvider.addAction". This basically does the same thing, but at least is hidden internally. All actions defined via the @action decorators are automatically registered. This is to work around a very strange wxPython issue where use of the inspect.getmembers() call in ActionProvider.getActions() was causing rendering issue on Linux/GTK3. Specifically, accessing <object>.Handle was causing refresh/flicker artifacts. Now, instead of iterating over all attributes of an ActionProvider instance. the getActions() method only access registered Action objects.
  • BF: Make sure action is registered. This is still pretty fugly
  • BF: Wrong attr in _str__ method
  • BF: More unregisterd actions. No need to store a local reference, which is a bit nicer.
  • DOC: Describe manual action registration
  • BF,ENH: Ensure that all @action-decorated methods are created/initialised on creation of an ActionProvider instance. The key is __set_name__ - this allows me to retrieve the owner class of a decorated method. Remove duplicate actions from view panel settings menu, for views which don't override getActions()
  • ENH: Enable reading TRX files.
  • More concise implementation with no spatial transform applied.
  • RF: Minor reorg to remove a bit of duplicate code
  • TEST: Smoke test for trx files
  • ENH: New "loader" plugin type, for custom overlay loading
  • TEST: Test listLoaders
  • DOC: Updates to plugins page
  • RF,ENH: Rename layoutModule to pluginModule, so that the source of any plugin can be looked up. Check with any registered loaders to load overlay files.
  • TEST: Update unit test
  • DOC: Clarification in loader description
  • TEST: Test that loaders are actually used
  • BF: Bug in log call
  • ENH: New MIFImage overlay type, for loading mrtrix .mif files.
  • ENH: Support for loading .mif files
  • DOC: Add .mif, .trx files to userdocs, add fsleyes.data.mif stub to apidocs
  • BF: Fix bug in data layout transpose
  • TEST: Tests for MIFImage
  • DOC: Changelog; make MRs links
  • DOC: Address new warnings appearing in sphinx, other fixes
  • MNT: Add link to mrtrix xform quote [skip-ci]
  • TEST: Remove spurious escape character; not sure hnow that got in there
  • RF: Move transform initialisation into a standalone callable function
  • MNT: Use %-formatting for log messages
  • RF: Read+expose reference image shape+affine for tractograms (but not for .tck files)
  • RF: Move all NIfTI affine transform logic into a standalone "Transformer" class so it can all be created and used independently of images in the overlay list
  • DOC: Stub for transformer module
  • RF: Move torig coordinate system handling into Transformer class
  • RF: Get rid of Transformer.displaySpace - just give it an optional reference to the NiftiOpts, and it can query the transform property directly
  • ENH: RefImageOpts allows a default reference to be set. TractogramOpts creates a default Nifti reference if the tracto file contains the necessary information (shape and affine).
  • MNT: Make sure transformer has been created before initial bounds calculation, and update bounds whenever displayspace/transformer changes
  • MNT: Remove dead code
  • DOC: Changelog, note in userdocs
  • CI: Use authenticated URLs to avoid being rate limited
  • MNT: Update license spec
  • MNT: Check if trackvis header contains orientation info
  • TEST: Update/add tractogram refImage tests
  • BF: RefImageOpts already has access to display context, no need to pass it in
  • RF: Allow plot panel overlay order to be changed. Make sure that data series are plotted in that order. Make sure that legend order matches display order.
  • MNT: Bump wxpython version in CI images
  • MNT: Allow TractogramOpts.coordSpace to be changed when refImage is None
  • RF: Don't use hierarchical cache for initPropertyList functions
  • RF: Rework overlay display panel to allow settings to be divided into more fine-grained groups. By default, only the display settings and first opts group is shown.
  • RF: Expand specific groups by default
  • TEST: Bump up timeout
  • BF: Work around harmless error on exit - no need for immediate mode listener. Only call updateBounds if defaultRef is in use
  • TEST: Re-generate some benchmarks - tiny change to font rendering
  • BF: MRO order meant that TractogramOpts.referenceImage was not taking precedence
  • RF,BK: Remove DisplayContext.getReferenceImage, replace it with getTransformer. The key difference is that the "reference image" was required to be a loaded overlay, and have an associated NiftiOpts instance. This requirement is not applicable to Transformer instances. Changes incoming.
  • RF: Update location panel, sample line tool, ortho profiles
  • RF: Update atlas panel, lightbox/ortho labels
  • RF: Remove bugged Tractogram orientation overrides
  • RF: Update DisplaySpaceWarning
  • BF: Accessing original overlay instead of reference image

fsleyes-plugin-mrs 0.1.7 -> 0.1.11

  • Enh/new control panel

    • New control panel (MRS control shortcut) for quick access of key plotting options
    • Updated default layout
    • Added tests for new control panel and expanded MRSControlPanel's too
  • Enh/various improvements

    • Added 'robust_min' and 'robust_max' options for MRSI colourscheme.
    • First Ortho panel is automatically used in the first 'Load MRSI data' use.
    • Updated default colourscheme settings
  • RF: Don't create new actions for toggling control panels - use the existing actions that are automatically added to the MRSView

    This change is needed to work around an upcoming breaking change in FSLeyes - in the next version, manually created Action objects must be registered via an addAction method.

    The changes here should work with existing FSLeyes versions though.

  • Enh/range tool

    • Added new PPM Range selection tool
    • Updated apply_higher_dim_operations method to take unsliced data array
    • Reorganised tests and helper methods
  • Enh/axes

    • Added NIFTI_MRS loader
    • Updated code to use the Axes object where possible.
    • Added widget to toggle between Frequency and PPM x-axis in MRS View.
    • 'Load MRSI data' tool now automatically loads all datafiles defined in the FileTree, independent of key name.
    • Bumped dependencies.

Detailed history

  • Enh/new control panel
  • Enh/various improvements
  • adding explicitly package dependencies
  • fixed typo
  • RF: Don't create new actions for toggling control panels - use the existing actions that are automatically added to the MRSView
  • updated changelog and bumped version number
  • updated screenshot template & gitlab rules
  • Enh/range tool
  • Enh/axes

fsl-base 2602.1 -> 2607.0

  • MNT: Add ability to link against zlib-ng

    This MR adds a new configuration setting which allows FSL projects to be linked against zlib-ng, an accelerated alternative to zlib. This can be done by setting a variable ZNZLIB_USE_ZLIB_NG to any non-empty string value at compilation time.

    This MR accompanies changes to znzlib which can be found at fsl/znzlib!6.

    At the moment we are using zlib-ng in "dual-linking" mode, where both zlib and zlib-ng can be linked into the same binary. This is so that other third-party libraries (e.g. ciftilib) can continue to use functions from zlib.

    We will continue to use zlib for the moment, but having these changes in place will allow us to switch over to zlib-ng in the future.

    Our strategy may need to be revisited in the future, as there are tentative plans by the conda-forge team to build zlib-ng as a variant/drop-in replacement of zlib: https://github.com/conda-forge/conda-forge.github.io/issues/2638

  • MNT: Remove compression shared libraries from global options

    These flags should be able to be isolated in the znzlib project. A couple of other changes: - Removed -D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR from compiler flags - this was added to be able to use old versions of libxml++ which used std::auto_ptr, and should no longer be necessary. - Fix the default -arch flag on macOS (only relevant when using an alternate compiler toolchain).

  • ENH: Update update_fsl_package to accept version/build string wildcards

    The update_fsl_package command has been updated so that the user can request specific versions/build variants of a package. Previously it only accepted package names, but can now be used like so:

    update_fsl_package "<name>[=<version>[=<build>]]"
    

    where - <name> is the package name - <verison> is a simple glob-style string specifying the package version (e,g. 1.2.*). - <build> is a simple glob-style string specifying the build variant (e.g. *openblas).

    For example, to install a MKL version of openblas:

    update_fsl_package "libblas=*=*mkl" "liblapack=*=*mkl"
    

    Or to install a zlib-ng version of fsl-znzlib:

    update_fsl_package "fsl-znzlib=*=*zlibng"
    
  • RF,BF: Adjust Runtcl to honour $FSLDEVDIR; fix bug in update_fsl_package

    • Fix a bug in update_fsl_package. Some noarch conda packages have separate releases for different platforms (e.g. if the package dependencies differ across platforms). These "noarch variant" packages will depend on a meta-package denoting the platform - one of __linux, __osx, or __win. The update_fsl_package was not taking this into account, so could select an incompatible variant for the running platform.
    • Adjust $FSLDIR/bin/Runtcl to run TCL entry points from $FSLDEVDIR/tcl/ if they exist, and fall back to the official versions in $FSLDIR/tcl/.
  • BF: Fix some bugs introduced into Runtcl in the last release.

  • BF: Fix another bug in Runtcl

  • MNT: Adjust update_fsl_package so it does not consider compiled Python packages that depend on a different Python version.

    This logic may need to be tweaked in the future, with increased use of the Stable Python API. The best option may be to parse the python >=[min],<[max] dependency and compare it against the installed version.

Detailed history

  • MNT: Add ability to link against zlib-ng
  • MNT: Remove compression shared libs from global options - we should be able to isolate this to the znzlib project
  • BF,MNT: -arch x86_64 was the default on all macOS architectures (only relevant when using non-conda compiler toolchain). Remove libxml++ workaround - should no longer be needed
  • ENH: Update conda.parse_channel_metadata and conda.download_package_metadata to allow matching against version/build string globs.
  • ENH: Adjust update_fsl_package to allow version/buildstring pins to be requested for both internal and external packages
  • RF: Adjust parse_channel_metadata so the returned dict uses the pkgspecs that were passed in, rather than the pkg names. Add a new method to check whether a Package matches a pkgspec
  • RF: Adjust update_fsl_package to check whether installed version matches requested package spec and, if not, to install the requested version.
  • BF: Bug in update_fsl_package - would possibly select an incompatible noarch variant package. This is now checked, and only compatible noarch variant packages can be selected. Related change in download_package_metadata - it now populates package dependency information - not sure why this wasn't previously being done, perhaps the anaconda REST API didn't return this information?
  • MNT: Allow tcl entry points in $FSLDEVDIR to be used
  • MNT: Output of nvidia-smi has changed - adjust find_cuda_exe accordingly
  • BF: Syntax error in Runtcl
  • BF: Link to $FSLDIR/bin/Runtcl, otherwise $FSLDEVDIR/bin/<gui> scripts are broken
  • BF: Another bug in Runctl
  • BF: Fix more errors in Runtcl
  • BF: Fix another bug in Runtcl
  • MNT: Ignore compiled python packages that depend on a different version than what is running. This logic may need to be tweaked in the future
  • MNT: Add some more conda-forge-published FSL packages

fsl-bianca 2602.0 -> 2602.1

  • BF: Generate absolute path for manualmask

    The previous version of bianca_overlap_measures would generate the absolute path to manualmask ( as working directory changes within script ). Functionality restored with realpath, note OSX < 13 ( very EOL ) doesn't support this command.

Detailed history

  • BF: Generate absolute path for manualmask

fsl-data_atlases_xtract 1.2.0 -> 2.0.0

Detailed history

  • ENH: Latest versions from SW

fsl-feat5 2201.7 -> 2201.9

  • ENH: Fixes to GLM GUI

    Refactor the GLM GUI so that it doesn't hang/freeze on large higher-level designs.

    • [x] Replace the vendored BWidgets:NoteBook with the built-in ttk::notebook
    • [x] Fix scrollbar behaviour - the existing logic was buggy
    • [x] Resize the EVs / Contrasts notebook to fit the dialog window size
    • [x] Use tablelist for higher level design matrix grid, instead of manually managed spinboxes.
  • BF: Fix help/documentation links

Detailed history

  • MNT: Normalise indentation in featlib.tcl and glm.tcl
  • RF: Replace BWidgets NoteBook with builtin ttk::notebook for first-level GLM EVs notebook
  • RF: Replace outer GLM notebook with ttk::notebook
  • BF: Wrong var name. Not sure why xsbar and ysbar are named differently
  • RF: Fix scrollbar behaviour in GLM dialog. Too scared to modify the scrollform_resize function at the moment, as that is use by several other components. But I suspect they're all similarly broken.
  • BF: Make GLM notebook resize w.r.t. dialog size
  • MNT: Some reformatting to prevent my eyes from bleeding
  • RF: Update higher level GLM grid to use tablelist instead of manually managed spinboxes - allows GUI to be used with larger models
  • RF: Fix tooltip display; freeze group column on horizontal scroll
  • MNT: Remove scrolling on GLM window - tablelist does its own scrolling, so we have to integrate with it.
  • MNT: Don't change mouse cursor when hovering over editable cell.
  • RF: Integrate scrollbars into higher level tablelist grid
  • RF: Allow individual cells to be selected
  • MNT: Remove package require statement - won't work when featlib.tcl is loaded by $FSLDIR/bin/feat cli tool
  • BF: Fix doc links

fsl-giftiio 2111.1 -> 2111.2

Detailed history

  • MNT: Remove dependency header includes from gifti_io.h, so they do not propagate to downstream dependencies.
  • BF: Improper linking - giftiio depends on zlib, not znzlib

fsl-installer 3.18.0 -> 3.19.0

Detailed history

  • RF: Update progress reporting to work with new mamba package cache structure
  • CI: Use generic docker runners for tests

fsl-melodic 2601.1 -> 2601.2

Detailed history

  • supervoxel regression v2 (Gram matrix)
  • chunk size info update

fsl-misc_tcl 2406.0 -> 2607.0

Detailed history

  • MNT: Update doc links
  • MNT: Hook to use tcl libs from $FSLDEVDIR/tcl/
  • MNT: Another doc link
  • ENH: New balloonlist_rawshow command, for showing a tooltip without pre-registering the widget
  • MNT: Vendor tablelist library
  • BF: Accidentally changed tooltip timeout
  • ENH: balloonhelp_rawpending, to schedule a tooltip on an unregistered window
  • RF: Move vendored libs into subdir. Add portions of tcllib
  • MNT: Remove colour customisations, let system decide
  • BF: Bug in fslstart.tcl - don't assume FSLDEVDIR is set
  • MNT: Put package require statements in fslstart
  • MNT: Make default font a bit bigger, make notebook tabs bold

fsl_mrs 2.4.12 -> 2.4.16

Detailed history

  • Enh/tests improv
  • Enh/mrsi tree
  • added fslpy tests for mrsi_segment, fsl_mrsi & fsl_mrs_preproc_edit
  • added Osprey to FSL-MRS Basis conversion option
  • [skip-tests] update changelog for release
  • [skip-tests] ready for release
  • ENH: Updated denmatsim
  • Enh/dynmrs dask
  • updated fslpy and fsl_sub dependencies

fsl-ptx2 2602.0 -> 2607.0

  • Handle multiple values in waytotal file

    If probtrackx2 was run with multiple seed masks, the waytotal file will have a separate value for each mask. Adding them together gives the total number of streamlines.

  • RF: Install fsl_streamlines separately

    The fsl_streamlines tool needs to be built as a separate package, so this MR adjusts the Makefile to allow it to be installed independently from the C++ files.

Detailed history

  • Handle multiple values in waytotal file
  • RF: Install fsl_streamlines separately

fsl-pyfeeds 1.4.0 -> 1.4.1

Detailed history

  • MNT: Skip tests that require input data, when input data is not provided

fsl-sub 2.10.0 -> 2.11.0

Detailed history

  • Fixes to table rendering
  • Spelling fixes
  • Improve readability of submit docstring
  • Add nosubmit option Add plugin feature detection
  • Fix command arguments with spaces
  • Avoid unnecessary string formatting Don't use same name for function and variable
  • Linting
  • Refactor plugin system Port many tests to pytest
  • Fix ordering in pyproject file
  • Bump version number on shell plugin
  • Fix indentation
  • 'Lazy' debug log formatting
  • 'Lazy' debug logging
  • Fix some spelling mistakes
  • More lazy debug formatting
  • Add support for queue lists to submit function Add support for controlling GPU classes when using queue/partition lists
  • Linting fixes

fsl-sub-plugin-slurm 1.6.8 -> 1.7.1

Detailed history

  • Typos
  • Add tests for: * native array tasks * array task files * user provided GRES Avoid potential to add too many commas to GRES submission string Fix generation of native array command line argument
  • Add support for separate GPU and CPU accounts Spelling fixes
  • Improve readability of submit function doc string
  • Add features function Fix CI job failure due to missing pytest-mock Update requires to remove python 3.8 and add 3.13 to classifiers list Add nosubmit function
  • New plugin structure
  • Fix ordering in pyproject file
  • Need to call self's plugin_version
  • Improve docs for external interface
  • Change name configuration option for queue filtering by GPU
  • Ensure GPU project is set when no project specified on command line
  • Fix tests post correction of auto-gpu account issue
  • Use sacctmgr finder function
  • Ensure account list checked against only includes those the user is associated with Ensure account list is sorted and contains unique values

fsl-xtract 2.0.9 -> 2.0.10

Detailed history

  • Merge pull request #14 from SPMIC-UoN/xpy
  • minor bug fix in setting res argument
  • Merge pull request #13 from SPMIC-UoN/xpy
  • Adding multi-template macaque spaces and extended set of subcortical protocols

fsl-znzlib 2511.2 -> 2511.3

  • ENH: Add ability to compile against zlib-ng

    This MR makes some small adjustments to allow znzlib to be compiled against either zlib or zlib-ng. This accompanies changes to the fsl-base project, which can be found at fsl/base!138.

    This change only affects the internal gzipPlugin module, so is an ABI compatible change (i.e. projects which depend on znzlib do not need to be recompiled).

Detailed history

  • MNT: Put all C includes inside "extern "C" {}" blocks. Unnecessary, but best to be explicit.
  • MNT: Add ability to compile against either zlib or zlib-ng.
  • MNT: Add compression shared lib flags into znzlib project (previously were globally added by the FSL build system)

spec2nii 0.8.7 -> 0.8.13

Detailed history

  • Enh/bruker (#196)
  • GE: use RxCoil string metadata for BIDS compatibility (#195)
  • updated clean command to match nifti-mrs 1.4.1 release (#193)
  • VE vienna CRT (#192)
  • BF: retrorecon Siemens DICOM csi (#190)
  • Fix 31P csi (#188)
  • MNT: Update to setuptools_scm (#187)
  • EHN: UIH handling of ON/OFF and wref. (#186)
  • MNT: local script using pixi (#185)
  • ENH: ge 3031 (#184)
  • ENH: Automatic removal of zero-valued elements (#183)
  • Enh/clean subcmd (#182)
  • Added Philips Data/List --special tag for 'four_files' to separate IS… (#170)
  • ENH: Automatic detection of encoding using chardet (#180)
  • Python 3.14 support, remove 3.9 (#179)
  • Handle missing Phoenix keys in MEGA/HERCULES handling in twix_special_case.py (#177)
  • ENH: Special case DICOM handling of dkd_svs_slaser_moconav (#176)