junifer 0.0.8.dev329__tar.gz → 0.0.8.dev339__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 (620) hide show
  1. {junifer-0.0.8.dev329/junifer.egg-info → junifer-0.0.8.dev339}/PKG-INFO +1 -1
  2. junifer-0.0.8.dev339/docs/changes/newsfragments/530.change +1 -0
  3. junifer-0.0.8.dev339/docs/changes/newsfragments/530.enh +1 -0
  4. junifer-0.0.8.dev339/docs/changes/newsfragments/530.enh.1 +1 -0
  5. junifer-0.0.8.dev339/docs/changes/newsfragments/533.enh +1 -0
  6. junifer-0.0.8.dev339/docs/changes/newsfragments/533.enh.1 +1 -0
  7. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/using/configuring.rst +6 -0
  8. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/_version.py +3 -3
  9. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/fsl/run_fsl_docker.sh +4 -0
  10. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/maps/_ants_maps_warper.py +7 -5
  11. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/maps/_fsl_maps_warper.py +3 -2
  12. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/masks/_ants_mask_warper.py +7 -5
  13. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/masks/_fsl_mask_warper.py +3 -2
  14. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/parcellations/_ants_parcellation_warper.py +7 -5
  15. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/parcellations/_fsl_parcellation_warper.py +3 -4
  16. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/_afni_falff.py +12 -2
  17. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/_junifer_falff.py +21 -9
  18. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/falff_base.py +23 -3
  19. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/falff_maps.py +1 -1
  20. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/falff_parcels.py +1 -1
  21. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/falff_spheres.py +1 -1
  22. junifer-0.0.8.dev339/junifer/markers/falff/tests/test_falff_mask.py +99 -0
  23. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/_junifer_reho.py +1 -1
  24. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/reho_base.py +3 -40
  25. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_marker_utils.py +40 -1
  26. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/utils.py +44 -0
  27. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/tests/test_workdir_manager.py +24 -0
  28. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/workdir_manager.py +23 -13
  29. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/_temporal_filter.py +6 -4
  30. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/_temporal_slicer.py +5 -3
  31. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/confounds/fmriprep_confound_remover.py +6 -4
  32. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +7 -0
  33. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/_fsl_smoothing.py +2 -1
  34. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/_nilearn_smoothing.py +5 -2
  35. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/tests/test_smoothing.py +6 -0
  36. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/tests/test_temporal_filter.py +6 -0
  37. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/tests/test_temporal_slicer.py +6 -0
  38. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/warping/_ants_warper.py +49 -34
  39. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/warping/_fsl_warper.py +45 -33
  40. junifer-0.0.8.dev339/junifer/preprocess/warping/_utils.py +106 -0
  41. junifer-0.0.8.dev339/junifer/preprocess/warping/tests/test_warping_utils.py +163 -0
  42. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339/junifer.egg-info}/PKG-INFO +1 -1
  43. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer.egg-info/SOURCES.txt +8 -0
  44. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer.egg-info/scm_file_list.json +8 -0
  45. junifer-0.0.8.dev339/junifer.egg-info/scm_version.json +8 -0
  46. junifer-0.0.8.dev329/junifer.egg-info/scm_version.json +0 -8
  47. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.dockerignore +0 -0
  48. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  49. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  50. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  51. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  52. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  53. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  54. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/dependabot.yml +0 -0
  55. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/pull_request_template.md +0 -0
  56. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/workflows/check-stale.yml +0 -0
  57. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/workflows/ci.yml +0 -0
  58. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/workflows/docker-publish.yml +0 -0
  59. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/workflows/docs-preview.yml +0 -0
  60. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/workflows/docs.yml +0 -0
  61. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/workflows/lint.yml +0 -0
  62. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.github/workflows/publish.yml +0 -0
  63. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.gitignore +0 -0
  64. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.gitmodules +0 -0
  65. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.pre-commit-config.yaml +0 -0
  66. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/.python-version +0 -0
  67. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/AUTHORS.rst +0 -0
  68. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/Dockerfile +0 -0
  69. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/Dockerfile-ci +0 -0
  70. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/LICENSE.md +0 -0
  71. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/README.md +0 -0
  72. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/codecov.yml +0 -0
  73. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/conda-env.yml +0 -0
  74. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/Makefile +0 -0
  75. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/_static/css/custom.css +0 -0
  76. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/_static/css/version_selector.css +0 -0
  77. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/_static/js/custom.js +0 -0
  78. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/_templates/versions.html +0 -0
  79. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/api.rst +0 -0
  80. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/cli.rst +0 -0
  81. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/configs.rst +0 -0
  82. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/data.rst +0 -0
  83. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/datagrabbers.rst +0 -0
  84. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/datareaders.rst +0 -0
  85. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/index.rst +0 -0
  86. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/markers.rst +0 -0
  87. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/nilearn.rst +0 -0
  88. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/onthefly.rst +0 -0
  89. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/pipeline.rst +0 -0
  90. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/preprocessing.rst +0 -0
  91. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/stats.rst +0 -0
  92. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/storage.rst +0 -0
  93. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/testing.rst +0 -0
  94. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/api/utils.rst +0 -0
  95. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/builtin.rst +0 -0
  96. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/contributors.inc +0 -0
  97. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/.gitignore +0 -0
  98. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/239.enh +0 -0
  99. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/364.doc +0 -0
  100. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/364.enh +0 -0
  101. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/364.feature +0 -0
  102. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/474.misc +0 -0
  103. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/482.bugfix +0 -0
  104. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/492.bugfix +0 -0
  105. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/499.enh +0 -0
  106. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/502.bugfix +0 -0
  107. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/503.enh +0 -0
  108. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/504.bugfix +0 -0
  109. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/504.misc +0 -0
  110. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/509.enh +0 -0
  111. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/510.bugfix +0 -0
  112. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.bugfix +0 -0
  113. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.bugfix.1 +0 -0
  114. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.change +0 -0
  115. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.enh +0 -0
  116. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.enh.1 +0 -0
  117. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.feature +0 -0
  118. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.misc +0 -0
  119. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/511.misc.1 +0 -0
  120. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/513.doc +0 -0
  121. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/513.misc +0 -0
  122. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/514.bugfix +0 -0
  123. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/514.bugfix.1 +0 -0
  124. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/514.enh +0 -0
  125. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/515.doc +0 -0
  126. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/515.enh +0 -0
  127. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/515.enh.1 +0 -0
  128. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/515.misc +0 -0
  129. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/515.misc.1 +0 -0
  130. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/516.bugfix +0 -0
  131. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/516.bugfix.1 +0 -0
  132. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/516.bugfix.2 +0 -0
  133. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/516.change +0 -0
  134. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/516.change.1 +0 -0
  135. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/516.misc +0 -0
  136. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.bugfix +0 -0
  137. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.bugfix.1 +0 -0
  138. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.bugfix.2 +0 -0
  139. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.bugfix.3 +0 -0
  140. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.bugfix.4 +0 -0
  141. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.bugfix.5 +0 -0
  142. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.bugfix.6 +0 -0
  143. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.change +0 -0
  144. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.doc +0 -0
  145. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.misc +0 -0
  146. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.misc.1 +0 -0
  147. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.misc.2 +0 -0
  148. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.misc.3 +0 -0
  149. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/520.removal +0 -0
  150. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/521.bugfix +0 -0
  151. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/522.bugfix +0 -0
  152. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/522.enh +0 -0
  153. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/523.misc +0 -0
  154. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.bugfix +0 -0
  155. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.bugfix.1 +0 -0
  156. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.change +0 -0
  157. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.change.1 +0 -0
  158. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.change.2 +0 -0
  159. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.doc +0 -0
  160. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.enh +0 -0
  161. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.feature +0 -0
  162. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/524.feature.1 +0 -0
  163. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.bugfix +0 -0
  164. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.bugfix.1 +0 -0
  165. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.change +0 -0
  166. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.change.1 +0 -0
  167. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.change.2 +0 -0
  168. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.change.3 +0 -0
  169. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.change.4 +0 -0
  170. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.doc +0 -0
  171. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.enh +0 -0
  172. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/525.feature +0 -0
  173. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/528.bugfix +0 -0
  174. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/528.change +0 -0
  175. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/528.doc +0 -0
  176. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/529.bugfix +0 -0
  177. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/529.bugfix.1 +0 -0
  178. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/529.bugfix.2 +0 -0
  179. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/529.bugfix.3 +0 -0
  180. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/529.doc +0 -0
  181. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/529.enh +0 -0
  182. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/changes/newsfragments/531.enh +0 -0
  183. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/conf.py +0 -0
  184. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/contribution.rst +0 -0
  185. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/confounds_format.rst +0 -0
  186. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/coordinates.rst +0 -0
  187. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/data_dump_asset.rst +0 -0
  188. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/data_registries.rst +0 -0
  189. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/data_types.rst +0 -0
  190. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/datagrabber.rst +0 -0
  191. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/dependencies.rst +0 -0
  192. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/extension.rst +0 -0
  193. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/index.rst +0 -0
  194. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/logging.rst +0 -0
  195. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/maps.rst +0 -0
  196. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/marker.rst +0 -0
  197. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/masks.rst +0 -0
  198. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/parcellations.rst +0 -0
  199. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/plugins.rst +0 -0
  200. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/extending/preprocessor.rst +0 -0
  201. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/faq.rst +0 -0
  202. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/help.rst +0 -0
  203. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/images/junifer_logo.png +0 -0
  204. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/index.rst +0 -0
  205. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/installation.rst +0 -0
  206. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/internals.rst +0 -0
  207. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/links.inc +0 -0
  208. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/maintaining.rst +0 -0
  209. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/poly.py +0 -0
  210. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/poly_files/patches/version_banner.html +0 -0
  211. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/poly_files/patches/versions.html +0 -0
  212. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/poly_files/templates/index.html +0 -0
  213. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/starting.rst +0 -0
  214. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/data.rst +0 -0
  215. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/datagrabber.rst +0 -0
  216. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/datareader.rst +0 -0
  217. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/index.rst +0 -0
  218. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/marker.rst +0 -0
  219. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/pipeline.rst +0 -0
  220. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/preprocess.rst +0 -0
  221. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/understanding/storage.rst +0 -0
  222. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/using/codeless.rst +0 -0
  223. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/using/dumping.rst +0 -0
  224. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/using/index.rst +0 -0
  225. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/using/masks.rst +0 -0
  226. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/using/queueing.rst +0 -0
  227. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/using/running.rst +0 -0
  228. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/docs/whats_new.rst +0 -0
  229. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/README.rst +0 -0
  230. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/norun_hcpfc_pearson.py +0 -0
  231. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/norun_ukbvm_gmd.py +0 -0
  232. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/run_compute_parcel_mean.py +0 -0
  233. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/run_datagrabber_bids_datalad.py +0 -0
  234. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/run_ets_rss_marker.py +0 -0
  235. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/run_junifer_julearn.py +0 -0
  236. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/run_run_gmd_mean.py +0 -0
  237. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/yamls/gmd_mean.yaml +0 -0
  238. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  239. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  240. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  241. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/ignore_words.txt +0 -0
  242. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/__init__.py +0 -0
  243. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/__init__.pyi +0 -0
  244. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/__init__.py +0 -0
  245. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/__init__.pyi +0 -0
  246. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/decorators.py +0 -0
  247. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/functions.py +0 -0
  248. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/py.typed +0 -0
  249. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/__init__.py +0 -0
  250. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/__init__.pyi +0 -0
  251. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  252. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  253. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/py.typed +0 -0
  254. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  255. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  256. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  257. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  258. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/afni/3dRSFC +0 -0
  259. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/afni/3dReHo +0 -0
  260. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/afni/afni +0 -0
  261. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  262. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/ants/ResampleImage +0 -0
  263. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/ants/antsApplyTransforms +0 -0
  264. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  265. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  266. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/freesurfer/mri_binarize +0 -0
  267. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/freesurfer/mri_mc +0 -0
  268. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/freesurfer/mri_pretess +0 -0
  269. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/freesurfer/mris_convert +0 -0
  270. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  271. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/fsl/applywarp +0 -0
  272. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/fsl/flirt +0 -0
  273. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/fsl/img2imgcoord +0 -0
  274. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/fsl/std2imgcoord +0 -0
  275. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/run_conda.bash +0 -0
  276. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/run_conda.zsh +0 -0
  277. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/run_venv.bash +0 -0
  278. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/res/run_venv.zsh +0 -0
  279. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/tests/test_decorators.py +0 -0
  280. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/api/tests/test_functions.py +0 -0
  281. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/__init__.py +0 -0
  282. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/__init__.pyi +0 -0
  283. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/cli.py +0 -0
  284. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/parser.py +0 -0
  285. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/py.typed +0 -0
  286. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  287. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  288. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  289. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/tests/test_cli.py +0 -0
  290. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/tests/test_cli_utils.py +0 -0
  291. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/cli/utils.py +0 -0
  292. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/__init__.py +0 -0
  293. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/__init__.pyi +0 -0
  294. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/__init__.py +0 -0
  295. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/__init__.pyi +0 -0
  296. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  297. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  298. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  299. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  300. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  301. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  302. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  303. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  304. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  305. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  306. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  307. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  308. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  309. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/juseless/py.typed +0 -0
  310. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/configs/py.typed +0 -0
  311. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/conftest.py +0 -0
  312. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/__init__.py +0 -0
  313. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/__init__.pyi +0 -0
  314. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/_dispatch.py +0 -0
  315. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/coordinates/__init__.py +0 -0
  316. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/coordinates/__init__.pyi +0 -0
  317. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  318. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/coordinates/_coordinates.py +0 -0
  319. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  320. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  321. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/coordinates/tests/test_coordinates_names.py +0 -0
  322. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/maps/__init__.py +0 -0
  323. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/maps/__init__.pyi +0 -0
  324. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/maps/_maps.py +0 -0
  325. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/maps/tests/test_maps.py +0 -0
  326. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/masks/__init__.py +0 -0
  327. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/masks/__init__.pyi +0 -0
  328. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/masks/_masks.py +0 -0
  329. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/masks/tests/test_masks.py +0 -0
  330. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/parcellations/__init__.py +0 -0
  331. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/parcellations/__init__.pyi +0 -0
  332. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/parcellations/_parcellations.py +0 -0
  333. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  334. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/pipeline_data_registry_base.py +0 -0
  335. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/py.typed +0 -0
  336. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/template_spaces.py +0 -0
  337. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/tests/test_data_utils.py +0 -0
  338. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/tests/test_dispatch.py +0 -0
  339. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/tests/test_template_spaces.py +0 -0
  340. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/data/utils.py +0 -0
  341. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/__init__.py +0 -0
  342. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/__init__.pyi +0 -0
  343. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/__init__.py +0 -0
  344. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  345. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/_types.py +0 -0
  346. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/id1000.py +0 -0
  347. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/piop1.py +0 -0
  348. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/piop2.py +0 -0
  349. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/py.typed +0 -0
  350. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  351. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  352. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  353. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/base.py +0 -0
  354. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/datalad_base.py +0 -0
  355. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  356. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  357. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  358. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  359. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  360. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/hcp1200/py.typed +0 -0
  361. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  362. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/multiple.py +0 -0
  363. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/pattern.py +0 -0
  364. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/pattern_datalad.py +0 -0
  365. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  366. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/py.typed +0 -0
  367. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/tests/test_base.py +0 -0
  368. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  369. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  370. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/tests/test_multiple.py +0 -0
  371. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/tests/test_pattern.py +0 -0
  372. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  373. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  374. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datareader/__init__.py +0 -0
  375. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datareader/__init__.pyi +0 -0
  376. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datareader/default.py +0 -0
  377. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datareader/py.typed +0 -0
  378. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/datareader/tests/test_default_reader.py +0 -0
  379. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.codecov.yml +0 -0
  380. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.codespellignore +0 -0
  381. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  382. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  383. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  384. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +0 -0
  385. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/dependabot.yml +0 -0
  386. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/workflows/build.yml +0 -0
  387. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/workflows/code-style.yml +0 -0
  388. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/workflows/doc.yml +0 -0
  389. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/workflows/publish.yml +0 -0
  390. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.github/workflows/pytest.yml +0 -0
  391. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/.gitignore +0 -0
  392. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/LICENSE +0 -0
  393. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/README.md +0 -0
  394. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  395. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  396. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  397. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  398. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/cli/__init__.py +0 -0
  399. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/cli/help_text.py +0 -0
  400. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/cli/parser.py +0 -0
  401. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/cli/utils.py +0 -0
  402. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
  403. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/commands/sys_info.py +0 -0
  404. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  405. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  406. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  407. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
  408. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +0 -0
  409. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  410. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/Makefile +0 -0
  411. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
  412. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +0 -0
  413. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +0 -0
  414. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +0 -0
  415. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/api/index.rst +0 -0
  416. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/conf.py +0 -0
  417. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/index.rst +0 -0
  418. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/links.inc +0 -0
  419. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/make.bat +0 -0
  420. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/doc/references.bib +0 -0
  421. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/pyproject.toml +0 -0
  422. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/BrainPrint/setup.py +0 -0
  423. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/__init__.py +0 -0
  424. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/__init__.pyi +0 -0
  425. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/nilearn/__init__.py +0 -0
  426. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/nilearn/__init__.pyi +0 -0
  427. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  428. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  429. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/nilearn/py.typed +0 -0
  430. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  431. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  432. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/external/py.typed +0 -0
  433. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/__init__.py +0 -0
  434. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/__init__.pyi +0 -0
  435. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/base.py +0 -0
  436. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/brainprint.py +0 -0
  437. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/__init__.py +0 -0
  438. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/complexity_base.py +0 -0
  439. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/hurst_exponent.py +0 -0
  440. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  441. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/perm_entropy.py +0 -0
  442. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/py.typed +0 -0
  443. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/range_entropy.py +0 -0
  444. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  445. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/sample_entropy.py +0 -0
  446. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  447. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_complexity_registry.py +0 -0
  448. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  449. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  450. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  451. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  452. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  453. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  454. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  455. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  456. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/ets_rss.py +0 -0
  457. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/__init__.py +0 -0
  458. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/__init__.pyi +0 -0
  459. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/py.typed +0 -0
  460. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
  461. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  462. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  463. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/__init__.py +0 -0
  464. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  465. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  466. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
  467. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  468. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  469. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  470. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
  471. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  472. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  473. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/py.typed +0 -0
  474. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  475. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
  476. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  477. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  478. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  479. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
  480. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  481. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  482. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/maps_aggregation.py +0 -0
  483. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/parcel_aggregation.py +0 -0
  484. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/py.typed +0 -0
  485. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/__init__.py +0 -0
  486. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/__init__.pyi +0 -0
  487. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/_afni_reho.py +0 -0
  488. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/py.typed +0 -0
  489. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/reho_maps.py +0 -0
  490. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/reho_parcels.py +0 -0
  491. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/reho_spheres.py +0 -0
  492. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/tests/test_junifer_reho.py +0 -0
  493. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
  494. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  495. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  496. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/sphere_aggregation.py +0 -0
  497. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/__init__.py +0 -0
  498. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  499. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/py.typed +0 -0
  500. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  501. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
  502. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  503. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  504. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  505. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
  506. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  507. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  508. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_brainprint.py +0 -0
  509. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_ets_rss.py +0 -0
  510. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_lost_regions.py +0 -0
  511. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_maps_aggregation.py +0 -0
  512. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_markers_base.py +0 -0
  513. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  514. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  515. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/onthefly/__init__.py +0 -0
  516. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/onthefly/__init__.pyi +0 -0
  517. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/onthefly/_brainprint.py +0 -0
  518. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/onthefly/py.typed +0 -0
  519. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/onthefly/read_transform.py +0 -0
  520. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/onthefly/tests/test_read_transform.py +0 -0
  521. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/__init__.py +0 -0
  522. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/__init__.pyi +0 -0
  523. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/_data_object_dumper.py +0 -0
  524. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/marker_collection.py +0 -0
  525. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/pipeline_component_registry.py +0 -0
  526. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  527. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/py.typed +0 -0
  528. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
  529. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  530. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  531. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  532. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  533. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/update_meta_mixin.py +0 -0
  534. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/pipeline/utils.py +0 -0
  535. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/__init__.py +0 -0
  536. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/__init__.pyi +0 -0
  537. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/base.py +0 -0
  538. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/confounds/__init__.py +0 -0
  539. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/confounds/__init__.pyi +0 -0
  540. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/confounds/py.typed +0 -0
  541. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/py.typed +0 -0
  542. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/__init__.py +0 -0
  543. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  544. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  545. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/py.typed +0 -0
  546. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/smoothing/smoothing.py +0 -0
  547. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  548. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/warping/__init__.py +0 -0
  549. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/warping/__init__.pyi +0 -0
  550. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/warping/py.typed +0 -0
  551. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/warping/space_warper.py +0 -0
  552. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  553. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/py.typed +0 -0
  554. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/stats.py +0 -0
  555. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/__init__.py +0 -0
  556. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/__init__.pyi +0 -0
  557. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/base.py +0 -0
  558. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/hdf5.py +0 -0
  559. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/pandas_base.py +0 -0
  560. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/py.typed +0 -0
  561. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/sqlite.py +0 -0
  562. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/tests/data/collected_h5io_fork.hdf5 +0 -0
  563. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/tests/test_hdf5.py +0 -0
  564. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/tests/test_pandas_base.py +0 -0
  565. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/tests/test_repeated_storage.py +0 -0
  566. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/tests/test_sqlite.py +0 -0
  567. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/tests/test_storage_base.py +0 -0
  568. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/tests/test_utils.py +0 -0
  569. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/storage/utils.py +0 -0
  570. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/__init__.py +0 -0
  571. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/__init__.pyi +0 -0
  572. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  573. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/datagrabbers.py +0 -0
  574. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/py.typed +0 -0
  575. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/registry.py +0 -0
  576. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/tests/test_adhdtesting_datagrabber.py +0 -0
  577. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  578. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  579. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  580. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/tests/test_testing_registry.py +0 -0
  581. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/tests/test_testing_utils.py +0 -0
  582. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +0 -0
  583. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/testing/utils.py +0 -0
  584. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/tests/test_main.py +0 -0
  585. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/tests/test_stats.py +0 -0
  586. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/typing/__init__.py +0 -0
  587. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/typing/__init__.pyi +0 -0
  588. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/typing/_typing.py +0 -0
  589. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/typing/py.typed +0 -0
  590. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/__init__.py +0 -0
  591. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/__init__.pyi +0 -0
  592. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/_config.py +0 -0
  593. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/_yaml.py +0 -0
  594. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/fs.py +0 -0
  595. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/helpers.py +0 -0
  596. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/logging.py +0 -0
  597. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/py.typed +0 -0
  598. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/singleton.py +0 -0
  599. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/tests/test_config.py +0 -0
  600. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/tests/test_fs.py +0 -0
  601. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/tests/test_helpers.py +0 -0
  602. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer/utils/tests/test_logging.py +0 -0
  603. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer.egg-info/dependency_links.txt +0 -0
  604. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer.egg-info/entry_points.txt +0 -0
  605. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer.egg-info/requires.txt +0 -0
  606. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/junifer.egg-info/top_level.txt +0 -0
  607. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/justfile +0 -0
  608. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/pyproject.toml +0 -0
  609. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/scripts/start.sh +0 -0
  610. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/setup.cfg +0 -0
  611. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/setup.py +0 -0
  612. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tools/create_aomic1000_example_dataset.py +0 -0
  613. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tools/create_aomicpiop1_example_dataset.py +0 -0
  614. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tools/create_aomicpiop2_example_dataset.py +0 -0
  615. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tools/create_bids_example_dataset.py +0 -0
  616. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tools/create_bids_example_dataset_sessions.py +0 -0
  617. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  618. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tools/create_hcp1200_example_dataset.py +0 -0
  619. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/tox.ini +0 -0
  620. {junifer-0.0.8.dev329 → junifer-0.0.8.dev339}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.8.dev329
3
+ Version: 0.0.8.dev339
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
+ Use single precision in ``antsApplyTransforms`` (``--float 1``), halving its memory and giving float32 instead of float64 data, with differences below 0.002% of the data range by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Warp the volumes of 4D data in chunks of ``preprocessing.warping.chunksize`` volumes (default 100) in :class:`.SpaceWarper`, as the memory used by ANTs and FSL grows with the number of volumes (e.g., about 53 GB to warp 1200 volumes to native space with ANTs) by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Write the intermediate images (e.g., the warped, smoothed or filtered data) uncompressed in the temporary directory of the element, as they are read right away and deleted after the element is processed, so there is no need to spend time compressing and decompressing them, and run the FSL commands with ``FSLOUTPUTTYPE=NIFTI`` to write them uncompressed by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Restrict the ALFF and fALFF computation of :class:`.ALFFParcels`, :class:`.ALFFSpheres` and :class:`.ALFFMaps` to the voxels in their ``masks`` (with ``-mask`` for AFNI's ``3dRSFC``), as for ReHo, reducing the memory and time (e.g., from 14.5 GB to 9.4 GB and from 7 to 1 minutes for 1200 volumes with AFNI), and do not write the bandpassed time series with ``3dRSFC`` (``-no_rs_out``), as only the parameters are used by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Keep the data of :class:`.fMRIPrepConfoundRemover`, :class:`.TemporalFilter`, :class:`.TemporalSlicer` and :class:`.Smoothing` (with nilearn) in the saved file (memory-mapped) instead of in memory, as for the other preprocessors, releasing its memory during the next steps of the pipeline (e.g., 5 GB for 1200 volumes while running AFNI) by `Fede Raimondo`_
@@ -63,3 +63,9 @@ Available Configurations
63
63
  - ``preprocessing.dump.granularity``
64
64
  - "full" or "final"
65
65
  - Dump all pre-processing steps or just the final pre-processed data
66
+ * - ``JUNIFER_PREPROCESSING_WARPING_CHUNKSIZE``
67
+ - ``preprocessing.warping.chunksize``
68
+ - int
69
+ - | Number of volumes of 4D data to warp at once with
70
+ | :class:`.SpaceWarper` (default 100). The memory used by ANTs and FSL
71
+ | grows with the number of volumes, so smaller chunks use less memory
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.0.8.dev329'
22
- __version_tuple__ = version_tuple = (0, 0, 8, 'dev329')
21
+ __version__ = version = '0.0.8.dev339'
22
+ __version_tuple__ = version_tuple = (0, 0, 8, 'dev339')
23
23
 
24
- __commit_id__ = commit_id = 'g33802e12a'
24
+ __commit_id__ = commit_id = 'gd12ff17f7'
@@ -34,6 +34,10 @@ echo "Docker args: ${docker_args[*]}" >&2
34
34
  echo "Corrected args for FSL: ${corrected_args[*]}" >&2
35
35
 
36
36
  cwd=$(pwd)
37
+ # Pass the output type, as FSL writes it instead of the type of the extension
38
+ if [ -n "${FSLOUTPUTTYPE}" ]; then
39
+ docker_args+=("-e FSLOUTPUTTYPE=${FSLOUTPUTTYPE}")
40
+ fi
37
41
  cmd="docker run --rm ${docker_args[*]} -v ${cwd}:${cwd} -w ${cwd} brainlife/fsl ${corrected_args[*]}"
38
42
  echo "Running command: ${cmd}" >&2
39
43
  ${cmd}
@@ -100,16 +100,17 @@ class ANTsMapsWarper:
100
100
  logger.debug("Using ANTs for maps transformation")
101
101
 
102
102
  # Save existing maps image to a tempfile
103
- prewarp_maps_path = element_tempdir / "prewarp_maps.nii.gz"
103
+ prewarp_maps_path = element_tempdir / "prewarp_maps.nii"
104
104
  nib.save(maps_img, prewarp_maps_path)
105
105
 
106
106
  # Create a tempfile for warped output
107
- warped_maps_path = element_tempdir / "maps_warped.nii.gz"
107
+ warped_maps_path = element_tempdir / "maps_warped.nii"
108
108
  # Set antsApplyTransforms command
109
109
  apply_transforms_cmd = [
110
110
  "antsApplyTransforms",
111
111
  "-d 3",
112
112
  "-e 3",
113
+ "--float 1",
113
114
  "-n LanczosWindowedSinc",
114
115
  f"-i {prewarp_maps_path.resolve()}",
115
116
  # use resampled reference
@@ -133,20 +134,21 @@ class ANTsMapsWarper:
133
134
  extra_input=None,
134
135
  )
135
136
  # Save template to a tempfile
136
- template_space_img_path = element_tempdir / f"{dst}_T1w.nii.gz"
137
+ template_space_img_path = element_tempdir / f"{dst}_T1w.nii"
137
138
  nib.save(template_space_img, template_space_img_path)
138
139
 
139
140
  # Save existing maps image to a tempfile
140
- prewarp_maps_path = element_tempdir / "prewarp_maps.nii.gz"
141
+ prewarp_maps_path = element_tempdir / "prewarp_maps.nii"
141
142
  nib.save(maps_img, prewarp_maps_path)
142
143
 
143
144
  # Create a tempfile for warped output
144
- warped_maps_path = element_tempdir / "maps_warped.nii.gz"
145
+ warped_maps_path = element_tempdir / "maps_warped.nii"
145
146
  # Set antsApplyTransforms command
146
147
  apply_transforms_cmd = [
147
148
  "antsApplyTransforms",
148
149
  "-d 3",
149
150
  "-e 3",
151
+ "--float 1",
150
152
  "-n LanczosWindowedSinc",
151
153
  f"-i {prewarp_maps_path.resolve()}",
152
154
  f"-r {template_space_img_path.resolve()}",
@@ -66,13 +66,14 @@ class FSLMapsWarper:
66
66
  )
67
67
 
68
68
  # Save existing maps image to a tempfile
69
- prewarp_maps_path = element_tempdir / "prewarp_maps.nii.gz"
69
+ prewarp_maps_path = element_tempdir / "prewarp_maps.nii"
70
70
  nib.save(maps_img, prewarp_maps_path)
71
71
 
72
72
  # Create a tempfile for warped output
73
- warped_maps_path = element_tempdir / "maps_warped.nii.gz"
73
+ warped_maps_path = element_tempdir / "maps_warped.nii"
74
74
  # Set applywarp command
75
75
  applywarp_cmd = [
76
+ "FSLOUTPUTTYPE=NIFTI",
76
77
  "applywarp",
77
78
  "--interp=spline",
78
79
  f"-i {prewarp_maps_path.resolve()}",
@@ -121,16 +121,17 @@ class ANTsMaskWarper:
121
121
  logger.debug("Using ANTs for mask transformation")
122
122
 
123
123
  # Save existing mask image to a tempfile
124
- prewarp_mask_path = element_tempdir / "prewarp_mask.nii.gz"
124
+ prewarp_mask_path = element_tempdir / "prewarp_mask.nii"
125
125
  nib.save(mask_img, prewarp_mask_path)
126
126
 
127
127
  # Create a tempfile for warped output
128
- warped_mask_path = element_tempdir / "mask_warped.nii.gz"
128
+ warped_mask_path = element_tempdir / "mask_warped.nii"
129
129
  # Set antsApplyTransforms command
130
130
  apply_transforms_cmd = [
131
131
  "antsApplyTransforms",
132
132
  "-d 3",
133
133
  "-e 3",
134
+ "--float 1",
134
135
  "-n 'GenericLabel[NearestNeighbor]'",
135
136
  f"-i {prewarp_mask_path.resolve()}",
136
137
  # use resampled reference
@@ -154,20 +155,21 @@ class ANTsMaskWarper:
154
155
  extra_input=None,
155
156
  )
156
157
  # Save template to a tempfile
157
- template_space_img_path = element_tempdir / f"{dst}_T1w.nii.gz"
158
+ template_space_img_path = element_tempdir / f"{dst}_T1w.nii"
158
159
  nib.save(template_space_img, template_space_img_path)
159
160
 
160
161
  # Save existing mask image to a tempfile
161
- prewarp_mask_path = element_tempdir / "prewarp_mask.nii.gz"
162
+ prewarp_mask_path = element_tempdir / "prewarp_mask.nii"
162
163
  nib.save(mask_img, prewarp_mask_path)
163
164
 
164
165
  # Create a tempfile for warped output
165
- warped_mask_path = element_tempdir / "mask_warped.nii.gz"
166
+ warped_mask_path = element_tempdir / "mask_warped.nii"
166
167
  # Set antsApplyTransforms command
167
168
  apply_transforms_cmd = [
168
169
  "antsApplyTransforms",
169
170
  "-d 3",
170
171
  "-e 3",
172
+ "--float 1",
171
173
  f"-n {_get_interpolation_method(mask_img)}",
172
174
  f"-i {prewarp_mask_path.resolve()}",
173
175
  f"-r {template_space_img_path.resolve()}",
@@ -87,13 +87,14 @@ class FSLMaskWarper:
87
87
  )
88
88
 
89
89
  # Save existing mask image to a tempfile
90
- prewarp_mask_path = element_tempdir / "prewarp_mask.nii.gz"
90
+ prewarp_mask_path = element_tempdir / "prewarp_mask.nii"
91
91
  nib.save(mask_img, prewarp_mask_path)
92
92
 
93
93
  # Create a tempfile for warped output
94
- warped_mask_path = element_tempdir / "mask_warped.nii.gz"
94
+ warped_mask_path = element_tempdir / "mask_warped.nii"
95
95
  # Set applywarp command
96
96
  applywarp_cmd = [
97
+ "FSLOUTPUTTYPE=NIFTI",
97
98
  "applywarp",
98
99
  f"--interp={_get_interpolation_method(mask_img)}",
99
100
  f"-i {prewarp_mask_path.resolve()}",
@@ -101,19 +101,20 @@ class ANTsParcellationWarper:
101
101
 
102
102
  # Save existing parcellation image to a tempfile
103
103
  prewarp_parcellation_path = (
104
- element_tempdir / "prewarp_parcellation.nii.gz"
104
+ element_tempdir / "prewarp_parcellation.nii"
105
105
  )
106
106
  nib.save(parcellation_img, prewarp_parcellation_path)
107
107
 
108
108
  # Create a tempfile for warped output
109
109
  warped_parcellation_path = (
110
- element_tempdir / "parcellation_warped.nii.gz"
110
+ element_tempdir / "parcellation_warped.nii"
111
111
  )
112
112
  # Set antsApplyTransforms command
113
113
  apply_transforms_cmd = [
114
114
  "antsApplyTransforms",
115
115
  "-d 3",
116
116
  "-e 3",
117
+ "--float 1",
117
118
  "-n 'GenericLabel[NearestNeighbor]'",
118
119
  f"-i {prewarp_parcellation_path.resolve()}",
119
120
  # use resampled reference
@@ -139,24 +140,25 @@ class ANTsParcellationWarper:
139
140
  extra_input=None,
140
141
  )
141
142
  # Save template to a tempfile
142
- template_space_img_path = element_tempdir / f"{dst}_T1w.nii.gz"
143
+ template_space_img_path = element_tempdir / f"{dst}_T1w.nii"
143
144
  nib.save(template_space_img, template_space_img_path)
144
145
 
145
146
  # Save existing parcellation image to a tempfile
146
147
  prewarp_parcellation_path = (
147
- element_tempdir / "prewarp_parcellation.nii.gz"
148
+ element_tempdir / "prewarp_parcellation.nii"
148
149
  )
149
150
  nib.save(parcellation_img, prewarp_parcellation_path)
150
151
 
151
152
  # Create a tempfile for warped output
152
153
  warped_parcellation_path = (
153
- element_tempdir / "parcellation_warped.nii.gz"
154
+ element_tempdir / "parcellation_warped.nii"
154
155
  )
155
156
  # Set antsApplyTransforms command
156
157
  apply_transforms_cmd = [
157
158
  "antsApplyTransforms",
158
159
  "-d 3",
159
160
  "-e 3",
161
+ "--float 1",
160
162
  "-n 'GenericLabel[NearestNeighbor]'",
161
163
  f"-i {prewarp_parcellation_path.resolve()}",
162
164
  f"-r {template_space_img_path.resolve()}",
@@ -67,16 +67,15 @@ class FSLParcellationWarper:
67
67
 
68
68
  # Save existing parcellation image to a tempfile
69
69
  prewarp_parcellation_path = (
70
- element_tempdir / "prewarp_parcellation.nii.gz"
70
+ element_tempdir / "prewarp_parcellation.nii"
71
71
  )
72
72
  nib.save(parcellation_img, prewarp_parcellation_path)
73
73
 
74
74
  # Create a tempfile for warped output
75
- warped_parcellation_path = (
76
- element_tempdir / "parcellation_warped.nii.gz"
77
- )
75
+ warped_parcellation_path = element_tempdir / "parcellation_warped.nii"
78
76
  # Set applywarp command
79
77
  applywarp_cmd = [
78
+ "FSLOUTPUTTYPE=NIFTI",
80
79
  "applywarp",
81
80
  "--interp=nn",
82
81
  f"-i {prewarp_parcellation_path.resolve()}",
@@ -57,6 +57,7 @@ class AFNIALFF(metaclass=Singleton):
57
57
  highpass: float,
58
58
  lowpass: float,
59
59
  tr: float | None,
60
+ mask_path: Path | None = None,
60
61
  ) -> tuple["Nifti1Image", "Nifti1Image", Path, Path]:
61
62
  """Compute ALFF + fALFF map.
62
63
 
@@ -70,6 +71,10 @@ class AFNIALFF(metaclass=Singleton):
70
71
  Lowpass cutoff frequency.
71
72
  tr : positive float, optional
72
73
  The Repetition Time of the BOLD data.
74
+ mask_path : pathlib.Path, optional
75
+ Path to the mask to restrict the computation to. The voxels
76
+ outside the mask are set to 0. If None, all the voxels are used
77
+ (default None).
73
78
 
74
79
  Returns
75
80
  -------
@@ -90,18 +95,23 @@ class AFNIALFF(metaclass=Singleton):
90
95
  prefix="afni_lff"
91
96
  )
92
97
 
93
- # Set 3dRSFC command
98
+ # Set 3dRSFC command; only the parameters are needed, not the
99
+ # bandpassed time series (-no_rs_out)
94
100
  lff_out_path_prefix = element_tempdir / "output"
95
101
  bp_cmd = [
96
102
  "3dRSFC",
97
103
  f"-prefix {lff_out_path_prefix.resolve()}",
98
104
  f"-input {input_path.resolve()}",
99
105
  f"-band {highpass} {lowpass}",
100
- "-no_rsfa -nosat -nodetrend",
106
+ "-no_rsfa -nosat -nodetrend -no_rs_out",
101
107
  ]
102
108
  # Check tr
103
109
  if tr is not None:
104
110
  bp_cmd.append(f"-dt {tr}")
111
+ # Restrict the computation to the mask, which reduces the memory and
112
+ # time used by 3dRSFC
113
+ if mask_path is not None:
114
+ bp_cmd.append(f"-mask {mask_path.resolve()}")
105
115
  # Call 3dRSFC
106
116
  run_ext_cmd(name="3dRSFC", cmd=bp_cmd)
107
117
 
@@ -50,6 +50,7 @@ class JuniferALFF(metaclass=Singleton):
50
50
  highpass: float,
51
51
  lowpass: float,
52
52
  tr: float | None,
53
+ mask_path: Path | None = None,
53
54
  ) -> tuple["Nifti1Image", "Nifti1Image", Path, Path]:
54
55
  """Compute ALFF + fALFF map.
55
56
 
@@ -63,6 +64,10 @@ class JuniferALFF(metaclass=Singleton):
63
64
  Lowpass cutoff frequency.
64
65
  tr : positive float, optional
65
66
  The Repetition Time of the BOLD data.
67
+ mask_path : pathlib.Path, optional
68
+ Path to the mask to restrict the computation to. The voxels
69
+ outside the mask are set to 0. If None, all the voxels are used
70
+ (default None).
66
71
 
67
72
  Returns
68
73
  -------
@@ -102,15 +107,22 @@ class JuniferALFF(metaclass=Singleton):
102
107
  f"nyquist = {fft_freqs[-1]}"
103
108
  )
104
109
 
105
- # Process voxels in chunks to bound FFT memory
110
+ # Process voxels (only the ones in the mask, if any) in chunks to
111
+ # bound FFT memory
106
112
  flat = niimg_data.reshape(-1, n_timepoints)
107
- numerator = np.empty(flat.shape[0])
108
- denominator = np.empty(flat.shape[0])
113
+ if mask_path is not None:
114
+ mask_data = np.squeeze(np.asarray(nib.load(mask_path).dataobj))
115
+ voxels = np.flatnonzero(mask_data.reshape(-1) != 0)
116
+ else:
117
+ voxels = np.arange(flat.shape[0])
118
+ numerator = np.zeros(flat.shape[0])
119
+ denominator = np.zeros(flat.shape[0])
109
120
  chunk = 20_000
110
- for start in range(0, flat.shape[0], chunk):
111
- amp = np.abs(sp.fft.rfft(flat[start : start + chunk], axis=-1))
112
- denominator[start : start + chunk] = amp @ weights
113
- numerator[start : start + chunk] = amp @ band_weights
121
+ for start in range(0, len(voxels), chunk):
122
+ t_voxels = voxels[start : start + chunk]
123
+ amp = np.abs(sp.fft.rfft(flat[t_voxels], axis=-1))
124
+ denominator[t_voxels] = amp @ weights
125
+ numerator[t_voxels] = amp @ band_weights
114
126
  spatial_shape = niimg_data.shape[:-1]
115
127
  numerator = numerator.reshape(spatial_shape)
116
128
  denominator = denominator.reshape(spatial_shape)
@@ -137,8 +149,8 @@ class JuniferALFF(metaclass=Singleton):
137
149
  element_tempdir = WorkDirManager().get_element_tempdir(
138
150
  prefix="junifer_lff"
139
151
  )
140
- output_alff_path = element_tempdir / "output_alff.nii.gz"
141
- output_falff_path = element_tempdir / "output_falff.nii.gz"
152
+ output_alff_path = element_tempdir / "output_alff.nii"
153
+ output_falff_path = element_tempdir / "output_falff.nii"
142
154
  # Save computed data to file
143
155
  nib.save(alff_data, output_alff_path)
144
156
  nib.save(falff_data, output_falff_path)
@@ -17,11 +17,13 @@ from typing import (
17
17
 
18
18
  from pydantic import BeforeValidator, PositiveFloat
19
19
 
20
+ from ...data import get_data
20
21
  from ...datagrabber import DataType
21
22
  from ...storage import StorageType
22
23
  from ...typing import ConditionalDependencies, MarkerInOutMappings
23
24
  from ...utils import ensure_list_or_none
24
25
  from ..base import BaseMarker, logger
26
+ from ..utils import _save_mask
25
27
  from ._afni_falff import AFNIALFF
26
28
  from ._junifer_falff import JuniferALFF
27
29
 
@@ -66,8 +68,10 @@ class ALFFBase(BaseMarker):
66
68
  The parameters to pass to the aggregation function.
67
69
  See :func:`.get_aggfunc_by_name` for options (default None).
68
70
  masks : str, dict, list of them or None, optional
69
- The specification of the masks to apply to regions before extracting
70
- signals. Check :ref:`Using Masks <using_masks>` for more details.
71
+ The specification of the masks to apply. The ALFF and fALFF
72
+ computation is restricted to the voxels in the mask, and the mask is
73
+ also applied to regions before extracting signals. Check
74
+ :ref:`Using Masks <using_masks>` for more details.
71
75
  If None, will not apply any mask (default None).
72
76
  name : str or None, optional
73
77
  The name of the marker.
@@ -115,6 +119,7 @@ class ALFFBase(BaseMarker):
115
119
  def _compute(
116
120
  self,
117
121
  input_data: dict[str, Any],
122
+ extra_input: dict[str, Any] | None = None,
118
123
  ) -> tuple["Nifti1Image", "Nifti1Image", Path, Path]:
119
124
  """Compute ALFF and fALFF.
120
125
 
@@ -123,7 +128,8 @@ class ALFFBase(BaseMarker):
123
128
  input_data : dict
124
129
  The input to the marker.
125
130
  extra_input : dict, optional
126
- The other fields in the pipeline data object (default None).
131
+ The other fields in the pipeline data object. Used to compute
132
+ the mask in the space of ``input_data`` (default None).
127
133
 
128
134
  Returns
129
135
  -------
@@ -144,12 +150,26 @@ class ALFFBase(BaseMarker):
144
150
  estimator = AFNIALFF()
145
151
  elif self.using == "junifer":
146
152
  estimator = JuniferALFF()
153
+ # Get mask in the space of the input data
154
+ mask_path = None
155
+ if self.masks is not None:
156
+ logger.debug(f"Masking with {self.masks}")
157
+ mask_path = _save_mask(
158
+ get_data(
159
+ kind="mask",
160
+ names=self.masks,
161
+ target_data=input_data,
162
+ extra_input=extra_input,
163
+ ),
164
+ prefix="alff_mask",
165
+ )
147
166
  # Compute ALFF + fALFF
148
167
  alff, falff, alff_path, falff_path = estimator.compute( # type: ignore
149
168
  input_path=input_data["path"],
150
169
  highpass=self.highpass,
151
170
  lowpass=self.lowpass,
152
171
  tr=self.tr,
172
+ mask_path=mask_path,
153
173
  )
154
174
 
155
175
  # If the input data space is native already, the original path should
@@ -92,7 +92,7 @@ class ALFFMaps(ALFFBase):
92
92
 
93
93
  # Compute ALFF + fALFF
94
94
  alff_output, falff_output, alff_output_path, falff_output_path = (
95
- self._compute(input_data=input)
95
+ self._compute(input_data=input, extra_input=extra_input)
96
96
  )
97
97
 
98
98
  # Perform aggregation on ALFF + fALFF
@@ -104,7 +104,7 @@ class ALFFParcels(ALFFBase):
104
104
 
105
105
  # Compute ALFF + fALFF
106
106
  alff_output, falff_output, alff_output_path, falff_output_path = (
107
- self._compute(input_data=input)
107
+ self._compute(input_data=input, extra_input=extra_input)
108
108
  )
109
109
 
110
110
  # Perform aggregation on ALFF + fALFF
@@ -113,7 +113,7 @@ class ALFFSpheres(ALFFBase):
113
113
 
114
114
  # Compute ALFF + fALFF
115
115
  alff_output, falff_output, alff_output_path, falff_output_path = (
116
- self._compute(input_data=input)
116
+ self._compute(input_data=input, extra_input=extra_input)
117
117
  )
118
118
 
119
119
  # Perform aggregation on ALFF / fALFF
@@ -0,0 +1,99 @@
1
+ """Provide tests for the ALFF and fALFF computation with masks."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # License: AGPL
5
+
6
+ from pathlib import Path
7
+
8
+ import nibabel as nib
9
+ import numpy as np
10
+ import pytest
11
+ from numpy.testing import assert_allclose, assert_array_equal
12
+
13
+ from junifer.markers.falff._afni_falff import AFNIALFF
14
+ from junifer.markers.falff._junifer_falff import JuniferALFF
15
+ from junifer.pipeline import WorkDirManager
16
+ from junifer.pipeline.utils import _check_afni
17
+
18
+
19
+ def _save(data: np.ndarray, path: Path, tr: float = 2.0) -> Path:
20
+ """Save data as NIfTI, with the TR in the header for 4D data."""
21
+ img = nib.Nifti1Image(data, np.eye(4))
22
+ if data.ndim == 4:
23
+ img.header.set_zooms((1.0, 1.0, 1.0, tr))
24
+ nib.save(img, path)
25
+ return path
26
+
27
+
28
+ def _data(tmp_path: Path) -> tuple[Path, Path, np.ndarray]:
29
+ """Create BOLD data and a mask of half of the voxels."""
30
+ data = np.random.default_rng(0).normal(size=(6, 6, 6, 100)) + 100
31
+ bold_path = _save(data.astype(np.float32), tmp_path / "bold.nii")
32
+ mask = np.zeros((6, 6, 6), dtype=np.uint8)
33
+ mask[3:] = 1
34
+ mask_path = _save(mask, tmp_path / "mask.nii")
35
+ return bold_path, mask_path, mask.astype(bool)
36
+
37
+
38
+ @pytest.mark.parametrize(
39
+ "estimator",
40
+ [
41
+ JuniferALFF,
42
+ pytest.param(
43
+ AFNIALFF,
44
+ marks=pytest.mark.skipif(
45
+ _check_afni() is False, reason="requires AFNI to be in PATH"
46
+ ),
47
+ ),
48
+ ],
49
+ )
50
+ def test_ALFF_mask(
51
+ estimator: type[JuniferALFF | AFNIALFF], tmp_path: Path
52
+ ) -> None:
53
+ """Test the ALFF and fALFF computation is restricted to the mask.
54
+
55
+ The values are computed for each voxel, so inside the mask they are the
56
+ same as without mask, and outside the mask they are 0.
57
+
58
+ Parameters
59
+ ----------
60
+ estimator : JuniferALFF or AFNIALFF
61
+ The ALFF estimator to test.
62
+ tmp_path : pathlib.Path
63
+ The path to the test directory.
64
+
65
+ """
66
+ WorkDirManager().workdir = tmp_path
67
+ bold_path, mask_path, mask = _data(tmp_path)
68
+ kwargs = {"highpass": 0.01, "lowpass": 0.1, "tr": 2.0}
69
+ masked = estimator().compute(bold_path, mask_path=mask_path, **kwargs)
70
+ unmasked = estimator().compute(bold_path, **kwargs)
71
+ for i_map in range(2): # ALFF and fALFF
72
+ t_masked = masked[i_map].get_fdata()
73
+ t_unmasked = unmasked[i_map].get_fdata()
74
+ assert_array_equal(t_masked[~mask], 0)
75
+ assert (t_masked[mask] > 0).all()
76
+ assert_allclose(t_masked[mask], t_unmasked[mask], rtol=1e-6)
77
+
78
+
79
+ @pytest.mark.skipif(
80
+ _check_afni() is False, reason="requires AFNI to be in PATH"
81
+ )
82
+ def test_AFNIALFF_no_time_series(tmp_path: Path) -> None:
83
+ """Test 3dRSFC does not output the bandpassed time series.
84
+
85
+ Parameters
86
+ ----------
87
+ tmp_path : pathlib.Path
88
+ The path to the test directory.
89
+
90
+ """
91
+ WorkDirManager().workdir = tmp_path
92
+ bold_path, mask_path, _ = _data(tmp_path)
93
+ alff_path = AFNIALFF().compute(
94
+ bold_path, highpass=0.01, lowpass=0.1, tr=2.0, mask_path=mask_path
95
+ )[2]
96
+ # Only the parameters (ALFF, fALFF and mALFF) are in the output directory
97
+ outputs = {x.name for x in alff_path.parent.iterdir()}
98
+ assert not any("_LFF+" in x for x in outputs)
99
+ assert any("_ALFF+" in x for x in outputs)
@@ -204,7 +204,7 @@ class JuniferReHo(metaclass=Singleton):
204
204
  element_tempdir = WorkDirManager().get_element_tempdir(
205
205
  prefix="junifer_reho"
206
206
  )
207
- output_path = element_tempdir / "output.nii.gz"
207
+ output_path = element_tempdir / "output.nii"
208
208
  # Save computed data to file
209
209
  nib.save(output_data, output_path)
210
210
 
@@ -3,7 +3,6 @@
3
3
  # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
4
  # License: AGPL
5
5
 
6
- import hashlib
7
6
  from enum import StrEnum
8
7
  from pathlib import Path
9
8
  from typing import (
@@ -13,17 +12,15 @@ from typing import (
13
12
  ClassVar,
14
13
  )
15
14
 
16
- import nibabel as nib
17
- import numpy as np
18
15
  from pydantic import BeforeValidator
19
16
 
20
17
  from ...data import get_data
21
18
  from ...datagrabber import DataType
22
- from ...pipeline import WorkDirManager
23
19
  from ...storage import StorageType
24
20
  from ...typing import ConditionalDependencies, MarkerInOutMappings
25
21
  from ...utils import ensure_list_or_none
26
22
  from ..base import BaseMarker, logger
23
+ from ..utils import _save_mask
27
24
  from ._afni_reho import AFNIReHo
28
25
  from ._junifer_reho import JuniferReHo
29
26
 
@@ -199,7 +196,8 @@ class ReHoBase(BaseMarker):
199
196
  names=self.masks,
200
197
  target_data=input_data,
201
198
  extra_input=extra_input,
202
- )
199
+ ),
200
+ prefix="reho_mask",
203
201
  )
204
202
  # Compute reho
205
203
  reho_map, reho_map_path = estimator.compute( # type: ignore
@@ -217,38 +215,3 @@ class ReHoBase(BaseMarker):
217
215
  return reho_map, input_data["path"]
218
216
 
219
217
  return reho_map, reho_map_path
220
-
221
-
222
- def _save_mask(mask_img: "Nifti1Image") -> Path:
223
- """Save mask to the working directory, named by its content.
224
-
225
- The same mask always gets the same path, so that the cached ReHo
226
- computation can be reused by markers using the same mask.
227
-
228
- Parameters
229
- ----------
230
- mask_img : Niimg-like object
231
- The mask to save.
232
-
233
- Returns
234
- -------
235
- pathlib.Path
236
- The path to the saved mask.
237
-
238
- """
239
- mask_data = np.squeeze(np.asarray(mask_img.dataobj)) != 0
240
- digest = hashlib.sha256()
241
- digest.update(str(mask_data.shape).encode())
242
- digest.update(np.packbits(mask_data).tobytes())
243
- digest.update(mask_img.affine.tobytes())
244
- mask_path = (
245
- WorkDirManager().workdir / f"reho_mask_{digest.hexdigest()[:16]}.nii"
246
- )
247
- if not mask_path.exists():
248
- nib.save(
249
- nib.Nifti1Image(
250
- mask_data.astype(np.uint8), mask_img.affine, mask_img.header
251
- ),
252
- mask_path,
253
- )
254
- return mask_path