junifer 0.0.8.dev306__tar.gz → 0.0.8.dev311__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 (592) hide show
  1. {junifer-0.0.8.dev306/junifer.egg-info → junifer-0.0.8.dev311}/PKG-INFO +1 -1
  2. junifer-0.0.8.dev311/docs/changes/newsfragments/524.bugfix +1 -0
  3. junifer-0.0.8.dev311/docs/changes/newsfragments/524.bugfix.1 +1 -0
  4. junifer-0.0.8.dev311/docs/changes/newsfragments/524.change +1 -0
  5. junifer-0.0.8.dev311/docs/changes/newsfragments/524.change.1 +1 -0
  6. junifer-0.0.8.dev311/docs/changes/newsfragments/524.change.2 +1 -0
  7. junifer-0.0.8.dev311/docs/changes/newsfragments/524.doc +1 -0
  8. junifer-0.0.8.dev311/docs/changes/newsfragments/524.enh +1 -0
  9. junifer-0.0.8.dev311/docs/changes/newsfragments/524.feature +1 -0
  10. junifer-0.0.8.dev311/docs/changes/newsfragments/524.feature.1 +1 -0
  11. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/datagrabber.rst +125 -4
  12. junifer-0.0.8.dev311/docs/understanding/datagrabber.rst +302 -0
  13. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/using/codeless.rst +14 -0
  14. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/using/queueing.rst +4 -2
  15. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/using/running.rst +36 -1
  16. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/_version.py +3 -3
  17. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/functions.py +22 -18
  18. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/tests/test_functions.py +265 -12
  19. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/piop1.py +7 -54
  20. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/piop2.py +7 -41
  21. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/tests/test_piop1.py +5 -0
  22. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/tests/test_piop2.py +5 -0
  23. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/base.py +148 -30
  24. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/dmcc13_benchmark.py +8 -105
  25. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/hcp1200.py +8 -56
  26. junifer-0.0.8.dev311/junifer/datagrabber/multiple.py +299 -0
  27. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/pattern.py +297 -101
  28. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_base.py +13 -0
  29. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +8 -2
  30. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_multiple.py +251 -4
  31. junifer-0.0.8.dev311/junifer/datagrabber/tests/test_pattern.py +849 -0
  32. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_pattern_datalad.py +6 -3
  33. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311/junifer.egg-info}/PKG-INFO +1 -1
  34. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer.egg-info/SOURCES.txt +9 -0
  35. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer.egg-info/scm_file_list.json +9 -0
  36. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer.egg-info/scm_version.json +2 -2
  37. junifer-0.0.8.dev306/docs/understanding/datagrabber.rst +0 -65
  38. junifer-0.0.8.dev306/junifer/datagrabber/multiple.py +0 -217
  39. junifer-0.0.8.dev306/junifer/datagrabber/tests/test_pattern.py +0 -378
  40. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.dockerignore +0 -0
  41. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  42. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  43. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  44. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  45. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  46. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  47. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/dependabot.yml +0 -0
  48. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/pull_request_template.md +0 -0
  49. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/workflows/check-stale.yml +0 -0
  50. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/workflows/ci.yml +0 -0
  51. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/workflows/docker-publish.yml +0 -0
  52. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/workflows/docs-preview.yml +0 -0
  53. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/workflows/docs.yml +0 -0
  54. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/workflows/lint.yml +0 -0
  55. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.github/workflows/publish.yml +0 -0
  56. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.gitignore +0 -0
  57. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.gitmodules +0 -0
  58. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.pre-commit-config.yaml +0 -0
  59. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/.python-version +0 -0
  60. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/AUTHORS.rst +0 -0
  61. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/Dockerfile +0 -0
  62. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/Dockerfile-ci +0 -0
  63. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/LICENSE.md +0 -0
  64. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/README.md +0 -0
  65. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/codecov.yml +0 -0
  66. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/conda-env.yml +0 -0
  67. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/Makefile +0 -0
  68. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/_static/css/custom.css +0 -0
  69. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/_static/css/version_selector.css +0 -0
  70. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/_static/js/custom.js +0 -0
  71. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/_templates/versions.html +0 -0
  72. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/api.rst +0 -0
  73. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/cli.rst +0 -0
  74. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/configs.rst +0 -0
  75. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/data.rst +0 -0
  76. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/datagrabbers.rst +0 -0
  77. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/datareaders.rst +0 -0
  78. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/index.rst +0 -0
  79. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/markers.rst +0 -0
  80. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/nilearn.rst +0 -0
  81. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/onthefly.rst +0 -0
  82. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/pipeline.rst +0 -0
  83. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/preprocessing.rst +0 -0
  84. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/stats.rst +0 -0
  85. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/storage.rst +0 -0
  86. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/testing.rst +0 -0
  87. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/api/utils.rst +0 -0
  88. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/builtin.rst +0 -0
  89. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/contributors.inc +0 -0
  90. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/.gitignore +0 -0
  91. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/239.enh +0 -0
  92. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/364.doc +0 -0
  93. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/364.enh +0 -0
  94. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/364.feature +0 -0
  95. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/474.misc +0 -0
  96. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/482.bugfix +0 -0
  97. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/492.bugfix +0 -0
  98. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/499.enh +0 -0
  99. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/502.bugfix +0 -0
  100. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/503.enh +0 -0
  101. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/504.bugfix +0 -0
  102. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/504.misc +0 -0
  103. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/509.enh +0 -0
  104. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/510.bugfix +0 -0
  105. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.bugfix +0 -0
  106. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.bugfix.1 +0 -0
  107. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.change +0 -0
  108. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.enh +0 -0
  109. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.enh.1 +0 -0
  110. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.feature +0 -0
  111. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.misc +0 -0
  112. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.misc.1 +0 -0
  113. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/513.doc +0 -0
  114. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/513.misc +0 -0
  115. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/514.bugfix +0 -0
  116. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/514.bugfix.1 +0 -0
  117. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/514.enh +0 -0
  118. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.doc +0 -0
  119. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.enh +0 -0
  120. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.enh.1 +0 -0
  121. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.misc +0 -0
  122. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.misc.1 +0 -0
  123. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.bugfix +0 -0
  124. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.bugfix.1 +0 -0
  125. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.bugfix.2 +0 -0
  126. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.change +0 -0
  127. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.change.1 +0 -0
  128. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.misc +0 -0
  129. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix +0 -0
  130. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.1 +0 -0
  131. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.2 +0 -0
  132. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.3 +0 -0
  133. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.4 +0 -0
  134. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.5 +0 -0
  135. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.6 +0 -0
  136. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.change +0 -0
  137. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.doc +0 -0
  138. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc +0 -0
  139. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc.1 +0 -0
  140. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc.2 +0 -0
  141. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc.3 +0 -0
  142. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.removal +0 -0
  143. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/521.bugfix +0 -0
  144. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/522.bugfix +0 -0
  145. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/522.enh +0 -0
  146. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/changes/newsfragments/523.misc +0 -0
  147. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/conf.py +0 -0
  148. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/contribution.rst +0 -0
  149. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/confounds_format.rst +0 -0
  150. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/coordinates.rst +0 -0
  151. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/data_dump_asset.rst +0 -0
  152. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/data_registries.rst +0 -0
  153. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/data_types.rst +0 -0
  154. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/dependencies.rst +0 -0
  155. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/extension.rst +0 -0
  156. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/index.rst +0 -0
  157. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/logging.rst +0 -0
  158. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/maps.rst +0 -0
  159. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/marker.rst +0 -0
  160. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/masks.rst +0 -0
  161. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/parcellations.rst +0 -0
  162. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/plugins.rst +0 -0
  163. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/extending/preprocessor.rst +0 -0
  164. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/faq.rst +0 -0
  165. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/help.rst +0 -0
  166. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/images/junifer_logo.png +0 -0
  167. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/index.rst +0 -0
  168. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/installation.rst +0 -0
  169. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/links.inc +0 -0
  170. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/maintaining.rst +0 -0
  171. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/poly.py +0 -0
  172. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/poly_files/patches/version_banner.html +0 -0
  173. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/poly_files/patches/versions.html +0 -0
  174. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/poly_files/templates/index.html +0 -0
  175. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/starting.rst +0 -0
  176. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/understanding/data.rst +0 -0
  177. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/understanding/datareader.rst +0 -0
  178. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/understanding/index.rst +0 -0
  179. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/understanding/marker.rst +0 -0
  180. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/understanding/pipeline.rst +0 -0
  181. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/understanding/preprocess.rst +0 -0
  182. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/understanding/storage.rst +0 -0
  183. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/using/configuring.rst +0 -0
  184. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/using/dumping.rst +0 -0
  185. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/using/index.rst +0 -0
  186. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/using/masks.rst +0 -0
  187. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/docs/whats_new.rst +0 -0
  188. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/README.rst +0 -0
  189. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/norun_hcpfc_pearson.py +0 -0
  190. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/norun_ukbvm_gmd.py +0 -0
  191. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/run_compute_parcel_mean.py +0 -0
  192. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/run_datagrabber_bids_datalad.py +0 -0
  193. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/run_ets_rss_marker.py +0 -0
  194. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/run_junifer_julearn.py +0 -0
  195. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/run_run_gmd_mean.py +0 -0
  196. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/yamls/gmd_mean.yaml +0 -0
  197. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  198. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  199. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  200. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/ignore_words.txt +0 -0
  201. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/__init__.py +0 -0
  202. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/__init__.pyi +0 -0
  203. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/__init__.py +0 -0
  204. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/__init__.pyi +0 -0
  205. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/decorators.py +0 -0
  206. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/py.typed +0 -0
  207. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/__init__.py +0 -0
  208. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/__init__.pyi +0 -0
  209. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  210. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  211. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/py.typed +0 -0
  212. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  213. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  214. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  215. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  216. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/afni/3dRSFC +0 -0
  217. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/afni/3dReHo +0 -0
  218. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/afni/afni +0 -0
  219. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  220. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/ants/ResampleImage +0 -0
  221. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/ants/antsApplyTransforms +0 -0
  222. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  223. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  224. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mri_binarize +0 -0
  225. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mri_mc +0 -0
  226. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mri_pretess +0 -0
  227. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mris_convert +0 -0
  228. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  229. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/fsl/applywarp +0 -0
  230. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/fsl/flirt +0 -0
  231. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/fsl/img2imgcoord +0 -0
  232. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  233. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/fsl/std2imgcoord +0 -0
  234. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/run_conda.bash +0 -0
  235. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/run_conda.zsh +0 -0
  236. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/run_venv.bash +0 -0
  237. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/res/run_venv.zsh +0 -0
  238. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/api/tests/test_decorators.py +0 -0
  239. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/__init__.py +0 -0
  240. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/__init__.pyi +0 -0
  241. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/cli.py +0 -0
  242. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/parser.py +0 -0
  243. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/py.typed +0 -0
  244. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  245. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  246. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  247. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/tests/test_cli.py +0 -0
  248. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/tests/test_cli_utils.py +0 -0
  249. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/cli/utils.py +0 -0
  250. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/__init__.py +0 -0
  251. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/__init__.pyi +0 -0
  252. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/__init__.py +0 -0
  253. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/__init__.pyi +0 -0
  254. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  255. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  256. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  257. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  258. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  259. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  260. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  261. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  262. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  263. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  264. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  265. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  266. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  267. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/juseless/py.typed +0 -0
  268. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/configs/py.typed +0 -0
  269. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/conftest.py +0 -0
  270. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/__init__.py +0 -0
  271. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/__init__.pyi +0 -0
  272. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/_dispatch.py +0 -0
  273. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/coordinates/__init__.py +0 -0
  274. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/coordinates/__init__.pyi +0 -0
  275. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  276. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/coordinates/_coordinates.py +0 -0
  277. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  278. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  279. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/coordinates/tests/test_coordinates_names.py +0 -0
  280. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/maps/__init__.py +0 -0
  281. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/maps/__init__.pyi +0 -0
  282. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/maps/_ants_maps_warper.py +0 -0
  283. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/maps/_fsl_maps_warper.py +0 -0
  284. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/maps/_maps.py +0 -0
  285. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/maps/tests/test_maps.py +0 -0
  286. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/masks/__init__.py +0 -0
  287. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/masks/__init__.pyi +0 -0
  288. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/masks/_ants_mask_warper.py +0 -0
  289. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  290. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/masks/_masks.py +0 -0
  291. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/masks/tests/test_masks.py +0 -0
  292. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/parcellations/__init__.py +0 -0
  293. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/parcellations/__init__.pyi +0 -0
  294. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  295. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  296. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/parcellations/_parcellations.py +0 -0
  297. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  298. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/pipeline_data_registry_base.py +0 -0
  299. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/py.typed +0 -0
  300. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/template_spaces.py +0 -0
  301. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/tests/test_data_utils.py +0 -0
  302. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/tests/test_dispatch.py +0 -0
  303. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/tests/test_template_spaces.py +0 -0
  304. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/data/utils.py +0 -0
  305. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/__init__.py +0 -0
  306. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/__init__.pyi +0 -0
  307. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/__init__.py +0 -0
  308. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  309. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/_types.py +0 -0
  310. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/id1000.py +0 -0
  311. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/py.typed +0 -0
  312. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  313. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/datalad_base.py +0 -0
  314. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  315. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  316. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  317. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/py.typed +0 -0
  318. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  319. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/pattern_datalad.py +0 -0
  320. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  321. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/py.typed +0 -0
  322. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  323. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  324. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datareader/__init__.py +0 -0
  325. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datareader/__init__.pyi +0 -0
  326. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datareader/default.py +0 -0
  327. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datareader/py.typed +0 -0
  328. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/datareader/tests/test_default_reader.py +0 -0
  329. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.codecov.yml +0 -0
  330. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.codespellignore +0 -0
  331. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  332. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  333. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  334. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +0 -0
  335. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/dependabot.yml +0 -0
  336. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/build.yml +0 -0
  337. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/code-style.yml +0 -0
  338. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/doc.yml +0 -0
  339. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/publish.yml +0 -0
  340. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/pytest.yml +0 -0
  341. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.gitignore +0 -0
  342. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/LICENSE +0 -0
  343. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/README.md +0 -0
  344. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  345. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  346. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  347. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  348. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/__init__.py +0 -0
  349. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/help_text.py +0 -0
  350. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/parser.py +0 -0
  351. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/utils.py +0 -0
  352. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
  353. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/commands/sys_info.py +0 -0
  354. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  355. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  356. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  357. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
  358. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +0 -0
  359. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  360. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/Makefile +0 -0
  361. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
  362. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +0 -0
  363. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +0 -0
  364. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +0 -0
  365. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/api/index.rst +0 -0
  366. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/conf.py +0 -0
  367. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/index.rst +0 -0
  368. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/links.inc +0 -0
  369. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/make.bat +0 -0
  370. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/references.bib +0 -0
  371. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/pyproject.toml +0 -0
  372. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/setup.py +0 -0
  373. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/__init__.py +0 -0
  374. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/__init__.pyi +0 -0
  375. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/nilearn/__init__.py +0 -0
  376. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/nilearn/__init__.pyi +0 -0
  377. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  378. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  379. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/nilearn/py.typed +0 -0
  380. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  381. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  382. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/external/py.typed +0 -0
  383. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/__init__.py +0 -0
  384. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/__init__.pyi +0 -0
  385. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/base.py +0 -0
  386. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/brainprint.py +0 -0
  387. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/__init__.py +0 -0
  388. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/__init__.pyi +0 -0
  389. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/complexity_base.py +0 -0
  390. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/hurst_exponent.py +0 -0
  391. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  392. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/perm_entropy.py +0 -0
  393. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/py.typed +0 -0
  394. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/range_entropy.py +0 -0
  395. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  396. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/sample_entropy.py +0 -0
  397. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  398. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  399. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  400. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  401. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  402. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  403. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  404. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  405. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  406. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/ets_rss.py +0 -0
  407. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/__init__.py +0 -0
  408. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/__init__.pyi +0 -0
  409. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/_afni_falff.py +0 -0
  410. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/_junifer_falff.py +0 -0
  411. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_base.py +0 -0
  412. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_maps.py +0 -0
  413. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_parcels.py +0 -0
  414. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_spheres.py +0 -0
  415. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/py.typed +0 -0
  416. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
  417. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  418. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  419. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/__init__.py +0 -0
  420. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  421. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  422. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
  423. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  424. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  425. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  426. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
  427. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  428. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  429. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/py.typed +0 -0
  430. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  431. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
  432. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  433. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  434. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  435. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
  436. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  437. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  438. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/maps_aggregation.py +0 -0
  439. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/parcel_aggregation.py +0 -0
  440. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/py.typed +0 -0
  441. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/__init__.py +0 -0
  442. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/__init__.pyi +0 -0
  443. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/_afni_reho.py +0 -0
  444. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/_junifer_reho.py +0 -0
  445. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/py.typed +0 -0
  446. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_base.py +0 -0
  447. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_maps.py +0 -0
  448. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_parcels.py +0 -0
  449. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_spheres.py +0 -0
  450. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_junifer_reho.py +0 -0
  451. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
  452. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  453. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  454. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/sphere_aggregation.py +0 -0
  455. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/__init__.py +0 -0
  456. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  457. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/py.typed +0 -0
  458. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  459. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
  460. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  461. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  462. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  463. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
  464. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  465. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  466. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_brainprint.py +0 -0
  467. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_ets_rss.py +0 -0
  468. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_lost_regions.py +0 -0
  469. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_maps_aggregation.py +0 -0
  470. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_marker_utils.py +0 -0
  471. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_markers_base.py +0 -0
  472. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  473. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  474. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/markers/utils.py +0 -0
  475. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/onthefly/__init__.py +0 -0
  476. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/onthefly/__init__.pyi +0 -0
  477. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/onthefly/_brainprint.py +0 -0
  478. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/onthefly/py.typed +0 -0
  479. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/onthefly/read_transform.py +0 -0
  480. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/onthefly/tests/test_read_transform.py +0 -0
  481. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/__init__.py +0 -0
  482. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/__init__.pyi +0 -0
  483. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/_data_object_dumper.py +0 -0
  484. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/marker_collection.py +0 -0
  485. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/pipeline_component_registry.py +0 -0
  486. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  487. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/py.typed +0 -0
  488. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
  489. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  490. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  491. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  492. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  493. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  494. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/update_meta_mixin.py +0 -0
  495. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/utils.py +0 -0
  496. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/pipeline/workdir_manager.py +0 -0
  497. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/__init__.py +0 -0
  498. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/__init__.pyi +0 -0
  499. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/_temporal_filter.py +0 -0
  500. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/_temporal_slicer.py +0 -0
  501. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/base.py +0 -0
  502. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/__init__.py +0 -0
  503. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/__init__.pyi +0 -0
  504. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  505. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/py.typed +0 -0
  506. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  507. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/py.typed +0 -0
  508. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/__init__.py +0 -0
  509. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  510. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  511. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  512. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  513. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/py.typed +0 -0
  514. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/smoothing.py +0 -0
  515. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  516. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  517. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
  518. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
  519. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/warping/__init__.py +0 -0
  520. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/warping/__init__.pyi +0 -0
  521. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/warping/_ants_warper.py +0 -0
  522. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  523. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/warping/py.typed +0 -0
  524. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/warping/space_warper.py +0 -0
  525. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  526. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/py.typed +0 -0
  527. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/stats.py +0 -0
  528. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/__init__.py +0 -0
  529. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/__init__.pyi +0 -0
  530. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/base.py +0 -0
  531. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/hdf5.py +0 -0
  532. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/pandas_base.py +0 -0
  533. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/py.typed +0 -0
  534. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/sqlite.py +0 -0
  535. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/tests/data/collected_h5io_fork.hdf5 +0 -0
  536. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/tests/test_hdf5.py +0 -0
  537. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/tests/test_pandas_base.py +0 -0
  538. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/tests/test_sqlite.py +0 -0
  539. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/tests/test_storage_base.py +0 -0
  540. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/tests/test_utils.py +0 -0
  541. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/storage/utils.py +0 -0
  542. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/__init__.py +0 -0
  543. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/__init__.pyi +0 -0
  544. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  545. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/datagrabbers.py +0 -0
  546. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/py.typed +0 -0
  547. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/registry.py +0 -0
  548. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/tests/test_adhdtesting_datagrabber.py +0 -0
  549. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  550. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  551. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  552. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/tests/test_testing_registry.py +0 -0
  553. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/tests/test_testing_utils.py +0 -0
  554. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +0 -0
  555. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/testing/utils.py +0 -0
  556. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/tests/test_main.py +0 -0
  557. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/tests/test_stats.py +0 -0
  558. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/typing/__init__.py +0 -0
  559. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/typing/__init__.pyi +0 -0
  560. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/typing/_typing.py +0 -0
  561. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/typing/py.typed +0 -0
  562. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/__init__.py +0 -0
  563. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/__init__.pyi +0 -0
  564. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/_config.py +0 -0
  565. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/_yaml.py +0 -0
  566. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/fs.py +0 -0
  567. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/helpers.py +0 -0
  568. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/logging.py +0 -0
  569. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/py.typed +0 -0
  570. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/singleton.py +0 -0
  571. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/tests/test_config.py +0 -0
  572. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/tests/test_fs.py +0 -0
  573. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/tests/test_helpers.py +0 -0
  574. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer/utils/tests/test_logging.py +0 -0
  575. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer.egg-info/dependency_links.txt +0 -0
  576. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer.egg-info/entry_points.txt +0 -0
  577. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer.egg-info/requires.txt +0 -0
  578. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/junifer.egg-info/top_level.txt +0 -0
  579. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/justfile +0 -0
  580. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/pyproject.toml +0 -0
  581. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/scripts/start.sh +0 -0
  582. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/setup.cfg +0 -0
  583. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/setup.py +0 -0
  584. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tools/create_aomic1000_example_dataset.py +0 -0
  585. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tools/create_aomicpiop1_example_dataset.py +0 -0
  586. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tools/create_aomicpiop2_example_dataset.py +0 -0
  587. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tools/create_bids_example_dataset.py +0 -0
  588. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tools/create_bids_example_dataset_sessions.py +0 -0
  589. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  590. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tools/create_hcp1200_example_dataset.py +0 -0
  591. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/tox.ini +0 -0
  592. {junifer-0.0.8.dev306 → junifer-0.0.8.dev311}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.8.dev306
3
+ Version: 0.0.8.dev311
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
+ Fix partial element selectors (e.g., only the subject) always being reported as invalid by :func:`.run`, after computing their elements by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Fix a relative ``datadir`` of the DataGrabber in the YAML being relative to the current directory (e.g., the job directory when queueing) instead of the YAML file by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Use only the replacements of the data types to grab as element keys in :class:`.PatternDataGrabber` (e.g., only ``subject`` with VBM data), so the data that does not depend on, e.g., the task is not processed once for each task by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Find the elements of :class:`.DataladAOMICPIOP1`, :class:`.DataladAOMICPIOP2`, :class:`.HCP1200` and :class:`.DMCC13Benchmark` in the dataset, so only the elements with data are listed, and return absolute paths in :class:`.PatternDataGrabber` by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Require the element selectors to have the same number of values, and each data type to be grabbed by only one of the DataGrabbers of :class:`.MultipleDataGrabber` by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Document the elements of the DataGrabbers, combining datasets with :class:`.MultipleDataGrabber`, complete and partial elements, and restricting the values of the replacements by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Run complete elements (with a value for each element key, e.g., in each queued job) without searching the dataset for its elements by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Allow restricting the values of the replacements to grab in :class:`.PatternDataGrabber`, with ``replacements`` as a dictionary or with fields linked with ``_REPLACEMENT_FIELDS`` (e.g., ``tasks`` in the built-in DataGrabbers), and using the ``*`` and ``?`` wildcards in the patterns to find the elements by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Allow :class:`.MultipleDataGrabber` to combine DataGrabbers with different element keys, joining their elements on the common keys, and to replace nested data types (e.g., the confounds of ``BOLD``) with a DataGrabber that only grabs them by `Fede Raimondo`_
@@ -48,6 +48,13 @@ acquired for each task, but once in the entire session. So in this case, the
48
48
  ``T1w`` image for the element (``sub001``, ``ses1``, ``rest``) will be the same
49
49
  as the ``T1w`` image for the element (``sub001``, ``ses1``, ``stroop``).
50
50
 
51
+ When the DataGrabber only grabs some of the data types, the elements only have
52
+ the items that these data types need. For example, if only the ``T1w`` image is
53
+ grabbed, the elements are (``subject``, ``session``), e.g., (``sub001``,
54
+ ``ses1``), so that the same ``T1w`` image is not processed once for each task.
55
+ For the :class:`.PatternDataGrabber` (see below), the items that the data types
56
+ need are the replacements in their patterns.
57
+
51
58
  We will now continue this section using as an example, a dataset in BIDS format
52
59
  in which 9 subjects (``sub-01`` to ``sub-09``) were scanned each during 3
53
60
  sessions (``ses-01``, ``ses-02``, ``ses-03``) and each session included a
@@ -200,6 +207,102 @@ to set the ``datadir``.
200
207
  kind: ExampleBIDSDataGrabber
201
208
  datadir: /data/project/test/data
202
209
 
210
+ The DataGrabber finds the elements by searching the dataset for the files that
211
+ match the pattern of each data type. An element is only available if it has the
212
+ files of all the data types to grab. In our BIDS example, ``ses-03`` only has
213
+ anatomical data, so the elements with ``ses-03`` are only available when only
214
+ the ``T1w`` data type is grabbed.
215
+
216
+
217
+ .. _extending_datagrabbers_replacement_values:
218
+
219
+ Restricting the values of the replacements
220
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
221
+
222
+ By default, the DataGrabber grabs all the values of the replacements found in
223
+ the dataset. To only grab some of them, ``replacements`` can be a dictionary
224
+ with the values to grab for each replacement (or ``None`` to grab all of them).
225
+ For example, to only grab the first two sessions of our BIDS example with the
226
+ :class:`.PatternDataGrabber` in the YAML file:
227
+
228
+ .. code-block:: yaml
229
+
230
+ datagrabber:
231
+ kind: PatternDataGrabber
232
+ datadir: /data/project/test/data
233
+ types:
234
+ - T1w
235
+ - BOLD
236
+ patterns:
237
+ T1w:
238
+ pattern: "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz"
239
+ space: native
240
+ BOLD:
241
+ pattern: "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz"
242
+ space: MNI152NLin6Asym
243
+ replacements:
244
+ subject: null
245
+ session:
246
+ - ses-01
247
+ - ses-02
248
+
249
+ The elements with other values are not listed, and grabbing them raises an
250
+ error. The values are ignored if the data types to grab do not use the
251
+ replacement, e.g., the ``session`` values with a data type that is the same for
252
+ all the sessions.
253
+
254
+ A DataGrabber can also take the values to grab from one of its fields, e.g.,
255
+ ``sessions``, by linking the field to the replacement with
256
+ ``_REPLACEMENT_FIELDS``. The values of the field can be strings or enumerations
257
+ (a :class:`enum.StrEnum` is recommended, so its members are also the strings),
258
+ and the replacement cannot have values in ``replacements`` too:
259
+
260
+ .. code-block:: python
261
+
262
+ from enum import StrEnum
263
+ from typing import ClassVar
264
+
265
+ from junifer.api.decorators import register_datagrabber
266
+ from junifer.datagrabber import DataType, PatternDataGrabber
267
+ from junifer.typing import DataGrabberPatterns
268
+
269
+
270
+ class Sessions(StrEnum):
271
+ ses_01 = "ses-01"
272
+ ses_02 = "ses-02"
273
+ ses_03 = "ses-03"
274
+
275
+
276
+ @register_datagrabber
277
+ class ExampleBIDSDataGrabber(PatternDataGrabber):
278
+
279
+ types: list[DataType] = [DataType.T1w, DataType.BOLD]
280
+ patterns: DataGrabberPatterns = {
281
+ "T1w": {
282
+ "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
283
+ "space": "native",
284
+ },
285
+ "BOLD": {
286
+ "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
287
+ "space": "MNI152NLin6Asym",
288
+ },
289
+ }
290
+ replacements: list[str] = ["subject", "session"]
291
+ sessions: list[Sessions] = list(Sessions)
292
+ # Only grab the sessions in the `sessions` field
293
+ _REPLACEMENT_FIELDS: ClassVar[dict[str, str]] = {"session": "sessions"}
294
+
295
+ Then, the sessions to grab can be set in the YAML file:
296
+
297
+ .. code-block:: yaml
298
+
299
+ datagrabber:
300
+ kind: ExampleBIDSDataGrabber
301
+ datadir: /data/project/test/data
302
+ sessions:
303
+ - ses-01
304
+ - ses-02
305
+
203
306
 
204
307
  Optional: Using datalad
205
308
  ~~~~~~~~~~~~~~~~~~~~~~~
@@ -296,20 +399,38 @@ This approach can be used directly from the YAML, like so:
296
399
  uri: "https://cerebra.fz-juelich.de/junifer/datalad-example-bids-ses.git"
297
400
  rootdir: example_bids_ses
298
401
 
402
+ .. _extending_datagrabbers_path_expansion:
403
+
299
404
  Advanced: Using Unix-like path expansion directives
300
405
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
301
406
 
302
407
  It is also possible to use some advanced Unix-like path expansion tricks to
303
408
  define our patterns.
304
409
 
305
- A very common thing would be to use ``*`` to match any number of
306
- characters but we cannot use it right after a replacement like:
410
+ A very common thing would be to use ``*`` to match any number of characters
411
+ or ``?`` to match a single character, both to find the elements and to grab
412
+ their data. For example, if the acquisition of the BOLD images depends on the
413
+ task (e.g., ``sub-01_task-rest_acq-mb3_bold.nii.gz`` and
414
+ ``sub-01_task-stroop_acq-seq_bold.nii.gz``), the pattern can match any
415
+ acquisition, so the task values are ``rest`` and ``stroop``:
307
416
 
308
417
  .. code-block:: python
309
418
 
310
- "derivatives/freesurfer/{subject}*"
419
+ "{subject}/func/{subject}_task-{task}_acq-*_bold.nii.gz"
420
+
421
+ Similarly, ``?`` can match the first character of ``rfMRI`` (resting-state)
422
+ and ``tfMRI`` (task) in the HCP dataset:
311
423
 
312
- or if there are multiple files or no files which can be globbed.
424
+ .. code-block:: python
425
+
426
+ "{subject}/MNINonLinear/Results/?fMRI_{task}_{phase_encoding}/?fMRI_{task}_{phase_encoding}.nii.gz"
427
+
428
+ The pattern must match exactly one file for each element, and we cannot use
429
+ ``*`` right after a replacement like:
430
+
431
+ .. code-block:: python
432
+
433
+ "derivatives/freesurfer/{subject}*"
313
434
 
314
435
  We can also use ``[]`` and ``[!]`` to glob certain tricky files like with the
315
436
  case of FreeSurfer derivatives. The file structure seen in a typical
@@ -0,0 +1,302 @@
1
+ .. include:: ../links.inc
2
+
3
+ .. _datagrabber:
4
+
5
+ Data Grabber
6
+ ============
7
+
8
+ Description
9
+ -----------
10
+
11
+ The ``DataGrabber`` is an object that can provide an interface to datasets you
12
+ want to work with in ``junifer``. Every concrete implementation of a DataGrabber
13
+ is aware of a particular dataset's structure and thus allows you to fetch
14
+ specific elements of interest from the dataset. It adds the ``path`` key to each
15
+ :ref:`data type <data_types>` in the :ref:`Data object <data_object>`.
16
+
17
+ DataGrabbers are intended to be used as context managers. When used within a
18
+ context, a DataGrabber takes care of any pre and post steps for interacting with
19
+ the dataset, for example, downloading and cleaning up. As the interface
20
+ is consistent, you always use the same procedure to interact with the DataGrabber.
21
+
22
+ For example, a concrete implementation of :class:`.DataladDataGrabber` can
23
+ provide ``junifer`` with data from a Datalad dataset. Of course, DataGrabbers are
24
+ not only meant to work with Datalad datasets but any dataset.
25
+
26
+ If you are interested in using already provided DataGrabbers, please go to
27
+ :doc:`../builtin`. And, if you want to implement your own DataGrabber, you need
28
+ to provide concrete implementations of abstract base classes already provided.
29
+
30
+ .. _datagrabber_elements:
31
+
32
+ Elements
33
+ --------
34
+
35
+ A DataGrabber gives the data of a dataset in small units called *elements*. An
36
+ element is the smallest unit of data that can be processed: it has one file
37
+ for each :ref:`data type <data_types>` (e.g., one ``T1w`` image and one
38
+ ``BOLD`` image). Each element is identified by the values of its *keys*, e.g.,
39
+ the element ``("sub-01", "rest")`` has the value ``sub-01`` for the key
40
+ ``subject`` and ``rest`` for the key ``task``.
41
+
42
+ To see how this works, we will use this small dataset with two subjects, a
43
+ ``T1w`` image for each subject and a ``BOLD`` image for each subject and task
44
+ (``sub-02`` has no ``movie`` task):
45
+
46
+ .. code-block:: text
47
+
48
+ sub-01/anat/sub-01_T1w.nii.gz
49
+ sub-01/func/sub-01_task-rest_bold.nii.gz
50
+ sub-01/func/sub-01_task-movie_bold.nii.gz
51
+ sub-02/anat/sub-02_T1w.nii.gz
52
+ sub-02/func/sub-02_task-rest_bold.nii.gz
53
+
54
+ A :class:`.PatternDataGrabber` describes the files of each data type with a
55
+ *pattern*, where the parts that change between the files (the *replacements*)
56
+ are written between braces:
57
+
58
+ .. code-block:: yaml
59
+
60
+ datagrabber:
61
+ kind: PatternDataGrabber
62
+ datadir: /data/example
63
+ types:
64
+ - T1w
65
+ - BOLD
66
+ patterns:
67
+ T1w:
68
+ pattern: "{subject}/anat/{subject}_T1w.nii.gz"
69
+ space: native
70
+ BOLD:
71
+ pattern: "{subject}/func/{subject}_task-{task}_bold.nii.gz"
72
+ space: native
73
+ replacements:
74
+ - subject
75
+ - task
76
+
77
+ Which data types are grabbed
78
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
79
+
80
+ The DataGrabber finds the elements by searching the dataset for the files that
81
+ match the patterns. The keys of the elements are the replacements in the
82
+ patterns of the data types to grab (``types``), and an element is only
83
+ available if it has a file for each of these data types:
84
+
85
+ .. list-table::
86
+ :widths: auto
87
+ :header-rows: 1
88
+
89
+ * - ``types``
90
+ - Keys
91
+ - Elements
92
+ * - ``T1w``
93
+ - ``subject``
94
+ - ``sub-01``, ``sub-02``
95
+ * - ``BOLD``
96
+ - ``subject``, ``task``
97
+ - ``(sub-01, movie)``, ``(sub-01, rest)``, ``(sub-02, rest)``
98
+ * - ``T1w``, ``BOLD``
99
+ - ``subject``, ``task``
100
+ - ``(sub-01, movie)``, ``(sub-01, rest)``, ``(sub-02, rest)``
101
+
102
+ With only ``T1w``, the elements do not have the ``task`` key, as the ``T1w``
103
+ image does not depend on the task: each ``T1w`` image is processed once. With
104
+ ``BOLD``, the elements need the task, so the ``T1w`` image of ``sub-01`` is part
105
+ of two elements, ``(sub-01, movie)`` and ``(sub-01, rest)``.
106
+
107
+ Which values are grabbed
108
+ ^^^^^^^^^^^^^^^^^^^^^^^^
109
+
110
+ By default, all the values found in the dataset are grabbed. They can be
111
+ restricted with ``replacements``, giving the values to grab for each
112
+ replacement (or ``null`` to grab all of them). For example, to only grab the
113
+ ``rest`` task:
114
+
115
+ .. code-block:: yaml
116
+
117
+ replacements:
118
+ subject: null
119
+ task:
120
+ - rest
121
+
122
+ The :doc:`built-in DataGrabbers <../builtin>` have parameters for this instead,
123
+ e.g., ``tasks`` in :class:`.DataladAOMICPIOP1`. The values only restrict the
124
+ elements of the data types that use the replacement:
125
+
126
+ .. list-table::
127
+ :widths: auto
128
+ :header-rows: 1
129
+
130
+ * - ``types``
131
+ - Values to grab
132
+ - Elements
133
+ * - ``BOLD``
134
+ - ``task``: ``rest``
135
+ - ``(sub-01, rest)``, ``(sub-02, rest)``
136
+ * - ``BOLD``
137
+ - ``subject``: ``sub-02``
138
+ - ``(sub-02, rest)``
139
+ * - ``T1w``
140
+ - ``task``: ``rest``
141
+ - ``sub-01``, ``sub-02`` (the ``T1w`` image does not depend on the task)
142
+
143
+ The elements with other values are not listed, and asking for them (e.g.,
144
+ ``(sub-01, movie)`` when only ``rest`` is grabbed) raises an error. See
145
+ :ref:`extending_datagrabbers_replacement_values` for more details, and
146
+ :ref:`extending_datagrabbers_path_expansion` for patterns with ``*``, e.g., to
147
+ match files whose names change with the task.
148
+
149
+ Which elements are processed
150
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
151
+
152
+ The ``list-elements`` command lists the elements of the dataset. By default,
153
+ the ``run`` and ``queue`` commands process all of them, but the ``--element``
154
+ option can select some of them, with the values of the keys separated by
155
+ ``,``. With ``BOLD``:
156
+
157
+ .. list-table::
158
+ :widths: auto
159
+ :header-rows: 1
160
+
161
+ * - ``--element``
162
+ - Elements processed
163
+ * - ``sub-01,rest``
164
+ - ``(sub-01, rest)``: a *complete* element (a value for each key, in
165
+ order), the dataset is not searched
166
+ * - ``sub-01``
167
+ - ``(sub-01, movie)``, ``(sub-01, rest)``: a *partial* element selects all
168
+ the elements with its values
169
+ * - ``rest``
170
+ - ``(sub-01, rest)``, ``(sub-02, rest)``
171
+ * - ``sub-03``
172
+ - None: an error is raised, as no element matches it
173
+
174
+ See :ref:`running_elements` for more details.
175
+
176
+ .. _datagrabber_multiple:
177
+
178
+ Combining datasets
179
+ ------------------
180
+
181
+ The :class:`.MultipleDataGrabber` combines several DataGrabbers, e.g., to use
182
+ data from different datasets. For example, we can take the ``BOLD`` and
183
+ ``T1w`` images from a dataset with the fMRIPrep derivatives, the ``VBM_GM``
184
+ images from a dataset with the CAT12 derivatives, and the confounds of the
185
+ ``BOLD`` images from a third dataset:
186
+
187
+ .. code-block:: yaml
188
+
189
+ datagrabber:
190
+ kind: MultipleDataGrabber
191
+ datagrabbers:
192
+ # BOLD and T1w from the fMRIPrep derivatives
193
+ - kind: DataladAOMICPIOP1
194
+ types:
195
+ - BOLD
196
+ - T1w
197
+ tasks:
198
+ - restingstate
199
+ # VBM from the CAT12 derivatives
200
+ - kind: PatternDataladDataGrabber
201
+ uri: https://example.org/aomic-piop1-cat12
202
+ types:
203
+ - VBM_GM
204
+ patterns:
205
+ VBM_GM:
206
+ pattern: "{subject}/mri/mwp1{subject}_T1w.nii"
207
+ space: MNI152NLin2009cAsym
208
+ replacements:
209
+ - subject
210
+ # Only the confounds of the BOLD images
211
+ - kind: PatternDataladDataGrabber
212
+ uri: https://example.org/aomic-piop1-confounds
213
+ types:
214
+ - BOLD
215
+ patterns:
216
+ BOLD:
217
+ confounds:
218
+ pattern: "{subject}/func/{subject}_task-{task}_acq-*_desc-confounds.tsv"
219
+ format: fmriprep
220
+ replacements:
221
+ - subject
222
+ - task
223
+ partial_pattern_ok: true
224
+
225
+ The DataGrabbers are combined with these rules:
226
+
227
+ * **Each data type is grabbed by one DataGrabber**, which is chosen with the
228
+ ``types`` of each DataGrabber. Here, the first one grabs ``BOLD`` and
229
+ ``T1w``, and the second one ``VBM_GM``. If the first one also grabbed
230
+ ``VBM_GM`` (e.g., without setting its ``types``), an error would be raised,
231
+ asking to remove it from the ``types`` of one of them.
232
+ * **A DataGrabber that only grabs the nested data types of a data type**
233
+ (without the main file of the data type) replaces these nested data types
234
+ of the other DataGrabber. Here, the third one only grabs the ``confounds``
235
+ of ``BOLD``, so they replace the ones of the first DataGrabber, regardless
236
+ of the order of the DataGrabbers.
237
+ * **The elements are the ones available in all the DataGrabbers.** The
238
+ DataGrabbers can have different keys: the element keys are the ones of the
239
+ first DataGrabber, followed by the other keys of the other DataGrabbers, and
240
+ each DataGrabber grabs an element with its own keys. The keys with the same
241
+ name must have the same values in all the datasets (e.g., the same subject
242
+ names).
243
+
244
+ For the element ``(sub-0001, restingstate)``:
245
+
246
+ .. list-table::
247
+ :widths: auto
248
+ :header-rows: 1
249
+
250
+ * - DataGrabber
251
+ - Keys
252
+ - Grabs
253
+ * - First (fMRIPrep)
254
+ - ``subject``, ``task``
255
+ - ``(sub-0001, restingstate)``: the ``BOLD`` image (with its mask) and
256
+ the ``T1w`` image
257
+ * - Second (CAT12)
258
+ - ``subject``
259
+ - ``sub-0001``: the ``VBM_GM`` image
260
+ * - Third (confounds)
261
+ - ``subject``, ``task``
262
+ - ``(sub-0001, restingstate)``: the confounds of the ``BOLD`` image
263
+
264
+ Base Classes
265
+ ------------
266
+
267
+ In this section, we showcase different abstract and concrete base classes you
268
+ might want to use to implement your own DataGrabber.
269
+
270
+ .. list-table::
271
+ :widths: auto
272
+ :header-rows: 1
273
+
274
+ * - Name
275
+ - Description
276
+ * - :class:`.BaseDataGrabber`
277
+ - | The abstract base class providing you an interface to implement your
278
+ | own DataGrabber. You should try to avoid using this directly and
279
+ | instead use :class:`.PatternDataGrabber` or
280
+ | :class:`.DataladDataGrabber`. To build your own custom *low-level*
281
+ | DataGrabber, you need to override the ``get_element_keys``,
282
+ | ``get_elements`` and ``get_item`` methods, and most of the time you
283
+ | should also override other existing methods like ``__enter__`` and
284
+ | ``__exit__``.
285
+ * - :class:`.PatternDataGrabber`
286
+ - | It implements functionality to help you define the pattern of the
287
+ | dataset you want to get. For example, you know that T1w images are
288
+ | found in a directory following the pattern:
289
+ | ``{subject}/anat/{subject}_T1w.nii.gz`` inside of the dataset. Now you
290
+ | can provide this to the :class:`.PatternDataGrabber` and it will be
291
+ | able to get the file.
292
+ * - :class:`.DataladDataGrabber`
293
+ - | It implements functionality to deal with Datalad datasets. Specifically,
294
+ | the ``__enter__`` and ``__exit__`` methods take care of cloning and
295
+ | removing the Datalad dataset.
296
+ * - :class:`.PatternDataladDataGrabber`
297
+ - | It is a combination of :class:`.PatternDataGrabber` and
298
+ | :class:`.DataladDataGrabber`. This is probably the class you are looking
299
+ | for when using Datalad datasets.
300
+ * - :class:`.MultipleDataGrabber`
301
+ - | It combines several DataGrabbers, e.g., to use data from different
302
+ | datasets (see :ref:`datagrabber_multiple`).
@@ -96,6 +96,20 @@ task.
96
96
  kind: DataladAOMICPIOP1
97
97
  tasks: restingstate
98
98
 
99
+ The ``types`` parameter restricts the :ref:`data types <data_types>` to grab,
100
+ which also determines the elements to process. For example, with only the VBM
101
+ data, which does not depend on the task, the elements only have the subject, so
102
+ the VBM data of each subject is processed once (and ``tasks`` is not needed):
103
+
104
+ .. code-block:: yaml
105
+
106
+ datagrabber:
107
+ kind: DataladAOMICPIOP1
108
+ types:
109
+ - VBM_GM
110
+
111
+ See :ref:`datagrabber_elements` for more details on the elements.
112
+
99
113
  In the ``UCLA CNP VBM Testing dataset`` example, the section will look like this:
100
114
 
101
115
  .. code-block:: yaml
@@ -185,5 +185,7 @@ The ``queue`` command accepts the following arguments:
185
185
  job submit files will be created but not submitted.
186
186
  * ``--overwrite``: Overwrite the job folder if it already exists. If not
187
187
  specified, the command will fail if the job folder already exists.
188
- * ``--element``: Queue only the specified element(s). If not specified, all
189
- elements will be queued.
188
+ * ``--element``: Queue only the specified element(s), complete or partial (see
189
+ :ref:`running_elements`). If not specified, all elements will be queued.
190
+ Each job runs one complete element, so it does not search the dataset for
191
+ its elements.
@@ -30,7 +30,8 @@ The ``run`` command accepts the following additional arguments:
30
30
  run. This parameter can be specified multiple times to run multiple elements.
31
31
  If the *element* requires several parameters, they can be specified by
32
32
  separating them with ``,``. It also accepts a file (e.g., ``elements.txt``)
33
- containing complete or partial element(s).
33
+ containing complete or partial element(s) (see
34
+ :ref:`running_elements`).
34
35
 
35
36
  Example of running two elements:
36
37
  --------------------------------
@@ -90,6 +91,40 @@ and then the ``elements.txt`` would be like so:
90
91
 
91
92
  sub-01
92
93
 
94
+ .. _running_elements:
95
+
96
+ Complete and partial elements
97
+ -----------------------------
98
+
99
+ An *element* has a value for each of its *keys*, e.g., ``subject`` and
100
+ ``session``. The keys depend on the :ref:`data types <data_types>` that the
101
+ DataGrabber grabs: an element only has the keys that the data types need. For
102
+ example, a DataGrabber with resting-state BOLD (one per subject and session) and
103
+ VBM data (one per subject) has the keys ``subject`` and ``session`` when
104
+ grabbing the BOLD data, but only ``subject`` when grabbing only the VBM data, so
105
+ that the VBM data of a subject is not processed once for each session. The
106
+ ``list-elements`` command lists the elements with their values, in the order of
107
+ the keys:
108
+
109
+ .. code-block:: bash
110
+
111
+ junifer list-elements config.yaml
112
+
113
+ The elements given with ``--element`` can be:
114
+
115
+ * *Complete*, with a value for each key, in the order of the keys, e.g.,
116
+ ``sub-01,ses-01``. Only these elements are run, without searching the
117
+ dataset for its elements. This is the case for the jobs created by
118
+ :ref:`queue <queueing>`, which run one element each.
119
+ * *Partial*, with fewer values, e.g., ``sub-01``. They run all the elements of
120
+ the dataset that have these values for any key, e.g., all the sessions of
121
+ ``sub-01``. This requires searching the dataset for its elements.
122
+
123
+ All the elements given in a command must have the same number of values, so
124
+ they are either all complete or all partial. A partial element that does not
125
+ match any element of the dataset is reported before running any element, while
126
+ a complete element without data fails when its data is grabbed.
127
+
93
128
 
94
129
  .. _collect:
95
130
 
@@ -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.dev306'
22
- __version_tuple__ = version_tuple = (0, 0, 8, 'dev306')
21
+ __version__ = version = '0.0.8.dev311'
22
+ __version_tuple__ = version_tuple = (0, 0, 8, 'dev311')
23
23
 
24
- __commit_id__ = commit_id = 'g442e9f6f1'
24
+ __commit_id__ = commit_id = 'gf37e90687'
@@ -261,25 +261,12 @@ def run(
261
261
  # Fit elements
262
262
  with datagrabber_object:
263
263
  if elements is not None:
264
- # Keep track of valid selectors
265
- valid_elements = []
266
- for t_element in datagrabber_object.filter(elements):
267
- valid_elements.append(t_element)
268
- mc.fit(datagrabber_object[t_element])
269
- # Compute invalid selectors
270
- invalid_elements = set(elements) - set(valid_elements)
271
- # Report if invalid selectors are found
272
- if invalid_elements:
273
- raise_error(
274
- msg=(
275
- "The following element selectors are invalid:\n"
276
- f"{invalid_elements}"
277
- ),
278
- klass=RuntimeError,
279
- )
264
+ # Only get the elements of the dataset for partial selectors
265
+ to_fit = datagrabber_object.select_elements(elements)
280
266
  else:
281
- for t_element in datagrabber_object:
282
- mc.fit(datagrabber_object[t_element])
267
+ to_fit = datagrabber_object.get_elements()
268
+ for t_element in to_fit:
269
+ mc.fit(datagrabber_object[t_element])
283
270
 
284
271
 
285
272
  def collect(storage: dict, workdir: str | Path | dict | None = None) -> None:
@@ -628,6 +615,23 @@ def parse_yaml(filepath: str | Path) -> dict: # noqa: C901
628
615
  (filepath.parent / uri_path).resolve()
629
616
  )
630
617
 
618
+ # Compute the absolute path of the data directory of the datagrabber (and
619
+ # of the datagrabbers of a MultipleDataGrabber) if it is relative; same
620
+ # motivation as above. Otherwise, it would be relative to the current
621
+ # working directory, which is the job directory when queueing.
622
+ if "datagrabber" in contents:
623
+ datagrabbers = [
624
+ contents["datagrabber"],
625
+ *contents["datagrabber"].get("datagrabbers", []),
626
+ ]
627
+ for datagrabber in datagrabbers:
628
+ if "datadir" in datagrabber:
629
+ datadir = Path(datagrabber["datadir"])
630
+ if not datadir.is_absolute():
631
+ datagrabber["datadir"] = str(
632
+ (filepath.parent / datadir).resolve()
633
+ )
634
+
631
635
  # Allow relative path if queue env kind is venv; same motivation as above
632
636
  if "queue" in contents:
633
637
  if "env" in contents["queue"]: