FastSurfer v2.3.0
Happy to present to you our new and shiny FastSurfer release.
Highlights of this Release
There has been lots of work and testing distilled into this one!! Most notably:
- Hypothalamus: introduced HypVINN for the segmentation of the hypothalamus and adjacent regions (see https://doi.org/10.1162/imag_a_00034 )
- Efficiency: replaced FreeSurfer's
mri_segstats
also in surface pipeline by our more efficient python scriptsegstats.py
(speeding up surface pipeline by 15 minutes, segstats 24x faster) - Reduced memory footprint in surface module: re-implemented FreeSurfer's
mris_sample_parc
which had huge memory leaks in some cases and also produced holes in surface label map. Our python script now fixes all that and is also faster. - Support newer GPUs: bump dependencies to new versions (e.g. newer CUDA adds support for H100 Nvidia GPUs, updated support for AMD GPUs)
- Mac support: ported code that required newer bash versions to work with older bash for better Mac native install support
- Better Documentation: updated documentation and created a documentation webpage with Sphinx at https://deep-mi.org/FastSurfer/
- Better Containerization: created a multi-stage Docker build script and added attestation and provenance, also making the build much faster (e.g. now using mamba instead of conda)
- Better Interoperability: consolidated the FastSurfer look-up-table with FreeSurfers version, also adding our new labels for Cerebellum, OB and Hypothalamus to their table.
- Faster Downloads: download checkpoints first from Zenodo (more reliable) and use Jülich as backup
- Clean surfaces: retrospectively fix FreeSurfer's flipped triangles produced in
mris_make_surfaces
- eTIV: optionally you can now get eTIV (and other "Measures") also in segmentation module (specify
--tal_reg
), so if only volume estimates are needed, the surface pipeline can be skipped completely
What's next
Upcoming Features (not necessarily all in next release):
- Olfactory bulb segmentation module
- Improved corpus callosum and fornix segmentation module
- Lesion robust FastSurfer
- Support for longitudinal processing in surface pipeline
- As always, let us know via the issues if you find anything or have questions ...
Other changes and improvements:
- Update README.md by @dkuegler in #423
- update to tag cpu-latest by @m-reuter in #429
- FIX and DOC: is_conform and vox sizes in 4D single-frame images by @dkuegler in #432
- Sample Parc by @m-reuter in #430
- Fix subjects_list typo in README.md by @dkuegler in #437
- Fixed cuda118 parameter in docker build script by @ClePol in #447
- Fix the sqrt usage in conform.py by @dkuegler in #448
- Swapping out use of conda in building the dockerfile for the much faster mamba by @jrussell9000 in #457
- Sphinx Recon_surf and CerebNet API's by @engrosamaali91 in #456
- Add Docker attestation and provenance by @dkuegler in #445
- Modify the batch and slurm scripts to support additonal per-subject parameters by @dkuegler in #434
- Fix output type of N4 bias field correction and add uchar flag by @dkuegler in #465
- Replace softlinks with softlink_or_copy if softlink failed by @dkuegler in #473
- Fix python call to spherical_project by @dkuegler in #476
- consolidate with FreeSurfer's LUT by @m-reuter in #463
- fixing issue with get_cmap on matplotlib 3.9.0 by @taha-abdullah in #522
- Improve Mac support and clean up dependencies by @m-reuter in #530
- Hypothalamus Implementation by @santiestrada32 in #459
- Cleanup of the logging and output of checkpoint download by @dkuegler in #535
- Update Checkpoint Priority from Juelich to Zenodo by @neginshirvani in #538
- Fix the behavior of brun_fastsurfer.sh --parallel_subjects by @dkuegler in #539
- Fix MGHheader set data type attribute error by @santiestrada32 in #541
- Fix fs_time check for number of arguments and line duplication in recon-surf by @dkuegler in #545
- Fix docker build script, only works with docker-container builder, if buildx is installed by @dkuegler in #547
- Fallback for unoriented triangles in sample_parc by @ClePol in #554
- Add brainvol stats to the segstats command by @dkuegler in #474
- Update FreeSurferColorLUT.txt to match FreeSurfer 7.5 by @dkuegler in #556
- fix things for Mac and MPS by @m-reuter in #561
- fix BUG: --allow_root does not work for segstats module in hypvinn. by @dkuegler in #562
- Detect FreeSurfer license in the FREESURFER_HOME directory. by @dkuegler in #563
- Fix the target directory of the doc workflow by @dkuegler in #564
- Fix content of build log file by @dkuegler in #566
- removing isort and black in favour of ruff by @m-reuter in #569
- bump versions of dependencies by @dkuegler in #560
- add Numpy2 code compatibility by @m-reuter in #568
New Contributors
- @oikosohn made their first contribution in #373
- @jrussell9000 made their first contribution in #457
- @taha-abdullah made their first contribution in #496
- @Pmoonesi made their first contribution in #498
- @neginshirvani made their first contribution in #538
Full Changelog: v2.2.0...v2.3.0