ReproNim / simple_workflow-02

1 stars 2 forks source link

Create workflow (BIDSApp and NIDM query) in a container #5

Closed dnkennedy closed 5 years ago

dnkennedy commented 6 years ago

First we have to select what tools to run.

dnkennedy commented 6 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.

yarikoptic commented 6 years ago

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?

satra commented 6 years ago

@yarikoptic - yes - we would minimize it for release. i think it would be on the order of 1G uncompressed.

satra commented 6 years ago

@yarikoptic - shall we chat about this container sometime soon? and also how it may fit with niceman execution?

yarikoptic commented 6 years ago

yeap, we could/should. Canada later this week?

satra commented 6 years ago

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.

yarikoptic commented 6 years ago

could you please point to the ANTs issue?

satra commented 6 years ago

https://github.com/ANTsX/ANTs/issues/588

dnkennedy commented 6 years ago

@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?

satra commented 6 years ago

can you try to update the docker image: docker pull kaczmarj/neurodocker:master

dnkennedy commented 6 years ago

Yeh, I started my day be doing that: "Status: Image is up to date for kaczmarj/neurodocker:master"

satra commented 6 years ago

@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
dnkennedy commented 6 years ago

OK, that seemed to work.

dnkennedy commented 6 years ago

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?

dnkennedy commented 6 years ago

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

satra commented 6 years ago

@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

dnkennedy commented 6 years ago

OK, my local computer has ~100GB. Will try your instruction for the build.

dnkennedy commented 6 years ago

Same error. Do my local docker configurations (CPU's, memory, etc.) matter?

satra commented 6 years ago

@dnkennedy - a few things:

  1. can you post your docker version?
  2. have you looked at how much data is in your docker related images and instances:
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
dnkennedy commented 6 years ago

'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...

dnkennedy commented 5 years ago

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.

satra commented 5 years ago

there is that container.