babs 0.3.0__tar.gz → 0.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- babs-0.3.2/.circleci/config.yml +163 -0
- babs-0.3.2/.codespellrc +2 -0
- babs-0.3.2/.gitattributes +1 -0
- babs-0.3.2/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- babs-0.3.2/.github/ISSUE_TEMPLATE/feature_request.md +16 -0
- babs-0.3.2/.github/release.yml +20 -0
- babs-0.3.2/.github/workflows/codespell.yml +14 -0
- babs-0.3.2/.github/workflows/e2e-slurm.yml +35 -0
- babs-0.3.2/.github/workflows/ruff.yml +22 -0
- babs-0.3.2/.github/workflows/shellcheck.yml +18 -0
- babs-0.3.2/.readthedocs.yaml +17 -0
- babs-0.3.2/CITATION.cff +102 -0
- babs-0.3.2/Dockerfile +48 -0
- babs-0.3.2/DockerfileSLURM +31 -0
- babs-0.3.2/Dockerfile_testing +6 -0
- babs-0.3.2/MANIFEST.in +11 -0
- babs-0.3.2/Makefile +15 -0
- {babs-0.3.0 → babs-0.3.2}/PKG-INFO +2 -2
- babs-0.3.2/README.rst +72 -0
- babs-0.3.2/babs/__init__.py +6 -0
- {babs-0.3.0 → babs-0.3.2}/babs/_version.py +2 -2
- babs-0.3.2/babs/babs.py +1913 -0
- babs-0.3.2/babs/bids_skeletons/multi_ses_qsiprep.yaml +83 -0
- babs-0.3.2/babs/bids_skeletons/no_ses_qsiprep.yaml +41 -0
- babs-0.3.2/babs/cli.py +1286 -0
- babs-0.3.2/babs/constants.py +8 -0
- babs-0.3.2/babs/container.py +302 -0
- babs-0.3.2/babs/dict_cluster_systems.yaml +16 -0
- babs-0.3.2/babs/generate_bidsapp_runscript.py +327 -0
- babs-0.3.2/babs/generate_submit_script.py +173 -0
- babs-0.3.2/babs/input_datasets.py +599 -0
- babs-0.3.2/babs/system.py +74 -0
- babs-0.3.2/babs/template_test_job.py +86 -0
- {babs-0.3.0 → babs-0.3.2}/babs/templates/babs_proj_config.yaml.jinja2 +1 -1
- {babs-0.3.0 → babs-0.3.2}/babs/templates/determine_zipfilename.sh.jinja2 +1 -1
- {babs-0.3.0 → babs-0.3.2}/babs/templates/participant_job.sh.jinja2 +9 -9
- {babs-0.3.0 → babs-0.3.2}/babs/templates/unzip_inputds.sh.jinja2 +1 -1
- babs-0.3.2/babs/utils.py +1339 -0
- babs-0.3.2/docker/docker-entrypoint.sh +3 -0
- babs-0.3.2/docker/environment.yml +31 -0
- babs-0.3.2/docs/Makefile +192 -0
- babs-0.3.2/docs/_static/babs_cli.png +0 -0
- babs-0.3.2/docs/_static/babs_workflow.png +0 -0
- babs-0.3.2/docs/_static/datalad_logo.png +0 -0
- babs-0.3.2/docs/_templates/autosummary/module.rst +23 -0
- babs-0.3.2/docs/after_jobs.rst +47 -0
- babs-0.3.2/docs/babs-check-setup.rst +89 -0
- babs-0.3.2/docs/babs-init.rst +184 -0
- babs-0.3.2/docs/babs-merge.rst +83 -0
- babs-0.3.2/docs/babs-status.rst +101 -0
- babs-0.3.2/docs/babs-submit.rst +82 -0
- babs-0.3.2/docs/babs-sync-code.rst +45 -0
- babs-0.3.2/docs/cli.rst +37 -0
- babs-0.3.2/docs/conf.py +146 -0
- babs-0.3.2/docs/create_babs_project.rst +51 -0
- babs-0.3.2/docs/developer.rst +28 -0
- babs-0.3.2/docs/developer_babs_status.rst +180 -0
- babs-0.3.2/docs/developer_config_yaml_file.rst +16 -0
- babs-0.3.2/docs/developer_how_to_test.rst +130 -0
- babs-0.3.2/docs/index.rst +31 -0
- babs-0.3.2/docs/installation.rst +120 -0
- babs-0.3.2/docs/jobs.rst +304 -0
- babs-0.3.2/docs/links.rst +2 -0
- babs-0.3.2/docs/overview.rst +54 -0
- babs-0.3.2/docs/preparation.rst +16 -0
- babs-0.3.2/docs/preparation_config_yaml_file.rst +865 -0
- babs-0.3.2/docs/preparation_container.rst +83 -0
- babs-0.3.2/docs/preparation_input_dataset.rst +160 -0
- babs-0.3.2/docs/walkthrough.rst +909 -0
- babs-0.3.2/docs/walkthrough_babs-check-setup_printed_messages.txt +62 -0
- babs-0.3.2/docs/walkthrough_babs-init_printed_messages.txt +154 -0
- babs-0.3.2/docs/walkthrough_babs-merge_printed_messages.txt +71 -0
- babs-0.3.2/docs/whats_new.md +136 -0
- babs-0.3.2/environment_hpc.yml +31 -0
- babs-0.3.2/notebooks/README.md +36 -0
- babs-0.3.2/notebooks/eg_aslprep-0-7-5.yaml +78 -0
- babs-0.3.2/notebooks/eg_fmriprep-24-1-1_anatonly.yaml +78 -0
- babs-0.3.2/notebooks/eg_fmriprep-24-1-1_ingressed-fs.yaml +83 -0
- babs-0.3.2/notebooks/eg_fmriprep-24-1-1_regular.yaml +75 -0
- babs-0.3.2/notebooks/eg_mriqc-24-0-2.yaml +57 -0
- babs-0.3.2/notebooks/eg_qsiprep-1-0-0_regular.yaml +68 -0
- babs-0.3.2/notebooks/eg_qsirecon-1-0-1_custom_spec.yaml +66 -0
- babs-0.3.2/notebooks/eg_qsirecon-1-0-1_hsvs.yaml +58 -0
- babs-0.3.2/notebooks/eg_toybidsapp-0-0-7_rawBIDS-walkthrough.yaml +30 -0
- babs-0.3.2/notebooks/eg_toybidsapp-0-0-7_zipped.yaml +47 -0
- babs-0.3.2/notebooks/eg_xcpd-0-10-6_linc.yaml +75 -0
- babs-0.3.2/notebooks/initial_sub_list_multi-ses.csv +7 -0
- babs-0.3.2/notebooks/initial_sub_list_single-ses.csv +3 -0
- {babs-0.3.0 → babs-0.3.2}/pyproject.toml +1 -3
- babs-0.3.2/tests/download_datasets.py +30 -0
- babs-0.3.2/tests/e2e-slurm/container/config_toybidsapp.yaml +1 -0
- babs-0.3.2/tests/e2e-slurm/container/sleep_array.sh +20 -0
- babs-0.3.2/tests/e2e-slurm/container/walkthrough-tests.sh +114 -0
- babs-0.3.2/tests/get_data.py +290 -0
- babs-0.3.2/tests/origin_input_dataset.yaml +9 -0
- babs-0.3.2/tests/pytest_in_docker.sh +7 -0
- babs-0.3.2/tests/test_babs_check_setup.py +143 -0
- babs-0.3.2/tests/test_babs_init.py +315 -0
- babs-0.3.2/tests/test_generate_bidsapp_runscript.py +163 -0
- babs-0.3.2/tests/test_generate_submit_script.py +141 -0
- babs-0.3.2/tests/test_input_datasets.py +290 -0
- babs-0.3.2/tests/test_system.py +39 -0
- babs-0.3.2/tox.ini +102 -0
- {babs-0.3.0 → babs-0.3.2}/.gitignore +0 -0
- {babs-0.3.0 → babs-0.3.2}/LICENSE +0 -0
- {babs-0.3.0 → babs-0.3.2}/babs/templates/bidsapp_run.sh.jinja2 +0 -0
- {babs-0.3.0 → babs-0.3.2}/babs/templates/datalad_run.sh.jinja2 +0 -0
- {babs-0.3.0 → babs-0.3.2}/babs/templates/filter_file.sh.jinja2 +0 -0
- {babs-0.3.0 → babs-0.3.2}/babs/templates/job_submit.yaml.jinja2 +0 -0
- {babs-0.3.0 → babs-0.3.2}/babs/templates/test_job.sh.jinja2 +0 -0
- {babs-0.3.0 → babs-0.3.2}/babs/templates/zipping.sh.jinja2 +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Use the latest 2.1 version of CircleCI pipeline process engine.
|
|
2
|
+
# See: https://circleci.com/docs/2.0/configuration-reference
|
|
3
|
+
version: 2.1
|
|
4
|
+
|
|
5
|
+
.dockersetup: &dockersetup
|
|
6
|
+
docker:
|
|
7
|
+
- image: pennlinc/slurm-docker-ci:0.11
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
download_test_data:
|
|
11
|
+
<<: *dockersetup
|
|
12
|
+
resource_class: medium
|
|
13
|
+
working_directory: /home/circleci/src/babs
|
|
14
|
+
steps:
|
|
15
|
+
- checkout:
|
|
16
|
+
path: /home/circleci/src/babs
|
|
17
|
+
- restore_cache:
|
|
18
|
+
keys:
|
|
19
|
+
- test-data-v2
|
|
20
|
+
- run:
|
|
21
|
+
name: Download test datasets
|
|
22
|
+
command: |
|
|
23
|
+
mkdir -p /home/circleci/test_data
|
|
24
|
+
cd /home/circleci/test_data
|
|
25
|
+
# Install datalad if not already in the image
|
|
26
|
+
pip install datalad-osf
|
|
27
|
+
# Download each dataset from origin_input_dataset.yaml
|
|
28
|
+
python3 /home/circleci/src/babs/tests/download_datasets.py
|
|
29
|
+
# Debug output
|
|
30
|
+
echo "Contents of test_data directory:"
|
|
31
|
+
ls -la /home/circleci/test_data/
|
|
32
|
+
- save_cache:
|
|
33
|
+
key: test-data-v2
|
|
34
|
+
paths:
|
|
35
|
+
- /home/circleci/test_data
|
|
36
|
+
|
|
37
|
+
pytest: # run pytest
|
|
38
|
+
<<: *dockersetup
|
|
39
|
+
resource_class: xlarge
|
|
40
|
+
working_directory: /home/circleci/src/babs
|
|
41
|
+
steps:
|
|
42
|
+
- checkout:
|
|
43
|
+
path: /home/circleci/src/babs
|
|
44
|
+
- restore_cache:
|
|
45
|
+
keys:
|
|
46
|
+
- test-data-v2
|
|
47
|
+
- run:
|
|
48
|
+
name: pytest of BABS
|
|
49
|
+
no_output_timeout: 1h
|
|
50
|
+
command: |
|
|
51
|
+
micromamba install -y -c conda-forge shellcheck
|
|
52
|
+
pip install .[tests]
|
|
53
|
+
pytest -n 4 -sv --durations=0 --timeout=300
|
|
54
|
+
|
|
55
|
+
e2e-slurm:
|
|
56
|
+
machine:
|
|
57
|
+
image: ubuntu-2204:current
|
|
58
|
+
# docker:
|
|
59
|
+
# - image: pennlinc/slurm-docker-ci:0.8
|
|
60
|
+
working_directory: /home/circleci/src/babs
|
|
61
|
+
steps:
|
|
62
|
+
- checkout:
|
|
63
|
+
path: /home/circleci/src/babs
|
|
64
|
+
- restore_cache:
|
|
65
|
+
keys:
|
|
66
|
+
- test-data-v2
|
|
67
|
+
- run:
|
|
68
|
+
name: pytest of BABS
|
|
69
|
+
no_output_timeout: 1h
|
|
70
|
+
command: |
|
|
71
|
+
docker build \
|
|
72
|
+
-t pennlinc/slurm-docker-ci:unstable \
|
|
73
|
+
-f Dockerfile_testing .
|
|
74
|
+
|
|
75
|
+
# Make a directory that will hold the test artifacts
|
|
76
|
+
mkdir -p ${HOME}/e2e-testing
|
|
77
|
+
docker run -it \
|
|
78
|
+
-v ${PWD}:/tests \
|
|
79
|
+
-v ${HOME}/e2e-testing:/test-temp:rw \
|
|
80
|
+
-h slurmctl --cap-add sys_admin \
|
|
81
|
+
--privileged \
|
|
82
|
+
pennlinc/slurm-docker-ci:unstable \
|
|
83
|
+
/tests/tests/e2e-slurm/container/walkthrough-tests.sh
|
|
84
|
+
|
|
85
|
+
- run:
|
|
86
|
+
name: clean up test artifacts
|
|
87
|
+
when: always
|
|
88
|
+
command: |
|
|
89
|
+
TEST_ARTIFACTS_DIR=${HOME}/e2e-testing/test_project/analysis
|
|
90
|
+
sudo chmod -R 777 $TEST_ARTIFACTS_DIR
|
|
91
|
+
# Find and remove all .git directories recursively
|
|
92
|
+
sudo find $TEST_ARTIFACTS_DIR -type d -name ".git" -exec rm -rf {} +
|
|
93
|
+
# Also remove any .git files
|
|
94
|
+
sudo find $TEST_ARTIFACTS_DIR -type f -name ".git" -exec rm -f {} +
|
|
95
|
+
# Remove any .gitignore files
|
|
96
|
+
sudo find $TEST_ARTIFACTS_DIR -type f -name ".gitignore" -exec rm -f {} +
|
|
97
|
+
# Remove any .gitattributes files
|
|
98
|
+
sudo find $TEST_ARTIFACTS_DIR -type f -name ".gitattributes" -exec rm -f {} +
|
|
99
|
+
sudo find $TEST_ARTIFACTS_DIR/inputs/data -type d -name "sub-*" -exec rm -rf {} +
|
|
100
|
+
|
|
101
|
+
- store_artifacts:
|
|
102
|
+
path: ${HOME}/e2e-testing/test_project/analysis
|
|
103
|
+
destination: test-artifacts
|
|
104
|
+
|
|
105
|
+
deployable: # checkpoint of deployable: requires all success
|
|
106
|
+
<<: *dockersetup
|
|
107
|
+
steps:
|
|
108
|
+
- run: echo Deploying!
|
|
109
|
+
|
|
110
|
+
deploy_pypi: # deploy to pypi
|
|
111
|
+
resource_class: small
|
|
112
|
+
docker:
|
|
113
|
+
- image: cimg/python:3.11.11
|
|
114
|
+
working_directory: /tmp/src/babs
|
|
115
|
+
steps:
|
|
116
|
+
- checkout
|
|
117
|
+
- run:
|
|
118
|
+
name: Update build tools
|
|
119
|
+
command: pip install --upgrade build twine
|
|
120
|
+
- run:
|
|
121
|
+
name: Build BABS
|
|
122
|
+
command: python -m build
|
|
123
|
+
- run:
|
|
124
|
+
name: Upload packages to PyPI
|
|
125
|
+
command: python -m twine upload -u __token__ -p ${PYPI_PASS} dist/babs*
|
|
126
|
+
|
|
127
|
+
workflows:
|
|
128
|
+
# version: 2
|
|
129
|
+
build_test_deploy:
|
|
130
|
+
jobs:
|
|
131
|
+
- download_test_data:
|
|
132
|
+
filters:
|
|
133
|
+
tags:
|
|
134
|
+
only: /.*/
|
|
135
|
+
- pytest:
|
|
136
|
+
requires:
|
|
137
|
+
- download_test_data
|
|
138
|
+
filters:
|
|
139
|
+
tags:
|
|
140
|
+
only: /.*/
|
|
141
|
+
- e2e-slurm:
|
|
142
|
+
requires:
|
|
143
|
+
- download_test_data
|
|
144
|
+
filters:
|
|
145
|
+
tags:
|
|
146
|
+
only: /.*/
|
|
147
|
+
- deployable:
|
|
148
|
+
requires:
|
|
149
|
+
- pytest
|
|
150
|
+
- e2e-slurm
|
|
151
|
+
filters:
|
|
152
|
+
branches:
|
|
153
|
+
only: main
|
|
154
|
+
tags:
|
|
155
|
+
only: /.*/
|
|
156
|
+
- deploy_pypi:
|
|
157
|
+
requires:
|
|
158
|
+
- deployable
|
|
159
|
+
filters:
|
|
160
|
+
branches:
|
|
161
|
+
ignore: /.*/
|
|
162
|
+
tags:
|
|
163
|
+
only: /.*/
|
babs-0.3.2/.codespellrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
babs/_version.py export-subst
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Something not working as described? Missing/incorrect documentation? This is the place.
|
|
4
|
+
title: ''
|
|
5
|
+
labels: 'bug'
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
## Summary
|
|
10
|
+
<!--What is the nature of the bug?-->
|
|
11
|
+
|
|
12
|
+
## Additional details
|
|
13
|
+
<!--Please fill in the following details-->
|
|
14
|
+
- BABS version (`pip show babs`):
|
|
15
|
+
- DataLad version (`datalad --version`):
|
|
16
|
+
- Git version (`git --version`):
|
|
17
|
+
- `git-annex` version (`git-annex version`; pasting the first printed line is sufficient):
|
|
18
|
+
- `datalad-container` version (`datalad containers-add --version`):
|
|
19
|
+
- Singularity version (`singularity --version`):
|
|
20
|
+
- Please copy and paste the printed messages from `babs check-setup`:
|
|
21
|
+
|
|
22
|
+
### What were you trying to do?
|
|
23
|
+
|
|
24
|
+
### What did you expect to happen?
|
|
25
|
+
|
|
26
|
+
### What actually happened?
|
|
27
|
+
|
|
28
|
+
## Reproducing the bug
|
|
29
|
+
<!--Please share any steps you performed that revealed the bug-->
|
|
30
|
+
<!--Please include any code snippets.
|
|
31
|
+
Enclose them in triple back-ticks (```)
|
|
32
|
+
Like this:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
<code>
|
|
36
|
+
```
|
|
37
|
+
-->
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Got an idea for a new feature, or changing an existing one? This is the place.
|
|
4
|
+
title: ''
|
|
5
|
+
labels: 'enhancement'
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
## Summary
|
|
10
|
+
<!--What would you like changed/added and why?-->
|
|
11
|
+
|
|
12
|
+
## Additional details
|
|
13
|
+
<!--What would be the benefit?-->
|
|
14
|
+
|
|
15
|
+
## Next steps
|
|
16
|
+
<!--Do you have any ideas about the implementation?-->
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
changelog:
|
|
2
|
+
exclude:
|
|
3
|
+
labels:
|
|
4
|
+
- ignore-for-release
|
|
5
|
+
categories:
|
|
6
|
+
- title: 🛠 Breaking Changes
|
|
7
|
+
labels:
|
|
8
|
+
- breaking-change
|
|
9
|
+
- title: 🎉 Exciting New Features
|
|
10
|
+
labels:
|
|
11
|
+
- enhancement
|
|
12
|
+
- title: 👎 Deprecations
|
|
13
|
+
labels:
|
|
14
|
+
- deprecation
|
|
15
|
+
- title: 🐛 Bug Fixes
|
|
16
|
+
labels:
|
|
17
|
+
- bug
|
|
18
|
+
- title: Other Changes
|
|
19
|
+
labels:
|
|
20
|
+
- "*"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Codespell
|
|
3
|
+
|
|
4
|
+
on: [push, pull_request]
|
|
5
|
+
# ref: https://docs.github.com/en/actions/using-workflows/triggering-a-workflow
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
codespell:
|
|
9
|
+
name: Check for spelling errors
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v2
|
|
14
|
+
- uses: codespell-project/actions-codespell@master
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Slurm
|
|
3
|
+
|
|
4
|
+
# Temporarily disabled
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches-ignore:
|
|
8
|
+
- '**' # This prevents the workflow from running on any branch
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
e2e-slurm:
|
|
12
|
+
name: Test e2e with SLURM
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- name: checkout our repo
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
- name: Install apptainer
|
|
18
|
+
uses: eWaterCycle/setup-apptainer@v2
|
|
19
|
+
with:
|
|
20
|
+
apptainer-version: 1.1.2
|
|
21
|
+
- name: Install Conda
|
|
22
|
+
uses: conda-incubator/setup-miniconda@v3
|
|
23
|
+
with:
|
|
24
|
+
activate-environment: babs
|
|
25
|
+
auto-update-conda: true
|
|
26
|
+
python-version: 3.9
|
|
27
|
+
- name: Conda info
|
|
28
|
+
shell: bash -el {0}
|
|
29
|
+
run: conda info
|
|
30
|
+
- name: Install Babs
|
|
31
|
+
shell: bash -el {0}
|
|
32
|
+
run: ./tests/e2e-slurm/install-babs.sh
|
|
33
|
+
- name: Execute e2e with SLURM
|
|
34
|
+
shell: bash -el {0}
|
|
35
|
+
run: ./tests/e2e-slurm/main.sh
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Ruff
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
ruff:
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
steps:
|
|
9
|
+
- uses: actions/checkout@v4
|
|
10
|
+
- name: Set up Python
|
|
11
|
+
uses: actions/setup-python@v5
|
|
12
|
+
with:
|
|
13
|
+
python-version: '3.10'
|
|
14
|
+
cache: 'pip'
|
|
15
|
+
- name: Install dependencies
|
|
16
|
+
run: |
|
|
17
|
+
python -m pip install --upgrade pip
|
|
18
|
+
pip install ruff
|
|
19
|
+
- name: Run Ruff
|
|
20
|
+
run: |
|
|
21
|
+
ruff check .
|
|
22
|
+
ruff format --check .
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Shellcheck scripts
|
|
2
|
+
|
|
3
|
+
on: [push, pull_request]
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
test:
|
|
7
|
+
runs-on: ubuntu-latest
|
|
8
|
+
|
|
9
|
+
steps:
|
|
10
|
+
- name: Set up system
|
|
11
|
+
shell: bash
|
|
12
|
+
run: |
|
|
13
|
+
sudo apt-get update -qq
|
|
14
|
+
sudo apt-get install shellcheck
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- name: Run shellcheck
|
|
17
|
+
run: |
|
|
18
|
+
git grep -l -E '^#!/bin/(ba|)sh' | grep -v jinja | xargs shellcheck -x
|
babs-0.3.2/CITATION.cff
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# This CITATION.cff file was generated with cffinit.
|
|
2
|
+
# Visit https://bit.ly/cffinit to generate yours today!
|
|
3
|
+
|
|
4
|
+
cff-version: 1.2.0
|
|
5
|
+
title: >-
|
|
6
|
+
BABS : BIDS App Bootstrap
|
|
7
|
+
message: >-
|
|
8
|
+
If you use this software, please cite it using the
|
|
9
|
+
metadata from this file, as well as the
|
|
10
|
+
Imaging Neuroscience (doi:10.1162/imag_a_00074) and
|
|
11
|
+
Biological Psychiatry (doi:10.1016/j.biopsych.2024.02.056) papers.
|
|
12
|
+
type: software
|
|
13
|
+
authors:
|
|
14
|
+
- given-names: Chenying
|
|
15
|
+
family-names: Zhao
|
|
16
|
+
orcid: "https://orcid.org/0000-0001-7878-6259"
|
|
17
|
+
- given-names: Dorota
|
|
18
|
+
family-names: Jarecka
|
|
19
|
+
- given-names: Sydney
|
|
20
|
+
family-names: Covitz
|
|
21
|
+
affiliation: Stanford University
|
|
22
|
+
orcid: "https://orcid.org/0000-0002-7430-4125"
|
|
23
|
+
- given-names: Yibei
|
|
24
|
+
family-names: Chen
|
|
25
|
+
- given-names: Simon B.
|
|
26
|
+
family-names: Eickhoff
|
|
27
|
+
- given-names: Damien
|
|
28
|
+
family-names: Fair
|
|
29
|
+
affiliation: University of Minnesota
|
|
30
|
+
orcid: "https://orcid.org/0000-0001-8602-393X"
|
|
31
|
+
- given-names: Alexandre R.
|
|
32
|
+
family-names: Franco
|
|
33
|
+
- given-names: Yaroslav O.
|
|
34
|
+
family-names: Halchenko
|
|
35
|
+
- given-names: Timothy J.
|
|
36
|
+
family-names: Hendrickson
|
|
37
|
+
- given-names: Felix
|
|
38
|
+
family-names: Hoffstaedter
|
|
39
|
+
- given-names: Audrey
|
|
40
|
+
family-names: Houghton
|
|
41
|
+
- given-names: Gregory
|
|
42
|
+
family-names: Kiar
|
|
43
|
+
- given-names: Austin
|
|
44
|
+
family-names: Macdonald
|
|
45
|
+
- given-names: Kahini
|
|
46
|
+
family-names: Mehta
|
|
47
|
+
email: kahini.mehta@pennmedicine.upenn.edu
|
|
48
|
+
affiliation: Columbia University
|
|
49
|
+
orcid: "https://orcid.org/0000-0001-9466-100X"
|
|
50
|
+
- given-names: Michael P.
|
|
51
|
+
family-names: Milham
|
|
52
|
+
- given-names: Taylor
|
|
53
|
+
family-names: Salo
|
|
54
|
+
email: salot@pennmedicine.upenn.edu
|
|
55
|
+
affiliation:Penn Lifespan Informatics and Neuroimaging Center, University of Pennsylvania, Philadelphia, PA, USA; Department of Psychiatry, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, USA
|
|
56
|
+
orcid: "https://orcid.org/0000-0001-9813-3167"
|
|
57
|
+
- given-names: Michael
|
|
58
|
+
family-names: Hanke
|
|
59
|
+
- given-names: Satrajit S.
|
|
60
|
+
family-names: Ghosh
|
|
61
|
+
- given-names: Brooke L.
|
|
62
|
+
family-names: Sevchik
|
|
63
|
+
affiliation: Penn Lifespan Informatics and Neuroimaging Center, University of Pennsylvania, Philadelphia, PA, USA; Department of Psychiatry, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, USA.
|
|
64
|
+
- given-names: S. Parker
|
|
65
|
+
family-names: Singleton
|
|
66
|
+
affiliation: Penn Lifespan Informatics and Neuroimaging Center, University of Pennsylvania, Philadelphia, PA, USA; Department of Psychiatry, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, USA
|
|
67
|
+
orcid: "https://orcid.org/0000-0002-7102-7820"
|
|
68
|
+
- given-names: Tien
|
|
69
|
+
family-names: Tong
|
|
70
|
+
affiliation: Penn Lifespan Informatics and Neuroimaging Center, University of Pennsylvania, Philadelphia, PA, USA; Department of Psychiatry, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, USA
|
|
71
|
+
orcid: 'https://orcid.org/0000-0002-1940-3198'
|
|
72
|
+
- given-names: Matthew
|
|
73
|
+
family-names: Cieslak
|
|
74
|
+
email: matthew.cieslak@pennmedicine.upenn.edu
|
|
75
|
+
affiliation: Penn Lifespan Informatics and Neuroimaging Center, University of Pennsylvania, Philadelphia, PA, USA; Department of Psychiatry, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, USA
|
|
76
|
+
orcid: "https://orcid.org/0000-0002-1931-4734"
|
|
77
|
+
- given-names: Steven
|
|
78
|
+
family-names: Meisler
|
|
79
|
+
orcid: "https://orcid.org/0000-0002-8888-1572"
|
|
80
|
+
affiliation: Penn Lifespan Informatics and Neuroimaging Center, University of Pennsylvania, Philadelphia, PA, USA; Department of Psychiatry, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, USA
|
|
81
|
+
- given-names: Theodore
|
|
82
|
+
family-names: Satterthwaite
|
|
83
|
+
affiliation: Penn Lifespan Informatics and Neuroimaging Center, University of Pennsylvania, Philadelphia, PA, USA; Department of Psychiatry, Perelman School of Medicine, University of Pennsylvania, Philadelphia, PA, USA
|
|
84
|
+
orcid: "https://orcid.org/0000-0001-7072-9399"
|
|
85
|
+
identifiers:
|
|
86
|
+
- type: doi
|
|
87
|
+
value: 10.5281/zenodo.8184642
|
|
88
|
+
description: The Zenodo DOI
|
|
89
|
+
repository-code: "https://github.com/PennLINC/babs"
|
|
90
|
+
url: "https://pennlinc-babs.readthedocs.io/"
|
|
91
|
+
abstract: >-
|
|
92
|
+
BIDS App Bootstrap (BABS) is a reproducible, generalizable, and scalable
|
|
93
|
+
Python package for BIDS App analysis of large datasets.
|
|
94
|
+
It uses DataLad and adopts the FAIRly big framework.
|
|
95
|
+
Currently, BABS supports jobs submissions and audits on SLURM
|
|
96
|
+
high performance computing (HPC) clusters.
|
|
97
|
+
keywords:
|
|
98
|
+
- BIDS-App
|
|
99
|
+
- Neuroimaging
|
|
100
|
+
license: MIT
|
|
101
|
+
version: 0.0.10
|
|
102
|
+
date-released: "2025-03-24"
|
babs-0.3.2/Dockerfile
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
FROM ubuntu:22.04
|
|
2
|
+
|
|
3
|
+
RUN apt-get update && \
|
|
4
|
+
apt-get install -y --no-install-recommends \
|
|
5
|
+
ca-certificates \
|
|
6
|
+
bzip2 \
|
|
7
|
+
curl \
|
|
8
|
+
&& apt-get clean \
|
|
9
|
+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Create a shared $HOME directory
|
|
13
|
+
RUN useradd -m -s /bin/bash -G users babs
|
|
14
|
+
WORKDIR /home/babs
|
|
15
|
+
ENV HOME="/home/babs"
|
|
16
|
+
|
|
17
|
+
WORKDIR /
|
|
18
|
+
RUN echo "2024.04.11"
|
|
19
|
+
RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
|
|
20
|
+
|
|
21
|
+
COPY docker/environment.yml /tmp/environment.yml
|
|
22
|
+
ENV MAMBA_ROOT_PREFIX="/opt/conda" \
|
|
23
|
+
MAMBA_NO_LOW_SPEED_LIMIT=1 \
|
|
24
|
+
PIP_DEFAULT_TIMEOUT=100
|
|
25
|
+
|
|
26
|
+
RUN micromamba config set extract_threads 1 \
|
|
27
|
+
&& micromamba create -vv -y -f /tmp/environment.yml \
|
|
28
|
+
&& micromamba clean -y -a
|
|
29
|
+
|
|
30
|
+
ENV PATH=/opt/conda/envs/babs/bin:$PATH
|
|
31
|
+
|
|
32
|
+
# Configure the git user name and email
|
|
33
|
+
RUN git config --global user.name "CircleCI" \
|
|
34
|
+
&& git config --global user.email "circleci@example.com"
|
|
35
|
+
|
|
36
|
+
# Create toy bids app
|
|
37
|
+
RUN mkdir -p /singularity_images \
|
|
38
|
+
&& apptainer build \
|
|
39
|
+
/singularity_images/toybidsapp_0.0.7.sif \
|
|
40
|
+
docker://pennlinc/toy_bids_app:0.0.7
|
|
41
|
+
|
|
42
|
+
# # install BABS
|
|
43
|
+
# COPY . $HOME/babs
|
|
44
|
+
# WORKDIR $HOME/babs
|
|
45
|
+
# RUN pip install .[tests]
|
|
46
|
+
|
|
47
|
+
# # pytest BABS
|
|
48
|
+
# RUN pytest ~/babs
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
FROM giovtorres/docker-centos7-slurm:latest
|
|
2
|
+
|
|
3
|
+
WORKDIR /
|
|
4
|
+
RUN echo "2024.04.11"
|
|
5
|
+
RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
|
|
6
|
+
|
|
7
|
+
COPY docker/environment.yml /tmp/environment.yml
|
|
8
|
+
ENV MAMBA_ROOT_PREFIX="/opt/conda" \
|
|
9
|
+
MAMBA_NO_LOW_SPEED_LIMIT=1 \
|
|
10
|
+
PIP_DEFAULT_TIMEOUT=100
|
|
11
|
+
|
|
12
|
+
RUN micromamba config set extract_threads 1 \
|
|
13
|
+
&& micromamba create -vv -y -f /tmp/environment.yml \
|
|
14
|
+
&& micromamba clean -y -a
|
|
15
|
+
|
|
16
|
+
ENV PATH=/opt/conda/envs/babs/bin:$PATH
|
|
17
|
+
|
|
18
|
+
# Configure the git user name and email
|
|
19
|
+
RUN git config --global user.name "CircleCI" \
|
|
20
|
+
&& git config --global user.email "circleci@example.com"
|
|
21
|
+
|
|
22
|
+
# Create toy bids app
|
|
23
|
+
RUN mkdir -p /singularity_images \
|
|
24
|
+
&& /opt/conda/envs/babs/bin/apptainer build \
|
|
25
|
+
/singularity_images/toybidsapp_0.0.7.sif \
|
|
26
|
+
docker://pennlinc/toy_bids_app:0.0.7
|
|
27
|
+
|
|
28
|
+
# # install BABS
|
|
29
|
+
# COPY . /babs
|
|
30
|
+
# WORKDIR /babs
|
|
31
|
+
# RUN pip install .[tests]
|
babs-0.3.2/MANIFEST.in
ADDED
babs-0.3.2/Makefile
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
install:
|
|
2
|
+
./tests/e2e-slurm/install-babs.sh
|
|
3
|
+
|
|
4
|
+
setup-user:
|
|
5
|
+
./tests/e2e-slurm/setup-user.sh
|
|
6
|
+
|
|
7
|
+
e2e: clean
|
|
8
|
+
./tests/e2e-slurm/main.sh
|
|
9
|
+
|
|
10
|
+
clean:
|
|
11
|
+
@ podman stop slurm 2>/dev/null || true
|
|
12
|
+
@ podman rm slurm 2>/dev/null || true
|
|
13
|
+
@[ -e .testdata/babs_test_project/toybidsapp-container ] && \
|
|
14
|
+
datalad remove -d .testdata/babs_test_project/toybidsapp-container --reckless kill || :
|
|
15
|
+
rm -rf .testdata
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: babs
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: BABS: BIDS App BootStrap
|
|
5
5
|
Project-URL: Homepage, https://github.com/pennlinc/babs
|
|
6
6
|
Project-URL: Documentation, https://pennlinc-babs.readthedocs.io/en/stable/
|
|
@@ -34,10 +34,10 @@ Requires-Dist: datalad-container>=1.1.6
|
|
|
34
34
|
Requires-Dist: datalad>=0.17.2
|
|
35
35
|
Requires-Dist: filelock>=3.8.0
|
|
36
36
|
Requires-Dist: nibabel>=2.2.1
|
|
37
|
+
Requires-Dist: niworkflows
|
|
37
38
|
Requires-Dist: numpy
|
|
38
39
|
Requires-Dist: pandas
|
|
39
40
|
Requires-Dist: pyyaml>=6.0
|
|
40
|
-
Requires-Dist: qstat>=0.0.5
|
|
41
41
|
Requires-Dist: regex
|
|
42
42
|
Requires-Dist: tqdm
|
|
43
43
|
Provides-Extra: all
|
babs-0.3.2/README.rst
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
|
|
2
|
+
BABS: BIDS App Bootstrap
|
|
3
|
+
========================
|
|
4
|
+
|
|
5
|
+
.. image:: https://readthedocs.org/projects/pennlinc-babs/badge/?version=latest
|
|
6
|
+
:target: http://pennlinc-babs.readthedocs.io/en/latest/?badge=latest
|
|
7
|
+
:alt: Documentation Status
|
|
8
|
+
.. image:: https://circleci.com/gh/PennLINC/babs/tree/main.svg?style=svg
|
|
9
|
+
:target: https://circleci.com/gh/PennLINC/babs/tree/main
|
|
10
|
+
.. image:: https://zenodo.org/badge/456981533.svg
|
|
11
|
+
:target: https://zenodo.org/badge/latestdoi/456981533
|
|
12
|
+
:alt: DOI
|
|
13
|
+
|
|
14
|
+
Full documentation at https://pennlinc-babs.readthedocs.io
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
About
|
|
18
|
+
-----
|
|
19
|
+
|
|
20
|
+
BIDS App Bootstrap (BABS) is a reproducible, generalizable, and
|
|
21
|
+
scalable Python package for BIDS App analysis of large datasets.
|
|
22
|
+
It uses `DataLad <https://www.datalad.org/>`_ and adopts
|
|
23
|
+
the `FAIRly big framework <https://doi.org/10.1038/s41597-022-01163-2>`_.
|
|
24
|
+
Currently, BABS supports job submissions and audits on SLURM
|
|
25
|
+
high performance computing (HPC) clusters.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
Citing BABS
|
|
29
|
+
-----------
|
|
30
|
+
|
|
31
|
+
If you use BABS, please cite it using the metadata from the `CITATION.cff <CITATION.cff>`_ file,
|
|
32
|
+
as well as the following papers:
|
|
33
|
+
|
|
34
|
+
Zhao, C., Jarecka, D., Covitz, S., Chen, Y., Eickhoff, S. B., Fair, D. A., ... & Satterthwaite, T. D. (2024).
|
|
35
|
+
A reproducible and generalizable software workflow for analysis of large-scale neuroimaging data collections
|
|
36
|
+
using BIDS Apps. *Imaging Neuroscience*, 2, 1-19. doi:10.1162/imag_a_00074.
|
|
37
|
+
|
|
38
|
+
Zhao, C., Chen, Y., Jarecka, D., Ghosh, S., Cieslak, M., & Satterthwaite, T. D. (2024).
|
|
39
|
+
BABS in Action: Merging Reproducibility and Scalability for Large-Scale Neuroimaging Analysis With BIDS Apps.
|
|
40
|
+
*Biological Psychiatry*, 95(10), S21-S22. doi:10.1016/j.biopsych.2024.02.056.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
BABS programs
|
|
44
|
+
-------------
|
|
45
|
+
|
|
46
|
+
.. image:: https://github.com/PennLINC/babs/raw/main/docs/_static/babs_cli.png
|
|
47
|
+
.. Note: this image is taken from the main branch, so it's normal that docs built from branches is not up-to-date.
|
|
48
|
+
.. If using relative path, e.g., `_static/babs_cli.png`, although readthedocs front page would look good, GitHub front page cannot find that image!!!
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
Schematic of BABS workflow
|
|
52
|
+
--------------------------
|
|
53
|
+
|
|
54
|
+
.. image:: https://github.com/PennLINC/babs/raw/main/docs/_static/babs_workflow.png
|
|
55
|
+
.. Note: this image is taken from the main branch, so it's normal that docs built from branches is not up-to-date.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Background and Significance
|
|
59
|
+
---------------------------
|
|
60
|
+
|
|
61
|
+
Neuroimaging research faces a crisis of reproducibility.
|
|
62
|
+
With massive sample sizes and greater data complexity, this problem becomes more acute.
|
|
63
|
+
The BIDS Apps - the software operating on BIDS data - have provided a substantial advance.
|
|
64
|
+
However, even using BIDS Apps, a full audit trail of data processing is a necessary prerequisite for fully reproducible research.
|
|
65
|
+
Obtaining a faithful record of the audit trail is challenging - especially for large datasets.
|
|
66
|
+
Recently, the `FAIRly big framework <https://doi.org/10.1038/s41597-022-01163-2>`_
|
|
67
|
+
was introduced as a way to facilitate reproducible processing of large-scale data
|
|
68
|
+
by leveraging `DataLad <https://www.datalad.org/>`_ - a version control system for data management.
|
|
69
|
+
However, the current implementation of this framework remains challenging to general users.
|
|
70
|
+
|
|
71
|
+
BABS was developed to address these challenges
|
|
72
|
+
and to facilitate the reproducible application of BIDS Apps to large-scale datasets.
|