junifer 0.0.4.dev493__tar.gz → 0.0.4.dev530__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 (390) hide show
  1. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/PKG-INFO +1 -1
  2. junifer-0.0.4.dev530/docs/changes/newsfragments/293.enh +1 -0
  3. junifer-0.0.4.dev530/docs/changes/newsfragments/293.feature +1 -0
  4. junifer-0.0.4.dev530/docs/changes/newsfragments/293.misc +1 -0
  5. junifer-0.0.4.dev530/docs/changes/newsfragments/295.feature +1 -0
  6. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/ignore_words.txt +2 -1
  7. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/_version.py +2 -2
  8. junifer-0.0.4.dev530/junifer/api/res/ants/ResampleImage +3 -0
  9. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/coordinates.py +83 -44
  10. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/masks.py +46 -37
  11. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/parcellations.py +46 -40
  12. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/falff_estimator.py +33 -72
  13. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/reho_estimator.py +7 -54
  14. junifer-0.0.4.dev530/junifer/preprocess/ants/__init__.py +4 -0
  15. junifer-0.0.4.dev530/junifer/preprocess/ants/ants_apply_transforms_warper.py +224 -0
  16. junifer-0.0.4.dev530/junifer/preprocess/ants/tests/test_ants_apply_transforms_warper.py +124 -0
  17. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/bold_warper.py +40 -9
  18. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/fsl/apply_warper.py +5 -56
  19. junifer-0.0.4.dev530/junifer/preprocess/fsl/tests/test_apply_warper.py +104 -0
  20. junifer-0.0.4.dev530/junifer/preprocess/tests/test_bold_warper.py +108 -0
  21. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/utils/__init__.py +1 -0
  22. junifer-0.0.4.dev530/junifer/utils/helpers.py +53 -0
  23. junifer-0.0.4.dev530/junifer/utils/tests/test_helpers.py +35 -0
  24. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer.egg-info/PKG-INFO +1 -1
  25. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer.egg-info/SOURCES.txt +10 -0
  26. junifer-0.0.4.dev493/junifer/preprocess/fsl/tests/test_apply_warper.py +0 -73
  27. junifer-0.0.4.dev493/junifer/preprocess/tests/test_bold_warper.py +0 -58
  28. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  29. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  30. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  31. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  32. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  33. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  34. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/pull_request_template.md +0 -0
  35. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/workflows/ci-docs.yml +0 -0
  36. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/workflows/ci.yml +0 -0
  37. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/workflows/docs-preview.yml +0 -0
  38. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/workflows/docs.yml +0 -0
  39. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/workflows/lint.yml +0 -0
  40. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.github/workflows/pypi.yml +0 -0
  41. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.gitignore +0 -0
  42. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.gitmodules +0 -0
  43. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/.pre-commit-config.yaml +0 -0
  44. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/AUTHORS.rst +0 -0
  45. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/LICENSE.md +0 -0
  46. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/README.md +0 -0
  47. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/codecov.yml +0 -0
  48. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/conda-env.yml +0 -0
  49. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/Makefile +0 -0
  50. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/_static/css/custom.css +0 -0
  51. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/_static/js/custom.js +0 -0
  52. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/_templates/versions.html +0 -0
  53. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/api.rst +0 -0
  54. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/configs.rst +0 -0
  55. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/data.rst +0 -0
  56. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/datagrabbers.rst +0 -0
  57. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/datareaders.rst +0 -0
  58. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/index.rst +0 -0
  59. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/markers.rst +0 -0
  60. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/nilearn.rst +0 -0
  61. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/onthefly.rst +0 -0
  62. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/pipeline.rst +0 -0
  63. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/preprocessing.rst +0 -0
  64. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/stats.rst +0 -0
  65. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/storage.rst +0 -0
  66. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/testing.rst +0 -0
  67. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/api/utils.rst +0 -0
  68. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/builtin.rst +0 -0
  69. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/contributors.inc +0 -0
  70. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/.gitignore +0 -0
  71. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/145.feature +0 -0
  72. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/182.enh +0 -0
  73. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/224.bugfix +0 -0
  74. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/233.bugfix +0 -0
  75. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/245.change +0 -0
  76. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/245.feature +0 -0
  77. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/247.doc +0 -0
  78. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/248.change +0 -0
  79. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/251.doc +0 -0
  80. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/252.change +0 -0
  81. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/252.feature +0 -0
  82. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/253.misc +0 -0
  83. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/254.feature +0 -0
  84. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/258.enh +0 -0
  85. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/259.enh +0 -0
  86. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/260.enh +0 -0
  87. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/261.misc +0 -0
  88. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/262.misc +0 -0
  89. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/263.change +0 -0
  90. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/264.feature +0 -0
  91. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/265.feature +0 -0
  92. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/266.feature +0 -0
  93. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/267.feature +0 -0
  94. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/268.change +0 -0
  95. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/268.enh +0 -0
  96. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/269.misc +0 -0
  97. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/271.feature +0 -0
  98. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/272.bugfix +0 -0
  99. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/274.bugfix +0 -0
  100. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/276.bugfix +0 -0
  101. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/277.misc +0 -0
  102. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/278.bugfix +0 -0
  103. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/279.misc +0 -0
  104. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/280.bugfix +0 -0
  105. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/281.bugfix +0 -0
  106. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/281.misc +0 -0
  107. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/282.bugfix +0 -0
  108. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/283.bugfix +0 -0
  109. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/284.bugfix +0 -0
  110. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/286.bugfix +0 -0
  111. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/287.enh +0 -0
  112. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/288.misc +0 -0
  113. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/291.doc +0 -0
  114. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/changes/newsfragments/294.misc +0 -0
  115. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/conf.py +0 -0
  116. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/contribution.rst +0 -0
  117. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/extending/coordinates.rst +0 -0
  118. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/extending/datagrabber.rst +0 -0
  119. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/extending/extension.rst +0 -0
  120. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/extending/index.rst +0 -0
  121. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/extending/marker.rst +0 -0
  122. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/extending/masks.rst +0 -0
  123. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/extending/parcellations.rst +0 -0
  124. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/faq.rst +0 -0
  125. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/help.rst +0 -0
  126. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/images/junifer_logo.png +0 -0
  127. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/index.rst +0 -0
  128. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/installation.rst +0 -0
  129. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/links.inc +0 -0
  130. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/maintaining.rst +0 -0
  131. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/redirect.html +0 -0
  132. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/sphinxext/gh_substitutions.py +0 -0
  133. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/starting.rst +0 -0
  134. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/data.rst +0 -0
  135. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/datagrabber.rst +0 -0
  136. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/datareader.rst +0 -0
  137. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/index.rst +0 -0
  138. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/marker.rst +0 -0
  139. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/pipeline.rst +0 -0
  140. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/preprocess.rst +0 -0
  141. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/understanding/storage.rst +0 -0
  142. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/using/codeless.rst +0 -0
  143. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/using/index.rst +0 -0
  144. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/using/masks.rst +0 -0
  145. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/using/queueing.rst +0 -0
  146. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/using/running.rst +0 -0
  147. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/docs/whats_new.rst +0 -0
  148. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/README.rst +0 -0
  149. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/norun_hcpfc_pearson.py +0 -0
  150. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/norun_ukbvm_gmd.py +0 -0
  151. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/run_compute_parcel_mean.py +0 -0
  152. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/run_datagrabber_bids_datalad.py +0 -0
  153. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/run_ets_rss_marker.py +0 -0
  154. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/run_junifer_julearn.py +0 -0
  155. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/run_run_gmd_mean.py +0 -0
  156. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/yamls/gmd_mean.yaml +0 -0
  157. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  158. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  159. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/__init__.py +0 -0
  160. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/__init__.py +0 -0
  161. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/cli.py +0 -0
  162. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/decorators.py +0 -0
  163. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/functions.py +0 -0
  164. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/parser.py +0 -0
  165. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  166. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/afni/3dRSFC +0 -0
  167. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/afni/3dReHo +0 -0
  168. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/afni/afni +0 -0
  169. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  170. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/ants/antsApplyTransforms +0 -0
  171. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  172. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  173. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/fsl/applywarp +0 -0
  174. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/fsl/flirt +0 -0
  175. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/fsl/img2imgcoord +0 -0
  176. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  177. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/fsl/std2imgcoord +0 -0
  178. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/res/run_conda.sh +0 -0
  179. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/tests/data/gmd_mean.yaml +0 -0
  180. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/tests/data/gmd_mean_htcondor.yaml +0 -0
  181. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/tests/test_api_utils.py +0 -0
  182. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/tests/test_cli.py +0 -0
  183. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/tests/test_functions.py +0 -0
  184. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/tests/test_parser.py +0 -0
  185. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/api/utils.py +0 -0
  186. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/__init__.py +0 -0
  187. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/__init__.py +0 -0
  188. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  189. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  190. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  191. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  192. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  193. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  194. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  195. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  196. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  197. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  198. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  199. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
  200. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
  201. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
  202. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  203. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
  204. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
  205. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
  206. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
  207. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
  208. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
  209. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
  210. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
  211. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
  212. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
  213. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
  214. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
  215. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
  216. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
  217. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/__init__.py +0 -0
  218. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
  219. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
  220. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
  221. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/tests/test_coordinates.py +0 -0
  222. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/tests/test_data_utils.py +0 -0
  223. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/tests/test_masks.py +0 -0
  224. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/tests/test_parcellations.py +0 -0
  225. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/data/utils.py +0 -0
  226. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/__init__.py +0 -0
  227. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/aomic/__init__.py +0 -0
  228. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/aomic/id1000.py +0 -0
  229. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/aomic/piop1.py +0 -0
  230. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/aomic/piop2.py +0 -0
  231. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  232. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  233. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  234. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/base.py +0 -0
  235. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/datalad_base.py +0 -0
  236. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  237. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  238. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  239. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  240. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  241. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/multiple.py +0 -0
  242. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/pattern.py +0 -0
  243. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/pattern_datalad.py +0 -0
  244. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/tests/test_base.py +0 -0
  245. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/tests/test_datagrabber_utils.py +0 -0
  246. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  247. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  248. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/tests/test_multiple.py +0 -0
  249. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/tests/test_pattern.py +0 -0
  250. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  251. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datagrabber/utils.py +0 -0
  252. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datareader/__init__.py +0 -0
  253. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datareader/default.py +0 -0
  254. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/datareader/tests/test_default_reader.py +0 -0
  255. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/__init__.py +0 -0
  256. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/h5io/h5io/__init__.py +0 -0
  257. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/h5io/h5io/_h5io.py +0 -0
  258. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/h5io/h5io/_version.py +0 -0
  259. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  260. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  261. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/nilearn/__init__.py +0 -0
  262. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  263. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  264. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/__init__.py +0 -0
  265. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/base.py +0 -0
  266. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/collection.py +0 -0
  267. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/__init__.py +0 -0
  268. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/complexity_base.py +0 -0
  269. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/hurst_exponent.py +0 -0
  270. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  271. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/perm_entropy.py +0 -0
  272. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/range_entropy.py +0 -0
  273. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  274. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/sample_entropy.py +0 -0
  275. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  276. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  277. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  278. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  279. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  280. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  281. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  282. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  283. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  284. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/ets_rss.py +0 -0
  285. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/__init__.py +0 -0
  286. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/falff_base.py +0 -0
  287. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/falff_parcels.py +0 -0
  288. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/falff_spheres.py +0 -0
  289. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/tests/test_falff_estimator.py +0 -0
  290. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  291. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  292. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/__init__.py +0 -0
  293. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  294. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  295. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  296. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  297. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  298. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  299. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  300. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  301. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  302. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  303. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  304. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  305. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/parcel_aggregation.py +0 -0
  306. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/__init__.py +0 -0
  307. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/reho_base.py +0 -0
  308. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/reho_parcels.py +0 -0
  309. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/reho_spheres.py +0 -0
  310. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/tests/test_reho_estimator.py +0 -0
  311. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  312. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  313. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/sphere_aggregation.py +0 -0
  314. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/temporal_snr/__init__.py +0 -0
  315. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  316. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  317. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  318. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  319. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  320. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  321. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/tests/test_collection.py +0 -0
  322. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/tests/test_ets_rss.py +0 -0
  323. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/tests/test_marker_utils.py +0 -0
  324. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/tests/test_markers_base.py +0 -0
  325. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  326. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  327. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/markers/utils.py +0 -0
  328. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/onthefly/__init__.py +0 -0
  329. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/onthefly/read_transform.py +0 -0
  330. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/onthefly/tests/test_read_transform.py +0 -0
  331. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/__init__.py +0 -0
  332. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  333. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/registry.py +0 -0
  334. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/singleton.py +0 -0
  335. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  336. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/tests/test_registry.py +0 -0
  337. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  338. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  339. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/update_meta_mixin.py +0 -0
  340. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/utils.py +0 -0
  341. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/pipeline/workdir_manager.py +0 -0
  342. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/__init__.py +0 -0
  343. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/base.py +0 -0
  344. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/confounds/__init__.py +0 -0
  345. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  346. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  347. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/fsl/__init__.py +0 -0
  348. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  349. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/stats.py +0 -0
  350. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/__init__.py +0 -0
  351. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/base.py +0 -0
  352. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/hdf5.py +0 -0
  353. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/pandas_base.py +0 -0
  354. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/sqlite.py +0 -0
  355. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/tests/test_hdf5.py +0 -0
  356. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/tests/test_pandas_base.py +0 -0
  357. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/tests/test_sqlite.py +0 -0
  358. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/tests/test_storage_base.py +0 -0
  359. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/tests/test_utils.py +0 -0
  360. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/storage/utils.py +0 -0
  361. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/__init__.py +0 -0
  362. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  363. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/datagrabbers.py +0 -0
  364. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/registry.py +0 -0
  365. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  366. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  367. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  368. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/tests/test_testing_registry.py +0 -0
  369. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/testing/utils.py +0 -0
  370. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/tests/test_main.py +0 -0
  371. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/tests/test_stats.py +0 -0
  372. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/utils/fs.py +0 -0
  373. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/utils/logging.py +0 -0
  374. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/utils/tests/test_fs.py +0 -0
  375. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer/utils/tests/test_logging.py +0 -0
  376. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer.egg-info/dependency_links.txt +0 -0
  377. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer.egg-info/entry_points.txt +0 -0
  378. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer.egg-info/requires.txt +0 -0
  379. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/junifer.egg-info/top_level.txt +0 -0
  380. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/pyproject.toml +0 -0
  381. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/setup.cfg +0 -0
  382. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/setup.py +0 -0
  383. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tools/create_aomic1000_example_dataset.py +0 -0
  384. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tools/create_aomicpiop1_example_dataset.py +0 -0
  385. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tools/create_aomicpiop2_example_dataset.py +0 -0
  386. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tools/create_bids_example_dataset.py +0 -0
  387. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tools/create_bids_example_dataset_sessions.py +0 -0
  388. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  389. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tools/create_hcp1200_example_dataset.py +0 -0
  390. {junifer-0.0.4.dev493 → junifer-0.0.4.dev530}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.4.dev493
3
+ Version: 0.0.4.dev530
4
4
  Summary: JUelich NeuroImaging FEature extractoR
5
5
  Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
6
6
  Maintainer-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
@@ -0,0 +1 @@
1
+ Adapt :class:`.BOLDWarper` to use FSL or ANTs depending on warp file extension by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Introduce ``junifer.preprocess.ants.ants_apply_transforms_warper._AntsApplyTransformsWarper`` to wrap ANTs' ``antsApplyTransforms`` by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Add support for accessing ANTs' ``ResampleImage`` via Docker wrapper by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Introduce :func:`.run_ext_cmd` to take care of the boilerplate code for running external commands from FSL, ANTs and others by `Synchon Mandal`_
@@ -2,4 +2,5 @@ master
2
2
  nin
3
3
  chang
4
4
  sepulcre
5
- arange
5
+ arange
6
+ sinc
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.0.4.dev493'
16
- __version_tuple__ = version_tuple = (0, 0, 4, 'dev493')
15
+ __version__ = version = '0.0.4.dev530'
16
+ __version_tuple__ = version_tuple = (0, 0, 4, 'dev530')
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ run_ants_docker.sh ResampleImage "$@"
@@ -4,7 +4,6 @@
4
4
  # Synchon Mandal <s.mandal@fz-juelich.de>
5
5
  # License: AGPL
6
6
 
7
- import subprocess
8
7
  import typing
9
8
  from pathlib import Path
10
9
  from typing import Any, Dict, List, Optional, Tuple, Union
@@ -14,7 +13,7 @@ import pandas as pd
14
13
  from numpy.typing import ArrayLike
15
14
 
16
15
  from ..pipeline import WorkDirManager
17
- from ..utils.logging import logger, raise_error, warn_with_log
16
+ from ..utils import logger, raise_error, run_ext_cmd, warn_with_log
18
17
 
19
18
 
20
19
  # Path to the VOIs
@@ -231,6 +230,8 @@ def get_coordinates(
231
230
 
232
231
  Raises
233
232
  ------
233
+ RuntimeError
234
+ If warp / transformation file extension is not ".mat" or ".h5".
234
235
  ValueError
235
236
  If ``extra_input`` is None when ``target_data``'s space is native.
236
237
 
@@ -251,12 +252,6 @@ def get_coordinates(
251
252
  # Create component-scoped tempdir
252
253
  tempdir = WorkDirManager().get_tempdir(prefix="coordinates")
253
254
 
254
- # Save existing coordinates to a component-scoped tempfile
255
- pretransform_coordinates_path = (
256
- tempdir / "pretransform_coordinates.txt"
257
- )
258
- np.savetxt(pretransform_coordinates_path, seeds)
259
-
260
255
  # Create element-scoped tempdir so that transformed coordinates is
261
256
  # available later as numpy stores file path reference for
262
257
  # loading on computation
@@ -264,48 +259,92 @@ def get_coordinates(
264
259
  prefix="coordinates"
265
260
  )
266
261
 
267
- # Create an element-scoped tempfile for transformed coordinates output
268
- img2imgcoord_out_path = element_tempdir / "coordinates_transformed.txt"
269
- # Set img2imgcoord command
270
- img2imgcoord_cmd = [
271
- "cat",
272
- f"{pretransform_coordinates_path.resolve()}",
273
- "| img2imgcoord -mm",
274
- f"-src {target_data['path'].resolve()}",
275
- f"-dest {target_data['reference_path'].resolve()}",
276
- f"-warp {extra_input['Warp']['path'].resolve()}",
277
- f"> {img2imgcoord_out_path.resolve()};",
278
- f"sed -i 1d {img2imgcoord_out_path.resolve()}",
279
- ]
280
- # Call img2imgcoord
281
- img2imgcoord_cmd_str = " ".join(img2imgcoord_cmd)
282
- logger.info(
283
- f"img2imgcoord command to be executed: {img2imgcoord_cmd_str}"
284
- )
285
- img2imgcoord_process = subprocess.run(
286
- img2imgcoord_cmd_str, # string needed with shell=True
287
- stdin=subprocess.DEVNULL,
288
- stdout=subprocess.PIPE,
289
- stderr=subprocess.STDOUT,
290
- shell=True, # needed for respecting $PATH
291
- check=False,
292
- )
293
- # Check for success or failure
294
- if img2imgcoord_process.returncode == 0:
295
- logger.info(
296
- "img2imgcoord succeeded with the following output: "
297
- f"{img2imgcoord_process.stdout}"
262
+ # Check for warp file type to use correct tool
263
+ warp_file_ext = extra_input["Warp"]["path"].suffix
264
+ if warp_file_ext == ".mat":
265
+ # Save existing coordinates to a component-scoped tempfile
266
+ pretransform_coordinates_path = (
267
+ tempdir / "pretransform_coordinates.txt"
268
+ )
269
+ np.savetxt(pretransform_coordinates_path, seeds)
270
+
271
+ # Create an element-scoped tempfile for transformed coordinates
272
+ # output
273
+ transformed_coords_path = (
274
+ element_tempdir / "coordinates_transformed.txt"
275
+ )
276
+
277
+ logger.debug("Using FSL for coordinates transformation")
278
+ # Set img2imgcoord command
279
+ img2imgcoord_cmd = [
280
+ "cat",
281
+ f"{pretransform_coordinates_path.resolve()}",
282
+ "| img2imgcoord -mm",
283
+ f"-src {target_data['path'].resolve()}",
284
+ f"-dest {target_data['reference_path'].resolve()}",
285
+ f"-warp {extra_input['Warp']['path'].resolve()}",
286
+ f"> {transformed_coords_path.resolve()};",
287
+ f"sed -i 1d {transformed_coords_path.resolve()}",
288
+ ]
289
+ # Call img2imgcoord
290
+ run_ext_cmd(name="img2imgcoord", cmd=img2imgcoord_cmd)
291
+
292
+ # Load coordinates
293
+ seeds = np.loadtxt(transformed_coords_path)
294
+
295
+ elif warp_file_ext == ".h5":
296
+ # Save existing coordinates to a component-scoped tempfile
297
+ pretransform_coordinates_path = (
298
+ tempdir / "pretransform_coordinates.csv"
299
+ )
300
+ np.savetxt(
301
+ pretransform_coordinates_path,
302
+ seeds,
303
+ delimiter=",",
304
+ # Add header while saving to make ANTs work
305
+ header="x,y,z",
298
306
  )
307
+
308
+ # Create an element-scoped tempfile for transformed coordinates
309
+ # output
310
+ transformed_coords_path = (
311
+ element_tempdir / "coordinates_transformed.csv"
312
+ )
313
+
314
+ logger.debug("Using ANTs for coordinates transformation")
315
+ # Set antsApplyTransformsToPoints command
316
+ apply_transforms_to_points_cmd = [
317
+ "antsApplyTransformsToPoints",
318
+ "-d 3",
319
+ "-p 1",
320
+ "-f 0",
321
+ f"-i {pretransform_coordinates_path.resolve()}",
322
+ f"-o {transformed_coords_path.resolve()}",
323
+ f"-t {extra_input['Warp']['path'].resolve()};",
324
+ ]
325
+ # Call antsApplyTransformsToPoints
326
+ run_ext_cmd(
327
+ name="antsApplyTransformsToPoints",
328
+ cmd=apply_transforms_to_points_cmd,
329
+ )
330
+
331
+ # Load coordinates
332
+ seeds = np.loadtxt(
333
+ # Skip header when reading
334
+ transformed_coords_path,
335
+ delimiter=",",
336
+ skiprows=1,
337
+ )
338
+
299
339
  else:
300
340
  raise_error(
301
- msg="img2imgcoord failed with the following error: "
302
- f"{img2imgcoord_process.stdout}",
341
+ msg=(
342
+ "Unknown warp / transformation file extension: "
343
+ f"{warp_file_ext}"
344
+ ),
303
345
  klass=RuntimeError,
304
346
  )
305
347
 
306
- # Load coordinates
307
- seeds = np.loadtxt(img2imgcoord_out_path)
308
-
309
348
  # Delete tempdir
310
349
  WorkDirManager().delete_tempdir(tempdir)
311
350
 
@@ -1,9 +1,9 @@
1
1
  """Provide functions for masks."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # Synchon Mandal <s.mandal@fz-juelich.de>
4
5
  # License: AGPL
5
6
 
6
- import subprocess
7
7
  import typing
8
8
  from pathlib import Path
9
9
  from typing import (
@@ -29,7 +29,7 @@ from nilearn.masking import (
29
29
  )
30
30
 
31
31
  from ..pipeline import WorkDirManager
32
- from ..utils.logging import logger, raise_error
32
+ from ..utils import logger, raise_error, run_ext_cmd
33
33
  from .utils import closest_resolution
34
34
 
35
35
 
@@ -199,7 +199,8 @@ def get_mask( # noqa: C901
199
199
  ------
200
200
  RuntimeError
201
201
  If masks are in different spaces and they need to be intersected /
202
- unionized.
202
+ unionized or
203
+ if warp / transformation file extension is not ".mat" or ".h5".
203
204
  ValueError
204
205
  If extra key is provided in addition to mask name in ``masks`` or
205
206
  if no mask is provided or
@@ -364,50 +365,58 @@ def get_mask( # noqa: C901
364
365
  element_tempdir = WorkDirManager().get_element_tempdir(prefix="masks")
365
366
 
366
367
  # Create an element-scoped tempfile for warped output
367
- applywarp_out_path = element_tempdir / "mask_warped.nii.gz"
368
- # Set applywarp command
369
- applywarp_cmd = [
370
- "applywarp",
371
- "--interp=nn",
372
- f"-i {prewarp_mask_path.resolve()}",
373
- # use resampled reference
374
- f"-r {target_data['reference_path'].resolve()}",
375
- f"-w {extra_input['Warp']['path'].resolve()}",
376
- f"-o {applywarp_out_path.resolve()}",
377
- ]
378
- # Call applywarp
379
- applywarp_cmd_str = " ".join(applywarp_cmd)
380
- logger.info(f"applywarp command to be executed: {applywarp_cmd_str}")
381
- applywarp_process = subprocess.run(
382
- applywarp_cmd_str, # string needed with shell=True
383
- stdin=subprocess.DEVNULL,
384
- stdout=subprocess.PIPE,
385
- stderr=subprocess.STDOUT,
386
- shell=True, # needed for respecting $PATH
387
- check=False,
388
- )
389
- # Check for success or failure
390
- if applywarp_process.returncode == 0:
391
- logger.info(
392
- "applywarp succeeded with the following output: "
393
- f"{applywarp_process.stdout}"
394
- )
368
+ warped_mask_path = element_tempdir / "mask_warped.nii.gz"
369
+
370
+ # Check for warp file type to use correct tool
371
+ warp_file_ext = extra_input["Warp"]["path"].suffix
372
+ if warp_file_ext == ".mat":
373
+ logger.debug("Using FSL for mask warping")
374
+ # Set applywarp command
375
+ applywarp_cmd = [
376
+ "applywarp",
377
+ "--interp=nn",
378
+ f"-i {prewarp_mask_path.resolve()}",
379
+ # use resampled reference
380
+ f"-r {target_data['reference_path'].resolve()}",
381
+ f"-w {extra_input['Warp']['path'].resolve()}",
382
+ f"-o {warped_mask_path.resolve()}",
383
+ ]
384
+ # Call applywarp
385
+ run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
386
+
387
+ elif warp_file_ext == ".h5":
388
+ logger.debug("Using ANTs for mask warping")
389
+ # Set antsApplyTransforms command
390
+ apply_transforms_cmd = [
391
+ "antsApplyTransforms",
392
+ "-d 3",
393
+ "-e 3",
394
+ "-n 'GenericLabel[NearestNeighbor]'",
395
+ f"-i {prewarp_mask_path.resolve()}",
396
+ # use resampled reference
397
+ f"-r {target_data['reference_path'].resolve()}",
398
+ f"-t {extra_input['Warp']['path'].resolve()}",
399
+ f"-o {warped_mask_path.resolve()}",
400
+ ]
401
+ # Call antsApplyTransforms
402
+ run_ext_cmd(name="antsApplyTransforms", cmd=apply_transforms_cmd)
403
+
395
404
  else:
396
405
  raise_error(
397
- msg="applywarp failed with the following error: "
398
- f"{applywarp_process.stdout}",
406
+ msg=(
407
+ "Unknown warp / transformation file extension: "
408
+ f"{warp_file_ext}"
409
+ ),
399
410
  klass=RuntimeError,
400
411
  )
401
412
 
402
413
  # Load nifti
403
- mask_img = nib.load(applywarp_out_path)
414
+ mask_img = nib.load(warped_mask_path)
404
415
 
405
416
  # Delete tempdir
406
417
  WorkDirManager().delete_tempdir(tempdir)
407
418
 
408
- # Type-cast to remove errors
409
- mask_img = typing.cast("Nifti1Image", mask_img)
410
- return mask_img
419
+ return mask_img # type: ignore
411
420
 
412
421
 
413
422
  def load_mask(
@@ -7,7 +7,6 @@
7
7
 
8
8
  import io
9
9
  import shutil
10
- import subprocess
11
10
  import tarfile
12
11
  import tempfile
13
12
  import typing
@@ -23,7 +22,7 @@ from nilearn import datasets, image
23
22
  from requests.exceptions import ConnectionError, HTTPError, ReadTimeout
24
23
 
25
24
  from ..pipeline import WorkDirManager
26
- from ..utils.logging import logger, raise_error, warn_with_log
25
+ from ..utils import logger, raise_error, run_ext_cmd, warn_with_log
27
26
  from .utils import closest_resolution
28
27
 
29
28
 
@@ -231,7 +230,8 @@ def get_parcellation(
231
230
  Raises
232
231
  ------
233
232
  RuntimeError
234
- If parcellations are in different spaces and they need to be merged.
233
+ If parcellations are in different spaces and they need to be merged or
234
+ if warp / transformation file extension is not ".mat" or ".h5".
235
235
  ValueError
236
236
  If ``extra_input`` is None when ``target_data``'s space is native.
237
237
 
@@ -302,55 +302,61 @@ def get_parcellation(
302
302
  element_tempdir = WorkDirManager().get_element_tempdir(
303
303
  prefix="parcellations"
304
304
  )
305
-
306
305
  # Create an element-scoped tempfile for warped output
307
- applywarp_out_path = element_tempdir / "parcellation_warped.nii.gz"
308
- # Set applywarp command
309
- applywarp_cmd = [
310
- "applywarp",
311
- "--interp=nn",
312
- f"-i {prewarp_parcellation_path.resolve()}",
313
- # use resampled reference
314
- f"-r {target_data['reference_path'].resolve()}",
315
- f"-w {extra_input['Warp']['path'].resolve()}",
316
- f"-o {applywarp_out_path.resolve()}",
317
- ]
318
- # Call applywarp
319
- applywarp_cmd_str = " ".join(applywarp_cmd)
320
- logger.info(f"applywarp command to be executed: {applywarp_cmd_str}")
321
- applywarp_process = subprocess.run(
322
- applywarp_cmd_str, # string needed with shell=True
323
- stdin=subprocess.DEVNULL,
324
- stdout=subprocess.PIPE,
325
- stderr=subprocess.STDOUT,
326
- shell=True, # needed for respecting $PATH
327
- check=False,
306
+ warped_parcellation_path = (
307
+ element_tempdir / "parcellation_warped.nii.gz"
328
308
  )
329
- # Check for success or failure
330
- if applywarp_process.returncode == 0:
331
- logger.info(
332
- "applywarp succeeded with the following output: "
333
- f"{applywarp_process.stdout}"
334
- )
309
+
310
+ # Check for warp file type to use correct tool
311
+ warp_file_ext = extra_input["Warp"]["path"].suffix
312
+ if warp_file_ext == ".mat":
313
+ logger.debug("Using FSL for parcellation warping")
314
+ # Set applywarp command
315
+ applywarp_cmd = [
316
+ "applywarp",
317
+ "--interp=nn",
318
+ f"-i {prewarp_parcellation_path.resolve()}",
319
+ # use resampled reference
320
+ f"-r {target_data['reference_path'].resolve()}",
321
+ f"-w {extra_input['Warp']['path'].resolve()}",
322
+ f"-o {warped_parcellation_path.resolve()}",
323
+ ]
324
+ # Call applywarp
325
+ run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
326
+
327
+ elif warp_file_ext == ".h5":
328
+ logger.debug("Using ANTs for parcellation warping")
329
+ # Set antsApplyTransforms command
330
+ apply_transforms_cmd = [
331
+ "antsApplyTransforms",
332
+ "-d 3",
333
+ "-e 3",
334
+ "-n 'GenericLabel[NearestNeighbor]'",
335
+ f"-i {prewarp_parcellation_path.resolve()}",
336
+ # use resampled reference
337
+ f"-r {target_data['reference_path'].resolve()}",
338
+ f"-t {extra_input['Warp']['path'].resolve()}",
339
+ f"-o {warped_parcellation_path.resolve()}",
340
+ ]
341
+ # Call antsApplyTransforms
342
+ run_ext_cmd(name="antsApplyTransforms", cmd=apply_transforms_cmd)
343
+
335
344
  else:
336
345
  raise_error(
337
- msg="applywarp failed with the following error: "
338
- f"{applywarp_process.stdout}",
346
+ msg=(
347
+ "Unknown warp / transformation file extension: "
348
+ f"{warp_file_ext}"
349
+ ),
339
350
  klass=RuntimeError,
340
351
  )
341
352
 
342
353
  # Load nifti
343
- resampled_parcellation_img = nib.load(applywarp_out_path)
354
+ resampled_parcellation_img = nib.load(warped_parcellation_path)
344
355
 
345
356
  # Delete tempdir
346
357
  WorkDirManager().delete_tempdir(tempdir)
347
358
 
348
- # Stupid casting
349
- resampled_parcellation_img = typing.cast(
350
- "Nifti1Image", resampled_parcellation_img
351
- )
352
-
353
- return resampled_parcellation_img, labels
359
+ return resampled_parcellation_img, labels # type: ignore
354
360
 
355
361
 
356
362
  def load_parcellation(
@@ -4,11 +4,10 @@
4
4
  # Federico Raimondo <f.raimondo@fz-juelich.de>
5
5
  # License: AGPL
6
6
 
7
- import subprocess
8
7
  import typing
9
8
  from functools import lru_cache
10
9
  from pathlib import Path
11
- from typing import TYPE_CHECKING, Any, Dict, Optional, Tuple, Union, cast
10
+ from typing import TYPE_CHECKING, Any, Dict, Optional, Tuple, Union
12
11
 
13
12
  import nibabel as nib
14
13
  import numpy as np
@@ -17,7 +16,7 @@ from scipy.fft import fft, fftfreq
17
16
 
18
17
  from ...pipeline import WorkDirManager
19
18
  from ...pipeline.singleton import singleton
20
- from ...utils import logger, raise_error
19
+ from ...utils import logger, run_ext_cmd
21
20
 
22
21
 
23
22
  if TYPE_CHECKING:
@@ -54,42 +53,6 @@ class ALFFEstimator:
54
53
  if self.temp_dir_path is not None:
55
54
  WorkDirManager().delete_tempdir(self.temp_dir_path)
56
55
 
57
- @staticmethod
58
- def _run_afni_cmd(cmd: str) -> None:
59
- """Run AFNI command.
60
-
61
- Parameters
62
- ----------
63
- cmd : str
64
- AFNI command to be executed.
65
-
66
- Raises
67
- ------
68
- RuntimeError
69
- If AFNI command fails.
70
-
71
- """
72
- logger.info(f"AFNI command to be executed: {cmd}")
73
- process = subprocess.run(
74
- cmd,
75
- stdin=subprocess.DEVNULL,
76
- stdout=subprocess.PIPE,
77
- stderr=subprocess.STDOUT,
78
- shell=True,
79
- check=False,
80
- )
81
- if process.returncode == 0:
82
- logger.info(
83
- "AFNI command succeeded with the following output: "
84
- f"{process.stdout}"
85
- )
86
- else:
87
- raise_error(
88
- msg="AFNI command failed with the following error: "
89
- f"{process.stdout}",
90
- klass=RuntimeError,
91
- )
92
-
93
56
  def _compute_alff_afni(
94
57
  self,
95
58
  data: Union["Nifti1Image", "Nifti2Image"],
@@ -121,11 +84,6 @@ class ALFFEstimator:
121
84
  pathlib.Path
122
85
  The path to the fALFF map as NIfTI.
123
86
 
124
- Raises
125
- ------
126
- RuntimeError
127
- If the AFNI commands fails due to some issues.
128
-
129
87
  """
130
88
  # Note: self.temp_dir_path is sure to exist before proceeding, so
131
89
  # types checks are ignored further on.
@@ -150,31 +108,36 @@ class ALFFEstimator:
150
108
  self.temp_dir_path / "temp_falff" # type: ignore
151
109
  )
152
110
 
153
- bp_cmd = (
154
- "3dRSFC "
155
- f"-prefix {falff_afni_out_path_prefix.resolve()} "
156
- f"-input {nifti_in_file_path.resolve()} "
157
- f"-band {highpass} {lowpass} "
158
- "-no_rsfa -nosat -nodetrend "
159
- )
111
+ # Set 3dRSFC command
112
+ bp_cmd = [
113
+ "3dRSFC",
114
+ f"-prefix {falff_afni_out_path_prefix.resolve()}",
115
+ f"-input {nifti_in_file_path.resolve()}",
116
+ f"-band {highpass} {lowpass}",
117
+ "-no_rsfa -nosat -nodetrend",
118
+ ]
160
119
  if tr is not None:
161
- bp_cmd += f"-dt {tr} "
162
- self._run_afni_cmd(bp_cmd)
163
-
164
- # Convert afni's output to nifti
165
- convert_cmd = (
166
- "3dAFNItoNIFTI "
167
- f"-prefix {alff_fname.resolve()} "
168
- f"{falff_afni_out_path_prefix}_ALFF+tlrc.BRIK "
169
- )
170
- self._run_afni_cmd(convert_cmd)
171
-
172
- convert_cmd = (
173
- "3dAFNItoNIFTI "
174
- f"-prefix {falff_fname.resolve()} "
175
- f"{falff_afni_out_path_prefix}_fALFF+tlrc.BRIK "
176
- )
177
- self._run_afni_cmd(convert_cmd)
120
+ bp_cmd.append(f"-dt {tr}")
121
+ # Call 3dRSFC
122
+ run_ext_cmd(name="3dRSFC", cmd=bp_cmd)
123
+
124
+ # Convert alff output to nifti
125
+ convert_alff_cmd = [
126
+ "3dAFNItoNIFTI",
127
+ f"-prefix {alff_fname.resolve()}",
128
+ f"{falff_afni_out_path_prefix}_ALFF+tlrc.BRIK",
129
+ ]
130
+ # Call 3dAFNItoNIFTI
131
+ run_ext_cmd(name="3dAFNItoNIFTI", cmd=convert_alff_cmd)
132
+
133
+ # Convert falff output to nifti
134
+ convert_falff_cmd = [
135
+ "3dAFNItoNIFTI",
136
+ f"-prefix {falff_fname.resolve()}",
137
+ f"{falff_afni_out_path_prefix}_fALFF+tlrc.BRIK",
138
+ ]
139
+ # Call 3dAFNItoNIFTI
140
+ run_ext_cmd(name="3dAFNItoNIFTI", cmd=convert_falff_cmd)
178
141
 
179
142
  # Cleanup intermediate files
180
143
  for fname in self.temp_dir_path.glob("temp_*"): # type: ignore
@@ -183,10 +146,8 @@ class ALFFEstimator:
183
146
  # Load niftis
184
147
  alff_img = nib.load(alff_fname)
185
148
  falff_img = nib.load(falff_fname)
186
- # Cast image type
187
- alff_img = cast("Nifti1Image", alff_img)
188
- falff_img = cast("Nifti1Image", falff_img)
189
- return alff_img, falff_img, alff_fname, falff_fname
149
+
150
+ return alff_img, falff_img, alff_fname, falff_fname # type: ignore
190
151
 
191
152
  def _compute_alff_python(
192
153
  self,