phantoms #320
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: phantoms | |
on: | |
workflow_call: | |
push: | |
branches: | |
- main | |
- switch-phantoms-to-s3 | |
pull_request: | |
branches: | |
- main | |
- dev | |
workflow_dispatch: | |
inputs: | |
debug_enabled: | |
type: boolean | |
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' | |
required: false | |
default: false | |
jobs: | |
phantoms: | |
runs-on: ${{ matrix.os }} | |
env: | |
DCM2NIIX_WIN_PATH: dcm2niix_win/dcm2niix.exe | |
MATLAB_CODE_PATH: ${{ github.workspace }}/matlab/ | |
METADATA_PATH: ${{ github.workspace }}/metadata/ | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
python: ["3.10"] | |
fail-fast: false | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Cache Node Posix | |
if: runner.os != 'Windows' && !env.ACT | |
uses: actions/cache@v3 | |
with: | |
path: ~/.npm | |
key: npm-${{ runner.os }}-${{ env.cache-name }} | |
- name: Cache Phantoms | |
if: ${{ !env.ACT }} | |
id: phantom-cache | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-phantoms | |
with: | |
path: PHANTOMS.zip | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('PHANTOMS.zip') }} | |
restore-keys: | | |
${{ runner.os }}-${{ env.cache-name }}- | |
${{ runner.os }}- | |
- name: Install dcm2niix posix | |
if: runner.os != 'Windows' | |
run: | | |
if [ "$RUNNER_OS" == "Linux" ]; then | |
mkdir dcm2niix_install/ && cd dcm2niix_install/ | |
curl -fLO https://github.com/rordenlab/dcm2niix/releases/download/v1.0.20230411/dcm2niix_lnx.zip | |
unzip dcm2niix*.zip | |
echo "${{ github.workspace }}/dcm2niix_install/" >> $GITHUB_PATH | |
elif [ "$RUNNER_OS" == "macOS" ]; then | |
brew install dcm2niix | |
fi | |
- name: Check dcm2niix is installed and on path | |
if: runner.os != 'Windows' | |
run: | |
dcm2niix -h | |
- name: Install dcm2niix windows | |
if: runner.os == 'Windows' | |
run: | | |
curl -fLO https://github.com/rordenlab/dcm2niix/releases/latest/download/dcm2niix_win.zip | |
powershell -command "Expand-Archive dcm2niix_win.zip" | |
- name: Set up python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
cache: 'pip' | |
cache-dependency-path: | | |
pypet2bids/pyproject.toml | |
- name: Install Python Dependencies | |
run: | | |
cd pypet2bids | |
pip install . | |
- name: Install Poetry Build Package | |
run: | | |
make installpoetry | |
make buildpackage | |
make installpackage | |
dcm2niix4pet -h | |
- name: Set Up Node | |
uses: actions/setup-node@v4 | |
- name: Install BIDS Validator | |
run: npm install -g bids-validator@1.14.6 | |
- name: Collect Phantoms | |
if: ${{ steps.cache-phantoms.outputs.cache-hit != 'true' }} && ${{ !env.ACT }} | |
run: wget -O PHANTOMS.zip https://openneuropet.s3.amazonaws.com/US-sourced-OpenNeuroPET-Phantoms.zip | |
- name: Decompress phantoms windows | |
if: steps.cache-phantoms.outputs.cache-hit != 'true' && !env.ACT && runner.os == 'Windows' | |
run: powershell -command "Expand-Archive PHANTOMS.zip" | |
- name: Decompress phantoms posix | |
if: steps.cache-phantoms.outputs.cache-hit != 'true' && !env.ACT && runner.os != 'Windows' | |
run: unzip PHANTOMS.zip | |
- name: Copy Conversion Scripts from Version Control | |
run: | | |
mkdir -p OpenNeuroPET-Phantoms/code/ | |
cp scripts/matlab_conversions.m OpenNeuroPET-Phantoms/code/matlab_conversions.m | |
cp scripts/python_conversions.sh OpenNeuroPET-Phantoms/code/python_conversions.sh | |
- name: Debug | |
uses: mxschmitt/action-tmate@v3 | |
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }} | |
timeout-minutes: 15 | |
with: | |
limit-access-to-actor: true | |
- name: Run Python Conversion Script on Phantoms | |
run: | | |
cd OpenNeuroPET-Phantoms/code | |
bash python_conversions.sh | |
- name: SetupMatlab | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
uses: matlab-actions/setup-matlab@v1 | |
# note matlab-actions/setup-matlab@v2 breaks this script, don't update unless you're forced to | |
#with: | |
#release: 'R2023a' | |
#cache: true | |
- name: Run Matlab Conversion Script on Phantoms | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
uses: matlab-actions/run-command@v1 | |
with: | |
command: | | |
addpath('${{ github.workspace }}/OpenNeuroPET-Phantoms/code') | |
addpath('${{ env.MATLAB_CODE_PATH }}'); | |
addpath('${{ env.MATLAB_CODE_PATH }}/unit_tests'); | |
addpath('${{ env.MATLAB_CODE_PATH }}/template_txt'); | |
addpath('${{ env.SMALLER_ECAT_PATH }}'); | |
addpath('${{ env.METADATA_PATH }}'); | |
matlab_conversions | |
- name: Check Parity | |
run: | | |
python scripts/compare_jsons.py OpenNeuroPET-Phantoms/python OpenNeuroPET-Phantoms/matlab | |
- name: Validate Python Conversion | |
run: | | |
bids-validator OpenNeuroPET-Phantoms/python | |
- name: Debug | |
uses: mxschmitt/action-tmate@v3 | |
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }} | |
timeout-minutes: 15 | |
with: | |
limit-access-to-actor: true | |
- name: Validate Matlab Conversion | |
run: | | |
bids-validator OpenNeuroPET-Phantoms/matlab |