junifer 0.0.6.dev258__tar.gz → 0.0.6.dev277__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 (491) hide show
  1. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/PKG-INFO +1 -1
  2. junifer-0.0.6.dev277/docs/changes/newsfragments/398.bugfix +1 -0
  3. junifer-0.0.6.dev277/docs/changes/newsfragments/401.feature +1 -0
  4. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/_version.py +2 -2
  5. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/functions.py +1 -1
  6. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/parser.py +1 -1
  7. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/_masks.py +1 -1
  8. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/template_spaces.py +1 -1
  9. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/multiple.py +6 -2
  10. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/pattern.py +58 -52
  11. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/pattern_validation_mixin.py +3 -3
  12. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/tests/test_datalad_base.py +2 -2
  13. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/tests/test_multiple.py +48 -2
  14. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/tests/test_pattern_datalad.py +1 -1
  15. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/stats.py +1 -1
  16. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/typing/__init__.pyi +4 -0
  17. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/typing/_typing.py +11 -5
  18. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/__init__.pyi +3 -0
  19. junifer-0.0.6.dev277/junifer/utils/_config.py +110 -0
  20. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/helpers.py +1 -1
  21. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/singleton.py +1 -1
  22. junifer-0.0.6.dev277/junifer/utils/tests/test_config.py +59 -0
  23. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer.egg-info/PKG-INFO +1 -1
  24. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer.egg-info/SOURCES.txt +4 -0
  25. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tools/create_bids_example_dataset.py +2 -0
  26. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tools/create_bids_example_dataset_sessions.py +2 -0
  27. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.dockerignore +0 -0
  28. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  29. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  30. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  31. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  32. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  33. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  34. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/dependabot.yml +0 -0
  35. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/pull_request_template.md +0 -0
  36. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/ci-docs.yml +0 -0
  37. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/ci.yml +0 -0
  38. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/docker-ci-publish.yml +0 -0
  39. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/docker-docs-publish.yml +0 -0
  40. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/docs-preview.yml +0 -0
  41. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/docs.yml +0 -0
  42. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/lint.yml +0 -0
  43. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.github/workflows/pypi.yml +0 -0
  44. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.gitignore +0 -0
  45. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.gitmodules +0 -0
  46. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/.pre-commit-config.yaml +0 -0
  47. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/AUTHORS.rst +0 -0
  48. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/Dockerfile-ci +0 -0
  49. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/Dockerfile-docs +0 -0
  50. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/LICENSE.md +0 -0
  51. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/README.md +0 -0
  52. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/codecov.yml +0 -0
  53. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/conda-env.yml +0 -0
  54. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/Makefile +0 -0
  55. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/_static/css/custom.css +0 -0
  56. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/_static/js/custom.js +0 -0
  57. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/_templates/versions.html +0 -0
  58. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/api.rst +0 -0
  59. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/cli.rst +0 -0
  60. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/configs.rst +0 -0
  61. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/data.rst +0 -0
  62. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/datagrabbers.rst +0 -0
  63. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/datareaders.rst +0 -0
  64. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/index.rst +0 -0
  65. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/markers.rst +0 -0
  66. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/nilearn.rst +0 -0
  67. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/onthefly.rst +0 -0
  68. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/pipeline.rst +0 -0
  69. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/preprocessing.rst +0 -0
  70. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/stats.rst +0 -0
  71. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/storage.rst +0 -0
  72. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/testing.rst +0 -0
  73. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/api/utils.rst +0 -0
  74. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/builtin.rst +0 -0
  75. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/contributors.inc +0 -0
  76. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/.gitignore +0 -0
  77. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/335.enh +0 -0
  78. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/354.feature +0 -0
  79. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/355.misc +0 -0
  80. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/356.bugfix +0 -0
  81. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/357.enh +0 -0
  82. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/358.doc +0 -0
  83. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/359.doc +0 -0
  84. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/360.bugfix +0 -0
  85. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/361.misc +0 -0
  86. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/362.feature +0 -0
  87. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/367.enh +0 -0
  88. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/368.enh +0 -0
  89. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/369.bugfix +0 -0
  90. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/370.bugfix +0 -0
  91. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/372.misc +0 -0
  92. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/373.misc +0 -0
  93. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/374.misc +0 -0
  94. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/380.misc +0 -0
  95. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/382.misc +0 -0
  96. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/383.misc +0 -0
  97. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/384.misc +0 -0
  98. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/386.bugfix +0 -0
  99. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/387.change +0 -0
  100. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/387.feature +0 -0
  101. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/388.bugfix +0 -0
  102. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/389.enh +0 -0
  103. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/390.change +0 -0
  104. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/390.enh +0 -0
  105. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/391.misc +0 -0
  106. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/392.feature +0 -0
  107. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/changes/newsfragments/393.misc +0 -0
  108. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/conf.py +0 -0
  109. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/contribution.rst +0 -0
  110. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/coordinates.rst +0 -0
  111. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/datagrabber.rst +0 -0
  112. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/dependencies.rst +0 -0
  113. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/extension.rst +0 -0
  114. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/index.rst +0 -0
  115. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/marker.rst +0 -0
  116. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/masks.rst +0 -0
  117. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/parcellations.rst +0 -0
  118. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/extending/preprocessor.rst +0 -0
  119. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/faq.rst +0 -0
  120. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/help.rst +0 -0
  121. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/images/junifer_logo.png +0 -0
  122. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/index.rst +0 -0
  123. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/installation.rst +0 -0
  124. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/links.inc +0 -0
  125. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/maintaining.rst +0 -0
  126. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/redirect.html +0 -0
  127. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/starting.rst +0 -0
  128. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/data.rst +0 -0
  129. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/datagrabber.rst +0 -0
  130. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/datareader.rst +0 -0
  131. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/index.rst +0 -0
  132. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/marker.rst +0 -0
  133. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/pipeline.rst +0 -0
  134. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/preprocess.rst +0 -0
  135. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/understanding/storage.rst +0 -0
  136. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/using/codeless.rst +0 -0
  137. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/using/index.rst +0 -0
  138. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/using/masks.rst +0 -0
  139. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/using/queueing.rst +0 -0
  140. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/using/running.rst +0 -0
  141. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/docs/whats_new.rst +0 -0
  142. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/README.rst +0 -0
  143. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/norun_hcpfc_pearson.py +0 -0
  144. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/norun_ukbvm_gmd.py +0 -0
  145. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/run_compute_parcel_mean.py +0 -0
  146. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/run_datagrabber_bids_datalad.py +0 -0
  147. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/run_ets_rss_marker.py +0 -0
  148. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/run_junifer_julearn.py +0 -0
  149. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/run_run_gmd_mean.py +0 -0
  150. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/yamls/gmd_mean.yaml +0 -0
  151. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  152. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  153. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  154. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/ignore_words.txt +0 -0
  155. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/__init__.py +0 -0
  156. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/__init__.pyi +0 -0
  157. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/__init__.py +0 -0
  158. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/__init__.pyi +0 -0
  159. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/decorators.py +1 -1
  160. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/py.typed +0 -0
  161. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/__init__.py +0 -0
  162. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/__init__.pyi +0 -0
  163. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  164. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  165. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/py.typed +0 -0
  166. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  167. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  168. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  169. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  170. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/afni/3dRSFC +0 -0
  171. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/afni/3dReHo +0 -0
  172. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/afni/afni +0 -0
  173. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  174. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/ants/ResampleImage +0 -0
  175. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/ants/antsApplyTransforms +0 -0
  176. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  177. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  178. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/freesurfer/mri_binarize +0 -0
  179. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/freesurfer/mri_mc +0 -0
  180. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/freesurfer/mri_pretess +0 -0
  181. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/freesurfer/mris_convert +0 -0
  182. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  183. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/fsl/applywarp +0 -0
  184. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/fsl/flirt +0 -0
  185. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/fsl/img2imgcoord +0 -0
  186. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  187. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/fsl/std2imgcoord +0 -0
  188. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/run_conda.bash +0 -0
  189. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/run_conda.zsh +0 -0
  190. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/run_venv.bash +0 -0
  191. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/res/run_venv.zsh +0 -0
  192. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/api/tests/test_functions.py +0 -0
  193. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/__init__.py +0 -0
  194. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/__init__.pyi +0 -0
  195. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/cli.py +8 -8
  196. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/py.typed +0 -0
  197. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  198. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  199. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  200. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/tests/test_cli.py +0 -0
  201. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/tests/test_cli_utils.py +0 -0
  202. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/tests/test_parser.py +0 -0
  203. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/cli/utils.py +0 -0
  204. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/__init__.py +0 -0
  205. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/__init__.py +0 -0
  206. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/__init__.pyi +0 -0
  207. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  208. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  209. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  210. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  211. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  212. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  213. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  214. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  215. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  216. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  217. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  218. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  219. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  220. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/configs/juseless/py.typed +0 -0
  221. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/conftest.py +0 -0
  222. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/__init__.py +0 -0
  223. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/__init__.pyi +0 -0
  224. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/_dispatch.py +1 -1
  225. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
  226. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/CogAC_VOIs.txt +0 -0
  227. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/CogAR_VOIs.txt +0 -0
  228. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
  229. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  230. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/Empathy_VOIs.txt +0 -0
  231. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/Motor_VOIs.txt +0 -0
  232. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/MultiTask_VOIs.txt +0 -0
  233. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/PhysioStress_VOIs.txt +0 -0
  234. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
  235. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
  236. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/Rew_VOIs.txt +0 -0
  237. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/Somatosensory_VOIs.txt +0 -0
  238. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/ToM_VOIs.txt +0 -0
  239. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/VigAtt_VOIs.txt +0 -0
  240. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/WM_VOIs.txt +0 -0
  241. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/eMDN_VOIs.txt +0 -0
  242. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/eSAD_VOIs.txt +0 -0
  243. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/VOIs/meta/extDMN_VOIs.txt +0 -0
  244. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/__init__.py +0 -0
  245. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/__init__.pyi +0 -0
  246. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  247. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/_coordinates.py +0 -0
  248. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  249. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  250. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/__init__.py +0 -0
  251. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/__init__.pyi +0 -0
  252. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/_ants_mask_warper.py +0 -0
  253. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  254. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/tests/test_masks.py +0 -0
  255. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz +0 -0
  256. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
  257. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
  258. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
  259. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/parcellations/__init__.py +0 -0
  260. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/parcellations/__init__.pyi +0 -0
  261. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  262. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  263. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/parcellations/_parcellations.py +0 -0
  264. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  265. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/pipeline_data_registry_base.py +0 -0
  266. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/py.typed +0 -0
  267. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/tests/test_data_utils.py +0 -0
  268. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/tests/test_template_spaces.py +0 -0
  269. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/data/utils.py +0 -0
  270. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/__init__.py +0 -0
  271. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/__init__.pyi +0 -0
  272. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/__init__.py +0 -0
  273. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  274. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/id1000.py +0 -0
  275. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/piop1.py +0 -0
  276. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/piop2.py +0 -0
  277. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/py.typed +0 -0
  278. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  279. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  280. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  281. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/base.py +0 -0
  282. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/datalad_base.py +0 -0
  283. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  284. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  285. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  286. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  287. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  288. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/hcp1200/py.typed +0 -0
  289. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  290. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/pattern_datalad.py +0 -0
  291. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/py.typed +0 -0
  292. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/tests/test_base.py +0 -0
  293. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  294. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/tests/test_pattern.py +0 -0
  295. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  296. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datareader/__init__.py +0 -0
  297. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datareader/__init__.pyi +0 -0
  298. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datareader/default.py +0 -0
  299. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datareader/py.typed +0 -0
  300. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/datareader/tests/test_default_reader.py +0 -0
  301. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  302. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  303. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  304. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  305. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  306. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  307. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  308. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  309. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/__init__.py +0 -0
  310. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/h5io/h5io/__init__.py +0 -0
  311. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/h5io/h5io/_h5io.py +0 -0
  312. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/h5io/h5io/_version.py +0 -0
  313. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  314. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  315. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/nilearn/__init__.py +0 -0
  316. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/nilearn/__init__.pyi +0 -0
  317. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  318. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  319. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/nilearn/py.typed +0 -0
  320. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  321. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  322. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/__init__.py +0 -0
  323. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/__init__.pyi +0 -0
  324. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/base.py +0 -0
  325. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/brainprint.py +0 -0
  326. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/__init__.py +0 -0
  327. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/__init__.pyi +0 -0
  328. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/complexity_base.py +0 -0
  329. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/hurst_exponent.py +0 -0
  330. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  331. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/perm_entropy.py +0 -0
  332. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/py.typed +0 -0
  333. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/range_entropy.py +0 -0
  334. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  335. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/sample_entropy.py +0 -0
  336. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  337. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  338. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  339. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  340. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  341. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  342. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  343. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  344. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  345. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/ets_rss.py +0 -0
  346. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/__init__.py +0 -0
  347. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/__init__.pyi +0 -0
  348. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/_afni_falff.py +0 -0
  349. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/_junifer_falff.py +0 -0
  350. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/falff_base.py +0 -0
  351. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/falff_parcels.py +0 -0
  352. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/falff_spheres.py +0 -0
  353. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/py.typed +0 -0
  354. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  355. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  356. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/__init__.py +0 -0
  357. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  358. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  359. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  360. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  361. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  362. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  363. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  364. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/py.typed +0 -0
  365. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  366. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  367. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  368. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  369. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  370. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  371. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/parcel_aggregation.py +0 -0
  372. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/py.typed +0 -0
  373. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/__init__.py +0 -0
  374. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/__init__.pyi +0 -0
  375. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/_afni_reho.py +0 -0
  376. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/_junifer_reho.py +0 -0
  377. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/py.typed +0 -0
  378. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/reho_base.py +0 -0
  379. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/reho_parcels.py +0 -0
  380. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/reho_spheres.py +0 -0
  381. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  382. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  383. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/sphere_aggregation.py +0 -0
  384. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/__init__.py +0 -0
  385. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  386. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/py.typed +0 -0
  387. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  388. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  389. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  390. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  391. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  392. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  393. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/tests/test_brainprint.py +0 -0
  394. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/tests/test_ets_rss.py +0 -0
  395. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/tests/test_marker_utils.py +0 -0
  396. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/tests/test_markers_base.py +0 -0
  397. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  398. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  399. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/markers/utils.py +0 -0
  400. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/onthefly/__init__.py +0 -0
  401. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/onthefly/_brainprint.py +0 -0
  402. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/onthefly/read_transform.py +0 -0
  403. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/onthefly/tests/test_read_transform.py +0 -0
  404. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/__init__.py +0 -0
  405. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/__init__.pyi +0 -0
  406. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/marker_collection.py +0 -0
  407. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/pipeline_component_registry.py +0 -0
  408. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  409. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/py.typed +0 -0
  410. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  411. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  412. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  413. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  414. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  415. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/update_meta_mixin.py +0 -0
  416. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/utils.py +0 -0
  417. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/pipeline/workdir_manager.py +0 -0
  418. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/__init__.py +0 -0
  419. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/__init__.pyi +0 -0
  420. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/base.py +0 -0
  421. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/confounds/__init__.py +0 -0
  422. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/confounds/__init__.pyi +0 -0
  423. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  424. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/confounds/py.typed +0 -0
  425. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  426. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/py.typed +0 -0
  427. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/__init__.py +0 -0
  428. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  429. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  430. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  431. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  432. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/py.typed +0 -0
  433. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/smoothing.py +0 -0
  434. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  435. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  436. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/warping/__init__.py +0 -0
  437. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/warping/__init__.pyi +0 -0
  438. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/warping/_ants_warper.py +0 -0
  439. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  440. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/warping/py.typed +0 -0
  441. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/warping/space_warper.py +0 -0
  442. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  443. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/py.typed +0 -0
  444. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/__init__.py +0 -0
  445. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/__init__.pyi +0 -0
  446. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/base.py +0 -0
  447. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/hdf5.py +0 -0
  448. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/pandas_base.py +0 -0
  449. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/py.typed +0 -0
  450. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/sqlite.py +0 -0
  451. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/tests/test_hdf5.py +0 -0
  452. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/tests/test_pandas_base.py +0 -0
  453. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/tests/test_sqlite.py +0 -0
  454. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/tests/test_storage_base.py +0 -0
  455. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/tests/test_utils.py +0 -0
  456. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/storage/utils.py +2 -2
  457. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/__init__.py +0 -0
  458. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/__init__.pyi +0 -0
  459. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  460. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/datagrabbers.py +1 -1
  461. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/py.typed +0 -0
  462. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/registry.py +0 -0
  463. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  464. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  465. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  466. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/tests/test_testing_registry.py +0 -0
  467. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/testing/utils.py +0 -0
  468. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/tests/test_main.py +0 -0
  469. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/tests/test_stats.py +0 -0
  470. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/typing/__init__.py +0 -0
  471. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/__init__.py +0 -0
  472. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/_yaml.py +0 -0
  473. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/fs.py +0 -0
  474. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/logging.py +1 -1
  475. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/py.typed +0 -0
  476. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/tests/test_fs.py +0 -0
  477. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/tests/test_helpers.py +0 -0
  478. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer/utils/tests/test_logging.py +0 -0
  479. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer.egg-info/dependency_links.txt +0 -0
  480. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer.egg-info/entry_points.txt +0 -0
  481. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer.egg-info/requires.txt +0 -0
  482. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/junifer.egg-info/top_level.txt +0 -0
  483. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/pyproject.toml +0 -0
  484. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/setup.cfg +0 -0
  485. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/setup.py +0 -0
  486. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tools/create_aomic1000_example_dataset.py +0 -0
  487. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tools/create_aomicpiop1_example_dataset.py +0 -0
  488. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tools/create_aomicpiop2_example_dataset.py +0 -0
  489. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  490. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tools/create_hcp1200_example_dataset.py +0 -0
  491. {junifer-0.0.6.dev258 → junifer-0.0.6.dev277}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.6.dev258
3
+ Version: 0.0.6.dev277
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 metadata update for :class:`.MultipleDataGrabber` and adjust :meth:`.PatternDataGrabber.get_elements` to check ``list``-like data type values by `Fede Raimondo`_ and `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Introduce :class:`junifer.utils.ConfigManager` singleton class to manage global configuration by `Fede Raimondo`_
@@ -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.dev258'
16
- __version_tuple__ = version_tuple = (0, 0, 6, 'dev258')
15
+ __version__ = version = '0.0.6.dev277'
16
+ __version_tuple__ = version_tuple = (0, 0, 6, 'dev277')
@@ -24,7 +24,7 @@ from ..typing import DataGrabberLike, MarkerLike, PreprocessorLike, StorageLike
24
24
  from ..utils import logger, raise_error, yaml
25
25
 
26
26
 
27
- __all__ = ["run", "collect", "queue", "reset", "list_elements"]
27
+ __all__ = ["collect", "list_elements", "queue", "reset", "run"]
28
28
 
29
29
 
30
30
  def _get_datagrabber(datagrabber_config: dict) -> DataGrabberLike:
@@ -15,7 +15,7 @@ import pandas as pd
15
15
  from ..utils import logger, raise_error, warn_with_log, yaml
16
16
 
17
17
 
18
- __all__ = ["parse_yaml", "parse_elements"]
18
+ __all__ = ["parse_elements", "parse_yaml"]
19
19
 
20
20
 
21
21
  def parse_yaml(filepath: Union[str, Path]) -> dict: # noqa: C901
@@ -35,7 +35,7 @@ if TYPE_CHECKING:
35
35
  from nibabel.nifti1 import Nifti1Image
36
36
 
37
37
 
38
- __all__ = ["compute_brain_mask", "MaskRegistry"]
38
+ __all__ = ["MaskRegistry", "compute_brain_mask"]
39
39
 
40
40
 
41
41
  # Path to the masks
@@ -16,7 +16,7 @@ from ..utils import logger, raise_error
16
16
  from .utils import closest_resolution
17
17
 
18
18
 
19
- __all__ = ["get_xfm", "get_template"]
19
+ __all__ = ["get_template", "get_xfm"]
20
20
 
21
21
 
22
22
  def get_xfm(
@@ -111,8 +111,12 @@ class MultipleDataGrabber(BaseDataGrabber):
111
111
 
112
112
  # Update all the metas again
113
113
  for kind in out:
114
- self.update_meta(out[kind], "datagrabber")
115
- out[kind]["meta"]["datagrabber"]["datagrabbers"] = metas
114
+ to_update = out[kind]
115
+ if not isinstance(to_update, list):
116
+ to_update = [to_update]
117
+ for t_kind in to_update:
118
+ self.update_meta(t_kind, "datagrabber")
119
+ t_kind["meta"]["datagrabber"]["datagrabbers"] = metas
116
120
  return out
117
121
 
118
122
  def __enter__(self) -> "MultipleDataGrabber":
@@ -13,6 +13,7 @@ from typing import Optional, Union
13
13
  import numpy as np
14
14
 
15
15
  from ..api.decorators import register_datagrabber
16
+ from ..typing import DataGrabberPatterns
16
17
  from ..utils import logger, raise_error
17
18
  from .base import BaseDataGrabber
18
19
  from .pattern_validation_mixin import PatternValidationMixin
@@ -171,7 +172,7 @@ class PatternDataGrabber(BaseDataGrabber, PatternValidationMixin):
171
172
  def __init__(
172
173
  self,
173
174
  types: list[str],
174
- patterns: dict[str, dict[str, str]],
175
+ patterns: DataGrabberPatterns,
175
176
  replacements: Union[list[str], str],
176
177
  datadir: Union[str, Path],
177
178
  confounds_format: Optional[str] = None,
@@ -478,58 +479,63 @@ class PatternDataGrabber(BaseDataGrabber, PatternValidationMixin):
478
479
  t_type = self.types[t_idx]
479
480
  types_element = set()
480
481
 
481
- # Get the pattern dict
482
- t_pattern = self.patterns[t_type]
483
- # Conditional fetch of base pattern for getting elements
484
- pattern = None
485
- # Try for data type pattern
486
- pattern = t_pattern.get("pattern")
487
- # Try for nested data type pattern
488
- if pattern is None and self.partial_pattern_ok:
489
- for v in t_pattern.values():
490
- if isinstance(v, dict) and "pattern" in v:
491
- pattern = v["pattern"]
492
- break
493
-
494
- # Replace the pattern
495
- (
496
- re_pattern,
497
- glob_pattern,
498
- t_replacements,
499
- ) = self._replace_patterns_regex(pattern)
500
- for fname in self.datadir.glob(glob_pattern):
501
- suffix = fname.relative_to(self.datadir).as_posix()
502
- m = re.match(re_pattern, suffix)
503
- if m is not None:
504
- # Find the groups of replacements present in the pattern
505
- # If one replacement is not present, set it to None.
506
- # We will take care of this in the intersection
507
- t_element = tuple([m.group(k) for k in t_replacements])
508
- if len(self.replacements) == 1:
509
- t_element = t_element[0]
510
- types_element.add(t_element)
511
- # TODO: does this make sense as elements is always None
512
- if elements is None:
513
- elements = types_element
514
- else:
515
- # Do the intersection by filtering out elements in which
516
- # the replacements are not None
517
- if t_replacements == self.replacements:
518
- elements.intersection(types_element)
482
+ # Data type dictionary
483
+ patterns = self.patterns[t_type]
484
+ # Conditional for list dtype vals like Warp
485
+ if not isinstance(patterns, list):
486
+ patterns = [patterns]
487
+ for t_pattern in patterns:
488
+ # Conditional fetch of base pattern for getting elements
489
+ pattern = None
490
+ # Try for data type pattern
491
+ pattern = t_pattern.get("pattern")
492
+ # Try for nested data type pattern
493
+ if pattern is None and self.partial_pattern_ok:
494
+ for v in t_pattern.values():
495
+ if isinstance(v, dict) and "pattern" in v:
496
+ pattern = v["pattern"]
497
+ break
498
+
499
+ # Replace the pattern
500
+ (
501
+ re_pattern,
502
+ glob_pattern,
503
+ t_replacements,
504
+ ) = self._replace_patterns_regex(pattern)
505
+ for fname in self.datadir.glob(glob_pattern):
506
+ suffix = fname.relative_to(self.datadir).as_posix()
507
+ m = re.match(re_pattern, suffix)
508
+ if m is not None:
509
+ # Find the groups of replacements present in the
510
+ # pattern. If one replacement is not present, set it
511
+ # to None. We will take care of this in the
512
+ # intersection.
513
+ t_element = tuple([m.group(k) for k in t_replacements])
514
+ if len(self.replacements) == 1:
515
+ t_element = t_element[0]
516
+ types_element.add(t_element)
517
+ # TODO: does this make sense as elements is always None
518
+ if elements is None:
519
+ elements = types_element
519
520
  else:
520
- t_repl_idx = [
521
- i
522
- for i, v in enumerate(self.replacements)
523
- if v in t_replacements
524
- ]
525
- new_elements = set()
526
- for t_element in elements:
527
- if (
528
- tuple(np.array(t_element)[t_repl_idx])
529
- in types_element
530
- ):
531
- new_elements.add(t_element)
532
- elements = new_elements
521
+ # Do the intersection by filtering out elements in which
522
+ # the replacements are not None
523
+ if t_replacements == self.replacements:
524
+ elements.intersection(types_element)
525
+ else:
526
+ t_repl_idx = [
527
+ i
528
+ for i, v in enumerate(self.replacements)
529
+ if v in t_replacements
530
+ ]
531
+ new_elements = set()
532
+ for t_element in elements:
533
+ if (
534
+ tuple(np.array(t_element)[t_repl_idx])
535
+ in types_element
536
+ ):
537
+ new_elements.add(t_element)
538
+ elements = new_elements
533
539
  if elements is None:
534
540
  elements = set()
535
541
  return list(elements)
@@ -3,8 +3,8 @@
3
3
  # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
4
  # License: AGPL
5
5
 
6
- from typing import Union
7
6
 
7
+ from ..typing import DataGrabberPatterns
8
8
  from ..utils import logger, raise_error, warn_with_log
9
9
 
10
10
 
@@ -96,7 +96,7 @@ class PatternValidationMixin:
96
96
  def _validate_replacements(
97
97
  self,
98
98
  replacements: list[str],
99
- patterns: dict[str, Union[dict[str, str], list[dict[str, str]]]],
99
+ patterns: DataGrabberPatterns,
100
100
  partial_pattern_ok: bool,
101
101
  ) -> None:
102
102
  """Validate the replacements.
@@ -263,7 +263,7 @@ class PatternValidationMixin:
263
263
  self,
264
264
  types: list[str],
265
265
  replacements: list[str],
266
- patterns: dict[str, Union[dict[str, str], list[dict[str, str]]]],
266
+ patterns: DataGrabberPatterns,
267
267
  partial_pattern_ok: bool = False,
268
268
  ) -> None:
269
269
  """Validate the patterns.
@@ -14,8 +14,8 @@ from junifer.datagrabber import DataladDataGrabber
14
14
  _testing_dataset = {
15
15
  "example_bids": {
16
16
  "uri": "https://gin.g-node.org/juaml/datalad-example-bids",
17
- "commit": "b87897cbe51bf0ee5514becaa5c7dd76491db5ad",
18
- "id": "8fddff30-6993-420a-9d1e-b5b028c59468",
17
+ "commit": "3f288c8725207ae0c9b3616e093e78cda192b570",
18
+ "id": "582b9696-f13f-42e4-9587-b4e62aa2a8e7",
19
19
  },
20
20
  "example_bids_ses": {
21
21
  "uri": "https://gin.g-node.org/juaml/datalad-example-bids-ses",
@@ -29,7 +29,7 @@ def test_MultipleDataGrabber() -> None:
29
29
  dg1 = PatternDataladDataGrabber(
30
30
  rootdir=rootdir,
31
31
  uri=repo_uri,
32
- types=["T1w"],
32
+ types=["T1w", "Warp"],
33
33
  patterns={
34
34
  "T1w": {
35
35
  "pattern": (
@@ -44,6 +44,28 @@ def test_MultipleDataGrabber() -> None:
44
44
  "space": "native",
45
45
  },
46
46
  },
47
+ "Warp": [
48
+ {
49
+ "pattern": (
50
+ "{subject}/{session}/anat/"
51
+ "{subject}_{session}_from-MNI152NLin2009cAsym_to-T1w_"
52
+ "xfm.h5"
53
+ ),
54
+ "src": "MNI152NLin2009cAsym",
55
+ "dst": "native",
56
+ "warper": "ants",
57
+ },
58
+ {
59
+ "pattern": (
60
+ "{subject}/{session}/anat/"
61
+ "{subject}_{session}_from-T1w_to-MNI152NLin2009cAsym_"
62
+ "xfm.h5"
63
+ ),
64
+ "src": "native",
65
+ "dst": "MNI152NLin2009cAsym",
66
+ "warper": "ants",
67
+ },
68
+ ],
47
69
  },
48
70
  replacements=replacements,
49
71
  )
@@ -75,6 +97,7 @@ def test_MultipleDataGrabber() -> None:
75
97
 
76
98
  types = dg.get_types()
77
99
  assert "T1w" in types
100
+ assert "Warp" in types
78
101
  assert "BOLD" in types
79
102
 
80
103
  expected_subs = [
@@ -90,6 +113,7 @@ def test_MultipleDataGrabber() -> None:
90
113
  elem = dg[("sub-01", "ses-01")]
91
114
  # Check data types
92
115
  assert "T1w" in elem
116
+ assert "Warp" in elem
93
117
  assert "BOLD" in elem
94
118
  # Check meta
95
119
  assert "meta" in elem["BOLD"]
@@ -111,7 +135,7 @@ def test_MultipleDataGrabber_no_intersection() -> None:
111
135
  dg1 = PatternDataladDataGrabber(
112
136
  rootdir=rootdir,
113
137
  uri=_testing_dataset["example_bids"]["uri"],
114
- types=["T1w"],
138
+ types=["T1w", "Warp"],
115
139
  patterns={
116
140
  "T1w": {
117
141
  "pattern": (
@@ -119,6 +143,28 @@ def test_MultipleDataGrabber_no_intersection() -> None:
119
143
  ),
120
144
  "space": "native",
121
145
  },
146
+ "Warp": [
147
+ {
148
+ "pattern": (
149
+ "{subject}/{session}/anat/"
150
+ "{subject}_{session}_from-MNI152NLin2009cAsym_to-T1w_"
151
+ "xfm.h5"
152
+ ),
153
+ "src": "MNI152NLin2009cAsym",
154
+ "dst": "native",
155
+ "warper": "ants",
156
+ },
157
+ {
158
+ "pattern": (
159
+ "{subject}/{session}/anat/"
160
+ "{subject}_{session}_from-T1w_to-MNI152NLin2009cAsym_"
161
+ "xfm.h5"
162
+ ),
163
+ "src": "native",
164
+ "dst": "MNI152NLin2009cAsym",
165
+ "warper": "ants",
166
+ },
167
+ ],
122
168
  },
123
169
  replacements=replacements,
124
170
  )
@@ -15,7 +15,7 @@ from junifer.datagrabber import PatternDataladDataGrabber
15
15
  _testing_dataset = {
16
16
  "example_bids": {
17
17
  "uri": "https://gin.g-node.org/juaml/datalad-example-bids",
18
- "commit": "b87897cbe51bf0ee5514becaa5c7dd76491db5ad",
18
+ "commit": "3f288c8725207ae0c9b3616e093e78cda192b570",
19
19
  "id": "8fddff30-6993-420a-9d1e-b5b028c59468",
20
20
  },
21
21
  "example_bids_ses": {
@@ -13,7 +13,7 @@ from scipy.stats.mstats import winsorize
13
13
  from .utils import logger, raise_error
14
14
 
15
15
 
16
- __all__ = ["get_aggfunc_by_name", "count", "winsorized_mean", "select"]
16
+ __all__ = ["count", "get_aggfunc_by_name", "select", "winsorized_mean"]
17
17
 
18
18
 
19
19
  def get_aggfunc_by_name(
@@ -8,6 +8,8 @@ __all__ = [
8
8
  "ConditionalDependencies",
9
9
  "ExternalDependencies",
10
10
  "MarkerInOutMappings",
11
+ "DataGrabberPatterns",
12
+ "ConfigVal",
11
13
  ]
12
14
 
13
15
  from ._typing import (
@@ -20,4 +22,6 @@ from ._typing import (
20
22
  ConditionalDependencies,
21
23
  ExternalDependencies,
22
24
  MarkerInOutMappings,
25
+ DataGrabberPatterns,
26
+ ConfigVal,
23
27
  )
@@ -19,15 +19,17 @@ if TYPE_CHECKING:
19
19
 
20
20
 
21
21
  __all__ = [
22
+ "ConditionalDependencies",
23
+ "ConfigVal",
22
24
  "DataGrabberLike",
23
- "PreprocessorLike",
24
- "MarkerLike",
25
- "StorageLike",
26
- "PipelineComponent",
25
+ "DataGrabberPatterns",
27
26
  "Dependencies",
28
- "ConditionalDependencies",
29
27
  "ExternalDependencies",
30
28
  "MarkerInOutMappings",
29
+ "MarkerLike",
30
+ "PipelineComponent",
31
+ "PreprocessorLike",
32
+ "StorageLike",
31
33
  ]
32
34
 
33
35
 
@@ -56,3 +58,7 @@ ConditionalDependencies = Sequence[
56
58
  ]
57
59
  ExternalDependencies = Sequence[MutableMapping[str, Union[str, Sequence[str]]]]
58
60
  MarkerInOutMappings = MutableMapping[str, MutableMapping[str, str]]
61
+ DataGrabberPatterns = dict[
62
+ str, Union[dict[str, str], Sequence[dict[str, str]]]
63
+ ]
64
+ ConfigVal = Union[bool, int, float]
@@ -1,15 +1,18 @@
1
1
  __all__ = [
2
2
  "make_executable",
3
3
  "configure_logging",
4
+ "config",
4
5
  "logger",
5
6
  "raise_error",
6
7
  "warn_with_log",
7
8
  "run_ext_cmd",
8
9
  "deep_update",
9
10
  "yaml",
11
+ "ConfigManager",
10
12
  ]
11
13
 
12
14
  from .fs import make_executable
13
15
  from .logging import configure_logging, logger, raise_error, warn_with_log
16
+ from ._config import config, ConfigManager
14
17
  from .helpers import run_ext_cmd, deep_update
15
18
  from ._yaml import yaml
@@ -0,0 +1,110 @@
1
+ """Provide junifer global configuration."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # Synchon Mandal <s.mandal@fz-juelich.de>
5
+ # License: AGPL
6
+
7
+ import os
8
+ from typing import Optional
9
+
10
+ from ..typing import ConfigVal
11
+ from .logging import logger
12
+ from .singleton import Singleton
13
+
14
+
15
+ __all__ = ["ConfigManager", "config"]
16
+
17
+
18
+ class ConfigManager(metaclass=Singleton):
19
+ """Manage configuration parameters.
20
+
21
+ Attributes
22
+ ----------
23
+ _config : dict
24
+ Configuration parameters.
25
+
26
+ """
27
+
28
+ def __init__(self) -> None:
29
+ """Initialize the class."""
30
+ self._config = {}
31
+ # Initial setup from process env
32
+ self._reload()
33
+
34
+ def _reload(self) -> None:
35
+ """Reload env vars."""
36
+ for t_var in os.environ:
37
+ if t_var.startswith("JUNIFER_"):
38
+ # Set correct type
39
+ var_value = os.environ[t_var]
40
+ # bool
41
+ if var_value.lower() == "true":
42
+ var_value = True
43
+ elif var_value.lower() == "false":
44
+ var_value = False
45
+ # numeric
46
+ else:
47
+ try:
48
+ var_value = int(var_value)
49
+ except ValueError:
50
+ try:
51
+ var_value = float(var_value)
52
+ except ValueError:
53
+ pass
54
+ # Set value
55
+ var_name = (
56
+ t_var.replace("JUNIFER_", "").lower().replace("_", ".")
57
+ )
58
+ logger.debug(
59
+ f"Setting `{var_name}` from environment to "
60
+ f"`{var_value}` (type: {type(var_value)})"
61
+ )
62
+ self._config[var_name] = var_value
63
+
64
+ def get(self, key: str, default: Optional[ConfigVal] = None) -> ConfigVal:
65
+ """Get configuration parameter.
66
+
67
+ Parameters
68
+ ----------
69
+ key : str
70
+ The configuration key to get.
71
+ default : bool or int or float or None, optional
72
+ The default value to return if the key is not found (default None).
73
+
74
+ Returns
75
+ -------
76
+ bool or int or float
77
+ The configuration value.
78
+
79
+ """
80
+ return self._config.get(key, default)
81
+
82
+ def set(self, key: str, val: ConfigVal) -> None:
83
+ """Set configuration parameter.
84
+
85
+ Parameters
86
+ ----------
87
+ key : str
88
+ The configuration key to set.
89
+ val : bool or int or float
90
+ The value to set ``key`` to.
91
+
92
+ """
93
+ logger.debug(f"Setting `{key}` to `{val}` (type: {type(val)})")
94
+ self._config[key] = val
95
+
96
+ def delete(self, key: str) -> None:
97
+ """Delete configuration parameter.
98
+
99
+ Parameters
100
+ ----------
101
+ key : str
102
+ The configuration key to delete.
103
+
104
+ """
105
+ logger.debug(f"Deleting `{key}` from config")
106
+ _ = self._config.pop(key)
107
+
108
+
109
+ # Initialize here to access from anywhere
110
+ config = ConfigManager()
@@ -10,7 +10,7 @@ import sys
10
10
  from .logging import logger, raise_error
11
11
 
12
12
 
13
- __all__ = ["run_ext_cmd", "deep_update"]
13
+ __all__ = ["deep_update", "run_ext_cmd"]
14
14
 
15
15
 
16
16
  def run_ext_cmd(name: str, cmd: list[str]) -> None:
@@ -8,7 +8,7 @@ from abc import ABCMeta
8
8
  from typing import Any, ClassVar
9
9
 
10
10
 
11
- __all__ = ["Singleton", "ABCSingleton"]
11
+ __all__ = ["ABCSingleton", "Singleton"]
12
12
 
13
13
 
14
14
  class Singleton(type):
@@ -0,0 +1,59 @@
1
+ """Provide tests for ConfigManager."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # Synchon Mandal <s.mandal@fz-juelich.de>
5
+ # License: AGPL
6
+
7
+ import os
8
+
9
+ import pytest
10
+
11
+ from junifer.typing import ConfigVal
12
+ from junifer.utils import config
13
+ from junifer.utils._config import ConfigManager
14
+
15
+
16
+ def test_config_manager_singleton() -> None:
17
+ """Test that ConfigManager is a singleton."""
18
+ config_mgr_1 = ConfigManager()
19
+ config_mgr_2 = ConfigManager()
20
+ assert id(config_mgr_1) == id(config_mgr_2)
21
+
22
+
23
+ def test_config_manager() -> None:
24
+ """Test config operations for ConfigManager."""
25
+ # Get non-existing with default
26
+ assert config.get(key="scooby") is None
27
+ # Set
28
+ config.set(key="scooby", val=True)
29
+ # Get existing
30
+ assert config.get("scooby")
31
+ # Delete
32
+ config.delete("scooby")
33
+ # Get non-existing with default
34
+ assert config.get(key="scooby") is None
35
+
36
+
37
+ @pytest.mark.parametrize(
38
+ "val, expected_val",
39
+ [("TRUE", True), ("FALSE", False), ("1", 1), ("0.0", 0.0)],
40
+ )
41
+ def test_config_manager_env_reload(val: str, expected_val: ConfigVal) -> None:
42
+ """Test config parsing from env reload.
43
+
44
+ Parameters
45
+ ----------
46
+ val : str
47
+ The parametrized values.
48
+ expected_val : bool or int or float
49
+ The parametrized expected value.
50
+
51
+ """
52
+ # Set env var
53
+ os.environ["JUNIFER_TESTME"] = val
54
+ # Check
55
+ config._reload()
56
+ assert config.get("testme") == expected_val
57
+ # Cleanup
58
+ del os.environ["JUNIFER_TESTME"]
59
+ config.delete("testme")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.6.dev258
3
+ Version: 0.0.6.dev277
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>
@@ -94,6 +94,8 @@ docs/changes/newsfragments/390.enh
94
94
  docs/changes/newsfragments/391.misc
95
95
  docs/changes/newsfragments/392.feature
96
96
  docs/changes/newsfragments/393.misc
97
+ docs/changes/newsfragments/398.bugfix
98
+ docs/changes/newsfragments/401.feature
97
99
  docs/extending/coordinates.rst
98
100
  docs/extending/datagrabber.rst
99
101
  docs/extending/dependencies.rst
@@ -467,12 +469,14 @@ junifer/typing/__init__.pyi
467
469
  junifer/typing/_typing.py
468
470
  junifer/utils/__init__.py
469
471
  junifer/utils/__init__.pyi
472
+ junifer/utils/_config.py
470
473
  junifer/utils/_yaml.py
471
474
  junifer/utils/fs.py
472
475
  junifer/utils/helpers.py
473
476
  junifer/utils/logging.py
474
477
  junifer/utils/py.typed
475
478
  junifer/utils/singleton.py
479
+ junifer/utils/tests/test_config.py
476
480
  junifer/utils/tests/test_fs.py
477
481
  junifer/utils/tests/test_helpers.py
478
482
  junifer/utils/tests/test_logging.py