junifer 0.0.7.dev105__tar.gz → 0.0.7.dev121__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 (463) hide show
  1. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/PKG-INFO +1 -1
  2. junifer-0.0.7.dev121/docs/changes/newsfragments/429.change +1 -0
  3. junifer-0.0.7.dev121/docs/changes/newsfragments/429.enh +1 -0
  4. junifer-0.0.7.dev121/docs/changes/newsfragments/452.doc +1 -0
  5. junifer-0.0.7.dev121/docs/changes/newsfragments/452.feature +1 -0
  6. junifer-0.0.7.dev121/docs/extending/data_dump_asset.rst +46 -0
  7. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/index.rst +1 -0
  8. junifer-0.0.7.dev121/docs/using/configuring.rst +65 -0
  9. junifer-0.0.7.dev121/docs/using/dumping.rst +18 -0
  10. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/using/index.rst +2 -0
  11. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/_version.py +2 -2
  12. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/decorators.py +53 -1
  13. junifer-0.0.7.dev121/junifer/api/tests/test_decorators.py +78 -0
  14. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/onthefly/read_transform.py +70 -4
  15. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/onthefly/tests/test_read_transform.py +84 -0
  16. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/__init__.pyi +10 -0
  17. junifer-0.0.7.dev121/junifer/pipeline/_data_object_dumper.py +347 -0
  18. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/marker_collection.py +41 -3
  19. junifer-0.0.7.dev121/junifer/pipeline/tests/test_data_object_dumper.py +225 -0
  20. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/typing/__init__.pyi +2 -0
  21. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/typing/_typing.py +2 -0
  22. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer.egg-info/PKG-INFO +1 -1
  23. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer.egg-info/SOURCES.txt +9 -0
  24. junifer-0.0.7.dev105/junifer/api/tests/test_decorators.py +0 -32
  25. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.dockerignore +0 -0
  26. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  27. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  28. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  29. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  30. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  31. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  32. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/dependabot.yml +0 -0
  33. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/pull_request_template.md +0 -0
  34. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/ci-docs.yml +0 -0
  35. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/ci.yml +0 -0
  36. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/docker-ci-publish.yml +0 -0
  37. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/docker-docs-publish.yml +0 -0
  38. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/docs-preview.yml +0 -0
  39. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/docs.yml +0 -0
  40. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/lint.yml +0 -0
  41. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.github/workflows/publish.yml +0 -0
  42. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.gitignore +0 -0
  43. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.gitmodules +0 -0
  44. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/.pre-commit-config.yaml +0 -0
  45. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/AUTHORS.rst +0 -0
  46. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/Dockerfile-ci +0 -0
  47. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/Dockerfile-docs +0 -0
  48. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/LICENSE.md +0 -0
  49. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/README.md +0 -0
  50. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/codecov.yml +0 -0
  51. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/conda-env.yml +0 -0
  52. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/Makefile +0 -0
  53. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/_static/css/custom.css +0 -0
  54. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/_static/js/custom.js +0 -0
  55. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/_templates/versions.html +0 -0
  56. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/api.rst +0 -0
  57. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/cli.rst +0 -0
  58. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/configs.rst +0 -0
  59. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/data.rst +0 -0
  60. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/datagrabbers.rst +0 -0
  61. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/datareaders.rst +0 -0
  62. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/index.rst +0 -0
  63. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/markers.rst +0 -0
  64. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/nilearn.rst +0 -0
  65. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/onthefly.rst +0 -0
  66. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/pipeline.rst +0 -0
  67. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/preprocessing.rst +0 -0
  68. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/stats.rst +0 -0
  69. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/storage.rst +0 -0
  70. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/testing.rst +0 -0
  71. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/api/utils.rst +0 -0
  72. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/builtin.rst +0 -0
  73. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/contributors.inc +0 -0
  74. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/.gitignore +0 -0
  75. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/333.enh +0 -0
  76. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/432.feature +0 -0
  77. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/441.misc +0 -0
  78. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/443.feature +0 -0
  79. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/444.bugfix +0 -0
  80. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/450.doc +0 -0
  81. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/450.feature +0 -0
  82. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/451.doc +0 -0
  83. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/changes/newsfragments/451.feature +0 -0
  84. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/conf.py +0 -0
  85. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/contribution.rst +0 -0
  86. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/coordinates.rst +0 -0
  87. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/data_registries.rst +0 -0
  88. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/data_types.rst +0 -0
  89. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/datagrabber.rst +0 -0
  90. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/dependencies.rst +0 -0
  91. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/extension.rst +0 -0
  92. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/marker.rst +0 -0
  93. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/masks.rst +0 -0
  94. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/parcellations.rst +0 -0
  95. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/plugins.rst +0 -0
  96. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/extending/preprocessor.rst +0 -0
  97. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/faq.rst +0 -0
  98. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/help.rst +0 -0
  99. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/images/junifer_logo.png +0 -0
  100. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/index.rst +0 -0
  101. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/installation.rst +0 -0
  102. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/links.inc +0 -0
  103. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/maintaining.rst +0 -0
  104. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/redirect.html +0 -0
  105. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/starting.rst +0 -0
  106. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/data.rst +0 -0
  107. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/datagrabber.rst +0 -0
  108. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/datareader.rst +0 -0
  109. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/index.rst +0 -0
  110. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/marker.rst +0 -0
  111. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/pipeline.rst +0 -0
  112. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/preprocess.rst +0 -0
  113. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/understanding/storage.rst +0 -0
  114. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/using/codeless.rst +0 -0
  115. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/using/masks.rst +0 -0
  116. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/using/queueing.rst +0 -0
  117. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/using/running.rst +0 -0
  118. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/docs/whats_new.rst +0 -0
  119. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/README.rst +0 -0
  120. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/norun_hcpfc_pearson.py +0 -0
  121. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/norun_ukbvm_gmd.py +0 -0
  122. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/run_compute_parcel_mean.py +0 -0
  123. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/run_datagrabber_bids_datalad.py +0 -0
  124. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/run_ets_rss_marker.py +0 -0
  125. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/run_junifer_julearn.py +0 -0
  126. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/run_run_gmd_mean.py +0 -0
  127. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/yamls/gmd_mean.yaml +0 -0
  128. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  129. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  130. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  131. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/ignore_words.txt +0 -0
  132. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/__init__.py +0 -0
  133. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/__init__.pyi +0 -0
  134. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/__init__.py +0 -0
  135. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/__init__.pyi +0 -0
  136. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/functions.py +0 -0
  137. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/py.typed +0 -0
  138. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/__init__.py +0 -0
  139. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/__init__.pyi +0 -0
  140. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  141. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  142. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/py.typed +0 -0
  143. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  144. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  145. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  146. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  147. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/afni/3dRSFC +0 -0
  148. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/afni/3dReHo +0 -0
  149. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/afni/afni +0 -0
  150. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  151. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/ants/ResampleImage +0 -0
  152. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/ants/antsApplyTransforms +0 -0
  153. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  154. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  155. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/freesurfer/mri_binarize +0 -0
  156. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/freesurfer/mri_mc +0 -0
  157. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/freesurfer/mri_pretess +0 -0
  158. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/freesurfer/mris_convert +0 -0
  159. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  160. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/fsl/applywarp +0 -0
  161. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/fsl/flirt +0 -0
  162. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/fsl/img2imgcoord +0 -0
  163. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  164. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/fsl/std2imgcoord +0 -0
  165. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/run_conda.bash +0 -0
  166. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/run_conda.zsh +0 -0
  167. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/run_venv.bash +0 -0
  168. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/res/run_venv.zsh +0 -0
  169. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/api/tests/test_functions.py +0 -0
  170. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/__init__.py +0 -0
  171. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/__init__.pyi +0 -0
  172. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/cli.py +0 -0
  173. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/parser.py +0 -0
  174. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/py.typed +0 -0
  175. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  176. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  177. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  178. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/tests/test_cli.py +0 -0
  179. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/tests/test_cli_utils.py +0 -0
  180. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/tests/test_parser.py +0 -0
  181. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/cli/utils.py +0 -0
  182. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/__init__.py +0 -0
  183. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/__init__.py +0 -0
  184. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/__init__.pyi +0 -0
  185. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  186. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  187. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  188. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  189. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  190. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  191. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  192. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  193. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  194. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  195. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  196. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  197. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  198. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/configs/juseless/py.typed +0 -0
  199. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/conftest.py +0 -0
  200. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/__init__.py +0 -0
  201. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/__init__.pyi +0 -0
  202. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/_dispatch.py +0 -0
  203. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/coordinates/__init__.py +0 -0
  204. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/coordinates/__init__.pyi +0 -0
  205. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  206. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/coordinates/_coordinates.py +0 -0
  207. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  208. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  209. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/masks/__init__.py +0 -0
  210. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/masks/__init__.pyi +0 -0
  211. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/masks/_ants_mask_warper.py +0 -0
  212. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  213. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/masks/_masks.py +0 -0
  214. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/masks/tests/test_masks.py +0 -0
  215. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/parcellations/__init__.py +0 -0
  216. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/parcellations/__init__.pyi +0 -0
  217. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  218. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  219. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/parcellations/_parcellations.py +0 -0
  220. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  221. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/pipeline_data_registry_base.py +0 -0
  222. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/py.typed +0 -0
  223. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/template_spaces.py +0 -0
  224. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/tests/test_data_utils.py +0 -0
  225. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/tests/test_dispatch.py +0 -0
  226. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/tests/test_template_spaces.py +0 -0
  227. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/data/utils.py +0 -0
  228. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/__init__.py +0 -0
  229. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/__init__.pyi +0 -0
  230. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/__init__.py +0 -0
  231. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  232. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/id1000.py +0 -0
  233. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/piop1.py +0 -0
  234. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/piop2.py +0 -0
  235. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/py.typed +0 -0
  236. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  237. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  238. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  239. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/base.py +0 -0
  240. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/datalad_base.py +0 -0
  241. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  242. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  243. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  244. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  245. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  246. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/hcp1200/py.typed +0 -0
  247. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  248. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/multiple.py +0 -0
  249. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/pattern.py +0 -0
  250. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/pattern_datalad.py +0 -0
  251. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  252. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/py.typed +0 -0
  253. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/tests/test_base.py +0 -0
  254. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  255. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  256. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/tests/test_multiple.py +0 -0
  257. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/tests/test_pattern.py +0 -0
  258. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  259. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  260. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datareader/__init__.py +0 -0
  261. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datareader/__init__.pyi +0 -0
  262. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datareader/default.py +0 -0
  263. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datareader/py.typed +0 -0
  264. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/datareader/tests/test_default_reader.py +0 -0
  265. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  266. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  267. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  268. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  269. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  270. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  271. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  272. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  273. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/__init__.py +0 -0
  274. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/h5io/h5io/__init__.py +0 -0
  275. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/h5io/h5io/_h5io.py +0 -0
  276. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/h5io/h5io/_version.py +0 -0
  277. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  278. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  279. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/nilearn/__init__.py +0 -0
  280. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/nilearn/__init__.pyi +0 -0
  281. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  282. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  283. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/nilearn/py.typed +0 -0
  284. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  285. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  286. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/__init__.py +0 -0
  287. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/__init__.pyi +0 -0
  288. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/base.py +0 -0
  289. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/brainprint.py +0 -0
  290. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/__init__.py +0 -0
  291. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/__init__.pyi +0 -0
  292. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/complexity_base.py +0 -0
  293. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/hurst_exponent.py +0 -0
  294. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  295. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/perm_entropy.py +0 -0
  296. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/py.typed +0 -0
  297. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/range_entropy.py +0 -0
  298. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  299. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/sample_entropy.py +0 -0
  300. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  301. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  302. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  303. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  304. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  305. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  306. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  307. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  308. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  309. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/ets_rss.py +0 -0
  310. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/__init__.py +0 -0
  311. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/__init__.pyi +0 -0
  312. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/_afni_falff.py +0 -0
  313. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/_junifer_falff.py +0 -0
  314. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/falff_base.py +0 -0
  315. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/falff_parcels.py +0 -0
  316. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/falff_spheres.py +0 -0
  317. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/py.typed +0 -0
  318. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  319. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  320. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/__init__.py +0 -0
  321. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  322. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  323. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  324. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  325. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  326. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  327. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  328. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/py.typed +0 -0
  329. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  330. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  331. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  332. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  333. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  334. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  335. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/parcel_aggregation.py +0 -0
  336. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/py.typed +0 -0
  337. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/__init__.py +0 -0
  338. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/__init__.pyi +0 -0
  339. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/_afni_reho.py +0 -0
  340. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/_junifer_reho.py +0 -0
  341. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/py.typed +0 -0
  342. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/reho_base.py +0 -0
  343. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/reho_parcels.py +0 -0
  344. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/reho_spheres.py +0 -0
  345. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  346. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  347. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/sphere_aggregation.py +0 -0
  348. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/__init__.py +0 -0
  349. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  350. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/py.typed +0 -0
  351. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  352. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  353. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  354. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  355. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  356. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  357. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/tests/test_brainprint.py +0 -0
  358. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/tests/test_ets_rss.py +0 -0
  359. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/tests/test_marker_utils.py +0 -0
  360. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/tests/test_markers_base.py +0 -0
  361. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  362. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  363. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/markers/utils.py +0 -0
  364. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/onthefly/__init__.py +0 -0
  365. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/onthefly/_brainprint.py +0 -0
  366. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/__init__.py +0 -0
  367. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/pipeline_component_registry.py +0 -0
  368. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  369. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/py.typed +0 -0
  370. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  371. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  372. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  373. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  374. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  375. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/update_meta_mixin.py +0 -0
  376. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/utils.py +0 -0
  377. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/pipeline/workdir_manager.py +0 -0
  378. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/__init__.py +0 -0
  379. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/__init__.pyi +0 -0
  380. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/_temporal_filter.py +0 -0
  381. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/_temporal_slicer.py +0 -0
  382. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/base.py +0 -0
  383. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/confounds/__init__.py +0 -0
  384. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/confounds/__init__.pyi +0 -0
  385. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  386. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/confounds/py.typed +0 -0
  387. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  388. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/py.typed +0 -0
  389. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/__init__.py +0 -0
  390. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  391. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  392. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  393. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  394. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/py.typed +0 -0
  395. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/smoothing.py +0 -0
  396. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  397. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  398. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
  399. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
  400. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/warping/__init__.py +0 -0
  401. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/warping/__init__.pyi +0 -0
  402. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/warping/_ants_warper.py +0 -0
  403. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  404. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/warping/py.typed +0 -0
  405. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/warping/space_warper.py +0 -0
  406. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  407. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/py.typed +0 -0
  408. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/stats.py +0 -0
  409. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/__init__.py +0 -0
  410. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/__init__.pyi +0 -0
  411. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/base.py +0 -0
  412. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/hdf5.py +0 -0
  413. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/pandas_base.py +0 -0
  414. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/py.typed +0 -0
  415. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/sqlite.py +0 -0
  416. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/tests/test_hdf5.py +0 -0
  417. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/tests/test_pandas_base.py +0 -0
  418. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/tests/test_sqlite.py +0 -0
  419. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/tests/test_storage_base.py +0 -0
  420. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/tests/test_utils.py +0 -0
  421. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/storage/utils.py +0 -0
  422. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/__init__.py +0 -0
  423. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/__init__.pyi +0 -0
  424. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  425. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/datagrabbers.py +0 -0
  426. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/py.typed +0 -0
  427. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/registry.py +0 -0
  428. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  429. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  430. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  431. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/tests/test_testing_registry.py +0 -0
  432. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/testing/utils.py +0 -0
  433. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/tests/test_main.py +0 -0
  434. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/tests/test_stats.py +0 -0
  435. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/typing/__init__.py +0 -0
  436. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/__init__.py +0 -0
  437. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/__init__.pyi +0 -0
  438. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/_config.py +0 -0
  439. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/_yaml.py +0 -0
  440. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/fs.py +0 -0
  441. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/helpers.py +0 -0
  442. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/logging.py +0 -0
  443. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/py.typed +0 -0
  444. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/singleton.py +0 -0
  445. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/tests/test_config.py +0 -0
  446. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/tests/test_fs.py +0 -0
  447. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/tests/test_helpers.py +0 -0
  448. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer/utils/tests/test_logging.py +0 -0
  449. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer.egg-info/dependency_links.txt +0 -0
  450. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer.egg-info/entry_points.txt +0 -0
  451. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer.egg-info/requires.txt +0 -0
  452. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/junifer.egg-info/top_level.txt +0 -0
  453. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/pyproject.toml +0 -0
  454. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/setup.cfg +0 -0
  455. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/setup.py +0 -0
  456. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tools/create_aomic1000_example_dataset.py +0 -0
  457. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tools/create_aomicpiop1_example_dataset.py +0 -0
  458. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tools/create_aomicpiop2_example_dataset.py +0 -0
  459. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tools/create_bids_example_dataset.py +0 -0
  460. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tools/create_bids_example_dataset_sessions.py +0 -0
  461. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  462. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tools/create_hcp1200_example_dataset.py +0 -0
  463. {junifer-0.0.7.dev105 → junifer-0.0.7.dev121}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.7.dev105
3
+ Version: 0.0.7.dev121
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
+ :func:`.read_transform` has a new parameter ``nan_policy`` to handle NaN values when transforming feature data by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Implement a NaN policy for :func:`.read_transform` by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Add documentation on :class:`.ConfigManager`, dumping data object and extending data dump assets by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Allow pipeline data object to be dumped by introducing :class:`.DataObjectDumper` and available dumping / loading assets to be extended by introducing :func:`.register_data_dump_asset` decorator by `Synchon Mandal`_
@@ -0,0 +1,46 @@
1
+ .. include:: ../links.inc
2
+
3
+ .. _adding_data_dump_assets:
4
+
5
+ Adding Data Dump Assets
6
+ =======================
7
+
8
+ ``junifer`` supports dumping ``nibabel.Nifti1Image`` and ``pandas.DataFrame`` which should cover most fMRI use cases. But, in case you work with other modalities like EEG, you can register your own data dump asset.
9
+
10
+ How to add a data dump asset
11
+ ----------------------------
12
+
13
+ This example shows how to create a data dump asset for ``mne.io.Raw``.
14
+
15
+ #. Check :ref:`extending junifer <extending_extension>` on how to create a
16
+ *junifer extension* if you have not done so.
17
+ #. Create the data registry in the *extension script* like so:
18
+
19
+ .. code-block:: python
20
+
21
+ from pathlib import Path
22
+
23
+ from junifer.api.decorators import register_data_dump_asset
24
+ from junifer.pipeline import BaseDataDumpAsset
25
+
26
+ import mne
27
+
28
+ @register_data_dump_asset([mne.io.Raw], [".fif", ".fif.gz"])
29
+ class RawAsset(BaseDataDumpAsset):
30
+ """Class for ``mne.io.Raw`` dumper."""
31
+
32
+ def dump(self) -> None:
33
+ self.data.save(self.path_without_ext.with_suffix(".raw.fif.gz"))
34
+
35
+ @classmethod
36
+ def load(cls: "RawAsset", path: Path) -> mne.io.Raw:
37
+ return mne.io.Raw(path)
38
+
39
+ * :func:`.register_data_dump_asset` registers a class. The first argument is
40
+ a list of types that the class is responsible for saving and the second
41
+ argument is a list of file extensions that the class is responsible for
42
+ loading.
43
+ * Inheriting from ``junifer.pipeline.BaseDumpAsset`` takes care of the class
44
+ acting as a data dump asset.
45
+ * Method ``junifer.pipeline.BaseDumpAsset.dump`` and class method
46
+ ``junifer.pipeline.BaseDumpAsset.load`` need to be implemented.
@@ -33,3 +33,4 @@ DataGrabbers, Preprocessors, Markers, etc., following the *junifer* way.
33
33
  plugins
34
34
  data_registries
35
35
  data_types
36
+ data_dump_asset
@@ -0,0 +1,65 @@
1
+ .. include:: ../links.inc
2
+
3
+ .. _configuring:
4
+
5
+ Configuring Pipeline Behaviour
6
+ ==============================
7
+
8
+ It is also possible to configure some internal :ref:`pipeline <pipeline>` behaviour via :obj:`.ConfigManager`.
9
+ It can be done either via the command-line interface (CLI) or the application programming
10
+ interface (API).
11
+
12
+ To use via the CLI, one would do:
13
+
14
+ .. code-block:: bash
15
+
16
+ <CONFIG-KEY>=<CONFIG-VAL> junifer run ...
17
+
18
+ and via the API like so:
19
+
20
+ .. code-block:: python
21
+
22
+ from junifer.utils import config
23
+
24
+ # Add config
25
+ config.set(key="<config-key>", val=<config-val>)
26
+
27
+ # do feature extraction
28
+ ...
29
+
30
+ # Remove config
31
+ config.delete("<config-key>")
32
+
33
+ .. _available_configurations:
34
+
35
+ Available Configurations
36
+ ------------------------
37
+
38
+ .. list-table::
39
+ :widths: auto
40
+ :header-rows: 1
41
+
42
+ * - CLI Key
43
+ - API Key
44
+ - Value
45
+ - Description
46
+ * - ``JUNIFER_DATA_LOCATION``
47
+ - ``data.location``
48
+ - str
49
+ - Alternative location for ``junifer-data``
50
+ * - ``JUNIFER_DATAGRABBER_SKIPIDCHECK``
51
+ - ``datagrabber.skipidcheck``
52
+ - bool
53
+ - Skip DataLad-based DataGrabber's ID check
54
+ * - ``JUNIFER_DATAGRABBER_SKIPDIRTYCHECK``
55
+ - ``datagrabber.skipdirtycheck``
56
+ - bool
57
+ - Skip Git "dirty" check for a DataLad dataset clone of a DataGrabber
58
+ * - ``JUNIFER_PREPROCESSING_DUMP_LOCATION``
59
+ - ``preprocessing.dump.location``
60
+ - str
61
+ - Dump location of pre-processed data for debugging purposes
62
+ * - ``JUNIFER_PREPROCESSING_DUMP_GRANULARITY``
63
+ - ``preprocessing.dump.granularity``
64
+ - "full" or "final"
65
+ - Dump all pre-processing steps or just the final pre-processed data
@@ -0,0 +1,18 @@
1
+ .. include:: ../links.inc
2
+
3
+ .. _dumping:
4
+
5
+ Dumping Pipeline Data
6
+ =====================
7
+
8
+ It is usually not required to check the :ref:`data object <data_object>` but
9
+ for debugging purposes one can do that. Since, there is no direct way to interact
10
+ with it, ``junifer`` provides a way to dump the object before, in between and / or after
11
+ pre-processing. It is controlled by the ``JUNIFER_PREPROCESSING_DUMP_LOCATION`` and
12
+ ``JUNIFER_PREPROCESSING_DUMP_GRANULARITY`` :ref:`configuration options <available_configurations>`.
13
+
14
+ ``junifer`` dumps the ``"data"`` attribute of the data object as proper files in their respective formats,
15
+ for example, ``nibabel.Nifti1Image`` gets dumped as a ``.nii.gz`` file. As of now, ``junifer`` can dump
16
+ ``nibabel.Nifti1Image`` and ``pandas.DataFrame`` (confound files) file formats. In case you
17
+ :ref:`add custom data types <adding_data_types>` which support different file formats, you can create and
18
+ register a :ref:`custom dumper <adding_data_dump_assets>`.
@@ -18,6 +18,8 @@ to interact with HPC and HTC systems.
18
18
  codeless
19
19
  running
20
20
  queueing
21
+ configuring
22
+ dumping
21
23
 
22
24
 
23
25
  .. _using_components:
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.0.7.dev105'
21
- __version_tuple__ = version_tuple = (0, 0, 7, 'dev105')
20
+ __version__ = version = '0.0.7.dev121'
21
+ __version_tuple__ = version_tuple = (0, 0, 7, 'dev121')
@@ -6,8 +6,13 @@
6
6
  # License: AGPL
7
7
 
8
8
  from ..data import DataDispatcher
9
- from ..pipeline import PipelineComponentRegistry
9
+ from ..pipeline import (
10
+ AssetDumperDispatcher,
11
+ AssetLoaderDispatcher,
12
+ PipelineComponentRegistry,
13
+ )
10
14
  from ..typing import (
15
+ DataDumpAssetLike,
11
16
  DataGrabberLike,
12
17
  DataRegistryLike,
13
18
  MarkerLike,
@@ -17,6 +22,7 @@ from ..typing import (
17
22
 
18
23
 
19
24
  __all__ = [
25
+ "register_data_dump_asset",
20
26
  "register_data_registry",
21
27
  "register_datagrabber",
22
28
  "register_datareader",
@@ -184,3 +190,49 @@ def register_data_registry(name: str) -> DataRegistryLike:
184
190
  return klass
185
191
 
186
192
  return decorator
193
+
194
+
195
+ def register_data_dump_asset(
196
+ types: list[type], exts: list[str]
197
+ ) -> DataDumpAssetLike:
198
+ """Asset registration decorator.
199
+
200
+ Registers the data dump asset for ``types`` with ``exts``.
201
+
202
+ Parameters
203
+ ----------
204
+ types : list of class
205
+ The classes to dump.
206
+ exts : list of str
207
+ The extensions to load.
208
+
209
+ Returns
210
+ -------
211
+ class
212
+ The unmodified input class.
213
+
214
+ """
215
+
216
+ def decorator(klass: DataDumpAssetLike) -> DataDumpAssetLike:
217
+ """Actual decorator.
218
+
219
+ Parameters
220
+ ----------
221
+ klass : class
222
+ The class of the data dump asset to register.
223
+
224
+ Returns
225
+ -------
226
+ class
227
+ The unmodified input class.
228
+
229
+ """
230
+ # Add asset dumper
231
+ for t in types:
232
+ AssetDumperDispatcher()[t] = klass
233
+ # Add asset loader
234
+ for e in exts:
235
+ AssetLoaderDispatcher()[e] = klass
236
+ return klass
237
+
238
+ return decorator
@@ -0,0 +1,78 @@
1
+ """Provide tests for public decorators."""
2
+
3
+ # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
+ # License: AGPL
5
+
6
+ import pickle
7
+
8
+ from junifer.api.decorators import (
9
+ register_data_dump_asset,
10
+ register_data_registry,
11
+ )
12
+ from junifer.data import BasePipelineDataRegistry, DataDispatcher
13
+ from junifer.pipeline import (
14
+ AssetDumperDispatcher,
15
+ AssetLoaderDispatcher,
16
+ BaseDataDumpAsset,
17
+ )
18
+
19
+
20
+ def test_register_data_registry() -> None:
21
+ """Test data registry registration."""
22
+
23
+ @register_data_registry("dumb")
24
+ class DumDum(BasePipelineDataRegistry):
25
+ def __init__(self):
26
+ super().__init__()
27
+
28
+ def register(self):
29
+ pass
30
+
31
+ def deregister(self):
32
+ pass
33
+
34
+ def load(self):
35
+ pass
36
+
37
+ def get(self):
38
+ pass
39
+
40
+ assert "dumb" in DataDispatcher()
41
+ _ = DataDispatcher().pop("dumb")
42
+ assert "dumb" not in DataDispatcher()
43
+
44
+
45
+ def test_register_data_dump_asset() -> None:
46
+ """Test data dump asset registration."""
47
+
48
+ class Int(int): ...
49
+
50
+ class Float(float): ...
51
+
52
+ @register_data_dump_asset([Int, Float], [".int", ".float"])
53
+ class DumAsset(BaseDataDumpAsset):
54
+ def dump(self):
55
+ suffix = ""
56
+ if isinstance(self.data, Int):
57
+ suffix = ".int"
58
+ else:
59
+ suffix = ".float"
60
+ pickle.dump(self.data, self.path_without_ext.with_suffix(suffix))
61
+
62
+ @classmethod
63
+ def load(cls, path):
64
+ return pickle.load(path)
65
+
66
+ assert Int in AssetDumperDispatcher()
67
+ assert Float in AssetDumperDispatcher()
68
+ _ = AssetDumperDispatcher().pop(Int)
69
+ _ = AssetDumperDispatcher().pop(Float)
70
+ assert Int not in AssetDumperDispatcher()
71
+ assert Float not in AssetDumperDispatcher()
72
+
73
+ assert ".int" in AssetLoaderDispatcher()
74
+ assert ".float" in AssetLoaderDispatcher()
75
+ _ = AssetLoaderDispatcher().pop(".int")
76
+ _ = AssetLoaderDispatcher().pop(".float")
77
+ assert ".int" not in AssetLoaderDispatcher()
78
+ assert ".float" not in AssetLoaderDispatcher()
@@ -5,6 +5,7 @@
5
5
 
6
6
  from typing import Optional
7
7
 
8
+ import numpy as np
8
9
  import pandas as pd
9
10
 
10
11
  from ..typing import StorageLike
@@ -19,6 +20,7 @@ def read_transform(
19
20
  transform: str,
20
21
  feature_name: Optional[str] = None,
21
22
  feature_md5: Optional[str] = None,
23
+ nan_policy: Optional[str] = "bypass",
22
24
  transform_args: Optional[tuple] = None,
23
25
  transform_kw_args: Optional[dict] = None,
24
26
  ) -> pd.DataFrame:
@@ -35,6 +37,16 @@ def read_transform(
35
37
  Name of the feature to read (default None).
36
38
  feature_md5 : str, optional
37
39
  MD5 hash of the feature to read (default None).
40
+ nan_policy : str, optional
41
+ The policy to handle NaN values (default "ignore").
42
+ Options are:
43
+
44
+ * "bypass": Do nothing and pass NaN values to the transform function.
45
+ * "drop_element": Drop (skip) elements with NaN values.
46
+ * "drop_rows": Drop (skip) rows with NaN values.
47
+ * "drop_columns": Drop (skip) columns with NaN values.
48
+ * "drop_symmetric": Drop (skip) symmetric pairs with NaN values.
49
+
38
50
  transform_args : tuple, optional
39
51
  The positional arguments for the callable of ``transform``
40
52
  (default None).
@@ -47,6 +59,18 @@ def read_transform(
47
59
  pandas.DataFrame
48
60
  The transformed feature as a dataframe.
49
61
 
62
+ Raises
63
+ ------
64
+ ValueError
65
+ If ``nan_policy`` is invalid or
66
+ if *package* is invalid.
67
+ RuntimeError
68
+ If *package* is ``bctpy`` and stored data kind is not ``matrix``.
69
+ ImportError
70
+ If ``bctpy`` cannot be imported.
71
+ AttributeError
72
+ If *function* to be invoked in invalid.
73
+
50
74
  Notes
51
75
  -----
52
76
  This function has been only tested for:
@@ -63,6 +87,18 @@ def read_transform(
63
87
  transform_args = transform_args or ()
64
88
  transform_kw_args = transform_kw_args or {}
65
89
 
90
+ if nan_policy not in [
91
+ "bypass",
92
+ "drop_element",
93
+ "drop_rows",
94
+ "drop_columns",
95
+ "drop_symmetric",
96
+ ]:
97
+ raise_error(
98
+ f"Unknown nan_policy: {nan_policy}",
99
+ klass=ValueError,
100
+ )
101
+
66
102
  # Read storage
67
103
  stored_data = storage.read(
68
104
  feature_name=feature_name, feature_md5=feature_md5
@@ -106,22 +142,52 @@ def read_transform(
106
142
  except AttributeError as err:
107
143
  raise_error(msg=str(err), klass=AttributeError)
108
144
 
109
- # Apply function and store subject-wise
145
+ # Apply function and store element-wise
110
146
  output_list = []
147
+ element_list = []
111
148
  logger.debug(
112
149
  f"Computing '{package}.{func_str}' for feature "
113
150
  f"{feature_name or feature_md5} ..."
114
151
  )
115
- for subject in range(stored_data["data"].shape[2]):
152
+ for i_element, element in enumerate(stored_data["element"]):
153
+ t_data = stored_data["data"][:, :, i_element]
154
+ has_nan = np.isnan(np.min(t_data))
155
+ if nan_policy == "drop_element" and has_nan:
156
+ logger.debug(
157
+ f"Skipping element {element} due to NaN values ..."
158
+ )
159
+ continue
160
+ elif nan_policy == "drop_rows" and has_nan:
161
+ logger.debug(
162
+ f"Skipping rows with NaN values in element {element} ..."
163
+ )
164
+ t_data = t_data[~np.isnan(t_data).any(axis=1)]
165
+ elif nan_policy == "drop_columns" and has_nan:
166
+ logger.debug(
167
+ f"Skipping columns with NaN values in element {element} "
168
+ "..."
169
+ )
170
+ t_data = t_data[:, ~np.isnan(t_data).any(axis=0)]
171
+ elif nan_policy == "drop_symmetric":
172
+ logger.debug(
173
+ f"Skipping pairs of rows/columns with NaN values in "
174
+ f"element {element}..."
175
+ )
176
+ good_rows = ~np.isnan(t_data).any(axis=1)
177
+ good_columns = ~np.isnan(t_data).any(axis=0)
178
+ good_idx = np.logical_and(good_rows, good_columns)
179
+ t_data = t_data[good_idx][:, good_idx]
180
+
116
181
  output = func(
117
- stored_data["data"][:, :, subject],
182
+ t_data,
118
183
  *transform_args,
119
184
  **transform_kw_args,
120
185
  )
121
186
  output_list.append(output)
187
+ element_list.append(element)
122
188
 
123
189
  # Create dataframe for index
124
- idx_df = pd.DataFrame(data=stored_data["element"])
190
+ idx_df = pd.DataFrame(data=element_list)
125
191
  # Create multiindex from dataframe
126
192
  logger.debug(
127
193
  "Generating pandas.MultiIndex for feature "
@@ -64,6 +64,36 @@ def matrix_storage(tmp_path: Path) -> HDF5FeatureStorage:
64
64
  return storage
65
65
 
66
66
 
67
+ @pytest.fixture
68
+ def matrix_storage_with_nan(tmp_path: Path) -> HDF5FeatureStorage:
69
+ """Return a HDF5FeatureStorage with matrix data.
70
+
71
+ Parameters
72
+ ----------
73
+ tmp_path : pathlib.Path
74
+ The path to the test directory.
75
+
76
+ """
77
+ storage = HDF5FeatureStorage(tmp_path / "matrix_store_nan.hdf5")
78
+ data = np.arange(36).reshape(3, 3, 4).astype(float)
79
+ data[1, 1, 2] = np.nan
80
+ data[1, 2, 2] = np.nan
81
+ for i in range(4):
82
+ storage.store(
83
+ kind="matrix",
84
+ meta={
85
+ "element": {"subject": f"test{i + 1}"},
86
+ "dependencies": [],
87
+ "marker": {"name": "matrix"},
88
+ "type": "BOLD",
89
+ },
90
+ data=data[:, :, i],
91
+ col_names=["f1", "f2", "f3"],
92
+ row_names=["g1", "g2", "g3"],
93
+ )
94
+ return storage
95
+
96
+
67
97
  def test_incorrect_package(matrix_storage: HDF5FeatureStorage) -> None:
68
98
  """Test error check for incorrect package name.
69
99
 
@@ -176,3 +206,57 @@ def test_bctpy_function(
176
206
  )
177
207
  assert "Computing" in caplog.text
178
208
  assert "Generating" in caplog.text
209
+
210
+
211
+ @pytest.mark.parametrize(
212
+ "nan_policy, error_msg",
213
+ [
214
+ ("drop_element", None),
215
+ ("drop_rows", "square"),
216
+ ("drop_columns", "square"),
217
+ ("drop_symmetric", None),
218
+ ("bypass", "NaNs"),
219
+ ("wrong", "Unknown"),
220
+ ],
221
+ )
222
+ def test_bctpy_nans(
223
+ matrix_storage_with_nan: HDF5FeatureStorage,
224
+ caplog: pytest.LogCaptureFixture,
225
+ nan_policy: str,
226
+ error_msg: str,
227
+ ) -> None:
228
+ """Test working function of bctpy.
229
+
230
+ Parameters
231
+ ----------
232
+ matrix_storage_with_nan : HDF5FeatureStorage
233
+ The HDF5FeatureStorage with matrix data, as fixture.
234
+ caplog : pytest.LogCaptureFixture
235
+ The pytest.LogCaptureFixture object.
236
+ nan_policy : str
237
+ The NAN policy to test.
238
+ error_msg : str
239
+ The expected error message snippet. If None, no error should be raised.
240
+
241
+ """
242
+ # Skip test if import fails
243
+ pytest.importorskip("bct")
244
+
245
+ with caplog.at_level(logging.DEBUG):
246
+ if error_msg is None:
247
+ read_transform(
248
+ storage=matrix_storage_with_nan, # type: ignore
249
+ feature_name="BOLD_matrix",
250
+ transform="bctpy_eigenvector_centrality_und",
251
+ nan_policy=nan_policy,
252
+ )
253
+ assert "Computing" in caplog.text
254
+ assert "Generating" in caplog.text
255
+ else:
256
+ with pytest.raises(ValueError, match=error_msg):
257
+ read_transform(
258
+ storage=matrix_storage_with_nan, # type: ignore
259
+ feature_name="BOLD_matrix",
260
+ transform="bctpy_eigenvector_centrality_und",
261
+ nan_policy=nan_policy,
262
+ )
@@ -1,4 +1,8 @@
1
1
  __all__ = [
2
+ "AssetDumperDispatcher",
3
+ "AssetLoaderDispatcher",
4
+ "BaseDataDumpAsset",
5
+ "DataObjectDumper",
2
6
  "PipelineComponentRegistry",
3
7
  "PipelineStepMixin",
4
8
  "UpdateMetaMixin",
@@ -6,6 +10,12 @@ __all__ = [
6
10
  "MarkerCollection",
7
11
  ]
8
12
 
13
+ from ._data_object_dumper import (
14
+ AssetDumperDispatcher,
15
+ AssetLoaderDispatcher,
16
+ BaseDataDumpAsset,
17
+ DataObjectDumper,
18
+ )
9
19
  from .pipeline_component_registry import PipelineComponentRegistry
10
20
  from .pipeline_step_mixin import PipelineStepMixin
11
21
  from .update_meta_mixin import UpdateMetaMixin