junifer 0.0.6.dev154__tar.gz → 0.0.6.dev175__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 (462) hide show
  1. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/PKG-INFO +1 -1
  2. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/pipeline.rst +0 -6
  3. junifer-0.0.6.dev175/docs/changes/newsfragments/362.feature +1 -0
  4. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/__init__.pyi +2 -0
  5. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/_version.py +2 -2
  6. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/decorators.py +6 -11
  7. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/functions.py +74 -62
  8. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/tests/test_functions.py +2 -2
  9. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/piop2.py +1 -1
  10. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/__init__.pyi +2 -2
  11. junifer-0.0.6.dev175/junifer/pipeline/pipeline_component_registry.py +299 -0
  12. junifer-0.0.6.dev175/junifer/pipeline/tests/test_pipeline_component_registry.py +201 -0
  13. junifer-0.0.6.dev175/junifer/testing/__init__.pyi +4 -0
  14. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/registry.py +4 -7
  15. junifer-0.0.6.dev175/junifer/testing/tests/test_testing_registry.py +16 -0
  16. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer.egg-info/PKG-INFO +1 -1
  17. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer.egg-info/SOURCES.txt +3 -2
  18. junifer-0.0.6.dev154/junifer/pipeline/registry.py +0 -245
  19. junifer-0.0.6.dev154/junifer/pipeline/tests/test_registry.py +0 -150
  20. junifer-0.0.6.dev154/junifer/testing/__init__.pyi +0 -4
  21. junifer-0.0.6.dev154/junifer/testing/tests/test_testing_registry.py +0 -24
  22. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.dockerignore +0 -0
  23. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  24. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  25. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  26. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  27. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  28. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  29. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/dependabot.yml +0 -0
  30. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/pull_request_template.md +0 -0
  31. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/ci-docs.yml +0 -0
  32. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/ci.yml +0 -0
  33. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/docker-ci-publish.yml +0 -0
  34. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/docker-docs-publish.yml +0 -0
  35. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/docs-preview.yml +0 -0
  36. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/docs.yml +0 -0
  37. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/lint.yml +0 -0
  38. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.github/workflows/pypi.yml +0 -0
  39. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.gitignore +0 -0
  40. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.gitmodules +0 -0
  41. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/.pre-commit-config.yaml +0 -0
  42. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/AUTHORS.rst +0 -0
  43. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/Dockerfile-ci +0 -0
  44. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/Dockerfile-docs +0 -0
  45. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/LICENSE.md +0 -0
  46. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/README.md +0 -0
  47. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/codecov.yml +0 -0
  48. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/conda-env.yml +0 -0
  49. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/Makefile +0 -0
  50. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/_static/css/custom.css +0 -0
  51. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/_static/js/custom.js +0 -0
  52. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/_templates/versions.html +0 -0
  53. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/api.rst +0 -0
  54. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/cli.rst +0 -0
  55. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/configs.rst +0 -0
  56. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/data.rst +0 -0
  57. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/datagrabbers.rst +0 -0
  58. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/datareaders.rst +0 -0
  59. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/index.rst +0 -0
  60. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/markers.rst +0 -0
  61. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/nilearn.rst +0 -0
  62. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/onthefly.rst +0 -0
  63. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/preprocessing.rst +0 -0
  64. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/stats.rst +0 -0
  65. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/storage.rst +0 -0
  66. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/testing.rst +0 -0
  67. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/api/utils.rst +0 -0
  68. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/builtin.rst +0 -0
  69. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/contributors.inc +0 -0
  70. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/.gitignore +0 -0
  71. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/335.enh +0 -0
  72. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/354.feature +0 -0
  73. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/355.misc +0 -0
  74. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/356.bugfix +0 -0
  75. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/357.enh +0 -0
  76. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/358.doc +0 -0
  77. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/359.doc +0 -0
  78. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/360.bugfix +0 -0
  79. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/361.misc +0 -0
  80. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/367.enh +0 -0
  81. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/368.enh +0 -0
  82. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/369.bugfix +0 -0
  83. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/370.bugfix +0 -0
  84. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/372.misc +0 -0
  85. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/373.misc +0 -0
  86. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/374.misc +0 -0
  87. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/380.misc +0 -0
  88. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/382.misc +0 -0
  89. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/changes/newsfragments/384.misc +0 -0
  90. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/conf.py +0 -0
  91. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/contribution.rst +0 -0
  92. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/coordinates.rst +0 -0
  93. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/datagrabber.rst +0 -0
  94. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/dependencies.rst +0 -0
  95. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/extension.rst +0 -0
  96. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/index.rst +0 -0
  97. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/marker.rst +0 -0
  98. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/masks.rst +0 -0
  99. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/parcellations.rst +0 -0
  100. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/extending/preprocessor.rst +0 -0
  101. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/faq.rst +0 -0
  102. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/help.rst +0 -0
  103. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/images/junifer_logo.png +0 -0
  104. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/index.rst +0 -0
  105. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/installation.rst +0 -0
  106. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/links.inc +0 -0
  107. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/maintaining.rst +0 -0
  108. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/redirect.html +0 -0
  109. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/starting.rst +0 -0
  110. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/data.rst +0 -0
  111. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/datagrabber.rst +0 -0
  112. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/datareader.rst +0 -0
  113. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/index.rst +0 -0
  114. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/marker.rst +0 -0
  115. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/pipeline.rst +0 -0
  116. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/preprocess.rst +0 -0
  117. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/understanding/storage.rst +0 -0
  118. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/using/codeless.rst +0 -0
  119. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/using/index.rst +0 -0
  120. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/using/masks.rst +0 -0
  121. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/using/queueing.rst +0 -0
  122. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/using/running.rst +0 -0
  123. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/docs/whats_new.rst +0 -0
  124. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/README.rst +0 -0
  125. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/norun_hcpfc_pearson.py +0 -0
  126. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/norun_ukbvm_gmd.py +0 -0
  127. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/run_compute_parcel_mean.py +0 -0
  128. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/run_datagrabber_bids_datalad.py +0 -0
  129. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/run_ets_rss_marker.py +0 -0
  130. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/run_junifer_julearn.py +0 -0
  131. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/run_run_gmd_mean.py +0 -0
  132. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/yamls/gmd_mean.yaml +0 -0
  133. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  134. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  135. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  136. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/ignore_words.txt +0 -0
  137. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/__init__.py +0 -0
  138. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/__init__.py +0 -0
  139. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/__init__.pyi +0 -0
  140. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/py.typed +0 -0
  141. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/__init__.py +0 -0
  142. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/__init__.pyi +0 -0
  143. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  144. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  145. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/py.typed +0 -0
  146. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  147. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  148. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  149. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  150. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/afni/3dRSFC +0 -0
  151. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/afni/3dReHo +0 -0
  152. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/afni/afni +0 -0
  153. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  154. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/ants/ResampleImage +0 -0
  155. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/ants/antsApplyTransforms +0 -0
  156. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  157. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  158. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/freesurfer/mri_binarize +0 -0
  159. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/freesurfer/mri_mc +0 -0
  160. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/freesurfer/mri_pretess +0 -0
  161. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/freesurfer/mris_convert +0 -0
  162. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  163. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/fsl/applywarp +0 -0
  164. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/fsl/flirt +0 -0
  165. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/fsl/img2imgcoord +0 -0
  166. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  167. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/fsl/std2imgcoord +0 -0
  168. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/run_conda.bash +0 -0
  169. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/run_conda.zsh +0 -0
  170. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/run_venv.bash +0 -0
  171. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/api/res/run_venv.zsh +0 -0
  172. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/__init__.py +0 -0
  173. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/__init__.pyi +0 -0
  174. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/cli.py +0 -0
  175. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/parser.py +0 -0
  176. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/py.typed +0 -0
  177. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  178. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  179. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  180. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/tests/test_cli.py +0 -0
  181. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/tests/test_cli_utils.py +0 -0
  182. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/tests/test_parser.py +0 -0
  183. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/cli/utils.py +0 -0
  184. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/__init__.py +0 -0
  185. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/__init__.py +0 -0
  186. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/__init__.pyi +0 -0
  187. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  188. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  189. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  190. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  191. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  192. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  193. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  194. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  195. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  196. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  197. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  198. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  199. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  200. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/configs/juseless/py.typed +0 -0
  201. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
  202. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
  203. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
  204. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
  205. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  206. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
  207. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
  208. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
  209. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
  210. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
  211. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
  212. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
  213. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
  214. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
  215. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
  216. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
  217. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
  218. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
  219. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
  220. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/__init__.py +0 -0
  221. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/__init__.pyi +0 -0
  222. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/coordinates.py +0 -0
  223. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz +0 -0
  224. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
  225. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
  226. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
  227. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/masks.py +0 -0
  228. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/parcellations.py +0 -0
  229. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/py.typed +0 -0
  230. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/template_spaces.py +0 -0
  231. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/tests/test_coordinates.py +0 -0
  232. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/tests/test_data_utils.py +0 -0
  233. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/tests/test_masks.py +0 -0
  234. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/tests/test_parcellations.py +0 -0
  235. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/tests/test_template_spaces.py +0 -0
  236. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/data/utils.py +0 -0
  237. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/__init__.py +0 -0
  238. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/__init__.pyi +0 -0
  239. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/__init__.py +0 -0
  240. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  241. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/id1000.py +0 -0
  242. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/piop1.py +0 -0
  243. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/py.typed +0 -0
  244. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  245. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  246. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  247. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/base.py +0 -0
  248. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/datalad_base.py +0 -0
  249. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  250. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  251. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  252. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  253. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  254. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/hcp1200/py.typed +0 -0
  255. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  256. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/multiple.py +0 -0
  257. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/pattern.py +0 -0
  258. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/pattern_datalad.py +0 -0
  259. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  260. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/py.typed +0 -0
  261. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/tests/test_base.py +0 -0
  262. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  263. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  264. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/tests/test_multiple.py +0 -0
  265. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/tests/test_pattern.py +0 -0
  266. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  267. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  268. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datareader/__init__.py +0 -0
  269. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datareader/__init__.pyi +0 -0
  270. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datareader/default.py +0 -0
  271. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datareader/py.typed +0 -0
  272. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/datareader/tests/test_default_reader.py +0 -0
  273. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  274. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  275. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  276. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  277. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  278. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  279. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  280. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  281. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/__init__.py +0 -0
  282. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/h5io/h5io/__init__.py +0 -0
  283. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/h5io/h5io/_h5io.py +0 -0
  284. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/h5io/h5io/_version.py +0 -0
  285. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  286. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  287. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/nilearn/__init__.py +0 -0
  288. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/nilearn/__init__.pyi +0 -0
  289. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  290. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  291. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/nilearn/py.typed +0 -0
  292. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  293. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  294. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/__init__.py +0 -0
  295. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/__init__.pyi +0 -0
  296. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/base.py +0 -0
  297. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/brainprint.py +0 -0
  298. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/__init__.py +0 -0
  299. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/__init__.pyi +0 -0
  300. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/complexity_base.py +0 -0
  301. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/hurst_exponent.py +0 -0
  302. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  303. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/perm_entropy.py +0 -0
  304. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/py.typed +0 -0
  305. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/range_entropy.py +0 -0
  306. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  307. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/sample_entropy.py +0 -0
  308. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  309. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  310. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  311. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  312. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  313. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  314. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  315. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  316. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  317. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/ets_rss.py +0 -0
  318. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/__init__.py +0 -0
  319. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/__init__.pyi +0 -0
  320. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/_afni_falff.py +0 -0
  321. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/_junifer_falff.py +0 -0
  322. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/falff_base.py +0 -0
  323. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/falff_parcels.py +0 -0
  324. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/falff_spheres.py +0 -0
  325. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/py.typed +0 -0
  326. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  327. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  328. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/__init__.py +0 -0
  329. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  330. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  331. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  332. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  333. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  334. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  335. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  336. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/py.typed +0 -0
  337. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  338. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  339. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  340. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  341. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  342. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  343. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/parcel_aggregation.py +0 -0
  344. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/py.typed +0 -0
  345. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/__init__.py +0 -0
  346. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/__init__.pyi +0 -0
  347. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/_afni_reho.py +0 -0
  348. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/_junifer_reho.py +0 -0
  349. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/py.typed +0 -0
  350. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/reho_base.py +0 -0
  351. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/reho_parcels.py +0 -0
  352. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/reho_spheres.py +0 -0
  353. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  354. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  355. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/sphere_aggregation.py +0 -0
  356. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/__init__.py +0 -0
  357. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  358. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/py.typed +0 -0
  359. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  360. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  361. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  362. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  363. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  364. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  365. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/tests/test_brainprint.py +0 -0
  366. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/tests/test_ets_rss.py +0 -0
  367. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/tests/test_marker_utils.py +0 -0
  368. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/tests/test_markers_base.py +0 -0
  369. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  370. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  371. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/markers/utils.py +0 -0
  372. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/onthefly/__init__.py +0 -0
  373. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/onthefly/_brainprint.py +0 -0
  374. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/onthefly/read_transform.py +0 -0
  375. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/onthefly/tests/test_read_transform.py +0 -0
  376. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/__init__.py +0 -0
  377. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/marker_collection.py +0 -0
  378. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  379. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/py.typed +0 -0
  380. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/singleton.py +0 -0
  381. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  382. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  383. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  384. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  385. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/update_meta_mixin.py +0 -0
  386. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/utils.py +0 -0
  387. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/pipeline/workdir_manager.py +0 -0
  388. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/__init__.py +0 -0
  389. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/__init__.pyi +0 -0
  390. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/base.py +0 -0
  391. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/confounds/__init__.py +0 -0
  392. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/confounds/__init__.pyi +0 -0
  393. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  394. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/confounds/py.typed +0 -0
  395. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  396. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/py.typed +0 -0
  397. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/__init__.py +0 -0
  398. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  399. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  400. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  401. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  402. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/py.typed +0 -0
  403. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/smoothing.py +0 -0
  404. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  405. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  406. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/warping/__init__.py +0 -0
  407. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/warping/__init__.pyi +0 -0
  408. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/warping/_ants_warper.py +0 -0
  409. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  410. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/warping/py.typed +0 -0
  411. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/warping/space_warper.py +0 -0
  412. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  413. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/py.typed +0 -0
  414. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/stats.py +0 -0
  415. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/__init__.py +0 -0
  416. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/__init__.pyi +0 -0
  417. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/base.py +0 -0
  418. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/hdf5.py +0 -0
  419. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/pandas_base.py +0 -0
  420. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/py.typed +0 -0
  421. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/sqlite.py +0 -0
  422. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/tests/test_hdf5.py +0 -0
  423. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/tests/test_pandas_base.py +0 -0
  424. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/tests/test_sqlite.py +0 -0
  425. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/tests/test_storage_base.py +0 -0
  426. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/tests/test_utils.py +0 -0
  427. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/storage/utils.py +0 -0
  428. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/__init__.py +0 -0
  429. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  430. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/datagrabbers.py +0 -0
  431. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/py.typed +0 -0
  432. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  433. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  434. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  435. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/testing/utils.py +0 -0
  436. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/tests/test_main.py +0 -0
  437. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/tests/test_stats.py +0 -0
  438. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/__init__.py +0 -0
  439. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/__init__.pyi +0 -0
  440. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/_yaml.py +0 -0
  441. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/fs.py +0 -0
  442. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/helpers.py +0 -0
  443. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/logging.py +0 -0
  444. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/py.typed +0 -0
  445. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/tests/test_fs.py +0 -0
  446. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/tests/test_helpers.py +0 -0
  447. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer/utils/tests/test_logging.py +0 -0
  448. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer.egg-info/dependency_links.txt +0 -0
  449. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer.egg-info/entry_points.txt +0 -0
  450. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer.egg-info/requires.txt +0 -0
  451. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/junifer.egg-info/top_level.txt +0 -0
  452. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/pyproject.toml +0 -0
  453. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/setup.cfg +0 -0
  454. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/setup.py +0 -0
  455. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tools/create_aomic1000_example_dataset.py +0 -0
  456. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tools/create_aomicpiop1_example_dataset.py +0 -0
  457. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tools/create_aomicpiop2_example_dataset.py +0 -0
  458. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tools/create_bids_example_dataset.py +0 -0
  459. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tools/create_bids_example_dataset_sessions.py +0 -0
  460. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  461. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tools/create_hcp1200_example_dataset.py +0 -0
  462. {junifer-0.0.6.dev154 → junifer-0.0.6.dev175}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.6.dev154
3
+ Version: 0.0.6.dev175
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>
@@ -4,9 +4,3 @@ Pipeline
4
4
  .. automodule:: junifer.pipeline
5
5
  :members:
6
6
  :imported-members:
7
-
8
- Registry
9
- ========
10
-
11
- .. automodule:: junifer.pipeline.registry
12
- :members:
@@ -0,0 +1 @@
1
+ Introduce :class:`junifer.pipeline.PipelineComponentRegistry` to centralise pipeline component management by `Synchon Mandal`_
@@ -12,6 +12,7 @@ __all__ = [
12
12
  "utils",
13
13
  "external",
14
14
  "onthefly",
15
+ "testing",
15
16
  "__version__",
16
17
  ]
17
18
 
@@ -28,6 +29,7 @@ from . import (
28
29
  storage,
29
30
  utils,
30
31
  external,
32
+ testing,
31
33
  onthefly,
32
34
  )
33
35
  from ._version import __version__
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.0.6.dev154'
16
- __version_tuple__ = version_tuple = (0, 0, 6, 'dev154')
15
+ __version__ = version = '0.0.6.dev175'
16
+ __version_tuple__ = version_tuple = (0, 0, 6, 'dev175')
@@ -7,7 +7,7 @@
7
7
 
8
8
  from typing import Type
9
9
 
10
- from ..pipeline.registry import register
10
+ from ..pipeline import PipelineComponentRegistry
11
11
 
12
12
 
13
13
  __all__ = [
@@ -39,9 +39,8 @@ def register_datagrabber(klass: Type) -> Type:
39
39
  It should only be used as a decorator.
40
40
 
41
41
  """
42
- register(
42
+ PipelineComponentRegistry().register(
43
43
  step="datagrabber",
44
- name=klass.__name__,
45
44
  klass=klass,
46
45
  )
47
46
  return klass
@@ -67,9 +66,8 @@ def register_datareader(klass: Type) -> Type:
67
66
  It should only be used as a decorator.
68
67
 
69
68
  """
70
- register(
69
+ PipelineComponentRegistry().register(
71
70
  step="datareader",
72
- name=klass.__name__,
73
71
  klass=klass,
74
72
  )
75
73
  return klass
@@ -91,9 +89,8 @@ def register_preprocessor(klass: Type) -> Type:
91
89
  The unmodified input class.
92
90
 
93
91
  """
94
- register(
92
+ PipelineComponentRegistry().register(
95
93
  step="preprocessing",
96
- name=klass.__name__,
97
94
  klass=klass,
98
95
  )
99
96
  return klass
@@ -115,9 +112,8 @@ def register_marker(klass: Type) -> Type:
115
112
  The unmodified input class.
116
113
 
117
114
  """
118
- register(
115
+ PipelineComponentRegistry().register(
119
116
  step="marker",
120
- name=klass.__name__,
121
117
  klass=klass,
122
118
  )
123
119
  return klass
@@ -139,9 +135,8 @@ def register_storage(klass: Type) -> Type:
139
135
  The unmodified input class.
140
136
 
141
137
  """
142
- register(
138
+ PipelineComponentRegistry().register(
143
139
  step="storage",
144
- name=klass.__name__,
145
140
  klass=klass,
146
141
  )
147
142
  return klass
@@ -7,15 +7,17 @@
7
7
 
8
8
  import os
9
9
  import shutil
10
- import typing
11
10
  from pathlib import Path
12
11
  from typing import Dict, List, Optional, Tuple, Union
13
12
 
14
13
  from ..api.queue_context import GnuParallelLocalAdapter, HTCondorAdapter
15
14
  from ..datagrabber.base import BaseDataGrabber
16
15
  from ..markers.base import BaseMarker
17
- from ..pipeline import MarkerCollection, WorkDirManager
18
- from ..pipeline.registry import build
16
+ from ..pipeline import (
17
+ MarkerCollection,
18
+ PipelineComponentRegistry,
19
+ WorkDirManager,
20
+ )
19
21
  from ..preprocess.base import BasePreprocessor
20
22
  from ..storage.base import BaseFeatureStorage
21
23
  from ..utils import logger, raise_error, yaml
@@ -38,42 +40,78 @@ def _get_datagrabber(datagrabber_config: Dict) -> BaseDataGrabber:
38
40
  The DataGrabber.
39
41
 
40
42
  """
41
- datagrabber_params = datagrabber_config.copy()
42
- datagrabber_kind = datagrabber_params.pop("kind")
43
- datagrabber = build(
43
+ return PipelineComponentRegistry().build_component_instance(
44
44
  step="datagrabber",
45
- name=datagrabber_kind,
45
+ name=datagrabber_config.pop("kind"),
46
46
  baseclass=BaseDataGrabber,
47
- init_params=datagrabber_params,
47
+ init_params=datagrabber_config,
48
48
  )
49
- datagrabber = typing.cast(BaseDataGrabber, datagrabber)
50
- return datagrabber
51
49
 
52
50
 
53
51
  def _get_preprocessor(preprocessing_config: Dict) -> BasePreprocessor:
54
- """Get preprocessor.
52
+ """Get Preprocessor.
55
53
 
56
54
  Parameters
57
55
  ----------
58
56
  preprocessing_config : dict
59
- The config to get the preprocessor using.
57
+ The config to get the Preprocessor using.
60
58
 
61
59
  Returns
62
60
  -------
63
61
  dict
64
- The preprocessor.
62
+ The Preprocessor.
65
63
 
66
64
  """
67
- preprocessor_params = preprocessing_config.copy()
68
- preprocessor_kind = preprocessor_params.pop("kind")
69
- preprocessor = build(
65
+ return PipelineComponentRegistry().build_component_instance(
70
66
  step="preprocessing",
71
- name=preprocessor_kind,
67
+ name=preprocessing_config.pop("kind"),
72
68
  baseclass=BasePreprocessor,
73
- init_params=preprocessor_params,
69
+ init_params=preprocessing_config,
70
+ )
71
+
72
+
73
+ def _get_marker(marker_config: Dict) -> BaseMarker:
74
+ """Get Marker.
75
+
76
+ Parameters
77
+ ----------
78
+ marker_config : dict
79
+ The config to get the Marker using.
80
+
81
+ Returns
82
+ -------
83
+ object
84
+ The Marker.
85
+
86
+ """
87
+ return PipelineComponentRegistry().build_component_instance(
88
+ step="marker",
89
+ name=marker_config.pop("kind"),
90
+ baseclass=BaseMarker,
91
+ init_params=marker_config,
92
+ )
93
+
94
+
95
+ def _get_storage(storage_config: Dict) -> BaseFeatureStorage:
96
+ """Get Storage.
97
+
98
+ Parameters
99
+ ----------
100
+ storage_config : dict
101
+ The config to get the Storage using.
102
+
103
+ Returns
104
+ -------
105
+ dict
106
+ The Storage.
107
+
108
+ """
109
+ return PipelineComponentRegistry().build_component_instance(
110
+ step="storage",
111
+ name=storage_config.pop("kind"),
112
+ baseclass=BaseFeatureStorage,
113
+ init_params=storage_config,
74
114
  )
75
- preprocessor = typing.cast(BasePreprocessor, preprocessor)
76
- return preprocessor
77
115
 
78
116
 
79
117
  def run(
@@ -123,41 +161,22 @@ def run(
123
161
  elements = [elements]
124
162
 
125
163
  # Get datagrabber to use
126
- datagrabber_object = _get_datagrabber(datagrabber)
164
+ datagrabber_object = _get_datagrabber(datagrabber.copy())
127
165
 
128
- # Copy to avoid changing the original dict
129
- _markers = [x.copy() for x in markers]
130
- built_markers = []
131
- for t_marker in _markers:
132
- kind = t_marker.pop("kind")
133
- t_m = build(
134
- step="marker",
135
- name=kind,
136
- baseclass=BaseMarker,
137
- init_params=t_marker,
138
- )
139
- built_markers.append(t_m)
166
+ # Get markers to use
167
+ built_markers = [_get_marker(marker) for marker in markers.copy()]
140
168
 
141
169
  # Get storage engine to use
142
- storage_params = storage.copy()
143
- storage_kind = storage_params.pop("kind")
144
- if "single_output" not in storage_params:
145
- storage_params["single_output"] = False
146
- storage_object = build(
147
- step="storage",
148
- name=storage_kind,
149
- baseclass=BaseFeatureStorage,
150
- init_params=storage_params,
151
- )
152
- storage_object = typing.cast(BaseFeatureStorage, storage_object)
170
+ if "single_output" not in storage:
171
+ storage["single_output"] = False
172
+ storage_object = _get_storage(storage.copy())
153
173
 
154
174
  # Get preprocessor to use (if provided)
155
175
  if preprocessors is not None:
156
- _preprocessors = [x.copy() for x in preprocessors]
157
- built_preprocessors = []
158
- for preprocessor in _preprocessors:
159
- preprocessor_object = _get_preprocessor(preprocessor)
160
- built_preprocessors.append(preprocessor_object)
176
+ built_preprocessors = [
177
+ _get_preprocessor(preprocessor)
178
+ for preprocessor in preprocessors.copy()
179
+ ]
161
180
  else:
162
181
  built_preprocessors = None
163
182
 
@@ -167,6 +186,7 @@ def run(
167
186
  preprocessors=built_preprocessors,
168
187
  storage=storage_object,
169
188
  )
189
+ # Validate the marker collection for the datagrabber
170
190
  mc.validate(datagrabber_object)
171
191
 
172
192
  # Fit elements
@@ -192,19 +212,11 @@ def collect(storage: Dict) -> None:
192
212
  constructor.
193
213
 
194
214
  """
195
- storage_params = storage.copy()
196
- storage_kind = storage_params.pop("kind")
197
- logger.info(f"Collecting data using {storage_kind}")
198
- logger.debug(f"\tStorage params: {storage_params}")
199
- if "single_output" not in storage_params:
200
- storage_params["single_output"] = False
201
- storage_object = build(
202
- step="storage",
203
- name=storage_kind,
204
- baseclass=BaseFeatureStorage,
205
- init_params=storage_params,
206
- )
207
- storage_object = typing.cast(BaseFeatureStorage, storage_object)
215
+ logger.info(f"Collecting data using {storage['kind']}")
216
+ logger.debug(f"\tStorage params: {storage}")
217
+ if "single_output" not in storage:
218
+ storage["single_output"] = False
219
+ storage_object = _get_storage(storage.copy())
208
220
  logger.debug("Running storage.collect()")
209
221
  storage_object.collect()
210
222
  logger.info("Collect done")
@@ -15,7 +15,7 @@ from ruamel.yaml import YAML
15
15
  import junifer.testing.registry # noqa: F401
16
16
  from junifer.api import collect, list_elements, queue, reset, run
17
17
  from junifer.datagrabber.base import BaseDataGrabber
18
- from junifer.pipeline.registry import build
18
+ from junifer.pipeline import PipelineComponentRegistry
19
19
 
20
20
 
21
21
  # Configure YAML class
@@ -240,7 +240,7 @@ def test_run_and_collect(
240
240
  storage=storage,
241
241
  )
242
242
  # Get datagrabber
243
- dg = build(
243
+ dg = PipelineComponentRegistry().build_component_instance(
244
244
  step="datagrabber", name=datagrabber["kind"], baseclass=BaseDataGrabber
245
245
  )
246
246
  elements = dg.get_elements() # type: ignore
@@ -59,7 +59,7 @@ class DataladAOMICPIOP2(PatternDataladDataGrabber):
59
59
  "restingstate",
60
60
  "stopsignal",
61
61
  "workingmemory",
62
- "emomatching"
62
+ "emomatching",
63
63
  ]
64
64
  # Set default tasks
65
65
  if tasks is None:
@@ -1,12 +1,12 @@
1
1
  __all__ = [
2
- "registry",
2
+ "PipelineComponentRegistry",
3
3
  "PipelineStepMixin",
4
4
  "UpdateMetaMixin",
5
5
  "WorkDirManager",
6
6
  "MarkerCollection",
7
7
  ]
8
8
 
9
- from . import registry
9
+ from .pipeline_component_registry import PipelineComponentRegistry
10
10
  from .pipeline_step_mixin import PipelineStepMixin
11
11
  from .update_meta_mixin import UpdateMetaMixin
12
12
  from .workdir_manager import WorkDirManager
@@ -0,0 +1,299 @@
1
+ """Provide a class for centralized pipeline component registry."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # Leonard Sasse <l.sasse@fz-juelich.de>
5
+ # Synchon Mandal <s.mandal@fz-juelich.de>
6
+ # License: AGPL
7
+
8
+ import importlib
9
+ from typing import TYPE_CHECKING, Dict, List, Mapping, Optional, Union
10
+
11
+ from ..utils import logger, raise_error
12
+ from .singleton import singleton
13
+
14
+
15
+ if TYPE_CHECKING:
16
+ from ..datagrabber import BaseDataGrabber
17
+ from ..storage import BaseFeatureStorage
18
+ from .pipeline_step_mixin import PipelineStepMixin
19
+
20
+
21
+ __all__ = ["PipelineComponentRegistry"]
22
+
23
+
24
+ @singleton
25
+ class PipelineComponentRegistry:
26
+ """Class for pipeline component registry.
27
+
28
+ This class is a singleton and is used for managing pipeline components.
29
+ It serves as a centralized registry for built-in and third-party pipeline
30
+ components like datagrabbers, datareaders, preprocessors, markers and
31
+ storage.
32
+
33
+ Attributes
34
+ ----------
35
+ steps : list of str
36
+ Valid pipeline steps.
37
+ components : dict
38
+ Registered components for valid pipeline steps.
39
+
40
+ """
41
+
42
+ def __init__(self) -> None:
43
+ """Initialize the class."""
44
+ # Valid steps for operation
45
+ self._steps = [
46
+ "datagrabber",
47
+ "datareader",
48
+ "preprocessing",
49
+ "marker",
50
+ "storage",
51
+ ]
52
+ # Step to sub-package mapping
53
+ self._step_to_subpkg_mappings = {
54
+ "datagrabber": "datagrabber",
55
+ "datareader": "datareader",
56
+ "preprocessing": "preprocess",
57
+ "marker": "markers",
58
+ "storage": "storage",
59
+ }
60
+ # Component registry for valid steps
61
+ self._components = {
62
+ "datagrabber": {
63
+ "HCP1200": "HCP1200",
64
+ "BaseDataGrabber": "BaseDataGrabber",
65
+ "DataladAOMICID1000": "DataladAOMICID1000",
66
+ "DataladAOMICPIOP1": "DataladAOMICPIOP1",
67
+ "DataladAOMICPIOP2": "DataladAOMICPIOP2",
68
+ "DataladDataGrabber": "DataladDataGrabber",
69
+ "DataladHCP1200": "DataladHCP1200",
70
+ "DMCC13Benchmark": "DMCC13Benchmark",
71
+ "MultipleDataGrabber": "MultipleDataGrabber",
72
+ "PatternDataGrabber": "PatternDataGrabber",
73
+ "PatternDataladDataGrabber": "PatternDataladDataGrabber",
74
+ },
75
+ "datareader": {
76
+ "DefaultDataReader": "DefaultDataReader",
77
+ },
78
+ "preprocessing": {
79
+ "BasePreprocessor": "BasePreprocessor",
80
+ "Smoothing": "Smoothing",
81
+ "SpaceWarper": "SpaceWarper",
82
+ "fMRIPrepConfoundRemover": "fMRIPrepConfoundRemover",
83
+ },
84
+ "marker": {
85
+ "ALFFParcels": "ALFFParcels",
86
+ "ALFFSpheres": "ALFFSpheres",
87
+ "BaseMarker": "BaseMarker",
88
+ "BrainPrint": "BrainPrint",
89
+ "CrossParcellationFC": "CrossParcellationFC",
90
+ "EdgeCentricFCParcels": "EdgeCentricFCParcels",
91
+ "EdgeCentricFCSpheres": "EdgeCentricFCSpheres",
92
+ "FunctionalConnectivityParcels": (
93
+ "FunctionalConnectivityParcels"
94
+ ),
95
+ "FunctionalConnectivitySpheres": (
96
+ "FunctionalConnectivitySpheres"
97
+ ),
98
+ "ParcelAggregation": "ParcelAggregation",
99
+ "ReHoParcels": "ReHoParcels",
100
+ "ReHoSpheres": "ReHoSpheres",
101
+ "RSSETSMarker": "RSSETSMarker",
102
+ "SphereAggregation": "SphereAggregation",
103
+ "TemporalSNRParcels": "TemporalSNRParcels",
104
+ "TemporalSNRSpheres": "TemporalSNRSpheres",
105
+ },
106
+ "storage": {
107
+ "BaseFeatureStorage": "BaseFeatureStorage",
108
+ "HDF5FeatureStorage": "HDF5FeatureStorage",
109
+ "PandasBaseFeatureStorage": "PandasBaseFeatureStorage",
110
+ "SQLiteFeatureStorage": "SQLiteFeatureStorage",
111
+ },
112
+ }
113
+
114
+ def _check_valid_step(self, step: str) -> None:
115
+ """Check if ``step`` is valid."""
116
+ if step not in self._steps:
117
+ raise_error(msg=f"Invalid step: {step}", klass=ValueError)
118
+
119
+ @property
120
+ def steps(self) -> List[str]:
121
+ """Get valid pipeline steps."""
122
+ return self._steps
123
+
124
+ @property
125
+ def components(self) -> Mapping[str, Mapping[str, Union[str, type]]]:
126
+ """Get registered components for valid pipeline steps."""
127
+ return self._components
128
+
129
+ def register(self, step: str, klass: type) -> None:
130
+ """Register ``klass`` under ``step``.
131
+
132
+ Parameters
133
+ ----------
134
+ step : str
135
+ Name of the pipeline step. For valid steps, check :meth:`.steps`.
136
+ klass : class
137
+ Class to be registered.
138
+
139
+ Raises
140
+ ------
141
+ ValueError
142
+ If the ``step`` is invalid.
143
+
144
+ """
145
+ # Verify step
146
+ self._check_valid_step(step)
147
+ # Log and register
148
+ name = klass.__name__
149
+ logger.info(f"Registering {name} in {step}")
150
+ self._components[step][name] = klass
151
+
152
+ def deregister(self, step: str, klass: type) -> None:
153
+ """De-register ``klass`` under ``step``.
154
+
155
+ Parameters
156
+ ----------
157
+ step : str
158
+ Name of the pipeline step. For valid steps, check :meth:`.steps`.
159
+ klass : class
160
+ Class to be de-registered.
161
+
162
+ Raises
163
+ ------
164
+ ValueError
165
+ If the ``step`` is invalid.
166
+
167
+ """
168
+ # Verify step
169
+ self._check_valid_step(step)
170
+ # Log and register
171
+ name = klass.__name__
172
+ logger.info(f"De-registering {name} in {step}")
173
+ _ = self._components[step].pop(name)
174
+
175
+ def step_components(self, step: str) -> List[str]:
176
+ """Get registered components for ``step``.
177
+
178
+ Parameters
179
+ ----------
180
+ step : str
181
+ Name of the pipeline step.
182
+
183
+ Returns
184
+ -------
185
+ list of str
186
+ List of registered component classes.
187
+
188
+ Raises
189
+ ------
190
+ ValueError
191
+ If the ``step`` is invalid.
192
+
193
+ """
194
+ # Verify step
195
+ self._check_valid_step(step)
196
+
197
+ return list(self._components[step].keys())
198
+
199
+ def get_class(self, step: str, name: str) -> type:
200
+ """Get the class registered under ``name`` for ``step``.
201
+
202
+ Parameters
203
+ ----------
204
+ step : str
205
+ Name of the pipeline step.
206
+ name : str
207
+ Name of the component.
208
+
209
+ Returns
210
+ -------
211
+ class
212
+ Registered class.
213
+
214
+ Raises
215
+ ------
216
+ ValueError
217
+ If the ``step`` or ``name`` is invalid.
218
+
219
+ """
220
+ # Verify step
221
+ self._check_valid_step(step)
222
+ # Verify step name
223
+ if name not in self._components[step]:
224
+ raise_error(msg=f"Invalid name: {name}", klass=ValueError)
225
+
226
+ # Check if first-time import, then import it
227
+ if isinstance(self._components[step][name], str):
228
+ klass = getattr(
229
+ importlib.import_module(
230
+ f"junifer.{self._step_to_subpkg_mappings[step]}"
231
+ ),
232
+ name,
233
+ )
234
+ else:
235
+ klass = self._components[step][name]
236
+
237
+ return klass
238
+
239
+ def build_component_instance(
240
+ self,
241
+ step: str,
242
+ name: str,
243
+ baseclass: type,
244
+ init_params: Optional[Dict] = None,
245
+ ) -> Union["BaseDataGrabber", "PipelineStepMixin", "BaseFeatureStorage"]:
246
+ """Build an instance of class registered as ``name``.
247
+
248
+ Parameters
249
+ ----------
250
+ step : str
251
+ Name of the pipeline step.
252
+ name : str
253
+ Name of the component.
254
+ baseclass : class
255
+ Base class to be checked against.
256
+ init_params : dict or None, optional
257
+ Parameters to pass to the class constructor (default None).
258
+
259
+ Returns
260
+ -------
261
+ object
262
+ An instance of the class registered as ``name`` under ``step``.
263
+
264
+ Raises
265
+ ------
266
+ RuntimeError
267
+ If there is a problem creating the instance.
268
+ ValueError
269
+ If the created object with the given name is not a subclass of the
270
+ base class ``baseclass``.
271
+
272
+ """
273
+ # Set default init parameters
274
+ if init_params is None:
275
+ init_params = {}
276
+ # Get registered class
277
+ logger.debug(f"Building {step}/{name}")
278
+ klass = self.get_class(step=step, name=name)
279
+ logger.debug(f"\tClass: {klass.__name__}")
280
+ logger.debug(f"\tInit params: {init_params}")
281
+ try:
282
+ # Create instance of the class
283
+ object_ = klass(**init_params)
284
+ except (ValueError, TypeError) as e:
285
+ raise_error(
286
+ msg=f"Failed to create {step} ({name}). Error: {e}",
287
+ klass=RuntimeError,
288
+ exception=e,
289
+ )
290
+ # Verify created instance belongs to the base class
291
+ if not isinstance(object_, baseclass):
292
+ raise_error(
293
+ msg=(
294
+ f"Invalid {step} ({object_.__class__.__name__}). "
295
+ f"Must inherit from {baseclass.__name__}"
296
+ ),
297
+ klass=ValueError,
298
+ )
299
+ return object_