nipy / mindboggle

Automated anatomical brain label/shape analysis software (+ website)
http://mindboggle.info
Other
143 stars 54 forks source link

Mindboggle as node of nipype pipeline #198

Closed DMAlessandro closed 4 years ago

DMAlessandro commented 4 years ago

Hello everyone,

I've been using your docker container quite successfully on single subjects one at the time, but now I wanted to move everything to a nipype pipeline. It may be a stupid question but I would like to integrate the mindboggle script as a node inside a custom pipeline. I have tried to wrap up the Freesurfer and Mindboggle commandline commands (provided by the docker container) inside my nipype pipeline, but I have noticed a couple of things: -first, (only linked to nipype inside docker container) to run any type of code on nipype, it asked me to install pydot -> easily fixed via pip install pydot -second, it seems like I need to recall and export the variables IMAGE, ID ecc. every time for every subject to actually run Mindboggle or Freesurfer. For example, without considering the pipeline on nipype, if I try to run Freesurfer from the command line, it will work only with the volumes, without creating any surface. Instead, Freesurfer from command line seems to work fully (no crashes at surfaces) only if I specify the environment variables.

I am open to any idea on how to solve this, I'm sure there must be another way around for using the whole mindboggle script as a node

Thank you in advance

satra commented 4 years ago

@9Alex6 - mindboggle and mindboggle123 are both nipype workflows. so you should be able to connect them into any external workflow. by importing them. look at how mindboggle is itself imported into mindboggle123

DMAlessandro commented 4 years ago

Hello again, Thank you for the support, but seems like that wrapping up mindboggle commandline from inside a nipype pipeline works well already. Apparently, the real error that stops the entire process at Freesurfer level, is due to a missing reconbatchjobs, that would orchestrate the whole Freesurfer recon-all -all process. As an example, here is part of the log file from freesurfer run inside Mindboggle-docker container

""""""""""""""

--------------------------------------------

@# Smooth1 lh Tue Apr 28 00:36:46 UTC 2020

/home/jovyan/work/subj113/ID/scripts

mris_smooth -nw -seed 1234 ../surf/lh.orig.nofix ../surf/lh.smoothwm.nofix

--------------------------------------------

@# Smooth1 rh Tue Apr 28 00:36:46 UTC 2020

/home/jovyan/work/subj113/ID/scripts

mris_smooth -nw -seed 1234 ../surf/rh.orig.nofix ../surf/rh.smoothwm.nofix

reconbatchjobs: Command not found. Linux 8ba29db9f3b7 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64 GNU/Linux

recon-all -s ID exited with ERRORS at Tue Apr 28 00:36:46 UTC 2020

For more details, see the log file /home/jovyan/work/subj113/ID/scripts/recon-all.log To report a problem, see http://surfer.nmr.mgh.harvard.edu/fswiki/BugReporting

Standard error:

Return code: 1

""""""""""

In fact all subjects stop precisely at the beginning of autorecon2 with mris_smooth as first command due to a "reconbatchjobs" being missing.

DMAlessandro commented 4 years ago

As an update on this: I managed to find the error. Apparently it is a problem related to Freesurfer installation, deep into nipy/nipype docker image. In both nipype and Mindboggle docker images it seems like "reconbacthjobs" is missing. This command is necessary when running recon-all with different parameters and let it work straight to the end.

If you agree, we can close this issue, since it is a problem related to Freesurfer installation. Please let me know what you think and if it is something repairable in other ways.

binarybottle commented 4 years ago

Thank you very much for the clarification and follow-up, @9Alex6 ! I will close this issue, but welcome any further comments!