FastSurfer v2.4.0
This version is a big one and introduces some really exciting new functionality! We almost made it a major release, but since it should not really break any compatibility, we will keep some more really cool things in stock for you for v3. Hard to believe we can do even more than what we have in this release:
-
Longitudinal Stream
You have waited long for the longitudinal pipeline in FastSurfer and now it is finally here. In our tests we see increased reliability and sensitivity of this new stream, but not only with respect to FastSurfer's independent processing, but even with respect to our older FreeSurfer longitudinal pipeline. We are really excited about this new stream. There is no reason to wait, try for yourself and see Long-Documentation to get started. -
Edits
We have added a few ways to interact with FastSurfer and introduce manual edits, such as white matter and pial surface edits. These should rarely be necessary, but if you want to intervene, now you can. Find all the details in our Edits-Documentation. -
Parallel
- We have cleaned up the many ways that things run in parallel. This makes the interface much simpler for
run_fastsurfer.sh
: you only need to use--threads
to select a target number of cores now (or--threads_seg
and--threads_surf
for more control over the threads in each block). The--parallel
argument is deprecated andrun_fastsurfer.sh
will automatically process both hemispheres in parallel, if you use more than 1 thread (1 is currently still the default). Note, we no longer double the number of threads used during parallel surface processing. So for threads=2, each hemisphere gets one thread, the rest of the code uses 2 threads. - Furthermore, we added flags to
brun_fastsurfer.sh
to allow specifying the number of parallel cases in the segmentation block and the surface block separately, for a more fine grained control (--parallel_seg
and--parallel_surf
), e.g. of GPU usage (in seg) vs. CPU (in surf) and even using multipe GPUs. - Our new
long_fastsurfer.sh
now can make use of this functionality when you want to run multiple time points in parallel, try--parallel_surf
there.
- We have cleaned up the many ways that things run in parallel. This makes the interface much simpler for
-
Other Changes
- We cleaned up the code and introduced code style checks.
- Documentation has been updated https://deep-mi.org/FastSurfer/dev/index.html
- Improved logging
- Bug fix to HypVINN for large images and other minor fixes
- Bumped versions of dependencies
Notice
All the amazing functionality of FastSurfer is brought to you for free. You can help us, by making sure you cite our papers in you publications, not only the initial FastSurfer paper or the VINN for high-res support, but also the papers describing the individual modules that you use (Cerebnet, Hypvinn, or our older papers on Longitudinal Processing in FreeSurfer which are the basis for the new longitudinal pipeline).
Future Highlights
Our roadmap includes many things, some of them are listed here:
- Lesion Inpainting to process cases with lesions, tumor, resection cavities or other pathologies (this already works with our Lesion Inpainting Tool
- Improved Corpus Callosum and Fornix segmentation, including AC and PC
- Improved eTIV estimation via segmentation
- Addition of more labels, e.g. for WM sub-segmentation, skull and bone segmentation
- FastPlex for the accurate Choroid Plexus segmentation
- T2 / Flair segmentation
Detailed Changes (selection)
- Add code style via ruff by @m-reuter in #573
- Restore CerebNet checkpoint functions by @dkuegler in #575
- Subject directory should default to environment SUBJECTS_DIR variable by @dkuegler in #576
- bugfix rotate_sphere.py by @m-reuter in #577
- Fixes a bug in srun_fastsurfer that processed the partition argument wrong by @dkuegler in #581
- Longitudinal processing by @m-reuter in #588
- Formatting updates in shell scripts by @dkuegler in #585
- Helper functions: run_it and check_allow_root by @neginshirvani in #592
- Feature/tal reg long edits by @neginshirvani in #593
- apply hotfix 2.3.1 to dev by @m-reuter in #599
- Dev hotfix2.3.2 by @m-reuter in #601
- Bug fixes by @m-reuter in #602
- Fix arguments to version.py by @dkuegler in #608
- Fix parallel longitudinal processing by @dkuegler in #606
- Bump versions to those in docker container by @dkuegler in #610
- Create a dedicated BUILD.info file for docker images by @dkuegler in #612
- Make separate run_fastsurfer.sh invocations more clear in log by @dkuegler in #616
- Edit and establish the workflow "quicktest" on github actions servers by @dkuegler in #619
- Base/long fix -fsaparc by @m-reuter in #621
- Support for edits by @dkuegler in #591
- Update the docker build defaults by @dkuegler in #627
- Update Documentation by @m-reuter in #633
- add LONG description by @m-reuter in #635
- Fix HypVINN issues with image bigger than 320 by @santiestrada32 in #637
- add quickstart example by @m-reuter in #639
- Improvements to brun_fastsurfer.sh by @dkuegler in #640
- Extension: Enable seg=N and surf=N in long_fastsurfer by @dkuegler in #641
- Update versions of python packages by @dkuegler in #642
- Update the recon-surf docs by @dkuegler in #645
- Edit the output of long_fastsurfer.sh (message explaining delayed output) by @dkuegler in #646
- Unify and change of segmentation/surface syntax by @dkuegler in #644
Full Changelog: v2.3.3...v2.4.0