-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for compiling FreeSurfer from source #445
base: master
Are you sure you want to change the base?
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅ 📢 Thoughts on this report? Let us know!. |
@pwighton - thank you! we have been planning to have freesurfer from source for a while now... thanks for making this a reality. it will take me some time to review this PR, but i took a cursory look and looks good. thanks for including comments in the code. |
Thanks @kaczmarj! I'll also try to find people to review this. |
@pwighton - could you resolve the conflicts and update the pull request? |
Sure @stebo85, but I wont be able to look at this until September. Feel free to ping me again if I forget! |
Hi @pwighton, I'm working on building Freesurfer from source for a project I'm on to get it working with ARM64 on Linux. I'm following freesurfer/freesurfer#964 for a bit but I just found and read through this PR. I wish I'd found it weeks ago! In any case, I'd love to support this as well and help out where I can. |
Updating master branch reflect ReproNim HEAD
I made a PR to pwighton:20220414-fs-source which will resolve this issue once @pwighton approves it. If he's not able to look at it for a while, I can also just duplicate this PR with my updated 20220414-fs-source branch and this PR can be closed. In cases like this, what would be considered best practice? |
Brings 20220414-fs-source branch up to date with ReproNim/master
Hi @pdlloyd, sorry for the lag and thanks very much for your help! I'm a little swamped right now and wont have a chance to look at this for a while, but things were mostly working last year when I built the As for getting ARM64 working, it might make sense to create a separate neurodocker template that compiles itk from source. I've done that for ppc64 here and maybe that will work for AMR64 as well. Last I checked, that was the only dependency needed to run |
@pwighton that's a good idea to create a separate ND template. I've spent some time working through compiling the dependency tree on Freesurfer's |
This PR adds support for compiling FreeSurfer from source.
A corresponding container for this PR is at
pwighton/neurodocker:20220414
There are lots of moving pieces to this, and tons of edge cases. Feedback is highly appreciated!
Warning: by default, building from source includes a full checkout of FreeSurfer's git annex. This makes the resulting containers rather large (~5.58GB Gb). Thank goodness for
neurodocker minify
! :)Use cases
Here are some use cases I've been working with. Hopefully more to come!
Compile the
dev
branch of FreeSurfer from sourceThis creates a ~5.58GB container:
Compile an arbitraty fork and branch of Freesurfer
For example to compile the
20210813-gems
branch of thehttps://github.com/pwighton/freesurfer.git
fork:Compile FreeSurfer from source; include dependencies needed to run the infant pipeline
This creates a ~41GB container:
Compile FreeSurfer from source; include dependencies needed to run the petsurfer pipeline
This creates a ~42.6GB container
Compile FreeSurfer from source; include support for training samseg alases
This creates a ~4.29GB container.
Since
git annex
isn't run, neither ismake install
, therefore the binarykvlBuildAtlasMesh
is not in$PATH
, but is located at/opt/freesurfer-dev/gems/bin/kvlBuildAtlasMesh