Closed dnkennedy closed 5 years ago
The hypotheses that we will be addressing ( #4 ) will likely be concerned with features such as total brain volume, total Corpus Callosum midsagittal area, and volume of the left striatum (composed of the caudate nucleus and putamen).
To this end, I would like us to run (at least) FreeSurfer and ANTS.
As FreeSurfer and ANTS are already bundled together in MindBoggle, we might as well run that.
I believe that there is already docker and BIDS APP versions of this.
So, the formal proposal on the table is to select MindBoggle as the software to use. If anyone is opposed to this, speak now or forever hold your peace.
I am not opposed to any good use of good projects! But beware that it might not be the easiest one to "manage" due to a large footprint/dependencies (IIRC default docker image 6GB), which might preclude some "continuous integration" etc goodness. @satra -- did you look into what is the minimal size obtainable using reprozip?
@yarikoptic - yes - we would minimize it for release. i think it would be on the order of 1G uncompressed.
@yarikoptic - shall we chat about this container sometime soon? and also how it may fit with niceman execution?
yeap, we could/should. Canada later this week?
here is the current version of the libraries i am using. because of bugs in ANTs and mindboggle, i need to use a recent commit to master.
docker run -it --rm kaczmarj/neurodocker:master generate docker \
--base neurodebian:stretch \
--pkg-manager apt \
--install graphviz tree git-annex-standalone vim \
emacs-nox nano less ncdu tig sed build-essential \
libsm-dev libx11-dev libxt-dev libxext-dev libglu1-mesa \
--freesurfer version=6.0.0-min \
--ants version=b43df4bfc8 method=source cmake_opts='-DBUILD_SHARED_LIBS=ON' make_opts='-j 4'\
--run 'ln -s /usr/lib/x86_64-linux-gnu /usr/lib64' \
--miniconda \
conda_install="python=3.6 pip jupyter cmake mesalib vtk pandas \
matplotlib colormath nipype" \
pip_install="datalad[full] duecredit" \
env_name="simple2" \
activate=true \
--workdir /opt \
--run 'mkdir -p /opt/data && cd /opt/data && \
curl -sSL https://osf.io/download/rh9km/?revision=2 -o templates.zip && \
unzip templates.zip && \
rm -f /opt/data/templates.zip && \
curl -sSL https://osf.io/download/d2cmy/ -o OASIS-TRT-20_jointfusion_DKT31_CMA_labels_in_OASIS-30_v2.nii.gz' \
--run-bash 'source /opt/miniconda-latest/etc/profile.d/conda.sh && \
conda activate simple2 && \
git clone https://github.com/nipy/mindboggle.git && \
cd /opt/mindboggle && \
git checkout 929f715 && \
python setup.py install && \
sed -i "s/7.0/8.1/g" vtk_cpp_tools/CMakeLists.txt && \
mkdir /opt/vtk_cpp_tools && \
cd /opt/vtk_cpp_tools && \
cmake /opt/mindboggle/vtk_cpp_tools && \
make' \
--env vtk_cpp_tools=/opt/vtk_cpp_tools > Dockerfile
technically we should be able to try creating singularity by simply changing the generate target, but i have not tried that yet. i'm waiting for the docker container to finalize.
could you please point to the ANTs issue?
@satra in running your above neurodocker command, I get: "File "/opt/neurodocker/neurodocker/interfaces/interfaces.py", line 193, in init raise ValueError("create_env or use_env must be provided") ValueError: create_env or use_env must be provided"
Any ideas?
can you try to update the docker image: docker pull kaczmarj/neurodocker:master
Yeh, I started my day be doing that: "Status: Image is up to date for kaczmarj/neurodocker:master"
@dnkennedy - ah neurodocker moved too fast - new keyword create_env
. the command below should work.
docker run -it --rm kaczmarj/neurodocker:master generate docker \
--base neurodebian:stretch \
--pkg-manager apt \
--install graphviz tree git-annex-standalone vim \
emacs-nox nano less ncdu tig sed build-essential \
libsm-dev libx11-dev libxt-dev libxext-dev libglu1-mesa \
--freesurfer version=6.0.0-min \
--ants version=b43df4bfc8 method=source cmake_opts='-DBUILD_SHARED_LIBS=ON' make_opts='-j 4'\
--run 'ln -s /usr/lib/x86_64-linux-gnu /usr/lib64' \
--miniconda \
conda_install="python=3.6 pip jupyter cmake mesalib vtk pandas \
matplotlib colormath nipype" \
pip_install="datalad[full] duecredit" \
create_env="simple2" \
activate=true \
--workdir /opt \
--run 'mkdir -p /opt/data && cd /opt/data && \
curl -sSL https://osf.io/download/rh9km/?revision=2 -o templates.zip && \
unzip templates.zip && \
rm -f /opt/data/templates.zip && \
curl -sSL https://osf.io/download/d2cmy/ -o OASIS-TRT-20_jointfusion_DKT31_CMA_labels_in_OASIS-30_v2.nii.gz && \
curl -sSL https://osf.io/download/qz3kx/ -o OASIS-TRT_brains_to_OASIS_Atropos_template.tar.gz && \
tar zxf OASIS-TRT_brains_to_OASIS_Atropos_template.tar.gz && \
rm OASIS-TRT_brains_to_OASIS_Atropos_template.tar.gz && \
curl -sSL https://osf.io/download/dcf94/ -o OASIS-TRT_labels_to_OASIS_Atropos_template.tar.gz && \
tar zxf OASIS-TRT_labels_to_OASIS_Atropos_template.tar.gz && \
rm OASIS-TRT_labels_to_OASIS_Atropos_template.tar.gz' \
--run-bash 'source /opt/miniconda-latest/etc/profile.d/conda.sh && \
conda activate simple2 && \
git clone https://github.com/nipy/mindboggle.git && \
cd /opt/mindboggle && \
git checkout edf95a3 && \
python setup.py install && \
sed -i "s/7.0/8.1/g" vtk_cpp_tools/CMakeLists.txt && \
mkdir /opt/vtk_cpp_tools && \
cd /opt/vtk_cpp_tools && \
cmake /opt/mindboggle/vtk_cpp_tools && \
make' \
--env vtk_cpp_tools=/opt/vtk_cpp_tools > Dockerfile
OK, that seemed to work.
Just wondering (this might not be the place to ask, but I will anyway): with this new container, what is the planned way to 'feed' it the cases we will want to run?
OK, during my 'docker build' I get: Need to get 168 MB of archives. After this operation, 628 MB of additional disk space will be used. E: You don't have enough free space in /var/cache/apt/archives/. The command '/bin/sh -c apt-get update -qq && apt-get install -y -q --no-install-recommends graphviz tree git-annex-standalone vim emacs-nox nano less ncdu tig sed build-essential libsm-dev libx11-dev libxt-dev libxext-dev libglu1-mesa && apt-get clean && rm -rf /var/lib/apt/lists/ /tmp/ /var/tmp/*' returned a non-zero code: 100
@dnkennedy - the entire image is about 6GB. but that error sounds like you may be running out of space somewhere? do you have free space?
for any docker build i would suggest the following:
mkdir newdir
cd newdir
run neurodocker command to generate the dockerfile
docker build
the empty directory helps with minimizing how much space docker needs to use for building
OK, my local computer has ~100GB. Will try your instruction for the build.
Same error. Do my local docker configurations (CPU's, memory, etc.) matter?
@dnkennedy - a few things:
docker images
docker ps -a
you can get rid of any stopped containers by:
docker ps -aq | xargs docker rm
and then you can get rid of cancelled builds which have none in them using:
docker images | grep none | awk '{print $3}' | xargs docker rmi
'What software tools' update. As our primary hypotheses only involve 'subcortical'-type measures (such as total brain volume, total Corpus Callosum midsagittal area, and volume of the left striatum (composed of the caudate nucleus and putamen)), ANTS may not be needed.
Perhaps we should only run FreeSurfer and FSL/FIRST for this...
Anyway, as far as I know, the final simple2 official container is at: https://hub.docker.com/r/mgxd/mindboggle/tags
1.4.0-aws (simple workflow was run inside this container. and mindboggle runs freesurfer and ants.
If @satra can confirm this, this issue can be closed.
there is that container.
First we have to select what tools to run.