Releases: Deep-MI/FastSurfer
v2.3.3
v2.3.2
What's Changed
This fixes two things:
- Fix bug when
--fsaparc
was used (aseg.stats
were missing, causing the pipeline to stop later) - Fix bug that caused
wmparc.DKTatlas.mapped.stats
to contain a lot of lines with zero volume for unrelated structures. These are now omitted.
Full Changelog: v2.3.1...v2.3.2
v2.3.1
v2.3.0
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
v2.2.0
FastSurfer 2.2.0
Merry X-mas Release! Happy to be able to give to you a new and shiny FastSurfer release.
We highly recommend users to upgrade to this release as it fixes the eTIV issue (see #378) which has been around since FastSurfer v1.1.0. In mainly 3T datasets we had quite different eTIV values compared to FreeSurfer and for some datasets these were far too small (e.g. HCP).
What are the Highlights of this Release
- Fixes the issue with eTIV #378
- Better bias field correction
- Similar to FreeSurfer it uses the 1.5 T default atlas for Talairach registration (for eTIV estimation)
- If you use 3T images, pass the -3T flat to run_fastsurfer.sh
- Improved way to build docker images with build script to reuse intermediate build steps
- Support for batch processing with new brun_fastsurfer.sh and SLURM integration with srun_fastsurfer.sh scripts
- Bump dependencies
- Lots of minor updates to code
- Improved documentation
What's Next
- Hypothalamus sub-segmentation module
- Olfactory bulb segmentation module
- Improved corpus callosum and fornix segmentation
- Further improvements and updates of the surface pipeline (reduced memory consumption)
- As always, let us know via the issues if you find anything or have questions ...
What's Changed in Detail
- Consider local time formats when reading runtimes by @ClePol in #302
- Add and edit docstrings of recon_surf by @agirodi in #308
- fix intenstiy overflow in higher order interpolation in uchar by @m-reuter in #334
- Fix: imageio bug by @af-a in #338
- fix TypeError by @agirodi in #339
- Robustify mris_info string comparison to number of spaces (for FS741) by @af-a in #341
- Add version info for run_fastsurfer and into the docker image by @dkuegler in #327
- Add and edit Numpy docstrings by @agirodi in #332
- Upgrade: Ubuntu, Python, torch, Freesurfer, and other dependencies by @af-a in #348
- Update INSTALL.md by @dkuegler in #358
- Create a docker multistage build script by @dkuegler in #215
- Adding FreeSurfer commands (for validation tests) by @af-a in #362
- Fix: fspython environment variable by @af-a in #365
- Add fsaverage files for validation analyses by @af-a in #367
- added section contributing code by @m-reuter in #368
- fixing mid plane position by @m-reuter in #369
- fix align for highres by @m-reuter in #370
- fix the global normalization in bias field correction by @dkuegler in #387
- Fix the identification of the number of cpus by @dkuegler in #386
- add scripts for Fastsurfer orchestration on slurm clusters by @dkuegler in #388
- Bump versions of python packages by @dkuegler in #389
- Change a cpu_count instance that was left to get_num_threads by @dkuegler in #392
- Script to generate requirements files from docker image by @dkuegler in #400
- Add 3T atlas flag, remove mask from biasfield correction by @dkuegler in #406
- use nibabel read_geometry by @m-reuter in #411
- Fix memory limitation and subject/case globbing on slurm script by @dkuegler in #407
- Add support for expert options for singularity. by @dkuegler in #412
- "Small" changes to the CerebNet traning pipeline (missing apply_warp.py and shell errors in realistic_deformations) by @dkuegler in #415
- Update documentation for 2.2 Release by @dkuegler in #414
- PR for eTIV fix and new stable release by @m-reuter in #413
Full Changelog: v2.1.2...v2.2.0
v.2.1.2
v2.1.1
FastSrufer 2.1.1
What's Changed
- hotfix: --no_fs_t1 lower case by @m-reuter in #325
- Added CerebNet, removed copying empty dir and corrected ckpt downloaddir by @LeHenschel in #326
Full Changelog: v2.1.0...v2.1.1
v2.1.0
FastSurfer Version 2.1.0
Finally, you waited and waited and now it is here :-) our new fresh and shiny FastSurfer Release 2.1. including Cerebnet for Cerebellum sub segmentation (currently only on 1mm resolution) https://doi.org/10.1016/j.neuroimage.2022.119703
What's Changed
- Introduce segstats.py script for fast partial volume computation by @dkuegler in #239
- Docs add Windows GPU and update tutorial by @agirodi in #244
- Surfreg script by @agirodi in #241
- Fix: Misleading QC failure message in
run_fastsurfer.sh
by @AhmedFaisal95 in #247 - Refactoring of features impacted by CerebNet by @dkuegler in #249
- Fixed generate_hdf5.py issues - generalization and bug fix by @LeHenschel in #251
- Fix/yaml files by @LeHenschel in #252
- Added optional LUT to map sagittal view to other classes by @LeHenschel in #253
- Performance optimization and refactoring of the core prediction loop by @dkuegler in #255
- Bugfix: Wrong number of parameters for "setup_logging" by @ClePol in #257
- Remove np.float, deprecated in numpy 1.20 and removed in 1.24 by @mscheltienne in #263
- Set default FASTSURFER_HOME by script path instead of PWD by @dkuegler in #269
- CerebNet support in FastSurfer by @dkuegler in #258
- Fixed bug in FastSurferVINN interpolation by @ClePol in #274
- Improving ability to import FastSurferCNN into other projects by @dkuegler in #275
- Added call to create jacobian_white measure directly in fastsurfer by @LeHenschel in #282
- Simplified competitive concatentation with torch.maximum by @LeHenschel in #292
- Documentation updates for FastSurfer 2.1 by @dkuegler in #293
- Fix: 3D interact in tutorial showing white screen by @agirodi in #300
- QC check: Ventricle-bg intersection volume by @AhmedFaisal95 in #299
- Create EDITING.md by @m-reuter in #304
- Fix the version comparison in reconsurf.sh by @dkuegler in #321
Full Changelog: v2.0.4...v2.1.0
Known Issues
--no_fs_T1
flag does not work due to upper/lower case confusion- seg-only GPU docker cannot load checkpoints
We will therefore not release 2.1.0 docker images and will apply patches to fix these issues and release 2.1.1 (next week).