|
26 | 26 | # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
27 | 27 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28 | 28 |
|
29 |
| -FROM nipype/testnipypedata:latest |
30 |
| -MAINTAINER Stanford Center for Reproducible Neuroscience <crn.poldracklab@gmail.com> |
31 | 29 |
|
32 |
| -# Preparations |
33 |
| -RUN ln -snf /bin/bash /bin/sh |
| 30 | +# |
| 31 | +# Based on https://github.com/poldracklab/fmriprep/blob/9c92a3de9112f8ef1655b876de060a2ad336ffb0/Dockerfile |
| 32 | +# |
| 33 | +FROM ubuntu:xenial-20161213 |
| 34 | +MAINTAINER The nipype developers https://github.com/nipy/nipype |
| 35 | + |
| 36 | +ARG DEBIAN_FRONTEND=noninteractive |
| 37 | + |
| 38 | +# Pre-cache neurodebian key |
| 39 | +COPY docker/files/neurodebian.gpg /root/.neurodebian.gpg |
| 40 | + |
| 41 | +# Prepare environment |
| 42 | +RUN apt-key add /root/.neurodebian.gpg && \ |
| 43 | + apt-get update && \ |
| 44 | + apt-get install -y --no-install-recommends curl bzip2 ca-certificates xvfb && \ |
| 45 | + curl -sSL http://neuro.debian.net/lists/xenial.us-ca.full >> /etc/apt/sources.list.d/neurodebian.sources.list && \ |
| 46 | + apt-key adv --refresh-keys --keyserver hkp://ha.pool.sks-keyservers.net 0xA5D32F012649A5A9 || true; \ |
| 47 | + apt-get update |
| 48 | + |
| 49 | +# Installing freesurfer |
| 50 | +RUN curl -sSL https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/6.0.0/freesurfer-Linux-centos6_x86_64-stable-pub-v6.0.0.tar.gz | tar zxv -C /opt \ |
| 51 | + --exclude='freesurfer/trctrain' \ |
| 52 | + --exclude='freesurfer/subjects/fsaverage_sym' \ |
| 53 | + --exclude='freesurfer/subjects/fsaverage3' \ |
| 54 | + --exclude='freesurfer/subjects/fsaverage4' \ |
| 55 | + --exclude='freesurfer/subjects/fsaverage5' \ |
| 56 | + --exclude='freesurfer/subjects/fsaverage6' \ |
| 57 | + --exclude='freesurfer/subjects/cvs_avg35' \ |
| 58 | + --exclude='freesurfer/subjects/cvs_avg35_inMNI152' \ |
| 59 | + --exclude='freesurfer/subjects/bert' \ |
| 60 | + --exclude='freesurfer/subjects/V1_average' \ |
| 61 | + --exclude='freesurfer/average/mult-comp-cor' \ |
| 62 | + --exclude='freesurfer/lib/cuda' \ |
| 63 | + --exclude='freesurfer/lib/qt' |
| 64 | + |
| 65 | +ENV FSL_DIR=/usr/share/fsl/5.0 \ |
| 66 | + OS=Linux \ |
| 67 | + FS_OVERRIDE=0 \ |
| 68 | + FIX_VERTEX_AREA= \ |
| 69 | + FSF_OUTPUT_FORMAT=nii.gz \ |
| 70 | + FREESURFER_HOME=/opt/freesurfer |
| 71 | +ENV SUBJECTS_DIR=$FREESURFER_HOME/subjects \ |
| 72 | + FUNCTIONALS_DIR=$FREESURFER_HOME/sessions \ |
| 73 | + MNI_DIR=$FREESURFER_HOME/mni \ |
| 74 | + LOCAL_DIR=$FREESURFER_HOME/local \ |
| 75 | + FSFAST_HOME=$FREESURFER_HOME/fsfast \ |
| 76 | + MINC_BIN_DIR=$FREESURFER_HOME/mni/bin \ |
| 77 | + MINC_LIB_DIR=$FREESURFER_HOME/mni/lib \ |
| 78 | + MNI_DATAPATH=$FREESURFER_HOME/mni/data \ |
| 79 | + FMRI_ANALYSIS_DIR=$FREESURFER_HOME/fsfast |
| 80 | +ENV PERL5LIB=$MINC_LIB_DIR/perl5/5.8.5 \ |
| 81 | + MNI_PERL5LIB=$MINC_LIB_DIR/perl5/5.8.5 \ |
| 82 | + PATH=$FREESURFER_HOME/bin:$FSFAST_HOME/bin:$FREESURFER_HOME/tktools:$MINC_BIN_DIR:$PATH |
| 83 | +RUN echo "cHJpbnRmICJrcnp5c3p0b2YuZ29yZ29sZXdza2lAZ21haWwuY29tXG41MTcyXG4gKkN2dW12RVYzelRmZ1xuRlM1Si8yYzFhZ2c0RVxuIiA+IC9vcHQvZnJlZXN1cmZlci9saWNlbnNlLnR4dAo=" | base64 -d | sh |
| 84 | + |
| 85 | +# Installing Neurodebian packages (FSL, AFNI, git) |
| 86 | +RUN apt-get install -y --no-install-recommends \ |
| 87 | + fsl-core=5.0.9-1~nd+1+nd16.04+1 \ |
| 88 | + fsl-mni152-templates=5.0.7-2 \ |
| 89 | + afni=16.2.07~dfsg.1-2~nd16.04+1 |
| 90 | + |
| 91 | +ENV FSLDIR=/usr/share/fsl/5.0 \ |
| 92 | + FSLOUTPUTTYPE=NIFTI_GZ \ |
| 93 | + FSLMULTIFILEQUIT=TRUE \ |
| 94 | + POSSUMDIR=/usr/share/fsl/5.0 \ |
| 95 | + LD_LIBRARY_PATH=/usr/lib/fsl/5.0:$LD_LIBRARY_PATH \ |
| 96 | + FSLTCLSH=/usr/bin/tclsh \ |
| 97 | + FSLWISH=/usr/bin/wish \ |
| 98 | + AFNI_MODELPATH=/usr/lib/afni/models \ |
| 99 | + AFNI_IMSAVE_WARNINGS=NO \ |
| 100 | + AFNI_TTATLAS_DATASET=/usr/share/afni/atlases \ |
| 101 | + AFNI_PLUGINPATH=/usr/lib/afni/plugins \ |
| 102 | + PATH=/usr/lib/fsl/5.0:/usr/lib/afni/bin:$PATH |
| 103 | + |
| 104 | +# Installing and setting up ANTs |
| 105 | +RUN mkdir -p /opt/ants && \ |
| 106 | + curl -sSL "https://github.com/stnava/ANTs/releases/download/v2.1.0/Linux_Ubuntu14.04.tar.bz2" \ |
| 107 | + | tar -xjC /opt/ants --strip-components 1 |
| 108 | + |
| 109 | +ENV ANTSPATH=/opt/ants \ |
| 110 | + PATH=$ANTSPATH:$PATH |
| 111 | + |
| 112 | +# Installing and setting up c3d |
| 113 | +RUN mkdir -p /opt/c3d && \ |
| 114 | + curl -sSL "http://downloads.sourceforge.net/project/c3d/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz" \ |
| 115 | + | tar -xzC /opt/c3d --strip-components 1 |
| 116 | + |
| 117 | +ENV C3DPATH=/opt/c3d/ \ |
| 118 | + PATH=$C3DPATH/bin:$PATH |
| 119 | + |
| 120 | +# Install some other required tools |
| 121 | +RUN apt-get install -y --no-install-recommends \ |
| 122 | + git=1:2.7.4-0ubuntu1 \ |
| 123 | + graphviz=2.38.0-12ubuntu2 \ |
| 124 | + unzip \ |
| 125 | + apt-utils \ |
| 126 | + fusefat \ |
| 127 | + make \ |
| 128 | + ruby=1:2.3.0+1 && \ |
| 129 | + apt-get clean && \ |
| 130 | + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
| 131 | + |
| 132 | +# Install fake-S3 |
| 133 | +ENV GEM_HOME /usr/lib/ruby/gems/2.3 |
| 134 | +ENV BUNDLE_PATH="$GEM_HOME" \ |
| 135 | + BUNDLE_BIN="$GEM_HOME/bin" \ |
| 136 | + BUNDLE_SILENCE_ROOT_WARNING=1 \ |
| 137 | + BUNDLE_APP_CONFIG="$GEM_HOME" |
| 138 | +ENV PATH $BUNDLE_BIN:$PATH |
| 139 | +RUN mkdir -p "$GEM_HOME" "$BUNDLE_BIN" && \ |
| 140 | + chmod 777 "$GEM_HOME" "$BUNDLE_BIN" |
| 141 | + |
| 142 | +RUN gem install fakes3 |
| 143 | + |
| 144 | +# Install Matlab MCR: from the good old install_spm_mcr.sh of @chrisfilo |
| 145 | +WORKDIR /opt |
| 146 | +RUN echo "destinationFolder=/opt/mcr" > mcr_options.txt && \ |
| 147 | + echo "agreeToLicense=yes" >> mcr_options.txt && \ |
| 148 | + echo "outputFile=/tmp/matlabinstall_log" >> mcr_options.txt && \ |
| 149 | + echo "mode=silent" >> mcr_options.txt && \ |
| 150 | + mkdir -p matlab_installer && \ |
| 151 | + curl -sSL http://www.mathworks.com/supportfiles/downloads/R2015a/deployment_files/R2015a/installers/glnxa64/MCR_R2015a_glnxa64_installer.zip \ |
| 152 | + -o matlab_installer/installer.zip && \ |
| 153 | + unzip matlab_installer/installer.zip -d matlab_installer/ && \ |
| 154 | + matlab_installer/install -inputFile mcr_options.txt && \ |
| 155 | + rm -rf matlab_installer mcr_options.txt |
| 156 | + |
| 157 | +# Install SPM |
| 158 | +RUN curl -sSL http://www.fil.ion.ucl.ac.uk/spm/download/restricted/utopia/dev/spm12_r6472_Linux_R2015a.zip -o spm12.zip && \ |
| 159 | + unzip spm12.zip && \ |
| 160 | + rm -rf spm12.zip |
| 161 | + |
| 162 | +ENV MATLABCMD="/opt/mcr/v85/toolbox/matlab" \ |
| 163 | + SPMMCRCMD="/opt/spm12/run_spm12.sh /opt/mcr/v85/ script" \ |
| 164 | + FORCE_SPMMCR=1 |
34 | 165 |
|
35 |
| -# Install this branch's code |
36 |
| -WORKDIR /root/src |
37 | 166 |
|
38 |
| -# Install matplotlib, sphinx and coverage to build documentation |
39 |
| -# and run tests with coverage |
40 |
| -RUN source activate nipypetests-2.7 && \ |
41 |
| - pip install matplotlib sphinx coverage && \ |
42 |
| - source activate nipypetests-3.4 && \ |
43 |
| - pip install matplotlib sphinx coverage && \ |
44 |
| - source activate nipypetests-3.5 && \ |
45 |
| - pip install matplotlib sphinx coverage |
| 167 | +# Installing and setting up miniconda |
| 168 | +RUN curl -sSLO https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-x86_64.sh && \ |
| 169 | + bash Miniconda3-4.2.12-Linux-x86_64.sh -b -p /usr/local/miniconda && \ |
| 170 | + rm Miniconda3-4.2.12-Linux-x86_64.sh |
46 | 171 |
|
47 |
| -ADD . nipype/ |
| 172 | +ENV PATH=/usr/local/miniconda/bin:$PATH \ |
| 173 | + LANG=C.UTF-8 \ |
| 174 | + LC_ALL=C.UTF-8 \ |
| 175 | + ACCEPT_INTEL_PYTHON_EULA=yes |
48 | 176 |
|
49 |
| -# Install the checked out version of nipype, check that requirements are |
50 |
| -# installed and install it for each of the three environments. |
51 |
| -RUN cd nipype/ && \ |
52 |
| - source activate nipypetests-2.7 && \ |
53 |
| - pip install -r requirements.txt && \ |
54 |
| - pip install -e . |
| 177 | +# Installing precomputed python packages |
| 178 | +RUN conda config --add channels conda-forge --add channels intel && \ |
| 179 | + chmod +x /usr/local/miniconda/bin/* && \ |
| 180 | + conda config --set always_yes yes --set changeps1 no && \ |
| 181 | + conda update -q conda && \ |
| 182 | + chmod +x /usr/local/miniconda/bin/*; sync && \ |
| 183 | + conda install -y mkl=2017.0.1 \ |
| 184 | + numpy=1.11.2 \ |
| 185 | + scipy=0.18.1 \ |
| 186 | + scikit-learn=0.17.1 \ |
| 187 | + matplotlib=1.5.3 \ |
| 188 | + pandas=0.19.0 \ |
| 189 | + libxml2=2.9.4 \ |
| 190 | + libxslt=1.1.29 \ |
| 191 | + traits=4.6.0 \ |
| 192 | + psutil=5.0.1 \ |
| 193 | + icu=58.1 && \ |
| 194 | + find /usr/local/miniconda/ -exec chmod 775 {} + |
55 | 195 |
|
56 |
| -RUN cd nipype/ && \ |
57 |
| - source activate nipypetests-3.4 && \ |
58 |
| - pip install -r requirements.txt && \ |
59 |
| - pip install -e . |
| 196 | +# matplotlib cleanups: set default backend, precaching fonts |
| 197 | +RUN sed -i 's/\(backend *: \).*$/\1Agg/g' /usr/local/miniconda/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc && \ |
| 198 | + python -c "from matplotlib import font_manager" |
60 | 199 |
|
61 |
| -RUN cd nipype/ && \ |
62 |
| - source activate nipypetests-3.5 && \ |
63 |
| - pip install -r requirements.txt && \ |
64 |
| - pip install -e . |
| 200 | +# Unless otherwise specified each process should only use one thread - nipype |
| 201 | +# will handle parallelization |
| 202 | +ENV MKL_NUM_THREADS=1 \ |
| 203 | + OMP_NUM_THREADS=1 |
65 | 204 |
|
66 |
| -WORKDIR /scratch |
| 205 | +# Installing dev requirements (packages that are not in pypi) |
| 206 | +WORKDIR /root/ |
| 207 | +COPY requirements.txt requirements.txt |
| 208 | +RUN pip install -r requirements.txt && \ |
| 209 | + rm -rf ~/.cache/pip |
67 | 210 |
|
68 |
| -# Install entrypoints |
69 |
| -ADD docker/circleci/run_* /usr/bin/ |
70 |
| -RUN chmod +x /usr/bin/run_* |
| 211 | +# Installing nipype |
| 212 | +COPY . /root/src/nipype |
| 213 | +RUN cd /root/src/nipype && \ |
| 214 | + pip install -e .[all] && \ |
| 215 | + rm -rf ~/.cache/pip |
71 | 216 |
|
72 |
| -# RUN echo 'source /etc/profile.d/nipype_tests.sh' >> /etc/bash.bashrc |
73 |
| -ENTRYPOINT ["/usr/bin/run_examples.sh"] |
| 217 | +WORKDIR /root/ |
74 | 218 |
|
| 219 | +ARG BUILD_DATE |
| 220 | +ARG VCS_REF |
| 221 | +ARG VERSION |
| 222 | +LABEL org.label-schema.build-date=$BUILD_DATE \ |
| 223 | + org.label-schema.name="NIPYPE" \ |
| 224 | + org.label-schema.description="NIPYPE - Neuroimaging in Python: Pipelines and Interfaces" \ |
| 225 | + org.label-schema.url="http://nipype.readthedocs.io" \ |
| 226 | + org.label-schema.vcs-ref=$VCS_REF \ |
| 227 | + org.label-schema.vcs-url="https://github.com/nipy/nipype" \ |
| 228 | + org.label-schema.version=$VERSION \ |
| 229 | + org.label-schema.schema-version="1.0" |
0 commit comments