diff --git a/Dockerfile b/Dockerfile index 87c5b39fc..3f37fb086 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,17 +23,17 @@ # SOFTWARE. # Ubuntu 22.04 LTS - Jammy -ARG BASE_IMAGE=ubuntu:jammy-20230308 +ARG BASE_IMAGE=ubuntu:jammy-20240125 # -# fMRIPrep wheel +# Build wheel # FROM python:slim AS src RUN pip install build RUN apt-get update && \ apt-get install -y --no-install-recommends git -COPY . /src/fmriprep -RUN python -m build /src/fmriprep +COPY . /src +RUN python -m build /src # # Download stages @@ -96,9 +96,16 @@ RUN mkdir /opt/convert3d && \ # Micromamba FROM downloader as micromamba + +# Install a C compiler to build extensions when needed. +# traits<6.4 wheels are not available for Python 3.11+, but build easily. +RUN apt-get update && \ + apt-get install -y --no-install-recommends build-essential && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + WORKDIR / # Bump the date to current to force update micromamba -RUN echo "2023.04.05" +RUN echo "2024.02.06" RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba ENV MAMBA_ROOT_PREFIX="/opt/conda" @@ -112,7 +119,7 @@ RUN micromamba create -y -f /tmp/env.yml && \ # Check if this is still necessary when updating the base image. ENV PATH="/opt/conda/envs/fmriprep/bin:$PATH" \ UV_USE_IO_URING=0 -RUN npm install -g svgo@^3.0.4 bids-validator@^1.13.1 && \ +RUN npm install -g svgo@^3.2.0 bids-validator@^1.14.0 && \ rm -r ~/.npm # @@ -249,7 +256,7 @@ RUN curl -L -H "Accept: application/octet-stream" https://api.github.com/repos/e && chmod +x /usr/local/bin/msm # Installing FMRIPREP -COPY --from=src /src/fmriprep/dist/*.whl . +COPY --from=src /src/dist/*.whl . RUN pip install --no-cache-dir $( ls *.whl )[container,test] RUN find $HOME -type d -exec chmod go=u {} + && \ diff --git a/docs/installation.rst b/docs/installation.rst index 5420d1427..a812fcf30 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -85,12 +85,12 @@ nipype_. not handled by the Python's packaging system (Pypi) used to deploy the ``fmriprep`` package: -- FSL_ (version 6.0.6.2) -- ANTs_ (version 2.4.4) -- AFNI_ (version 23.1.05) -- `C3D `_ (version 1.3.0) +- FSL_ (version 6.0.7.7) +- ANTs_ (version 2.5.1) +- AFNI_ (version 24.0.05) +- `C3D `_ (version 1.4.0) - FreeSurfer_ (version 7.3.2) -- `bids-validator `_ (version 1.8.0) +- `bids-validator `_ (version 1.14.0) - `connectome-workbench `_ (version 1.5.0) Not running on a local machine? - Data transfer diff --git a/env.yml b/env.yml index ac9bc2e9b..b5e0a33d8 100644 --- a/env.yml +++ b/env.yml @@ -2,36 +2,36 @@ name: fmriprep channels: - https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/public/ - conda-forge -# Update this ~yearly; last updated April 2023 +# Update this ~yearly; last updated Jan 2024 dependencies: - - python=3.10 + - python=3.11 # Needed for svgo and bids-validator; consider moving to deno - - nodejs=18 + - nodejs=20 # Intel Math Kernel Library for numpy - - mkl=2022.1 - - mkl-service=2.4 + - mkl=2023.2.0 + - mkl-service=2.4.0 # git-annex for templateflow users with DataLad superdatasets - git-annex=*=alldep* # Base scientific python stack; required by FSL, so pinned here - numpy=1.26 - scipy=1.11 - matplotlib=3.8 - - pandas=2.1 + - pandas=2.2 - h5py=3.10 # Dependencies compiled against numpy, best to stick with conda - nitime=0.10 - scikit-image=0.22 - - scikit-learn=1.3 + - scikit-learn=1.4 # Utilities - - graphviz=6.0 + - graphviz=9.0 - pandoc=3.1 # Workflow dependencies: ANTs - - ants=2.5.0 - # Workflow dependencies: FSL (versions pinned in 6.0.7.4) + - ants=2.5 + # Workflow dependencies: FSL (versions pinned in 6.0.7.7) - fsl-bet2=2111.4 - fsl-flirt=2111.2 - fsl-fast4=2111.3 - - fsl-fugue=2201.3 + - fsl-fugue=2201.4 - fsl-mcflirt=2111.0 - fsl-miscmaths=2203.2 - fsl-topup=2203.2 diff --git a/requirements.txt b/requirements.txt index 60ea70687..dd51ea4d6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,17 +17,17 @@ arrow==1.3.0 # via codecarbon astor==0.8.1 # via formulaic -attrs==23.1.0 +attrs==23.2.0 # via # niworkflows # sdcflows -bids-validator==1.13.1 +bids-validator==1.14.0 # via pybids -bokeh==3.3.1 +bokeh==3.3.4 # via tedana boto==2.49.0 # via datalad -certifi==2023.11.17 +certifi==2024.2.2 # via # requests # sentry-sdk @@ -46,7 +46,7 @@ click==8.1.7 # codecarbon # nipype # pybids -codecarbon==2.3.1 +codecarbon==2.3.4 # via # fmriprep # fmriprep (pyproject.toml) @@ -54,20 +54,20 @@ contourpy==1.2.0 # via # bokeh # matplotlib -cryptography==41.0.7 +cryptography==42.0.2 # via secretstorage cycler==0.12.1 # via matplotlib -datalad==0.19.4 +datalad==0.19.6 # via # datalad-next # datalad-osf # fmriprep (pyproject.toml) -datalad-next==1.0.2 +datalad-next==1.2.0 # via datalad-osf datalad-osf==0.3.0 # via fmriprep (pyproject.toml) -distro==1.8.0 +distro==1.9.0 # via datalad docopt==0.6.2 # via num2words @@ -77,13 +77,11 @@ fasteners==0.19 # via datalad filelock==3.13.1 # via nipype -fonttools==4.45.0 +fonttools==4.48.1 # via matplotlib formulaic==0.5.2 # via pybids -fuzzywuzzy==0.18.0 - # via codecarbon -greenlet==3.0.1 +greenlet==3.0.3 # via sqlalchemy h5py==3.10.0 # via nitransforms @@ -91,11 +89,11 @@ humanize==4.9.0 # via # datalad # datalad-next -idna==3.4 +idna==3.6 # via requests -imageio==2.33.0 +imageio==2.33.1 # via scikit-image -importlib-metadata==7.0.0 +importlib-metadata==7.0.1 # via keyring importlib-resources==6.1.1 # via @@ -118,7 +116,7 @@ jeepney==0.8.0 # via # keyring # secretstorage -jinja2==3.1.2 +jinja2==3.1.3 # via # bokeh # niworkflows @@ -144,14 +142,14 @@ looseversion==1.3.0 # nipype # niworkflows # smriprep -lxml==4.9.3 +lxml==5.1.0 # via # nilearn # prov # svgutils mapca==0.0.4 # via tedana -markupsafe==2.1.3 +markupsafe==2.1.5 # via jinja2 matplotlib==3.8.2 # via @@ -165,8 +163,10 @@ migas==0.4.0 # via # fmriprep # sdcflows -more-itertools==10.1.0 - # via jaraco-classes +more-itertools==10.2.0 + # via + # datalad-next + # jaraco-classes msgpack==1.0.7 # via datalad networkx==3.2.1 @@ -174,7 +174,7 @@ networkx==3.2.1 # nipype # prov # scikit-image -nibabel==5.1.0 +nibabel==5.2.0 # via # fmriprep # fmriprep (pyproject.toml) @@ -188,7 +188,7 @@ nibabel==5.1.0 # sdcflows # smriprep # tedana -nilearn==0.10.2 +nilearn==0.10.3 # via # mapca # nireports @@ -224,7 +224,7 @@ niworkflows==1.10.0 # smriprep num2words==0.5.13 # via pybids -numpy==1.26.2 +numpy==1.26.4 # via # bokeh # contourpy @@ -268,7 +268,7 @@ packaging==23.2 # niworkflows # scikit-image # smriprep -pandas==2.1.3 +pandas==2.2.0 # via # bokeh # codecarbon @@ -281,21 +281,21 @@ pandas==2.1.3 # pybids # seaborn # tedana -patool==2.0.0 +patool==2.1.1 # via datalad -pillow==10.1.0 +pillow==10.2.0 # via # bokeh # imageio # matplotlib # scikit-image -platformdirs==4.1.0 +platformdirs==4.2.0 # via datalad prometheus-client==0.19.0 # via codecarbon prov==2.0.0 # via nipype -psutil==5.9.6 +psutil==5.9.8 # via # codecarbon # fmriprep @@ -313,7 +313,7 @@ pybids==0.16.4 # templateflow pycparser==2.21 # via cffi -pydot==1.4.2 +pydot==2.0.0 # via nipype pynvml==11.5.0 # via codecarbon @@ -329,9 +329,9 @@ python-dateutil==2.8.2 # nipype # pandas # prov -python-gitlab==4.2.0 +python-gitlab==4.4.0 # via datalad -pytz==2023.3.post1 +pytz==2024.1 # via # apscheduler # pandas @@ -341,6 +341,8 @@ pyyaml==6.0.1 # nireports # niworkflows # smriprep +rapidfuzz==3.6.1 + # via codecarbon rdflib==7.0.0 # via # nipype @@ -363,7 +365,7 @@ scikit-image==0.22.0 # via # niworkflows # sdcflows -scikit-learn==1.3.2 +scikit-learn==1.4.0 # via # mapca # nilearn @@ -386,13 +388,13 @@ sdcflows==2.8.0 # via # fmriprep # fmriprep (pyproject.toml) -seaborn==0.13.0 +seaborn==0.13.2 # via # nireports # niworkflows secretstorage==3.3.3 # via keyring -sentry-sdk==1.39.0 +sentry-sdk==1.40.1 # via fmriprep simplejson==3.19.2 # via nipype @@ -406,7 +408,7 @@ smriprep==0.13.2 # via # fmriprep # fmriprep (pyproject.toml) -sqlalchemy==2.0.23 +sqlalchemy==2.0.25 # via pybids svgutils==0.3.4 # via @@ -428,13 +430,14 @@ threadpoolctl==3.2.0 # via # scikit-learn # tedana -tifffile==2023.9.26 +tifffile==2024.1.30 # via scikit-image toml==0.10.2 # via # fmriprep + # fmriprep (pyproject.toml) # sdcflows -tornado==6.3.3 +tornado==6.4 # via bokeh tqdm==4.66.1 # via @@ -448,18 +451,18 @@ traits==6.3.2 # sdcflows transforms3d==0.4.1 # via niworkflows -types-python-dateutil==2.8.19.14 +types-python-dateutil==2.8.19.20240106 # via arrow -typing-extensions==4.8.0 +typing-extensions==4.9.0 # via # datalad # formulaic # sqlalchemy -tzdata==2023.3 +tzdata==2023.4 # via pandas tzlocal==5.2 # via apscheduler -urllib3==2.1.0 +urllib3==2.2.0 # via # requests # sentry-sdk