FSL 6.0.7.23, 27th July 2026
- New WHIM (White matter HIerarchical Modelling) is a tool for performing fixel-based analysis on diffusion MRI ( please see https://doi.org/10.1162/imag_a_00436 for more details ).
- fmrib-unpack 3.8.1 -> 4.0.1
- fsleyes 1.18.0 -> 1.20.1
- fsleyes-plugin-mrs 0.1.7 -> 0.1.11
- fsl-base 2602.1 -> 2607.0
- fsl-bianca 2602.0 -> 2602.1
- fsl-data_atlases_xtract 1.2.0 -> 2.0.0
- fsl-feat5 2201.7 -> 2201.9
- fsl-giftiio 2111.1 -> 2111.2
- fsl-installer 3.18.0 -> 3.19.0
- fsl-melodic 2601.1 -> 2601.2
- fsl-misc_tcl 2406.0 -> 2607.0
- fsl_mrs 2.4.12 -> 2.4.16
- fsl-ptx2 2602.0 -> 2607.0
- fsl-pyfeeds 1.4.0 -> 1.4.1
- fsl-sub 2.10.0 -> 2.11.0
- fsl-sub-plugin-slurm 1.6.8 -> 1.7.1
- fsl-xtract 2.0.9 -> 2.0.10
- fsl-znzlib 2511.2 -> 2511.3
- spec2nii 0.8.7 -> 0.8.13
fmrib-unpack 3.8.1 -> 4.0.1
-
ENH: Update FUNPACK to work with CSV files generated on the RAP
A range of changes updating
funpackto work with CSV files generated on the UK Biobank Research Analysis Platform (RAP), and for compatibility with new versions ofpandasandpyparsing.funpackcan now read input files which use thep<datafield>[_i<instance>][_a<index>]column naming convention.funpackcan now read input files which contain "compressed" multi-valued columns - this is described below.- New
--normalise_namesoption, which converts column names to the<datafield>-<instance>.<index>format. - Migrate to
setuptools-scmfor version number management. - Various updates to address changes and deprecations in recent versions of
pandasandpyparsing.
The most important change in this release is the new ability of
funpackto 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.:funpackhas 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_compressedoption.CSV files generated on the RAP may also use an alternative column naming scheme of the form:
where the instance and array index sections are only present for datafields with multiple instances or values, e.g.:
p31for sexp53_i0, for date of attending assessment centre (first visit)p22600_a1for job title (second several values)p20003_i1_a2for verbally reported treatments/medications (second visit, third of several values)
funpackhas 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_namesoption (which would convert the above column names to31-0.0,53-0.0,22600-0.1and20003-1.2). -
DOC: Re-generate demo notebooks
pandocwas inserting newlines into the base64-encoded images, which prevented sphinx from understanding them. -
DOC: Fix demo notebook generation, and make some adjustments to documentation
Detailed history
Edit README.rst to correct spelling from BioBank to BiobankENH: 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 terminologyENH: New option to normalise column namesTEST: Test normaliseNames logicTEST: Test loading and interpreting alternative UKB style column namesMNT: Add array_max from UKB schema to funpack variable tableENH: Scaffolding for expanding compressed multi-valued datafieldsCI: Drop Python 3.9 from testing, add python 3.13+3.14RF: Store ArrayMax as float so it is nannableCI: Drop py310 as wellMNT: Use df.at instead of df.loc for storing iterables in dataframe - new Pandas versions are stricter.TEST: Add ArrayMax column into test variable tableMNT: Update UKB schema filesTEST: Variable table incompleteMNT: Update pyparsing usageMNT: np.issubtype errors on new pandas string typeMNT: Pandas copy arg will be removed in the futureTEST: Use df.at to insert object types into dataframesMNT: not all pyparsing attributes have been renamedMNT: Work around another pandas string errorMNT: More pandas/pyparsing deprecationsTEST: More tests with incomplete variable tableMNT: Make sure array is writeableMNT: Work around apparent pandas bug - .at operator raises an error when trying to insert a new row, when the value is an iterableBF: Make sure exprmask is not None before merging/assigning maskTEST: Make sure vartable is complete; use .at instead of .loc when assigning iterablesTEST: Seem to no longer be able to modify series in placeTEST: Coerce series typeMNT: delim_whitespace has been removed in pandas 3MNT: notedown has been abandoned; replace with pandocMNT: Pandoc embeds images, so I no longer have toMNT: pandoc needs to be told which code blocks should be turned into code cellsMNT: Re-generate notebooksMNT: Migrate to setuptools-scm for versioningCI: Hopefully fix zenodo depositionTEST: Adjust version patching strategy in test_demo_commandsMNT: Remove git callout in version functionTEST: Make sure mp start method is set for testsTEST: Inject scm version into expected demo command outputENH: 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 docsENH: Remove --rap_table_exporter - expansion logic is on by default. Option to disable it with "--no_expand_comppressed".MNT: Remove broadcasting logicTEST: Remove broadcasting testsRF: Refactor column name parsing code, adding a detectColumnNameFormat function.TEST: Rework column name format tests, add test for detectColumnNameFormatRF: Honour column name format when expanding compressed columnsBF: Group datafields by (id, instance), not just by idRF: Convert unspecified index/instance to 0 for UKB column formatTEST: Unit test for expandCompressed flagsRF: Adjust generateColumnName to honour instanced/arrayed datafield state if vartable is providedTEST: Unit test for --no_expand_compressed optionDOC: BioBank -> BiobankENH: Update reindexing by visit logic to work with compressed column expansionTEST: Test reindex by visit with column expansionMNT: Add a few log messages for new functionalityRF: Patch executed notebook so it doesn't contain local file pathsMNT: Re-generate demo notebooksMNT: Bump versions in docsCI: Update coverage regexDOC: Instructions on preparing data for FUNPACK on the RAPDOC: 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 updatingDOC: 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/fixesDOC: Minor fixes to documentationMNT: Showcase refreshDOC: Make logo a bit smaller
fsleyes 1.18.0 -> 1.20.1
-
RF: Use
wx.auiinstead ofwx.lib.agw.auifor panel layout managementThe
wx.lib.agw.aui/wx.auilibraries are used by FSLeyes for panel management - they allow the user to arrange, resize, dock and float control panels. Thewx.auilibrary is part of wxWidgets, written in C++, with Python bindings provided by wxPython.wx.lib.agw.auiis a Python implementation ofwx.auiwith a range of improvements and fixes.Early on in the development of FSLeyes I decided to use
wx.lib.agw.auioverwx.auidue to instabilities in the latter in some environments (e.g.wx.auiwould regularly cause segmentation faults on macOS). However,wx.auihas 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.auihas 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 usinginspect.getmembers()to access all attributes of aViewPanel. This caused thewx.Window.Handleattribute to be accessed, which resulted in bad flickering and refresh issues. I'm not sure why, but I've re-worked the coupling between theActionandActionProviderclasses so that it is no longer necessary to iterate over all attributes of an object. This unfortunately means that all manually createdActionobjects must now be explicitly registered via the newActionProvider.addActionmethod (all actions that are decorated with@actionare 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-pythonlibrary to load TRX tractograms, although support for the format may be added tonibabelin 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):
Loader functions must return an overlay with a type supported by FSLeyes, e.g. an instance of the
fsl.data.image.Imageclass, or a subclass thereof. -
ENH: Support MRtrix3
.mifimage filesFSLeyes can now load MRtrix3
.mifimage 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
NiftiOptsclass into a standalonefsleyes.displaycontext.transformer.Transformerclass, which can be created for anyNiftiinstance - it is not restricted for use with loaded overlays. - TheRefImageOptsclass has been updated to allow a default reference image to be set - when specified, it will be used when therefImageproperty is not set. - TheTractogramOptsclass creates a referenceNiftiisntance (when the required information is present in the header), and passes it toRefImageOptsas 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 docsBF: 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 environmentsTEST: Update rgb true spline benchmark; print score on passed CLI testsMNT: Guard against invalid plugin entry pointsBF: Fix janky logic in OverlayPlotPanel.getDataSeriesToPlot to ensure that dataseries from the same overlay are grouped togetherENH: New rgbtohex/hextorgb functions. Adjust applyBricon, brighten, darken, and complementaryColour to accept hex stringsTEST: Test rgbtohex/hextorgbMNT: Update doc url; update string formattingMNT: Add typing hints to ViewPanel/ControlPanel; fix name bug in layouts error clauseRF: Experimenting with replacing wx.lib.agw.aui with wx.aui. Top level AUI manager in FSLeyesFrame done, although still some issues to iron outRF: Replaced wx.lib.agw.aui with wx.aui in ViewPanel. Still some things to fixMNT: 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 layoutsRF: Tweaks to control panel layout managementMNT: Update aui-related comments, rework control panel close logic, and floating settings panel resize logicRF: Change docking hint - transparent hint appears to be flaky on windows/wsl. Remove old macOS app menu logicMNT: 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 initialisationMNT: Bump props/widgets versionsBF: ev.Skip() causes the event to be re-raised - this is wny __onPaneClose was being called twice - my faultBF: Another agw.aui layout property that is not supported by wx.auiMNT: 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 formattingRF: 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 fuglyBF: Wrong attr in _str__ methodBF: More unregisterd actions. No need to store a local reference, which is a bit nicer.DOC: Describe manual action registrationBF,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 codeTEST: Smoke test for trx filesENH: New "loader" plugin type, for custom overlay loadingTEST: Test listLoadersDOC: Updates to plugins pageRF,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 testDOC: Clarification in loader descriptionTEST: Test that loaders are actually usedBF: Bug in log callENH: New MIFImage overlay type, for loading mrtrix .mif files.ENH: Support for loading .mif filesDOC: Add .mif, .trx files to userdocs, add fsleyes.data.mif stub to apidocsBF: Fix bug in data layout transposeTEST: Tests for MIFImageDOC: Changelog; make MRs linksDOC: Address new warnings appearing in sphinx, other fixesMNT: Add link to mrtrix xform quote [skip-ci]TEST: Remove spurious escape character; not sure hnow that got in thereRF: Move transform initialisation into a standalone callable functionMNT: Use %-formatting for log messagesRF: 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 listDOC: Stub for transformer moduleRF: Move torig coordinate system handling into Transformer classRF: Get rid of Transformer.displaySpace - just give it an optional reference to the NiftiOpts, and it can query the transform property directlyENH: 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 changesMNT: Remove dead codeDOC: Changelog, note in userdocsCI: Use authenticated URLs to avoid being rate limitedMNT: Update license specMNT: Check if trackvis header contains orientation infoTEST: Update/add tractogram refImage testsBF: RefImageOpts already has access to display context, no need to pass it inRF: 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 imagesMNT: Allow TractogramOpts.coordSpace to be changed when refImage is NoneRF: Don't use hierarchical cache for initPropertyList functionsRF: 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 defaultTEST: Bump up timeoutBF: Work around harmless error on exit - no need for immediate mode listener. Only call updateBounds if defaultRef is in useTEST: Re-generate some benchmarks - tiny change to font renderingBF: MRO order meant that TractogramOpts.referenceImage was not taking precedenceRF,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 profilesRF: Update atlas panel, lightbox/ortho labelsRF: Remove bugged Tractogram orientation overridesRF: Update DisplaySpaceWarningBF: Accessing original overlay instead of reference image
fsleyes-plugin-mrs 0.1.7 -> 0.1.11
-
- 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
-
- 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
-
This change is needed to work around an upcoming breaking change in FSLeyes - in the next version, manually created
Actionobjects must be registered via anaddActionmethod.The changes here should work with existing FSLeyes versions though.
-
- Added new PPM Range selection tool
- Updated
apply_higher_dim_operationsmethod to take unsliced data array - Reorganised tests and helper methods
-
- Added NIFTI_MRS loader
- Updated code to use the
Axesobject 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 panelEnh/various improvementsadding explicitly package dependenciesfixed typoRF: Don't create new actions for toggling control panels - use the existing actions that are automatically added to the MRSViewupdated changelog and bumped version numberupdated screenshot template & gitlab rulesEnh/range toolEnh/axes
fsl-base 2602.1 -> 2607.0
-
MNT: Add ability to link against
zlib-ngThis MR adds a new configuration setting which allows FSL projects to be linked against
zlib-ng, an accelerated alternative tozlib. This can be done by setting a variableZNZLIB_USE_ZLIB_NGto any non-empty string value at compilation time.This MR accompanies changes to
znzlibwhich can be found at fsl/znzlib!6.At the moment we are using
zlib-ngin "dual-linking" mode, where bothzlibandzlib-ngcan be linked into the same binary. This is so that other third-party libraries (e.g. ciftilib) can continue to use functions fromzlib.We will continue to use
zlibfor the moment, but having these changes in place will allow us to switch over tozlib-ngin 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-ngas a variant/drop-in replacement ofzlib: 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
znzlibproject. A couple of other changes: - Removed-D_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTRfrom compiler flags - this was added to be able to use old versions oflibxml++which usedstd::auto_ptr, and should no longer be necessary. - Fix the default-archflag on macOS (only relevant when using an alternate compiler toolchain). -
ENH: Update
update_fsl_packageto accept version/build string wildcardsThe
update_fsl_packagecommand 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: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:
Or to install a
zlib-ngversion offsl-znzlib: -
RF,BF: Adjust
Runtclto honour$FSLDEVDIR; fix bug inupdate_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. Theupdate_fsl_packagewas not taking this into account, so could select an incompatible variant for the running platform. - Adjust
$FSLDIR/bin/Runtclto run TCL entry points from$FSLDEVDIR/tcl/if they exist, and fall back to the official versions in$FSLDIR/tcl/.
- Fix a bug in
-
BF: Fix some bugs introduced into
Runtclin the last release. -
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-ngMNT: Remove compression shared libs from global options - we should be able to isolate this to the znzlib projectBF,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 neededENH: 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 packagesRF: 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 pkgspecRF: 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 usedMNT: Output of nvidia-smi has changed - adjust find_cuda_exe accordinglyBF: Syntax error in RuntclBF: Link to $FSLDIR/bin/Runtcl, otherwise $FSLDEVDIR/bin/<gui> scripts are brokenBF: Another bug in RunctlBF: Fix more errors in RuntclBF: Fix another bug in RuntclMNT: Ignore compiled python packages that depend on a different version than what is running. This logic may need to be tweaked in the futureMNT: 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_measureswould generate the absolute path tomanualmask( as working directory changes within script ). Functionality restored withrealpath, 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
-
Refactor the GLM GUI so that it doesn't hang/freeze on large higher-level designs.
- [x] Replace the vendored
BWidgets:NoteBookwith the built-inttk::notebook - [x] Fix scrollbar behaviour - the existing logic was buggy
- [x] Resize the EVs / Contrasts notebook to fit the dialog window size
- [x] Use
tablelistfor higher level design matrix grid, instead of manually managed spinboxes.
- [x] Replace the vendored
Detailed history
MNT: Normalise indentation in featlib.tcl and glm.tclRF: Replace BWidgets NoteBook with builtin ttk::notebook for first-level GLM EVs notebookRF: Replace outer GLM notebook with ttk::notebookBF: Wrong var name. Not sure why xsbar and ysbar are named differentlyRF: 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 sizeMNT: Some reformatting to prevent my eyes from bleedingRF: Update higher level GLM grid to use tablelist instead of manually managed spinboxes - allows GUI to be used with larger modelsRF: Fix tooltip display; freeze group column on horizontal scrollMNT: 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 gridRF: Allow individual cells to be selectedMNT: Remove package require statement - won't work when featlib.tcl is loaded by $FSLDIR/bin/feat cli toolBF: Fix doc links
fsl-giftiio 2111.1 -> 2111.2
-
The
gifti_io.hfile contains#include <zlib.h>and#include <expat.h>which means that any other project which uses giftiio must have the zlib and expat development files. This requirement is very straightforward to eliminate. -
BF: Improper linking - giftiio depends on zlib, not znzlib
Replace
-lfsl-znzwith-lzin theMakefileaccordingly.
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 structureCI: 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
-
ENH: Add
tablelistpackage for displaying tables- Add the tcl
tablelistpackage to use in the GLM GUI (https://www.nemethi.de/tablelist/) - Adjust
fslstart.tclto allow loading of TCL library files from$FSLDEVDIR/tcl/, in preference to$FSLDIR/tcl/. - Vendor parts of the
tclliblibrary - the conda-forgetcllibpackage seems to be partly broken and abandoned. - Add some new functions in
balloon.tclfor displaying tooltips. - Remove colour/font customisations in
$FSLDIR/tcl/fslstart.tcl- this gives partial dark mode support. - Fix some FSL documentation links.
- Add the tcl
-
MNT: Put
package requirestatements infslstart.tclThis makes it implicitly available to all GUI TCL scripts.
-
MNT: Make default font a bit bigger, make notebook tabs bold
Detailed history
MNT: Update doc linksMNT: Hook to use tcl libs from $FSLDEVDIR/tcl/MNT: Another doc linkENH: New balloonlist_rawshow command, for showing a tooltip without pre-registering the widgetMNT: Vendor tablelist libraryBF: Accidentally changed tooltip timeoutENH: balloonhelp_rawpending, to schedule a tooltip on an unregistered windowRF: Move vendored libs into subdir. Add portions of tcllibMNT: Remove colour customisations, let system decideBF: Bug in fslstart.tcl - don't assume FSLDEVDIR is setMNT: Put package require statements in fslstartMNT: Make default font a bit bigger, make notebook tabs bold
fsl_mrs 2.4.12 -> 2.4.16
-
- Improved test suite execution time by minimising number of threads and parallel processes in shared machines
- Added tests for fslpy wrappers: fsl_mrs, fsl_mrs_preproc, fsl_mrs_proc, svs_segment
- Added folder validator util
- Fixed some test tolerance limits to avoid "random" failures
-
fsl_mrsinow creates a file-tree file in the output folder (mrsi.tree) to be used infsleyes-plugin-mrs
-
added Osprey to FSL-MRS Basis conversion option
- Added Osprey .mat file conversion to FSL-MRS Basis in
basis_tools convert.
- Added Osprey .mat file conversion to FSL-MRS Basis in
-
added fslpy tests for mrsi_segment, fsl_mrsi & fsl_mrs_preproc_edit
-
[skip-tests] ready for release
- Updated requirements list
Detailed history
Enh/tests improvEnh/mrsi treeadded fslpy tests for mrsi_segment, fsl_mrsi & fsl_mrs_preproc_editadded Osprey to FSL-MRS Basis conversion option[skip-tests] update changelog for release[skip-tests] ready for releaseENH: Updated denmatsimEnh/dynmrs daskupdated fslpy and fsl_sub dependencies
fsl-ptx2 2602.0 -> 2607.0
-
Handle multiple values in waytotal file
If
probtrackx2was run with multiple seed masks, thewaytotalfile will have a separate value for each mask. Adding them together gives the total number of streamlines. -
RF: Install
fsl_streamlinesseparatelyThe
fsl_streamlinestool needs to be built as a separate package, so this MR adjusts theMakefileto allow it to be installed independently from the C++ files.
Detailed history
Handle multiple values in waytotal fileRF: 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 renderingSpelling fixesImprove readability of submit docstringAdd nosubmit option Add plugin feature detectionFix command arguments with spacesAvoid unnecessary string formatting Don't use same name for function and variableLintingRefactor plugin system Port many tests to pytestFix ordering in pyproject fileBump version number on shell pluginFix indentation'Lazy' debug log formatting'Lazy' debug loggingFix some spelling mistakesMore lazy debug formattingAdd support for queue lists to submit function Add support for controlling GPU classes when using queue/partition listsLinting fixes
fsl-sub-plugin-slurm 1.6.8 -> 1.7.1
Detailed history
TyposAdd 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 argumentAdd support for separate GPU and CPU accounts Spelling fixesImprove readability of submit function doc stringAdd 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 functionNew plugin structureFix ordering in pyproject fileNeed to call self's plugin_versionImprove docs for external interfaceChange name configuration option for queue filtering by GPUEnsure GPU project is set when no project specified on command lineFix tests post correction of auto-gpu account issueUse sacctmgr finder functionEnsure 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/xpyminor bug fix in setting res argumentMerge pull request #13 from SPMIC-UoN/xpyAdding multi-template macaque spaces and extended set of subcortical protocols
fsl-znzlib 2511.2 -> 2511.3
-
ENH: Add ability to compile against
zlib-ngThis MR makes some small adjustments to allow
znzlibto be compiled against eitherzliborzlib-ng. This accompanies changes to thefsl-baseproject, which can be found at fsl/base!138.This change only affects the internal
gzipPluginmodule, so is an ABI compatible change (i.e. projects which depend onznzlibdo 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)