Skip to content

FSL 6.0.7.20, 4th March 2026

file-tree 1.6.0 -> 1.6.1

Detailed history

  • Publish multiple versions of documentation
  • Install git
  • Add stable branch with latest release
  • Print stable version
  • Run command to create stable branch
  • Test run command to create stable branch
  • Install git in actual pages job
  • Label master branch as dev
  • Include all branches in documentation build
  • Include all tags in documentation build
  • Get all branches before running sphinx-multiversion
  • Only include released tags in sidepanel
  • Remove typo "and"
  • Add origin to remote whitelist
  • Only consider v1 as released
  • Fetch all branches and tags
  • Use older python version to build older versions of documentation
  • Move fetching to seperate task
  • Do not try git pull
  • Make pages deploy again
  • Install git before fetch all
  • Do not include remote as source for docs
  • Move apt-get back to script
  • remove cache
  • Fetch each branch individually
  • First fetch, then branch
  • Remove spurious (and broken) git fetch
  • BF: support globbing in paths with placeholders with nested directories
  • Add single_vars back into matches Ensures compatibility with matches before fill_single_placeholders was added.
  • BF: B is filled in before glob called
  • Support multiple possible values of nested directories when globbing
  • BF: update linked variables updating
  • Very minor change in snapshots
  • Add warning if file-tree indendation contains mix of tabs and spaces
  • switch from hatchling to uv for build
  • Remove __pycache__ from git
  • Update license format in pyproject.toml
  • Update UV version
  • Update pre-commit tools
  • Explicitly add UV backend
  • Sort keys to make rich_line reproducible
  • Add keys/path in app and make table interactive
  • Make file-tree flake8 compliant
  • Also ignore trailing whitespace
  • Rerun black
  • Switch to ruff for linting
  • Remove outdated config files
  • Do not reuse variable name
  • Add mypy for optional type checking
  • Fix types to use strings rather than Template
  • Add ty for optional type checking
  • Fix some typing
  • release v1.6.1

fsleyes 1.16.2 -> 1.17.0

Detailed history

  • CI: Potentially fix zenodo submission
  • BF: Avoid potential overflow for images with fixed-width integer types
  • BF: Need to return range
  • MNT: Address API changes in recent versions of IPython/ipykernel
  • MNT: Fix stdout/stderr forwarding - outputs should now be forwarded to client, at least for ipykernel >=6.31
  • CI: Refresh docker images
  • CI: Add entrypoint script to set up shell environment
  • CI: Docker alias for network access; no need to create docker config.json or use dind service
  • CI: Shouldn't need to adjust FSL_HOST
  • CI: Build multi-platform images
  • CI: Install dcm2niix from conda-forge; install appropriate micromamba for the platform
  • DOC: Optimistic changelog
  • CI: Remove venv calls; tweak SSH config
  • CI: Make sure mesalib is installed
  • added hideFilter option in OverlayListPanel
  • RF: Adjust elistbox.ApplyFilter usage - function is passed item label and client data, not just client data
  • BF: Cleanup function was not being called, leading to already registered error the next time the lightbox canvas settings panel was opened
  • MNT: Bump widgets pin
  • MNT: Remove locale workaround - should no longer be an issue on python >= 3.7
  • ENH: New "copy coordinates" button on location panel
  • DOC: Changelog; fix link in readme
  • CI: Supposedly I need to PUT, not POST
  • MNT: Address pyparsing deprecation warnings
  • MNT: Update pyparsing pin
  • CI: Pin mesalib at a version which supports offscreen rendering
  • MNT: Pin pandas at 2.x for this release
  • MNT: Work around different missing value representations in different pandas versions
  • MNT: Lazily import pandas in case it is not installed
  • RF: Adjust filetree work around to work with new "MISSING" sentinel value in upcoming filetree release

fsleyes-plugin-mrs 0.1.4 -> 0.1.6

  • Spectra colour improvements & general housekeeping
  • Updated spectra colour defaults to seaborn['deep'] and "synced" across projections ('pastel' for imaginary, 'dark' for magnitude, 'bright' for phase).
  • Wrote integration test for MRSFitTool DirDialog
  • Added upper limits on dependencies
  • Minor improvements on comments and documentation
  • Dim Control panel improvements
  • Improved Dim Control Panel layout and functionality.
  • Added ability to link the NIfTI-MRS dimensions across spectra.
  • Added ability to coil combine the DIM_COIL dimension (if fsl_mrs is installed).
  • Improved spectra colour defaults to seaborn['deep'] and "synced" across projections.
  • Removed non-mrs overlays from MRSView Overlay list.
  • Added Python 3.14 and removed Python 3.9 and 3.10 from supported versions.

Detailed history

  • Spectra colour improvements & general housekeeping
  • Dim Control panel improvements
  • hotfix on build code
  • bug fix on toggling MRSView overlaylist
  • updated version and changelog for release

fslpy 3.24.0 -> 3.27.0

Incorporates !490 - ENH: Move tmpnam and fslchfiletype scripts to fslpy This MR migrates two FSL commands to fslpy from other FSL projects:

  • The tmpnam command was previously a Python script in the fsl/misc_c> project. It has been moved over to fslpy so that it can be called programmatically via the new fsl.wrappers.tmpnam function, as well as being called from a shell.
  • The fslchfiletype command was a bash script in the fsl/avwutils> project. It has been converted to Python for two reasons:
    • So it can be called programmatically via the new fsl.wrappers.fslchfiletype function in addition to being called as a shell command.
    • For improved performance - fslchfiletype invokes several other FSL commands which are implemented in Python and which, when called from the bash version ended up being quite slow. Now that it is implemented in Python, all of the operations run within a single Python process, so runtime is much faster.

Wrapper functions for these commands have been added, along with a new wrapper function for the remove_ext command. Some behavioural changes have also been made to the imcp, imln, immv, imrm commands so that they will raise an exception if an error occurs. Previously they just called the underlying command which would return 0 on success, or non-0 on failure. - MNT: Allow keyword arguments to be passed through to Image.__init__ when loading a warp field with readFnirt

Detailed history

  • ENH: New "constrain" option to resampleToReference which constrains the resampling to voxels that overlap with the source image FOV. The overlap is calculated by the new fovdistance function
  • CI: Hopefully fix zenodo submission
  • TEST: Basic test for resample constrain option
  • CI: Change image for test pypi build
  • BF: eddy_cuda not returning
  • ENH: Support .nii.zst and .nii.bz2 formats
  • DOC: Update FSL doc links
  • DOC: fsldocs ref type
  • ENH: Add mmorf wrapper
  • DOC: MMORF stub
  • DOC: Fixes
  • CI: Maybe fix zenodo script
  • BF: Fix to mmorf wrapper
  • TEST: mmorf wrapper test
  • TEST: Basic zstd/bz2 tests
  • MNT: pyzstd is required for zstd support
  • TEST: update immv/imcp tests to check zst/bz2
  • CI: Drop py310, add py314; update docker image usage
  • CI: Remove venv call; shouldn't need to change FSL_HOST anymore
  • CI: Fix build_pypi_dist.sh; remove upstream config
  • CI: Deps are already installed
  • CI: Remove more venv calls
  • CI: Dark mode for docs
  • CI: Work around su limitations
  • MNT: Move stop clause to avoid warning on py314
  • TEST: Refresh dcm2niix tests
  • MNT: Update im* scripts to support .nii.zst and .nii.bz2
  • ENH: New option to hold function, allowing the hold to be cancelled.
  • TEST: Test for new hold(cancel) option
  • MNT: Loosen tolerance in resample test
  • added fsl-mrs functions to fslpy wrappers
  • added single dash arguments in svs_segment and mrsi_segment
  • added assertIsNiftiMRS method
  • added wrappers for fsl_mrs_proc subcommands
  • added simple call unit tests for fsl_mrs_proc
  • added fileOrBasis functionality
  • added exception messages when fsl_mrs modules not found
  • improved indentation on module import errors
  • DOC: Add fsl_mrs stubs
  • DOC: Address sphinx warnings
  • TEST: Mark mrs tests
  • CI: Install fsl-mrs into test env
  • MNT: tmpnam script, migrated over from misc_c
  • TEST: Unit tests for tmpnam
  • MNT: fslchfiletype script, migrated from avwutils
  • RF: Adjust tmpnam script so errors will be raised due to improper usage when called programmatically
  • TEST: adjust tmpnam tests
  • RF: Adjust fslio functions so that improper usage will cause an exception to be raised - previously, calling the main() entry points just result in an error message being printed, but no exception
  • RF: Update fslio wrappers
  • ENH: New tempdir.indir function
  • MNT: Replace use of tempfile.mkstemp with fsl.utils.tempdir.mkstemp
  • TEST: Fix tmpnam tests - they were leaving cwd in a directory that was subsequently deleted, causing next tests to break
  • TEST: fslchfiletype tests - broken at the momentt
  • RF: Make logic clearer
  • ENH: wrapper functions for fslchfiletype, remove_ext, and tmpnam
  • TEST: Check fslchfiletype exit status
  • MNT: entry points
  • DOC: fslchfiletype module stub
  • MNT: Avoid circular import
  • TEST: Basic tests for new fslio wrappers
  • DOC: Stub for tmpnam module
  • DOC: Changelog, fix some cross-refs
  • MNT: fslchfiletype entrypoint
  • MNT: Allow kwargs to be passed through to Image.__init__ when loading a warp field with readFnirt

fsl-avwutils 2209.3 -> 2209.6

Detailed history

  • BF: Allow for arbitrary length --vols
  • MNT: Update NewNifti::saveImage usage
  • MNT: Remove unused fslchfiletype_exe
  • MNT: Update fslchfiletype usage
  • TEST: Update fslchfiletype test to cover zstd/bzip2
  • MNT: fslchfiletype script has been moved to fslpy

fsl-base 2508.1 -> 2602.1

Detailed history

  • MNT: Add bzip2/zstd to default linked libraries
  • MNT: Comments in shell init scripts r.e. new compression formats
  • RF: Adjust find_cuda_exe - FSL executables are no longer labelled with the CUDA version they were compiled against, find_cuda_exe has been updated to search for exact matches, and to accept a fallback executable. Old <prefix>X.Y behaviour still available via --prefix flag.
  • TEST: Update find_cuda_exe tests
  • BF: Fix a range of bugs in find_cuda_exe
  • BF: Accept fallback if there are mutiple matches (e.g. in both $FSLDEVDIR and $FSLDIR)
  • TEST: Test that find_cuda_exe handles duplicate fallbacks

fsl-bianca 2209.3 -> 2602.0

Detailed history

  • STY: Normalise indentation
  • STY: Fix basic code smells. No "from X import *". No use of mutable values as default arguments.
  • BF: Use of "sum()" refers to "np.sum()"
  • RF: Replace hand-rolled "imgbasename" with fslpy removeExt
  • RF: Replace some of nibabel with fslpy Image, to make code file-format-agnostic, and honour FSLOUTPUTTYPE
  • RF: Fix access to nibabel functions. This code should probably be removed, but I'm too scared to touch it
  • RF: use float32; option to change rng seed
  • MNT,RF: Normalise whitespace; remove hard-coded .nii.gz suffixes; replace mv with immv; replace basename with remove_ext; replace "-f <file>" with "imtest <file>", etc.

fsl-eddy 2401.2 -> 2602.0

As a result of these changes, it is no longer possible to build/cache object files for separate versions of CUDA. - MNT: Remove CUDA label from eddy executable The eddy CUDA executable is now just called eddy_cuda, rather than eddy_cudaX.Y, where X.Y is the version of CUDA that eddy was compiled against. The eddy Python wrapper script has been updated accordingly.

Detailed history

  • Coordinated check of readout time with topup
  • MNT: Adjustments to Makefile for compatibility with changes to FSL build system. It is no longer possible to build/cache object files for separate versions of CUDA.
  • MNT: Remove CUDA label from eddy executable. Adjust eddy wrapper script accordingly.

fsl-eddy_qc v1.4.1 -> v1.4.2

This MR also makes some changes so that eddy_[s]quad do not assume that all NIfTI files are stored in .nii.gz format.

Closes #2

Detailed history

  • BF: Use shell_tol instead of assuming volumes with a b-value > 100 are diffusion-weighted
  • RF: Do not assume that all files are in .nii.gz format
  • MNT: Dependency on fslpy

fsl-fdt 2202.11 -> 2602.1

Detailed history

  • Update Dvec after updating eigenvalues
  • MNT: Remove CUDA label from exes/libraries. No longer any need for xfibres_gpu wrapper script
  • Remove xfibres_gpu script from SCRIPTS
  • BF: Remove ${CUDA_VER} suffix from shared library (should have been in last MR)

fsl-flameo 2111.2 -> 2111.3

  • BF: Do not normalise by data variance when it is 0 Older versions of flameo would always variance-normalise the data, this change skips for constant data ( e.g. as generated by the MRS pipeline ). Resulting inference should now be correct ( as lower-level variance is used to estimate population parameters )

Detailed history

  • BF: Do not normalise by data variance when it is 0

fsl-melodic 2111.3 -> 2601.1

This MR also changes the MELODIC_VESRION from being hard-coded at "3.15" to being set from the current state of the git repository the source is being built from. - BF: Skip Inference The new webstats library will throw when numerically invalid inputs are provided, this is a problem as the inference ( e.g t->p ) functions are always called ( even if the outputs aren't required ) and scenarios such as stage 1 dual regression will generate p-values outside of the numeric range ( the inference is uninformative ). This fix only calls the inference functions when needed. - FDR Threshold reporting This MR adds Bonferroni/FDR threshold reporting to fsl_glm

Detailed history

  • Working Version 1.0
  • Working WIP: Refactoring
  • f-stats with pinv(CXXC) and contrast rank; minor clean of usings
  • ENH: Confounds working and tested
  • Candidate for RAP deployment
  • ICA_10K option visible
  • check residu size
  • map_stream instead of loading ICA maps, updated option descriptions, silent mode for fileExists, cifti-specific outputs/namings, get_residuals flag
  • major: implemented parallel map stream for ICA route; minor: contrasts_rank for stats where still missing, get_residuals flag (still needs work), some cleans
  • minor: clean-up code, comments/naming
  • no voxel-space residuals matrix for now; clean up error messages fsl_glm
  • fixed confounds filepaths, adjusted help section, njobs_h5 default back to single-threaded
  • pandora_ instead of _h5
  • -log10p for PANDORA
  • neg. log10(p)
  • check that subset list exists if provided
  • clean
  • clean / display correct debug dims for map_stream
  • minimal edits to print statements
  • setting blas threads for SVD, added ldl to makefile, switch from modality subject IDs to IDXs, read support for new global subject IDs file (UKB standard), some minor edits to print statements
  • ENH: Globals path/check
  • ENH: Use utils threading
  • MNT: Removed include
  • fix add_confounds() to work with new indexing
  • base folder fix + cifti_mode flag missing fix
  • MNT: Initialise cifti_mode
  • remove unavailable subjects from subset list when adding confounds
  • change base directory only for RSNs not tfMRI
  • improve path issues (temporary fix)
  • error when zeros in subset list
  • ;
  • require design for PANDORA, filepath checks
  • avert potential bug with confound adding logic when no subset list provided
  • make indices private member
  • move no subset row check to loadIDs
  • missing bracket
  • don't infer negative contrasts (this was for testing previously)
  • test something
  • testing
  • replace bug
  • better print statements
  • chrono sleep
  • names
  • sleep longer
  • sleep less
  • slowwriter
  • change speed
  • test
  • test2
  • back
  • back to newline outputs, changed ICA option namings (ICA1K / ICA10K), minor help text change
  • use arma::svd directly, back to newline std outputs
  • back to newline outputs
  • fixed typo
  • f_statistics update for rank-deficient contrast matrix (separate f_CXXC using SVD(C))
  • -log10p instead of log10p everywhere
  • implemented contrast deficiency SVD for voxel route
  • Replace basic_glm::olsfit f-stats across model with f-stats across contrasts as in glm_chunks, made f2z functions in glm_chunks.h static to be usable, added contrast deficiency SVD functionality
  • updated usage to reflect f-stats and -log10p changes
  • convert from natural to log10 base
  • moved contrasts if statement; removed fullFit variable (now temporary); clean
  • updated error message
  • arma load design matrix to keep nans (before then removing nan rows later)
  • remove nans from design matrix (at correct time) + safe normalization
  • use correct tail (fdtr > fdtrc)
  • move print to debug only
  • run F2z_islargef also for single contrast
  • restore F2z as before
  • removed constexpr log10, add as private member to ChunkedGLM
  • add glm_chunks.o dependency to mvlm make
  • BF: new objects required for all users of melhlprfns
  • bugfix lost voxel
  • MNT: Compilers should automatically include libdl
  • ENH: Switched to using Webstats prototype to P and Z conversion
  • ENH: Update other t2z call to Webstats
  • ENH: Use Boost conversions to allow long double precision
  • MNT: Re-templated webstats
  • RF: Set melodic version from git repo
  • MNT: Replace #define debug macros with functions within the Melodic namespace, so they don't interfere with code included from other libraries.
  • DOC: Added comment
  • BF: Skip inference if outputs not required
  • ENH: FDRthreshold function added
  • ENH: FDR calculation and reporting

fsl-misc_c 2111.0 -> 2111.1

Detailed history

  • MNT: tmpnam script has been moved to fslpy

fsl-mist 2111.6 -> 2512.2

Detailed history

  • MNT: Identify VTK version rather than hard-coding it
  • MNT: Re-organise python stuff into a python package
  • RF: Various adjustments - Turn scripts into functions, list as entrpoints in pyproject.toml - Convert mist_FA_reg from bash to python - Fix module imports, don't hack sys.path - Use fsl.data.image imstead of nibabel for file extension auto completion - Use imtest instead of op.exists - Use fslpy removeExt instead of hand-rolled version - Use fsl_sub wrapper function instead of sp.run('$FSLDIR/bin/fsl_sub ...') - Don't hard-code .nii.gz suffix
  • BF: Use FSLDEVDIR instead of PREFIX (which is only defined in conda builds)
  • BF: Fix entrypoints
  • MNT: Call $FSLDIR/bin/mist_script rather than assuming it's on $PATH
  • BF: mist_script entry point
  • BF: String formatting bug
  • BF: extract job ID from fsl_sub return val
  • BF: Wrong project name

fsl-mmorf-cpu v1.0.0 -> v1.0.1

  • MNT: Remove CUDA label from mmorf executable The MMORF CUDA executable is now simply called mmorf_cuda, instead of mmorf_cudaX.Y (where X.Y is the CUDA version MMORF was compiled against). The mmorf Python script will call mmorf_cuda or mmorf_cpu depending on whether a GPU is available.

Detailed history

  • MNT: Remove CUDA label from mmorf executable. Adjust mmorf wrapper script accordingly.
  • MNT: Don't print the output of find_cuda_exe
  • MNT: Only install wrapper script with CPU exe

fsl_mrs 2.4.10 -> 2.4.12

Detailed history

  • Bf: summarise numpy errors
  • BF: fmrs stats inputs
  • Enh/python versions
  • bug fix on fsl_mrs_proc.mrsi-lipid argument type
  • updated changelog file [skip-tests]
  • ENH: runmode option for flameo wrapper

fsl-newimage 2501.4 -> 2601.0

  • ENH: Support new compression formats This MR updates newimage to support reading/writing .nii.zst and .nii.bz2 files, along with a small amount of code clean up.
  • Nothing in the code base uses the fileFormats class, so it has been removed.
  • Replace #define FSL_TYPE_<X> with enum fslType, and similar for the orientation codes.
  • Add a new fslZnzFormat function which converts between FSL file type codes and the ZNZ file format.

Detailed history

  • MNT: Normalise indentation
  • RF: Replace #defines with enums. Remove the fileFormats list - it doesnt appear to be used by anything
  • ENH: Update generalio code to support new .nii.zst and .nii.bz2 compression formats
  • MNT: Expose fslZnzFormat function
  • MNT: Break on first hit
  • TEST: Add a bunch of fundamental FSLOUTPUTTYPE tests
  • RF: Change SUBSET from a #define to a const int. Move EXTENSIONS list into header, rename to fileExtensions

fsl-newmesh 2111.3 -> 2111.4

Detailed history

  • MNT: Remove spurious/unnecessary call to srand

fsl-newnifti 4.1.0 -> 5.0.0

There are some minor API changes, but there are very few direct users of NewNifti so updating the rest of the code base should be straightforward: - NiftiIO::fileIO::fileIO() bool use_compression parameter replaced with znz::znzFormat format. - NiftiIO::saveImage bool useCompression parameter replaced with znz::znzFormat format. - NiftiIO::fileIO::operator= changed from accepting a fileIO instance by value to accepting a fileIO rvalue

Detailed history

  • MNT: remove unnecessary const qualifier to placate compiler
  • MNT: Remove pre-C++11 compatibility kludge
  • MNT: Update NewNifti to use new znzFile interface
  • RF: Change assignment operator to accept an rvalue of another instance rather than a copy
  • BF: Change saveImage argument to be of znzFormat type
  • RF: Default to auto-selecting output format based on filename.
  • MNT: Remove another C++11 compatibility kludge
  • RF: Move hdr/img replacement to a separate function. Adjust loadHeader/ loadExtensions/loadImage/saveIamge to work regardless of whether .img or .hdr file provided
  • TEST: Basic unit tests
  • TEST: Use a dedicated Makefile for tests (needed for pyfeeds test directory isolation)
  • DOC: Update inline comments

fsl-ptx2 2111.8 -> 2602.0

Detailed history

  • BF: Use newimagevox2mm_mat instead of blindly using either qform or sform (either of which may be unset/invalid)
  • MNT: Remove CUDA label from exes/libraries. No longer any need for probtrackx2_gpu wrapper script

fsl-pyfeeds 1.1.0 -> 1.4.0

  • RF: Fix logging under Python 3.14 The logging configuration was broken under Python 3.14 - multiprocessing now uses the 'forkserver' startup method by default, whereas I was relying on the previous default of 'fork', which propagated the SocketHandler objects to the child processes via memory inheritance.a Handlers are now re-created in child processes both when running tests locally and remotely.

This MR also adds a few new small utility functions: - indir - a context manager which temporarily changes into a directory - runcmd - A function which runs a shell command and returns its standard output - ENH: New --exportEnv option for ensuring that environment variables get passed through to submitted functions. The --exportEnv option can be used in conjunction with --fslsub to ensure that certain environment variables are passed to submitted jobs.

Pyfeeds has also been updated so that, when run with --fslsub, and the pyfeeds process is killed via CTRL+C, any submitted jobs that are still running are cancelled. - Print updates to standard output as each test completes Also don't bother searching for tests in a directory if it matches any of the --excludeTests wildcards. - BF,RF: Fix bug where pyfeeds would not fail a test if an output file was missing Also adjust the evaluation logic so that pyfeeds will compare benchmark/output image files which are stored in different formats (e.g. image.nii vs image.nii.gz). - Fix a small bug preventing use of the pyfeeds compare sub-command - ENH: New routine for comparing gifti vertex data. * New evalGiftiVertexData function, which can be used to compare e.g. .func.gii files. * The pyfeeds.submit module has been reworked to eliminate the possibility of pickling errors. * The way that evaluation routines are loaded has been changed so that routines for the first matching file pattern are used.

Detailed history

  • RF: Logging has been broken in Python 3.14 when running locally - multiprocessing now defaults to forkserver startup, whereas I was relying on fork, which propagated the SocketHandler objects to the separate processes. Handlers are now re-created both when running tests locally and remotely.
  • ENH: Some new utility functions for use by tests
  • CI: Drop py310, add py314
  • TEST: Dummy log config
  • ENH: New option for ensuring that env vars get passed through to submitted functions. Logic not yet implemented.
  • ENH: --exportEnv option implemented
  • TEST: Add exportEnv to unit test
  • MNT: Cancel submitteb jobs if pyfeeds is killed
  • BF: Missing import, bug in cancelJob func
  • MNT: Disable nested fsl_subbing.
  • MNT: Move FSLSUB_NESTED def
  • RF: Print table to both stdout and to log file
  • RF: Rework pending job cancellation - a single atexit function which cancels all jobs are registered. Completed jobs are cleared.
  • BF: Bugs in cluster submission
  • RF,BF: Make output niceer; submitToCluster returning values in wrong order
  • BF: submitfunc args/kwargs need to be passed as individual arguments, not expanded
  • BF: Fix cancel job output
  • BF: Another fix to submit call
  • RF: More tweaks to output
  • RF: Do not submit more than one job concurrently. Call test_job blocking function to ensure that its job ID is popped from the list of submitted jobs.
  • BF: indent
  • MNT: Save logFile value so test functions know whether a log file is being used
  • BF: Don't clobber envvars that have been explicitly set
  • RF: Cluster stuff moved into a separate module. When pyfeeds is killed, instruct all test threads to end. Use a newly added fslpy "hold(cancel)" feature to do this.
  • MNT: Minor tweaks
  • BF: Typo
  • RF: Check for cancellation just before submission, as the thread may block for some time while waiting to acquire the submission lock
  • RF: Store threads by job ID, as each thread submits multiple jobs. Acquire lock when waiting for threads to die, in case of interrupt after submitfunc has returned, but before jid/thread saved
  • BF: Wrongreturn type
  • CI: Install dev version of fslpy for tests
  • RF: Short-circuit test discovery for directories that match any --excludeTests
  • ENH: Print updates to stdout while u wait
  • BF: Indent error was causing mp.Pool to be cleared before tests finished
  • TEST: Run mock tests in parallel
  • BF: Tests were not failing on missing files
  • RF: Don't search for tests in sandbox directory
  • RF: Allow benchmark/test images to be compared if they are stored in a different format
  • MNT: Allow the cache to be cleared. Using for testing
  • RF: Simplify final result logic in compareAllFiles
  • TEST: Test for compareAllFiles. Test comparing images in different formats
  • TEST: new mock test
  • TEST: Fix hashbang in mock test; make sure pyzstd is installed in test env
  • TEST: Set eval routines
  • MNT: Turns out the multiproc changes in py314 have broken mocking in some circumstances
  • BF: fslsubOption will not be present for pyfeeds compare sub-command
  • ENH: New routine for comparing gifti vertex data. Explicitly use the first set of evaluation routines that match the filename.
  • RF: Don't search for tests when running compare command
  • BF: Add empty tests attribute
  • BF: Rework submit module to avoid pickling errors.
  • RF: Up-weight missing file failures
  • RF: Change how evalroutines/tolerances are parsed - not sure why they reversed, as this would cause entries defined lower in the config file to take precedence over earlier rules

fsl-xtract 2.0.7 -> 2.0.8

Detailed history

  • Merge pull request #11 from SPMIC-UoN/xpy
  • added -in_native flag for protocols already in native space

fsl-znzlib 2111.0 -> 2511.2

  • ENH: Support more compression formats This MR adds support for the bzip2 and zstd compression formats. As part of this work, the code has been converted from C to C++, and substantially refactored - adding new compression formats in the future will be very straightforward.

The API has been changed, but there are very few direct users of the znzlib library, so updating the rest of the code base won't require too much work, and a full rebuild of all projects won't be needed. - All symbols are now located in a znz C++ namespace. - znzFile is now a C++ class rather than a pointer to a struct. - znz* functions are called on a znzFile instance, rather than being standalone functions into which a znzFile pointer is passed: - znzopen -> znzFile / znzFile.open - znzread -> znzFile.read - znzwrite -> znzFile.write - znzseek -> znzFile.seek - znzrewind -> znzFile.rewind - znzeof -> znzFile.eof - znztell -> Removed (no use in codebase) - znzputs -> Removed (no use in codebase) - znzgets -> Removed (no use in codebase) - znzprintf -> Removed (no use in codebase) - znzclose() -> znzFile.close() (file is closed automatically upon destruction) - When creating a znzFile, rather than a boolean use_compression flag, a znzFormat value may be passed, specifying the compression format. - When creating a znzFile for reading, the default behaviour is to guess the compression format from the file contents. - When creating a znzFile for writing, the default behaviour is to guess the compression format from the file suffix. - RF: Handle a couple of edge cases Fix a couple of edge cases: - NewNifti will attempt to read from files that are already at EOF, but the bzip2 API will return an error code on attempts to do so. The bzip2Plugin::read function has been adjusted to check for EOF before attempting to read any more data. - NewNifti may create an empty file, and then close/re-open it for writing. To accommodate this, the guessFormat function has been adjusted so that, if the file is empty, it falls back to guessing the format from the file extension. - BF: Fix bug in zstd writer When compressing data with length an exact multiple of the input buffer size, the ZSTD_e_end flag was not being passed to end the frame, resulting in a corrupt file. Incidentally, the pyzstd library reads these files without complaining (as all of the compressed data is actually present), but zstd -d would bork.

Detailed history

  • ENH: New znzguessformat function which infers format from magic bytes. New znzFormat enum to be used for multi-format support
  • MNT: Adjust includes
  • TEST: Re-write test program to support in/out from any to any format (obviously only raw/gzip supported at the moment)
  • RF: Convert to C++ module - will allow use of safer coding conventions. - znzFile is now a class. - All functions now accept a reference rather than a pointer. - znzopen returns new znzFile by value instead of mallocing - removed unnecessary Xznzclose
  • RF: Turn standalone functions into znzFile class member functions
  • RF: Rename private members; adjust ctr/open to accept znzFormat
  • MNT: Remove unused functions
  • RF: Only support SEEK_SET
  • RF: Simply read/write signatures - specify number of bytes instead of size/nmemb.
  • RF: Rename file pointer members to be clearer/more extensible
  • RF,ENH: znzlib rewritten to use plugin architecture - different formats implemented as separate plugins. zstd read implemented, write to come
  • TEST: Let the znzFile auto-guess the format
  • RF: Rename to znz_reader - writer will be in separate module
  • ENH: Scaffolding for zstd write support
  • ENH: zstd write support
  • RF: Adjust znzFile interface to match plugin interface
  • TEST: Install testznz because whynot. Adjust to use c++ printing
  • BF: Need to check output buffer when testing for eof
  • TEST: Working on test script
  • TEST: Use option parser; add option to read segments, so we can test seek functionality
  • RF: Rename gz* to gzip*
  • ENH,RF: Support for reading bzip2 files. Change zstdWriter so it doesn't support seeking
  • ENH: bzip2 write support
  • TEST: Add bzip2 to tests
  • RF, ENH: Support SEEK_SET and SEEK_CUR
  • ENH: New format() function and move constructor/assignment operator.
  • TEST: Test relative seeking
  • RF: Don't bother returning offset from seek
  • MNT: compression lib linking is done by build system
  • MNT: Need to provide destructor in base class
  • MNT: If given an empty file, don't throw an error, but instead fallback to guessing the format from the file suffix
  • BF: Don't try and decompress if already at EOF - bzRead returns an error code on attempts to do so
  • RF: Handle empty file a bit more robustly
  • BF: Logic error meaning that e_end was not being passed to end the curent compression frame.
  • TEST: Add test which checks generated file integrity; specifically testing conditions that triggered the zstd bug
  • MNT: Make comparison more explicit

spec2nii 0.8.* -> 0.8.7

Detailed history

  • Fix issue with anonymised params (#171)
  • Update CHANGELOG.md
  • Updates for Siemens HYPER/ISTHMUS for HBCD to ./Siemens/twixfunction.py (#159)
  • GE P-file reader: adaptive character encoding (#156)
  • REL: 0.8.5 (#155)
  • MNT: Scipy version (#154)
  • ENH: Special case dkd_svs_mslaser_msspnav DICOM (#152)
  • This should be the final update for GE hbcd (#150)
  • Pydicom compatibility (#149)
  • Update CHANGELOG.md
  • Updates for GE HBCD Sequence (#147)
  • Missed a PSD in ge_read_pfile.py - adding in for hbcd2 (#145)
  • Update CHANGELOG.md
  • PSD name was changed - adding in new name as an option
  • Release hotfix
  • Updated list of PSDs to correctly enter _process_hbcd()

fsl-cudabasisfield 1.1.2 -> 2.0.0

Detailed history

  • MNT: Remove CUDA label from cudabasisfield library

fsl-mmorf v1.0.0 -> v1.0.1

  • MNT: Remove CUDA label from mmorf executable The MMORF CUDA executable is now simply called mmorf_cuda, instead of mmorf_cudaX.Y (where X.Y is the CUDA version MMORF was compiled against). The mmorf Python script will call mmorf_cuda or mmorf_cpu depending on whether a GPU is available.

Detailed history

  • MNT: Remove CUDA label from mmorf executable. Adjust mmorf wrapper script accordingly.
  • MNT: Don't print the output of find_cuda_exe
  • MNT: Only install wrapper script with CPU exe