From d737eb59a5b6406e8c83381e7e3618f709051278 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 2 May 2024 22:38:40 -0400 Subject: [PATCH 1/4] match fmriprep's build --- Dockerfile | 51 ++++++++++++++++++++++++++------------------------- env.yml | 13 ++++++++++++- 2 files changed, 38 insertions(+), 26 deletions(-) diff --git a/Dockerfile b/Dockerfile index fe5dab3..33e4cda 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,16 +25,6 @@ # Ubuntu 22.04 LTS - Jammy ARG BASE_IMAGE=ubuntu:jammy-20240125 -FROM pennlinc/atlaspack:0.1.0 as atlaspack - -# -# Build wheel -# -FROM python:slim AS src -RUN pip install build -RUN apt-get update && \ - apt-get install -y --no-install-recommends git - # # Download stages # @@ -71,7 +61,13 @@ RUN mkdir -p /opt/afni-latest \ --exclude "linux_openmp_64/afnipy" \ --exclude "linux_openmp_64/lib/RetroTS" \ --exclude "linux_openmp_64/lib_RetroTS" \ - --exclude "linux_openmp_64/meica.libs" + --exclude "linux_openmp_64/meica.libs" \ + # Keep only what we use + && find /opt/afni-latest -type f -not \( \ + -name "3dTshift" -or \ + -name "3dUnifize" -or \ + -name "3dAutomask" -or \ + -name "3dvolreg" \) -delete # Connectome Workbench 1.5.0 FROM downloader as workbench @@ -172,20 +168,6 @@ RUN apt-get update -qq \ fi \ && ldconfig -# Install FSL from old ASLPrep version -# Based on https://github.com/ReproNim/neurodocker/blob/a87693e5676e7c4d272bc4eb8285f9232860d0ff/neurodocker/templates/fsl.yaml -RUN curl -fsSL https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/fslinstaller.py | python3 - -d /opt/fsl-6.0.7.1 -V 6.0.7.1 -ENV FSLDIR="/opt/fsl-6.0.7.1" \ - PATH="$PATH:/opt/fsl-6.0.7.1/bin" \ - FSLOUTPUTTYPE="NIFTI_GZ" \ - FSLMULTIFILEQUIT="TRUE" \ - FSLTCLSH="/opt/fsl-6.0.7.1/bin/fsltclsh" \ - FSLWISH="/opt/fsl-6.0.7.1/bin/fslwish" \ - FSLLOCKDIR="" \ - FSLMACHINELIST="" \ - FSLREMOTECALL="" \ - FSLGECUDAQ="cuda.q" - # Install files from stages COPY --from=freesurfer /opt/freesurfer /opt/freesurfer COPY --from=afni /opt/afni-latest /opt/afni-latest @@ -241,6 +223,25 @@ ENV PATH="/opt/conda/envs/aslprep/bin:$PATH" \ CPATH="/opt/conda/envs/aslprep/include:$CPATH" \ LD_LIBRARY_PATH="/opt/conda/envs/aslprep/lib:$LD_LIBRARY_PATH" +# Precaching atlases +COPY scripts/fetch_templates.py fetch_templates.py +RUN python fetch_templates.py && \ + rm fetch_templates.py && \ + find $HOME/.cache/templateflow -type d -exec chmod go=u {} + && \ + find $HOME/.cache/templateflow -type f -exec chmod go=u {} + + +# FSL environment +ENV LANG="C.UTF-8" \ + LC_ALL="C.UTF-8" \ + PYTHONNOUSERSITE=1 \ + FSLDIR="/opt/conda/envs/aslprep" \ + FSLOUTPUTTYPE="NIFTI_GZ" \ + FSLMULTIFILEQUIT="TRUE" \ + FSLLOCKDIR="" \ + FSLMACHINELIST="" \ + FSLREMOTECALL="" \ + FSLGECUDAQ="cuda.q" + # Unless otherwise specified each process should only use one thread - nipype # will handle parallelization ENV MKL_NUM_THREADS=1 \ diff --git a/env.yml b/env.yml index 0f92f7a..55edd81 100644 --- a/env.yml +++ b/env.yml @@ -1,9 +1,10 @@ name: aslprep channels: + - https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/public/ - conda-forge # 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=20 # Intel Math Kernel Library for numpy @@ -26,6 +27,16 @@ dependencies: - pandoc=3.1 # Workflow dependencies: ANTs - ants=2.5 + # Workflow dependencies: FSL (versions pinned in 6.0.7.7) + - fsl-basil=v4.0.4 + - fsl-bet2=2111.4 + - fsl-flirt=2111.2 + - fsl-fast4=2111.3 + - fsl-fugue=2201.4 + - fsl-mcflirt=2111.0 + - fsl-miscmaths=2203.2 + - fsl-oxford_asl=v4.0.29 + - fsl-topup=2203.2 - pip variables: FSLOUTPUTTYPE: NIFTI_GZ From 90d39dc01a37474b322b97d7291d95568c56223c Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 2 May 2024 22:57:58 -0400 Subject: [PATCH 2/4] add back atlaspack --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 33e4cda..10c3bbd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,7 @@ # Ubuntu 22.04 LTS - Jammy ARG BASE_IMAGE=ubuntu:jammy-20240125 - +FROM pennlinc/atlaspack:0.1.0 as atlaspack # # Download stages # From 4ee69b802dbac318188306ffeea5bb22bbdbd0d8 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 2 May 2024 23:07:50 -0400 Subject: [PATCH 3/4] get python requirements --- Dockerfile | 1 + env.yml | 2 + requirements.txt | 472 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 475 insertions(+) create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile index 10c3bbd..44cffea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -100,6 +100,7 @@ RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bi ENV MAMBA_ROOT_PREFIX="/opt/conda" COPY env.yml /tmp/env.yml +COPY requirements.txt /tmp/requirements.txt WORKDIR /tmp RUN micromamba create -y -f /tmp/env.yml && \ micromamba clean -y -a diff --git a/env.yml b/env.yml index 55edd81..fdb8f90 100644 --- a/env.yml +++ b/env.yml @@ -38,5 +38,7 @@ dependencies: - fsl-oxford_asl=v4.0.29 - fsl-topup=2203.2 - pip + - pip: + - -r requirements.txt variables: FSLOUTPUTTYPE: NIFTI_GZ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a41ffdd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,472 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --extra=container --strip-extras +# +annexremote==1.6.4 + # via + # datalad + # datalad-next + # datalad-osf +apscheduler==3.10.4 + # via + # fmriprep + # fmriprep (pyproject.toml) +arrow==1.3.0 + # via codecarbon +astor==0.8.1 + # via formulaic +attrs==23.2.0 + # via + # niworkflows + # sdcflows +bids-validator==1.14.0 + # via pybids +bokeh==3.3.4 + # via tedana +boto==2.49.0 + # via datalad +certifi==2024.2.2 + # via + # requests + # sentry-sdk +cffi==1.16.0 + # via cryptography +chardet==5.2.0 + # via datalad +charset-normalizer==3.3.2 + # via requests +ci-info==0.3.0 + # via + # etelemetry + # migas +click==8.1.7 + # via + # codecarbon + # nipype + # pybids +codecarbon==2.3.4 + # via + # fmriprep + # fmriprep (pyproject.toml) +contourpy==1.2.0 + # via + # bokeh + # matplotlib +cryptography==42.0.4 + # via secretstorage +cycler==0.12.1 + # via matplotlib +datalad==0.19.6 + # via + # datalad-next + # datalad-osf + # fmriprep (pyproject.toml) +datalad-next==1.2.0 + # via datalad-osf +datalad-osf==0.3.0 + # via fmriprep (pyproject.toml) +distro==1.9.0 + # via datalad +docopt==0.6.2 + # via num2words +etelemetry==0.3.1 + # via nipype +fasteners==0.19 + # via datalad +filelock==3.13.1 + # via nipype +fonttools==4.48.1 + # via matplotlib +formulaic==0.5.2 + # via pybids +greenlet==3.0.3 + # via sqlalchemy +h5py==3.10.0 + # via nitransforms +humanize==4.9.0 + # via + # datalad + # datalad-next +idna==3.6 + # via requests +imageio==2.33.1 + # via scikit-image +importlib-metadata==7.0.1 + # via keyring +importlib-resources==6.1.1 + # via + # nireports + # niworkflows + # templateflow +indexed-gzip==1.8.7 + # via smriprep +interface-meta==1.3.0 + # via formulaic +iso8601==2.1.0 + # via datalad +isodate==0.6.1 + # via rdflib +jaraco-classes==3.3.0 + # via + # keyring + # keyrings-alt +jeepney==0.8.0 + # via + # keyring + # secretstorage +jinja2==3.1.3 + # via + # bokeh + # niworkflows +joblib==1.3.2 + # via + # nilearn + # scikit-learn +keyring==24.3.0 + # via datalad +keyrings-alt==5.0.0 + # via datalad +kiwisolver==1.4.5 + # via matplotlib +lazy-loader==0.3 + # via scikit-image +lockfile==0.12.2 + # via smriprep +looseversion==1.3.0 + # via + # datalad + # fmriprep + # fmriprep (pyproject.toml) + # nipype + # niworkflows + # smriprep +lxml==5.1.0 + # via + # nilearn + # prov + # svgutils +mapca==0.0.4 + # via tedana +markupsafe==2.1.5 + # via jinja2 +matplotlib==3.8.2 + # via + # nireports + # nitime + # niworkflows + # seaborn + # smriprep + # tedana +migas==0.4.0 + # via + # fmriprep + # sdcflows +more-itertools==10.2.0 + # via + # datalad-next + # jaraco-classes +msgpack==1.0.7 + # via datalad +networkx==3.2.1 + # via + # nipype + # prov + # scikit-image +nibabel==5.2.0 + # via + # fmriprep + # fmriprep (pyproject.toml) + # mapca + # nilearn + # nipype + # nireports + # nitransforms + # niworkflows + # pybids + # sdcflows + # smriprep + # tedana +nilearn==0.10.3 + # via + # mapca + # nireports + # niworkflows + # tedana +nipype==1.8.6 + # via + # fmriprep + # fmriprep (pyproject.toml) + # nireports + # niworkflows + # sdcflows + # smriprep +nireports==23.2.0 + # via + # fmriprep + # fmriprep (pyproject.toml) +nitime==0.10.2 + # via + # fmriprep + # fmriprep (pyproject.toml) +nitransforms==23.0.1 + # via + # fmriprep + # fmriprep (pyproject.toml) + # niworkflows + # sdcflows +niworkflows==1.10.0 + # via + # fmriprep + # fmriprep (pyproject.toml) + # sdcflows + # smriprep +num2words==0.5.13 + # via pybids +numpy==1.26.4 + # via + # bokeh + # contourpy + # fmriprep + # fmriprep (pyproject.toml) + # formulaic + # h5py + # imageio + # mapca + # matplotlib + # nibabel + # nilearn + # nipype + # nireports + # nitime + # nitransforms + # niworkflows + # pandas + # pybids + # scikit-image + # scikit-learn + # scipy + # sdcflows + # seaborn + # smriprep + # tedana + # tifffile +osfclient==0.0.5 + # via datalad-osf +packaging==23.2 + # via + # bokeh + # datalad + # etelemetry + # fmriprep + # fmriprep (pyproject.toml) + # matplotlib + # nibabel + # nilearn + # nipype + # niworkflows + # scikit-image + # smriprep +pandas==2.2.0 + # via + # bokeh + # codecarbon + # fmriprep + # fmriprep (pyproject.toml) + # formulaic + # nilearn + # nireports + # niworkflows + # pybids + # seaborn + # tedana +patool==2.1.1 + # via datalad +pillow==10.2.0 + # via + # bokeh + # imageio + # matplotlib + # scikit-image +platformdirs==4.2.0 + # via datalad +prometheus-client==0.19.0 + # via codecarbon +prov==2.0.0 + # via nipype +psutil==5.9.8 + # via + # codecarbon + # fmriprep + # fmriprep (pyproject.toml) +py-cpuinfo==9.0.0 + # via codecarbon +pybids==0.16.4 + # via + # fmriprep + # fmriprep (pyproject.toml) + # nireports + # niworkflows + # sdcflows + # smriprep + # templateflow +pycparser==2.21 + # via cffi +pydot==2.0.0 + # via nipype +pynvml==11.5.0 + # via codecarbon +pyparsing==3.1.1 + # via + # matplotlib + # pydot + # rdflib +python-dateutil==2.8.2 + # via + # arrow + # matplotlib + # nipype + # pandas + # prov +python-gitlab==4.4.0 + # via datalad +pytz==2024.1 + # via + # apscheduler + # pandas +pyyaml==6.0.1 + # via + # bokeh + # nireports + # niworkflows + # smriprep +rapidfuzz==3.6.1 + # via codecarbon +rdflib==7.0.0 + # via + # nipype + # prov +requests==2.31.0 + # via + # codecarbon + # datalad + # etelemetry + # fmriprep + # fmriprep (pyproject.toml) + # nilearn + # osfclient + # python-gitlab + # requests-toolbelt + # templateflow +requests-toolbelt==1.0.0 + # via python-gitlab +scikit-image==0.22.0 + # via + # niworkflows + # sdcflows +scikit-learn==1.4.0 + # via + # mapca + # nilearn + # tedana +scipy==1.11.4 + # via + # formulaic + # mapca + # nilearn + # nipype + # nitime + # nitransforms + # niworkflows + # pybids + # scikit-image + # scikit-learn + # sdcflows + # tedana +sdcflows==2.8.0 + # via + # fmriprep + # fmriprep (pyproject.toml) +seaborn==0.13.2 + # via + # nireports + # niworkflows +secretstorage==3.3.3 + # via keyring +sentry-sdk==1.40.1 + # via fmriprep +simplejson==3.19.2 + # via nipype +six==1.16.0 + # via + # apscheduler + # isodate + # osfclient + # python-dateutil +smriprep==0.13.2 + # via + # fmriprep + # fmriprep (pyproject.toml) +sqlalchemy==2.0.25 + # via pybids +svgutils==0.3.4 + # via + # nireports + # niworkflows +tedana==23.0.2 + # via + # fmriprep + # fmriprep (pyproject.toml) +templateflow==24.2.0 + # via + # nireports + # niworkflows + # sdcflows + # smriprep +threadpoolctl==3.2.0 + # via + # scikit-learn + # tedana +tifffile==2024.1.30 + # via scikit-image +toml==0.10.2 + # via + # fmriprep + # fmriprep (pyproject.toml) + # sdcflows +tornado==6.4 + # via bokeh +tqdm==4.66.1 + # via + # datalad + # osfclient + # templateflow +traits==6.3.2 + # via + # nipype + # niworkflows + # sdcflows +transforms3d==0.4.1 + # via niworkflows +types-python-dateutil==2.8.19.20240106 + # via arrow +typing-extensions==4.9.0 + # via + # datalad + # formulaic + # sqlalchemy +tzdata==2023.4 + # via pandas +tzlocal==5.2 + # via apscheduler +urllib3==2.2.0 + # via + # requests + # sentry-sdk +wrapt==1.16.0 + # via formulaic +xyzservices==2023.10.1 + # via bokeh +zipp==3.17.0 + # via importlib-metadata From 165a3f21fad9ec2a96a8e7d14f76c694bdb64705 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Fri, 3 May 2024 09:14:43 -0400 Subject: [PATCH 4/4] pin the python packages --- requirements.txt | 450 +++++++---------------------------------------- 1 file changed, 62 insertions(+), 388 deletions(-) diff --git a/requirements.txt b/requirements.txt index a41ffdd..5c8eec7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,472 +1,146 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --extra=container --strip-extras -# +alabaster==0.7.16 annexremote==1.6.4 - # via - # datalad - # datalad-next - # datalad-osf -apscheduler==3.10.4 - # via - # fmriprep - # fmriprep (pyproject.toml) -arrow==1.3.0 - # via codecarbon +APScheduler==3.10.4 astor==0.8.1 - # via formulaic -attrs==23.2.0 - # via - # niworkflows - # sdcflows +Babel==2.14.0 bids-validator==1.14.0 - # via pybids bokeh==3.3.4 - # via tedana boto==2.49.0 - # via datalad -certifi==2024.2.2 - # via - # requests - # sentry-sdk -cffi==1.16.0 - # via cryptography +build==1.2.1 chardet==5.2.0 - # via datalad -charset-normalizer==3.3.2 - # via requests ci-info==0.3.0 - # via - # etelemetry - # migas -click==8.1.7 - # via - # codecarbon - # nipype - # pybids codecarbon==2.3.4 - # via - # fmriprep - # fmriprep (pyproject.toml) +codecov==2.1.13 +commonmark==0.9.1 contourpy==1.2.0 - # via - # bokeh - # matplotlib +coverage==7.5.0 cryptography==42.0.4 - # via secretstorage -cycler==0.12.1 - # via matplotlib datalad==0.19.6 - # via - # datalad-next - # datalad-osf - # fmriprep (pyproject.toml) datalad-next==1.2.0 - # via datalad-osf datalad-osf==0.3.0 - # via fmriprep (pyproject.toml) distro==1.9.0 - # via datalad docopt==0.6.2 - # via num2words +doctest-ignore-unicode==0.1.2 +docutils==0.20.1 etelemetry==0.3.1 - # via nipype fasteners==0.19 - # via datalad filelock==3.13.1 - # via nipype +fmriprep==23.2.1 fonttools==4.48.1 - # via matplotlib formulaic==0.5.2 - # via pybids +fuzzywuzzy==0.18.0 greenlet==3.0.3 - # via sqlalchemy -h5py==3.10.0 - # via nitransforms humanize==4.9.0 - # via - # datalad - # datalad-next idna==3.6 - # via requests imageio==2.33.1 - # via scikit-image +imagesize==1.4.1 importlib-metadata==7.0.1 - # via keyring importlib-resources==6.1.1 - # via - # nireports - # niworkflows - # templateflow -indexed-gzip==1.8.7 - # via smriprep +iniconfig==2.0.0 interface-meta==1.3.0 - # via formulaic +ipython-genutils==0.2.0 iso8601==2.1.0 - # via datalad -isodate==0.6.1 - # via rdflib -jaraco-classes==3.3.0 - # via - # keyring - # keyrings-alt +jaraco.classes==3.3.0 jeepney==0.8.0 - # via - # keyring - # secretstorage -jinja2==3.1.3 - # via - # bokeh - # niworkflows joblib==1.3.2 - # via - # nilearn - # scikit-learn keyring==24.3.0 - # via datalad -keyrings-alt==5.0.0 - # via datalad -kiwisolver==1.4.5 - # via matplotlib -lazy-loader==0.3 - # via scikit-image +keyrings.alt==5.0.0 +latexcodec==3.0.0 +lazy_loader==0.3 +Levenshtein==0.25.1 lockfile==0.12.2 - # via smriprep looseversion==1.3.0 - # via - # datalad - # fmriprep - # fmriprep (pyproject.toml) - # nipype - # niworkflows - # smriprep lxml==5.1.0 - # via - # nilearn - # prov - # svgutils +lxml_html_clean==0.1.1 +m2r==0.3.1 mapca==0.0.4 - # via tedana -markupsafe==2.1.5 - # via jinja2 +Markdown==3.6 matplotlib==3.8.2 - # via - # nireports - # nitime - # niworkflows - # seaborn - # smriprep - # tedana migas==0.4.0 - # via - # fmriprep - # sdcflows +mistune==0.8.4 +mkl-service==2.4.0 more-itertools==10.2.0 - # via - # datalad-next - # jaraco-classes msgpack==1.0.7 - # via datalad -networkx==3.2.1 - # via - # nipype - # prov - # scikit-image +munkres==1.1.4 +nbconvert==6.5.4 +nbsphinx==0.9.3 +networkx==3.3 nibabel==5.2.0 - # via - # fmriprep - # fmriprep (pyproject.toml) - # mapca - # nilearn - # nipype - # nireports - # nitransforms - # niworkflows - # pybids - # sdcflows - # smriprep - # tedana nilearn==0.10.3 - # via - # mapca - # nireports - # niworkflows - # tedana nipype==1.8.6 - # via - # fmriprep - # fmriprep (pyproject.toml) - # nireports - # niworkflows - # sdcflows - # smriprep nireports==23.2.0 - # via - # fmriprep - # fmriprep (pyproject.toml) -nitime==0.10.2 - # via - # fmriprep - # fmriprep (pyproject.toml) nitransforms==23.0.1 - # via - # fmriprep - # fmriprep (pyproject.toml) - # niworkflows - # sdcflows niworkflows==1.10.0 - # via - # fmriprep - # fmriprep (pyproject.toml) - # sdcflows - # smriprep +nose==1.3.7 num2words==0.5.13 - # via pybids -numpy==1.26.4 - # via - # bokeh - # contourpy - # fmriprep - # fmriprep (pyproject.toml) - # formulaic - # h5py - # imageio - # mapca - # matplotlib - # nibabel - # nilearn - # nipype - # nireports - # nitime - # nitransforms - # niworkflows - # pandas - # pybids - # scikit-image - # scikit-learn - # scipy - # sdcflows - # seaborn - # smriprep - # tedana - # tifffile osfclient==0.0.5 - # via datalad-osf packaging==23.2 - # via - # bokeh - # datalad - # etelemetry - # fmriprep - # fmriprep (pyproject.toml) - # matplotlib - # nibabel - # nilearn - # nipype - # niworkflows - # scikit-image - # smriprep pandas==2.2.0 - # via - # bokeh - # codecarbon - # fmriprep - # fmriprep (pyproject.toml) - # formulaic - # nilearn - # nireports - # niworkflows - # pybids - # seaborn - # tedana patool==2.1.1 - # via datalad +pbr==6.0.0 pillow==10.2.0 - # via - # bokeh - # imageio - # matplotlib - # scikit-image +pip-tools==7.4.1 platformdirs==4.2.0 - # via datalad +pluggy==1.5.0 prometheus-client==0.19.0 - # via codecarbon prov==2.0.0 - # via nipype -psutil==5.9.8 - # via - # codecarbon - # fmriprep - # fmriprep (pyproject.toml) py-cpuinfo==9.0.0 - # via codecarbon pybids==0.16.4 - # via - # fmriprep - # fmriprep (pyproject.toml) - # nireports - # niworkflows - # sdcflows - # smriprep - # templateflow +pybtex==0.24.0 +pybtex-docutils==1.0.3 pycparser==2.21 - # via cffi pydot==2.0.0 - # via nipype +pydotplus==2.0.2 pynvml==11.5.0 - # via codecarbon pyparsing==3.1.1 - # via - # matplotlib - # pydot - # rdflib +pyproject_hooks==1.1.0 +Pypubsub==4.0.3 +PyQt5==5.15.9 +PyQt5-sip==12.12.2 +pytest==8.2.0 +pytest-cov==5.0.0 python-dateutil==2.8.2 - # via - # arrow - # matplotlib - # nipype - # pandas - # prov python-gitlab==4.4.0 - # via datalad -pytz==2024.1 - # via - # apscheduler - # pandas -pyyaml==6.0.1 - # via - # bokeh - # nireports - # niworkflows - # smriprep -rapidfuzz==3.6.1 - # via codecarbon +python-Levenshtein==0.25.1 +rapidfuzz==3.9.0 rdflib==7.0.0 - # via - # nipype - # prov -requests==2.31.0 - # via - # codecarbon - # datalad - # etelemetry - # fmriprep - # fmriprep (pyproject.toml) - # nilearn - # osfclient - # python-gitlab - # requests-toolbelt - # templateflow +recommonmark==0.7.1 requests-toolbelt==1.0.0 - # via python-gitlab -scikit-image==0.22.0 - # via - # niworkflows - # sdcflows scikit-learn==1.4.0 - # via - # mapca - # nilearn - # tedana -scipy==1.11.4 - # via - # formulaic - # mapca - # nilearn - # nipype - # nitime - # nitransforms - # niworkflows - # pybids - # scikit-image - # scikit-learn - # sdcflows - # tedana sdcflows==2.8.0 - # via - # fmriprep - # fmriprep (pyproject.toml) seaborn==0.13.2 - # via - # nireports - # niworkflows -secretstorage==3.3.3 - # via keyring +SecretStorage==3.3.3 sentry-sdk==1.40.1 - # via fmriprep simplejson==3.19.2 - # via nipype -six==1.16.0 - # via - # apscheduler - # isodate - # osfclient - # python-dateutil smriprep==0.13.2 - # via - # fmriprep - # fmriprep (pyproject.toml) -sqlalchemy==2.0.25 - # via pybids +snowballstemmer==2.2.0 +Sphinx==7.3.7 +sphinx-argparse==0.4.0 +sphinx-markdown-tables==0.0.17 +sphinx-rtd-theme==2.0.0 +sphinxcontrib-apidoc==0.5.0 +sphinxcontrib-applehelp==1.0.8 +sphinxcontrib-bibtex==2.6.2 +sphinxcontrib-devhelp==1.0.6 +sphinxcontrib-htmlhelp==2.0.5 +sphinxcontrib-jquery==4.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.7 +sphinxcontrib-serializinghtml==1.1.10 +SQLAlchemy==2.0.25 svgutils==0.3.4 - # via - # nireports - # niworkflows tedana==23.0.2 - # via - # fmriprep - # fmriprep (pyproject.toml) templateflow==24.2.0 - # via - # nireports - # niworkflows - # sdcflows - # smriprep threadpoolctl==3.2.0 - # via - # scikit-learn - # tedana tifffile==2024.1.30 - # via scikit-image -toml==0.10.2 - # via - # fmriprep - # fmriprep (pyproject.toml) - # sdcflows -tornado==6.4 - # via bokeh tqdm==4.66.1 - # via - # datalad - # osfclient - # templateflow traits==6.3.2 - # via - # nipype - # niworkflows - # sdcflows transforms3d==0.4.1 - # via niworkflows types-python-dateutil==2.8.19.20240106 - # via arrow -typing-extensions==4.9.0 - # via - # datalad - # formulaic - # sqlalchemy +typing_extensions==4.9.0 tzdata==2023.4 - # via pandas tzlocal==5.2 - # via apscheduler urllib3==2.2.0 - # via - # requests - # sentry-sdk wrapt==1.16.0 - # via formulaic +wxPython==4.2.1 xyzservices==2023.10.1 - # via bokeh -zipp==3.17.0 - # via importlib-metadata