Skip to content

Setting up nipype-auto-converter #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 48 commits into from
May 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
260d83e
added __all__ attribute to init
tclose Mar 3, 2024
5ede57c
updated actions versions
tclose Mar 19, 2024
40d08d3
refreshed generated package
tclose Apr 16, 2024
67de781
autoformat
tclose Apr 17, 2024
71d1c1e
touched up conversion specs
tclose Apr 18, 2024
b2f6c7d
updates to package and prproject yamls
tclose Apr 18, 2024
30e5ead
editing conversion specs to get package to build
tclose Apr 21, 2024
571219c
touched up package spec
tclose Apr 22, 2024
4bb5f2d
omitted and find-replaces several things to get tests to run
tclose Apr 23, 2024
2102061
debugging workflow tests
tclose Apr 24, 2024
b44f357
debugging workflow conversions
tclose Apr 25, 2024
5db7962
debugging compute iqms
tclose Apr 25, 2024
da92250
cleaned up some different workflow-specific issues using find/replace
tclose Apr 26, 2024
db90f4d
removed unnecessary omp_nthreads default
tclose Apr 26, 2024
eb24b32
added test_inputs to synthstrip
tclose Apr 26, 2024
af9097e
refactoring workflow input/output specifications
tclose Apr 30, 2024
6a727b3
deleted unused fmri brain mask workflow fmri_bmsk_workflow
tclose Apr 30, 2024
5922e10
Modifying syntax of how inputs/outputs are specified
tclose May 3, 2024
8024871
debugging conversion
tclose May 15, 2024
67fd0f1
removed early return if not verbose so all outputs are generated by a…
tclose May 15, 2024
fd67733
got diffusion workflow to build successfully
tclose May 15, 2024
7c4bd38
added metadata input
tclose May 15, 2024
f81b54f
all workflows build!!
tclose May 16, 2024
85fa8a0
Merge branch 'main' into nipype-auto-conv
tclose May 17, 2024
9ab4ff8
added pydra task dependencies
tclose May 17, 2024
328233b
removed fileformats from ci-cd
tclose May 17, 2024
86c37c4
added job dependency in gha
tclose May 17, 2024
6b8d42e
added nipy to nipype2pydra deps
tclose May 17, 2024
72b4223
touched up ci-cd workflow
tclose May 18, 2024
0d9fc17
removed files that shouldn't have been included in vcs
tclose May 18, 2024
e555fdc
updated requirements file
tclose May 18, 2024
84e14c0
added nirodents to conv reqs
tclose May 18, 2024
25b5743
removed installation of toolkit deps from ci-cd (will mock instead)
tclose May 20, 2024
ca0dfbd
added mock tools
tclose May 20, 2024
f119191
debugging ci-cd
tclose May 20, 2024
88b929f
debugging ci-cd
tclose May 20, 2024
bb6557d
updated release checking in ci-cd
tclose May 20, 2024
33d3312
added in depedencies required to run
tclose May 20, 2024
2149296
debugging ci-cd
tclose May 21, 2024
22d475f
added package init
tclose May 21, 2024
75e8fbe
find replace >py3.8 syntax to 3.8 syntax
tclose May 21, 2024
edf8698
removed support for Python 3.8
tclose May 21, 2024
d782fec
python versions
tclose May 21, 2024
1cdebc1
added pydra-nireports
tclose May 21, 2024
a3828d0
install dev version of pydra for testing
tclose May 21, 2024
83e9918
fixed branch of pydra install in ci-cd
tclose May 22, 2024
6fac852
debugging ci-cd
tclose May 22, 2024
77be07e
updated environment variables in ci-cd
tclose May 22, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 59 additions & 161 deletions .github/workflows/ci-cd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,54 +16,55 @@ on:
types: [create-release]

jobs:

nipype-conv:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Revert version to most recent tag on upstream update
if: github.event_name == 'repository_dispatch'
run: git checkout $(git tag -l | tail -n 1 | awk -F post '{print $1}')
- name: Show file tree
run: tree .
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
- name: Install build dependencies
run: python -m pip install --upgrade pip
- name: Install requirements
run: python -m pip install ./related-packages/fileformats -r ./nipype-auto-conv/requirements.txt
run: python -m pip install -r ./nipype-auto-conv/requirements.txt
- name: Run automatic Nipype > Pydra conversion
run: ./nipype-auto-conv/generate
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: converted-nipype
path: pydra/tasks/anatomical/auto
path: pydra/tasks/mriqc

devcheck:
needs: [nipype-conv]
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8', '3.11'] # Check oldest and newest versions
python-version: ['3.10', '3.12'] # Check oldest and newest versions
pip-flags: ['', '--editable']
pydra:
- 'pydra'
- '--editable git+https://github.com/nipype/pydra.git#egg=pydra'
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Revert version to most recent tag on upstream update
if: github.event_name == 'repository_dispatch'
run: git checkout $(git tag -l | tail -n 1 | awk -F post '{print $1}')
- name: Download tasks converted from Nipype
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: converted-nipype
path: pydra/tasks/anatomical/auto
path: pydra/tasks/mriqc
- name: Strip auto package from gitignore so it is included in package
run: |
sed -i '/\/pydra\/tasks\/anatomical\/auto/d' .gitignore
sed -i '/\/pydra/d' .gitignore
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install build dependencies
Expand All @@ -77,207 +78,104 @@ jobs:
python -c "import pydra as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
- name: Install task package
run: |
pip install "./related-packages/fileformats[dev]" "related-packages/fileformats-extras[dev]"
pip install ${{ matrix.pip-flags }} ".[dev]"
python -c "import pydra.tasks.anatomical as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
python -c "import pydra as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
python -c "import fileformats.medimage_anatomical as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
python -c "import fileformats.extras.medimage_anatomical as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"

fileformats-test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8', '3.11']
steps:
- uses: actions/checkout@v3
- name: Revert version to most recent tag on upstream update
if: github.event_name == 'repository_dispatch'
run: git checkout $(git tag -l | tail -n 1 | awk -F post '{print $1}')
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
- name: Install task package
run: |
pip install "./related-packages/fileformats[test]" "./related-packages/fileformats-extras[test]"
python -c "import fileformats.medimage_anatomical as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
- name: Test fileformats with pytest
run: |
cd ./fileformats
pytest -sv --cov fileformats.medimage_anatomical --cov fileformats.extras.medimage_anatomical --cov-report xml .


test:
needs: [nipype-conv, fileformats-test]
needs: [nipype-conv]
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ['3.8'] # '3.11'
python-version: ['3.10', '3.12']

steps:

- name: Removed unnecessary tools to free space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Get Download cache Key
id: cache-key
run: echo "::set-output name=key::anatomical-linux-ubuntu22_amd64-7.4.1"
- name: Cache FreeSurfer
uses: actions/cache@v2
with:
path: $HOME/downloads/anatomical
key: ${{ steps.cache-key.outputs.key }}
restore-keys: |
anatomical-linux-ubuntu22_amd64-7.4.1
- name: Download FreeSurfer
if: steps.cache-key.outputs.key != steps.cache-hit.outputs.key
run: |
mkdir -p $HOME/downloads/anatomical
curl -s -o $HOME/downloads/anatomical/anatomical-linux-ubuntu22_amd64-7.4.1.tar.gz https://surfer.nmr.mgh.harvard.edu/pub/dist/anatomical/7.4.1/anatomical-linux-ubuntu22_amd64-7.4.1.tar.gz
shell: bash
- name: Install Freesurfer
env:
FREESURFER_LICENCE: ${{ secrets.FREESURFER_LICENCE }}
run: |
pushd $HOME/downloads/anatomical
tar -zxpf anatomical-linux-ubuntu22_amd64-7.4.1.tar.gz
mv anatomical $HOME/
popd
export FREESURFER_HOME=$HOME/anatomical
source $FREESURFER_HOME/SetUpFreeSurfer.sh
echo $FREESURFER_LICENCE > $FREESURFER_HOME/license.txt
export PATH=$FREESURFER_HOME/bin:$PATH
- uses: actions/checkout@v3
sudo rm -rf "$AGENT_TOOLSDIRECTORY"

- uses: actions/checkout@v4
- name: Revert version to most recent tag on upstream update
if: github.event_name == 'repository_dispatch'
run: git checkout $(git tag -l | tail -n 1 | awk -F post '{print $1}')

- name: Download tasks converted from Nipype
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: converted-nipype
path: pydra/tasks/anatomical/auto
- name: Strip auto package from gitignore so it is included in package
path: pydra/tasks/mriqc

- name: Strip pydra package from gitignore so it is included in package
run: |
sed -i '/\/src\/pydra\/tasks\/anatomical\/auto/d' .gitignore
sed -i '/\/pydra/d' .gitignore

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install build dependencies
run: |
python -m pip install --upgrade pip

- name: Install task package
run: |
pip install "./related-packages/fileformats" "./related-packages/fileformats-extras" ".[test]"
python -c "import pydra.tasks.anatomical as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
pip install ".[test]"
python -c "import pydra.tasks.mriqc as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"
python -c "import pydra as m; print(f'{m.__name__} {m.__version__} @ {m.__file__}')"

- name: Install dev Pydra version for now until it is merged
run: pip install --upgrade git+https://github.com/nipype/pydra.git@typing-bugfixes

- name: Set environment variables required for mocking tools
run: |
echo "$(pwd)/mock-tools" >> $GITHUB_PATH
echo "export FSLDIR=$(pwd)/mock-tools" >> $GITHUB_ENV
echo "export FSLOUTPUTTYPE=NIFTI_GZ" >> $GITHUB_ENV

- name: Test with pytest
run: |
pytest -sv --doctest-modules ./pydra/tasks/anatomical \
--cov pydra.tasks.anatomical --cov-report xml
pytest -sv ./pydra --cov pydra.tasks.mriqc --cov-report xml

- uses: codecov/codecov-action@v3
if: ${{ always() }}
with:
files: coverage.xml,./fileformats/coverage.xml
name: pydra-anatomical

deploy-fileformats:
needs: [devcheck, test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install build tools
run: python -m pip install build twine
- name: Build source and wheel distributions
run: python -m build ./related-packages/fileformats
- name: Check distributions
run: twine check ./related-packages/fileformats/dist/*
- name: Check for PyPI token on tag
id: deployable
if: (github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) || github.event_name == 'repository_dispatch'
env:
PYPI_API_TOKEN: "${{ secrets.PYPI_FILEFORMATS_API_TOKEN }}"
run: if [ -n "$PYPI_API_TOKEN" ]; then echo "DEPLOY=true" >> $GITHUB_OUTPUT; fi
- name: Upload to PyPI
if: steps.deployable.outputs.DEPLOY
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_FILEFORMATS_API_TOKEN }}
packages-dir: ./related-packages/fileformats/dist

deploy-fileformats-extras:
needs: [deploy-fileformats]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install build tools
run: python -m pip install build twine
- name: Build source and wheel distributions
run: python -m build ./related-packages/fileformats-extras
- name: Check distributions
run: twine check ./related-packages/fileformats-extras/dist/*
- name: Check for PyPI token on tag
id: deployable
if: (github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) || github.event_name == 'repository_dispatch'
env:
PYPI_API_TOKEN: "${{ secrets.PYPI_FILEFORMATS_EXTRAS_API_TOKEN }}"
run: if [ -n "$PYPI_API_TOKEN" ]; then echo "DEPLOY=true" >> $GITHUB_OUTPUT; fi
- name: Upload to PyPI
if: steps.deployable.outputs.DEPLOY
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_FILEFORMATS_EXTRAS_API_TOKEN }}
packages-dir: ./related-packages/fileformats-extras/dist
files: coverage.xml
name: pydra-mriqc

deploy:
needs: [deploy-fileformats-extras]
needs: [test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Download tasks converted from Nipype
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: converted-nipype
path: pydra/tasks/anatomical/auto
path: pydra/tasks/mriqc
- name: Tag release with a post-release based on Nipype and Nipype2Pydra versions
if: github.event_name == 'repository_dispatch'
run: |
TAG=$(git tag -l | tail -n 1 | awk -F post '{print $1}')
POST=$(python -c "from pydra.tasks.anatomical.auto._version import *; print(post_release)")
POST=$(python -c "from pydra.tasks.mriqc._post_release import *; print(post_release)")
git checkout $TAG
git add -f pydra/tasks/anatomical/auto/_version.py
git add -f pydra/tasks/mriqc/_version.py
git commit -am"added auto-generated version to make new tag for package version"
git tag ${TAG}post${POST}
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: '3.11'
python-version: '3.12'
- name: Install build tools
run: python -m pip install build twine
- name: Strip auto package from gitignore so it is included in package
- name: Strip pydra package from gitignore so it is included in package
run: |
sed -i '/\/pydra\/tasks\/anatomical\/auto/d' .gitignore
sed -i '/\/pydra/d' .gitignore
- name: Build source and wheel distributions
run: python -m build .
- name: Check distributions
Expand All @@ -288,7 +186,7 @@ jobs:
path: dist/
- name: Check for PyPI token on tag
id: deployable
if: (github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) || github.event_name == 'repository_dispatch'
if: github.event_name == 'release'
env:
PYPI_API_TOKEN: "${{ secrets.PYPI_API_TOKEN }}"
run: if [ -n "$PYPI_API_TOKEN" ]; then echo "DEPLOY=true" >> $GITHUB_OUTPUT; fi
Expand All @@ -302,4 +200,4 @@ jobs:
# Deploy on tags if PYPI_API_TOKEN is defined in the repository secrets.
# Secrets are not accessible in the if: condition [0], so set an output variable [1]
# [0] https://github.community/t/16928
# [1] https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter
# [1] https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,4 @@ dmypy.json
# Mac garbarge
.DS_store

/pydra/tasks/mriqc/interfaces
/pydra/tasks/mriqc/_version.py
/pydra/tasks/mriqc/auto
/pydra
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Enter list of names and emails of contributors to this package
6 changes: 6 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Pydra-mriqc
Copyright 2024 Pydra Development Team

The bases for the task interfaces defined in this package were semi-automatically converted
from Nipype interfaces (https://github.com/nipy/nipype) using the Nipype2Pydra tool
(https://github.com/nipype/nipype2pydra).
2 changes: 0 additions & 2 deletions README.md

This file was deleted.

Loading
Loading