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.
Files changed (111) hide show
  1. babs-0.3.2/.circleci/config.yml +163 -0
  2. babs-0.3.2/.codespellrc +2 -0
  3. babs-0.3.2/.gitattributes +1 -0
  4. babs-0.3.2/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  5. babs-0.3.2/.github/ISSUE_TEMPLATE/feature_request.md +16 -0
  6. babs-0.3.2/.github/release.yml +20 -0
  7. babs-0.3.2/.github/workflows/codespell.yml +14 -0
  8. babs-0.3.2/.github/workflows/e2e-slurm.yml +35 -0
  9. babs-0.3.2/.github/workflows/ruff.yml +22 -0
  10. babs-0.3.2/.github/workflows/shellcheck.yml +18 -0
  11. babs-0.3.2/.readthedocs.yaml +17 -0
  12. babs-0.3.2/CITATION.cff +102 -0
  13. babs-0.3.2/Dockerfile +48 -0
  14. babs-0.3.2/DockerfileSLURM +31 -0
  15. babs-0.3.2/Dockerfile_testing +6 -0
  16. babs-0.3.2/MANIFEST.in +11 -0
  17. babs-0.3.2/Makefile +15 -0
  18. {babs-0.3.0 → babs-0.3.2}/PKG-INFO +2 -2
  19. babs-0.3.2/README.rst +72 -0
  20. babs-0.3.2/babs/__init__.py +6 -0
  21. {babs-0.3.0 → babs-0.3.2}/babs/_version.py +2 -2
  22. babs-0.3.2/babs/babs.py +1913 -0
  23. babs-0.3.2/babs/bids_skeletons/multi_ses_qsiprep.yaml +83 -0
  24. babs-0.3.2/babs/bids_skeletons/no_ses_qsiprep.yaml +41 -0
  25. babs-0.3.2/babs/cli.py +1286 -0
  26. babs-0.3.2/babs/constants.py +8 -0
  27. babs-0.3.2/babs/container.py +302 -0
  28. babs-0.3.2/babs/dict_cluster_systems.yaml +16 -0
  29. babs-0.3.2/babs/generate_bidsapp_runscript.py +327 -0
  30. babs-0.3.2/babs/generate_submit_script.py +173 -0
  31. babs-0.3.2/babs/input_datasets.py +599 -0
  32. babs-0.3.2/babs/system.py +74 -0
  33. babs-0.3.2/babs/template_test_job.py +86 -0
  34. {babs-0.3.0 → babs-0.3.2}/babs/templates/babs_proj_config.yaml.jinja2 +1 -1
  35. {babs-0.3.0 → babs-0.3.2}/babs/templates/determine_zipfilename.sh.jinja2 +1 -1
  36. {babs-0.3.0 → babs-0.3.2}/babs/templates/participant_job.sh.jinja2 +9 -9
  37. {babs-0.3.0 → babs-0.3.2}/babs/templates/unzip_inputds.sh.jinja2 +1 -1
  38. babs-0.3.2/babs/utils.py +1339 -0
  39. babs-0.3.2/docker/docker-entrypoint.sh +3 -0
  40. babs-0.3.2/docker/environment.yml +31 -0
  41. babs-0.3.2/docs/Makefile +192 -0
  42. babs-0.3.2/docs/_static/babs_cli.png +0 -0
  43. babs-0.3.2/docs/_static/babs_workflow.png +0 -0
  44. babs-0.3.2/docs/_static/datalad_logo.png +0 -0
  45. babs-0.3.2/docs/_templates/autosummary/module.rst +23 -0
  46. babs-0.3.2/docs/after_jobs.rst +47 -0
  47. babs-0.3.2/docs/babs-check-setup.rst +89 -0
  48. babs-0.3.2/docs/babs-init.rst +184 -0
  49. babs-0.3.2/docs/babs-merge.rst +83 -0
  50. babs-0.3.2/docs/babs-status.rst +101 -0
  51. babs-0.3.2/docs/babs-submit.rst +82 -0
  52. babs-0.3.2/docs/babs-sync-code.rst +45 -0
  53. babs-0.3.2/docs/cli.rst +37 -0
  54. babs-0.3.2/docs/conf.py +146 -0
  55. babs-0.3.2/docs/create_babs_project.rst +51 -0
  56. babs-0.3.2/docs/developer.rst +28 -0
  57. babs-0.3.2/docs/developer_babs_status.rst +180 -0
  58. babs-0.3.2/docs/developer_config_yaml_file.rst +16 -0
  59. babs-0.3.2/docs/developer_how_to_test.rst +130 -0
  60. babs-0.3.2/docs/index.rst +31 -0
  61. babs-0.3.2/docs/installation.rst +120 -0
  62. babs-0.3.2/docs/jobs.rst +304 -0
  63. babs-0.3.2/docs/links.rst +2 -0
  64. babs-0.3.2/docs/overview.rst +54 -0
  65. babs-0.3.2/docs/preparation.rst +16 -0
  66. babs-0.3.2/docs/preparation_config_yaml_file.rst +865 -0
  67. babs-0.3.2/docs/preparation_container.rst +83 -0
  68. babs-0.3.2/docs/preparation_input_dataset.rst +160 -0
  69. babs-0.3.2/docs/walkthrough.rst +909 -0
  70. babs-0.3.2/docs/walkthrough_babs-check-setup_printed_messages.txt +62 -0
  71. babs-0.3.2/docs/walkthrough_babs-init_printed_messages.txt +154 -0
  72. babs-0.3.2/docs/walkthrough_babs-merge_printed_messages.txt +71 -0
  73. babs-0.3.2/docs/whats_new.md +136 -0
  74. babs-0.3.2/environment_hpc.yml +31 -0
  75. babs-0.3.2/notebooks/README.md +36 -0
  76. babs-0.3.2/notebooks/eg_aslprep-0-7-5.yaml +78 -0
  77. babs-0.3.2/notebooks/eg_fmriprep-24-1-1_anatonly.yaml +78 -0
  78. babs-0.3.2/notebooks/eg_fmriprep-24-1-1_ingressed-fs.yaml +83 -0
  79. babs-0.3.2/notebooks/eg_fmriprep-24-1-1_regular.yaml +75 -0
  80. babs-0.3.2/notebooks/eg_mriqc-24-0-2.yaml +57 -0
  81. babs-0.3.2/notebooks/eg_qsiprep-1-0-0_regular.yaml +68 -0
  82. babs-0.3.2/notebooks/eg_qsirecon-1-0-1_custom_spec.yaml +66 -0
  83. babs-0.3.2/notebooks/eg_qsirecon-1-0-1_hsvs.yaml +58 -0
  84. babs-0.3.2/notebooks/eg_toybidsapp-0-0-7_rawBIDS-walkthrough.yaml +30 -0
  85. babs-0.3.2/notebooks/eg_toybidsapp-0-0-7_zipped.yaml +47 -0
  86. babs-0.3.2/notebooks/eg_xcpd-0-10-6_linc.yaml +75 -0
  87. babs-0.3.2/notebooks/initial_sub_list_multi-ses.csv +7 -0
  88. babs-0.3.2/notebooks/initial_sub_list_single-ses.csv +3 -0
  89. {babs-0.3.0 → babs-0.3.2}/pyproject.toml +1 -3
  90. babs-0.3.2/tests/download_datasets.py +30 -0
  91. babs-0.3.2/tests/e2e-slurm/container/config_toybidsapp.yaml +1 -0
  92. babs-0.3.2/tests/e2e-slurm/container/sleep_array.sh +20 -0
  93. babs-0.3.2/tests/e2e-slurm/container/walkthrough-tests.sh +114 -0
  94. babs-0.3.2/tests/get_data.py +290 -0
  95. babs-0.3.2/tests/origin_input_dataset.yaml +9 -0
  96. babs-0.3.2/tests/pytest_in_docker.sh +7 -0
  97. babs-0.3.2/tests/test_babs_check_setup.py +143 -0
  98. babs-0.3.2/tests/test_babs_init.py +315 -0
  99. babs-0.3.2/tests/test_generate_bidsapp_runscript.py +163 -0
  100. babs-0.3.2/tests/test_generate_submit_script.py +141 -0
  101. babs-0.3.2/tests/test_input_datasets.py +290 -0
  102. babs-0.3.2/tests/test_system.py +39 -0
  103. babs-0.3.2/tox.ini +102 -0
  104. {babs-0.3.0 → babs-0.3.2}/.gitignore +0 -0
  105. {babs-0.3.0 → babs-0.3.2}/LICENSE +0 -0
  106. {babs-0.3.0 → babs-0.3.2}/babs/templates/bidsapp_run.sh.jinja2 +0 -0
  107. {babs-0.3.0 → babs-0.3.2}/babs/templates/datalad_run.sh.jinja2 +0 -0
  108. {babs-0.3.0 → babs-0.3.2}/babs/templates/filter_file.sh.jinja2 +0 -0
  109. {babs-0.3.0 → babs-0.3.2}/babs/templates/job_submit.yaml.jinja2 +0 -0
  110. {babs-0.3.0 → babs-0.3.2}/babs/templates/test_job.sh.jinja2 +0 -0
  111. {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: /.*/
@@ -0,0 +1,2 @@
1
+ [codespell]
2
+ skip = versioneer.py,_version.py,.git,*html
@@ -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
@@ -0,0 +1,17 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.10"
7
+
8
+ sphinx:
9
+ configuration: docs/conf.py
10
+ fail_on_warning: true
11
+
12
+ python:
13
+ install:
14
+ - method: pip
15
+ path: .
16
+ extra_requirements:
17
+ - doc
@@ -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]
@@ -0,0 +1,6 @@
1
+ FROM pennlinc/slurm-docker-ci:0.11
2
+
3
+ # # install BABS
4
+ COPY . /babs
5
+ WORKDIR /babs
6
+ RUN pip install .[tests]
babs-0.3.2/MANIFEST.in ADDED
@@ -0,0 +1,11 @@
1
+ #Misc
2
+ # include CHANGES.rst
3
+ include LICENSE
4
+
5
+ # necessary files in babs/:
6
+ # by default it only includes *.py
7
+ recursive-include babs *.yaml
8
+ recursive-include babs/templates *.jinja2
9
+
10
+ # versioneer
11
+ include babs/_version.py
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.0
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.
@@ -0,0 +1,6 @@
1
+ """Top-level package for BABS."""
2
+
3
+ try:
4
+ from ._version import __version__
5
+ except ImportError:
6
+ __version__ = '0+unknown'