junifer 0.0.7.dev264__tar.gz → 0.0.7.dev289__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 (503) hide show
  1. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/PKG-INFO +1 -1
  2. junifer-0.0.7.dev289/docs/changes/newsfragments/472.enh +1 -0
  3. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/storage.rst +10 -6
  4. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/_version.py +3 -3
  5. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/base.py +52 -49
  6. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/hdf5.py +75 -99
  7. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/pandas_base.py +19 -25
  8. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/sqlite.py +32 -43
  9. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/tests/test_hdf5.py +3 -3
  10. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/tests/test_sqlite.py +1 -1
  11. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/tests/test_storage_base.py +12 -10
  12. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/utils.py +25 -15
  13. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer.egg-info/PKG-INFO +1 -1
  14. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer.egg-info/SOURCES.txt +1 -0
  15. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.dockerignore +0 -0
  16. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  17. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  18. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  19. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  20. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  21. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  22. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/dependabot.yml +0 -0
  23. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/pull_request_template.md +0 -0
  24. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/check-stale.yml +0 -0
  25. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/ci-docs.yml +0 -0
  26. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/ci.yml +0 -0
  27. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/docker-ci-publish.yml +0 -0
  28. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/docker-docs-publish.yml +0 -0
  29. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/docs-preview.yml +0 -0
  30. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/docs.yml +0 -0
  31. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/lint.yml +0 -0
  32. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.github/workflows/publish.yml +0 -0
  33. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.gitignore +0 -0
  34. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.gitmodules +0 -0
  35. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/.pre-commit-config.yaml +0 -0
  36. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/AUTHORS.rst +0 -0
  37. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/Dockerfile-ci +0 -0
  38. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/Dockerfile-docs +0 -0
  39. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/LICENSE.md +0 -0
  40. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/README.md +0 -0
  41. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/codecov.yml +0 -0
  42. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/conda-env.yml +0 -0
  43. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/Makefile +0 -0
  44. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/_static/css/custom.css +0 -0
  45. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/_static/js/custom.js +0 -0
  46. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/_templates/versions.html +0 -0
  47. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/api.rst +0 -0
  48. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/cli.rst +0 -0
  49. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/configs.rst +0 -0
  50. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/data.rst +0 -0
  51. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/datagrabbers.rst +0 -0
  52. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/datareaders.rst +0 -0
  53. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/index.rst +0 -0
  54. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/markers.rst +0 -0
  55. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/nilearn.rst +0 -0
  56. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/onthefly.rst +0 -0
  57. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/pipeline.rst +0 -0
  58. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/preprocessing.rst +0 -0
  59. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/stats.rst +0 -0
  60. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/storage.rst +0 -0
  61. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/testing.rst +0 -0
  62. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/api/utils.rst +0 -0
  63. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/builtin.rst +0 -0
  64. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/contributors.inc +0 -0
  65. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/.gitignore +0 -0
  66. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/231.change +0 -0
  67. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/231.misc +0 -0
  68. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/257.change +0 -0
  69. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/257.enh +0 -0
  70. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/333.enh +0 -0
  71. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/429.change +0 -0
  72. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/429.enh +0 -0
  73. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/432.feature +0 -0
  74. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/441.misc +0 -0
  75. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/443.feature +0 -0
  76. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/444.bugfix +0 -0
  77. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/450.doc +0 -0
  78. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/450.feature +0 -0
  79. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/451.doc +0 -0
  80. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/451.feature +0 -0
  81. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/452.doc +0 -0
  82. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/452.feature +0 -0
  83. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/454.bugfix +0 -0
  84. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/456.misc +0 -0
  85. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/457.misc +0 -0
  86. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/458.change +0 -0
  87. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/458.feature +0 -0
  88. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/458.misc +0 -0
  89. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/460.feature +0 -0
  90. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/462.feature +0 -0
  91. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/464.misc +0 -0
  92. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/465.misc +0 -0
  93. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/466.misc +0 -0
  94. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/467.misc +0 -0
  95. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/468.misc +0 -0
  96. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/470.enh +0 -0
  97. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/470.misc +0 -0
  98. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/changes/newsfragments/473.enh +0 -0
  99. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/conf.py +0 -0
  100. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/contribution.rst +0 -0
  101. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/coordinates.rst +0 -0
  102. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/data_dump_asset.rst +0 -0
  103. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/data_registries.rst +0 -0
  104. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/data_types.rst +0 -0
  105. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/datagrabber.rst +0 -0
  106. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/dependencies.rst +0 -0
  107. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/extension.rst +0 -0
  108. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/index.rst +0 -0
  109. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/maps.rst +0 -0
  110. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/marker.rst +0 -0
  111. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/masks.rst +0 -0
  112. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/parcellations.rst +0 -0
  113. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/plugins.rst +0 -0
  114. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/extending/preprocessor.rst +0 -0
  115. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/faq.rst +0 -0
  116. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/help.rst +0 -0
  117. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/images/junifer_logo.png +0 -0
  118. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/index.rst +0 -0
  119. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/installation.rst +0 -0
  120. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/links.inc +0 -0
  121. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/maintaining.rst +0 -0
  122. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/redirect.html +0 -0
  123. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/starting.rst +0 -0
  124. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/data.rst +0 -0
  125. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/datagrabber.rst +0 -0
  126. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/datareader.rst +0 -0
  127. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/index.rst +0 -0
  128. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/marker.rst +0 -0
  129. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/pipeline.rst +0 -0
  130. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/understanding/preprocess.rst +0 -0
  131. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/using/codeless.rst +0 -0
  132. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/using/configuring.rst +0 -0
  133. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/using/dumping.rst +0 -0
  134. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/using/index.rst +0 -0
  135. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/using/masks.rst +0 -0
  136. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/using/queueing.rst +0 -0
  137. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/using/running.rst +0 -0
  138. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/docs/whats_new.rst +0 -0
  139. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/README.rst +0 -0
  140. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/norun_hcpfc_pearson.py +0 -0
  141. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/norun_ukbvm_gmd.py +0 -0
  142. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/run_compute_parcel_mean.py +0 -0
  143. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/run_datagrabber_bids_datalad.py +0 -0
  144. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/run_ets_rss_marker.py +0 -0
  145. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/run_junifer_julearn.py +0 -0
  146. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/run_run_gmd_mean.py +0 -0
  147. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/yamls/gmd_mean.yaml +0 -0
  148. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  149. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  150. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  151. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/ignore_words.txt +0 -0
  152. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/__init__.py +0 -0
  153. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/__init__.pyi +0 -0
  154. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/__init__.py +0 -0
  155. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/__init__.pyi +0 -0
  156. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/decorators.py +0 -0
  157. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/functions.py +0 -0
  158. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/py.typed +0 -0
  159. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/__init__.py +0 -0
  160. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/__init__.pyi +0 -0
  161. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  162. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  163. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/py.typed +0 -0
  164. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  165. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  166. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  167. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  168. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/afni/3dRSFC +0 -0
  169. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/afni/3dReHo +0 -0
  170. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/afni/afni +0 -0
  171. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  172. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/ants/ResampleImage +0 -0
  173. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/ants/antsApplyTransforms +0 -0
  174. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  175. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  176. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/freesurfer/mri_binarize +0 -0
  177. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/freesurfer/mri_mc +0 -0
  178. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/freesurfer/mri_pretess +0 -0
  179. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/freesurfer/mris_convert +0 -0
  180. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  181. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/fsl/applywarp +0 -0
  182. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/fsl/flirt +0 -0
  183. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/fsl/img2imgcoord +0 -0
  184. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  185. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/fsl/std2imgcoord +0 -0
  186. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/run_conda.bash +0 -0
  187. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/run_conda.zsh +0 -0
  188. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/run_venv.bash +0 -0
  189. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/res/run_venv.zsh +0 -0
  190. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/tests/test_decorators.py +0 -0
  191. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/api/tests/test_functions.py +0 -0
  192. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/__init__.py +0 -0
  193. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/__init__.pyi +0 -0
  194. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/cli.py +0 -0
  195. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/parser.py +0 -0
  196. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/py.typed +0 -0
  197. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  198. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  199. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  200. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/tests/test_cli.py +0 -0
  201. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/tests/test_cli_utils.py +0 -0
  202. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/tests/test_parser.py +0 -0
  203. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/cli/utils.py +0 -0
  204. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/__init__.py +0 -0
  205. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/__init__.py +0 -0
  206. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/__init__.pyi +0 -0
  207. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  208. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  209. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  210. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  211. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  212. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  213. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  214. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  215. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  216. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  217. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  218. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  219. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  220. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/configs/juseless/py.typed +0 -0
  221. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/conftest.py +0 -0
  222. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/__init__.py +0 -0
  223. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/__init__.pyi +0 -0
  224. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/_dispatch.py +0 -0
  225. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/coordinates/__init__.py +0 -0
  226. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/coordinates/__init__.pyi +0 -0
  227. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  228. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/coordinates/_coordinates.py +0 -0
  229. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  230. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  231. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/maps/__init__.py +0 -0
  232. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/maps/__init__.pyi +0 -0
  233. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/maps/_ants_maps_warper.py +0 -0
  234. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/maps/_fsl_maps_warper.py +0 -0
  235. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/maps/_maps.py +0 -0
  236. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/maps/tests/test_maps.py +0 -0
  237. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/masks/__init__.py +0 -0
  238. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/masks/__init__.pyi +0 -0
  239. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/masks/_ants_mask_warper.py +0 -0
  240. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  241. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/masks/_masks.py +0 -0
  242. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/masks/tests/test_masks.py +0 -0
  243. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/parcellations/__init__.py +0 -0
  244. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/parcellations/__init__.pyi +0 -0
  245. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  246. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  247. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/parcellations/_parcellations.py +0 -0
  248. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  249. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/pipeline_data_registry_base.py +0 -0
  250. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/py.typed +0 -0
  251. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/template_spaces.py +0 -0
  252. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/tests/test_data_utils.py +0 -0
  253. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/tests/test_dispatch.py +0 -0
  254. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/tests/test_template_spaces.py +0 -0
  255. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/data/utils.py +0 -0
  256. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/__init__.py +0 -0
  257. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/__init__.pyi +0 -0
  258. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/__init__.py +0 -0
  259. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  260. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/id1000.py +0 -0
  261. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/piop1.py +0 -0
  262. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/piop2.py +0 -0
  263. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/py.typed +0 -0
  264. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  265. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  266. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  267. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/base.py +0 -0
  268. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/datalad_base.py +0 -0
  269. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  270. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  271. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  272. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  273. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  274. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/hcp1200/py.typed +0 -0
  275. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  276. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/multiple.py +0 -0
  277. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/pattern.py +0 -0
  278. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/pattern_datalad.py +0 -0
  279. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  280. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/py.typed +0 -0
  281. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/tests/test_base.py +0 -0
  282. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  283. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  284. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/tests/test_multiple.py +0 -0
  285. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/tests/test_pattern.py +0 -0
  286. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  287. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  288. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datareader/__init__.py +0 -0
  289. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datareader/__init__.pyi +0 -0
  290. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datareader/default.py +0 -0
  291. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datareader/py.typed +0 -0
  292. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/datareader/tests/test_default_reader.py +0 -0
  293. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  294. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  295. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  296. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  297. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  298. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  299. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  300. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  301. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/__init__.py +0 -0
  302. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/h5io/h5io/__init__.py +0 -0
  303. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/h5io/h5io/_h5io.py +0 -0
  304. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/h5io/h5io/_version.py +0 -0
  305. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  306. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  307. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/nilearn/__init__.py +0 -0
  308. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/nilearn/__init__.pyi +0 -0
  309. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  310. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  311. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/nilearn/py.typed +0 -0
  312. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  313. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  314. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/__init__.py +0 -0
  315. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/__init__.pyi +0 -0
  316. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/base.py +0 -0
  317. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/brainprint.py +0 -0
  318. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/__init__.py +0 -0
  319. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/__init__.pyi +0 -0
  320. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/complexity_base.py +0 -0
  321. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/hurst_exponent.py +0 -0
  322. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  323. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/perm_entropy.py +0 -0
  324. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/py.typed +0 -0
  325. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/range_entropy.py +0 -0
  326. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  327. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/sample_entropy.py +0 -0
  328. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  329. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  330. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  331. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  332. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  333. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  334. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  335. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  336. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  337. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/ets_rss.py +0 -0
  338. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/__init__.py +0 -0
  339. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/__init__.pyi +0 -0
  340. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/_afni_falff.py +0 -0
  341. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/_junifer_falff.py +0 -0
  342. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/falff_base.py +0 -0
  343. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/falff_maps.py +0 -0
  344. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/falff_parcels.py +0 -0
  345. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/falff_spheres.py +0 -0
  346. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/py.typed +0 -0
  347. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
  348. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  349. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  350. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/__init__.py +0 -0
  351. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  352. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  353. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
  354. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  355. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  356. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  357. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
  358. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  359. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  360. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/py.typed +0 -0
  361. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  362. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
  363. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  364. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  365. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  366. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
  367. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  368. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  369. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/maps_aggregation.py +0 -0
  370. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/parcel_aggregation.py +0 -0
  371. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/py.typed +0 -0
  372. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/__init__.py +0 -0
  373. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/__init__.pyi +0 -0
  374. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/_afni_reho.py +0 -0
  375. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/_junifer_reho.py +0 -0
  376. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/py.typed +0 -0
  377. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/reho_base.py +0 -0
  378. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/reho_maps.py +0 -0
  379. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/reho_parcels.py +0 -0
  380. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/reho_spheres.py +0 -0
  381. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
  382. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  383. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  384. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/sphere_aggregation.py +0 -0
  385. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/__init__.py +0 -0
  386. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  387. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/py.typed +0 -0
  388. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  389. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
  390. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  391. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  392. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  393. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
  394. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  395. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  396. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/tests/test_brainprint.py +0 -0
  397. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/tests/test_ets_rss.py +0 -0
  398. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/tests/test_maps_aggregation.py +0 -0
  399. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/tests/test_marker_utils.py +0 -0
  400. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/tests/test_markers_base.py +0 -0
  401. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  402. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  403. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/markers/utils.py +0 -0
  404. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/onthefly/__init__.py +0 -0
  405. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/onthefly/_brainprint.py +0 -0
  406. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/onthefly/read_transform.py +0 -0
  407. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/onthefly/tests/test_read_transform.py +0 -0
  408. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/__init__.py +0 -0
  409. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/__init__.pyi +0 -0
  410. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/_data_object_dumper.py +0 -0
  411. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/marker_collection.py +0 -0
  412. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/pipeline_component_registry.py +0 -0
  413. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  414. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/py.typed +0 -0
  415. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
  416. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  417. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  418. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  419. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  420. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  421. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/update_meta_mixin.py +0 -0
  422. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/utils.py +0 -0
  423. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/pipeline/workdir_manager.py +0 -0
  424. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/__init__.py +0 -0
  425. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/__init__.pyi +0 -0
  426. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/_temporal_filter.py +0 -0
  427. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/_temporal_slicer.py +0 -0
  428. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/base.py +0 -0
  429. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/confounds/__init__.py +0 -0
  430. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/confounds/__init__.pyi +0 -0
  431. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  432. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/confounds/py.typed +0 -0
  433. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  434. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/py.typed +0 -0
  435. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/__init__.py +0 -0
  436. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  437. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  438. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  439. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  440. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/py.typed +0 -0
  441. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/smoothing.py +0 -0
  442. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  443. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  444. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
  445. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
  446. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/warping/__init__.py +0 -0
  447. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/warping/__init__.pyi +0 -0
  448. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/warping/_ants_warper.py +0 -0
  449. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  450. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/warping/py.typed +0 -0
  451. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/warping/space_warper.py +0 -0
  452. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  453. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/py.typed +0 -0
  454. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/stats.py +0 -0
  455. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/__init__.py +0 -0
  456. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/__init__.pyi +0 -0
  457. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/py.typed +0 -0
  458. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/tests/test_pandas_base.py +0 -0
  459. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/storage/tests/test_utils.py +0 -0
  460. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/__init__.py +0 -0
  461. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/__init__.pyi +0 -0
  462. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  463. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/datagrabbers.py +0 -0
  464. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/py.typed +0 -0
  465. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/registry.py +0 -0
  466. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  467. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  468. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  469. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/tests/test_testing_registry.py +0 -0
  470. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/testing/utils.py +0 -0
  471. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/tests/test_main.py +0 -0
  472. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/tests/test_stats.py +0 -0
  473. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/typing/__init__.py +0 -0
  474. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/typing/__init__.pyi +0 -0
  475. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/typing/_typing.py +0 -0
  476. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/__init__.py +0 -0
  477. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/__init__.pyi +0 -0
  478. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/_config.py +0 -0
  479. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/_yaml.py +0 -0
  480. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/fs.py +0 -0
  481. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/helpers.py +0 -0
  482. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/logging.py +0 -0
  483. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/py.typed +0 -0
  484. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/singleton.py +0 -0
  485. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/tests/test_config.py +0 -0
  486. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/tests/test_fs.py +0 -0
  487. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/tests/test_helpers.py +0 -0
  488. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer/utils/tests/test_logging.py +0 -0
  489. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer.egg-info/dependency_links.txt +0 -0
  490. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer.egg-info/entry_points.txt +0 -0
  491. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer.egg-info/requires.txt +0 -0
  492. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/junifer.egg-info/top_level.txt +0 -0
  493. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/pyproject.toml +0 -0
  494. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/setup.cfg +0 -0
  495. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/setup.py +0 -0
  496. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tools/create_aomic1000_example_dataset.py +0 -0
  497. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tools/create_aomicpiop1_example_dataset.py +0 -0
  498. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tools/create_aomicpiop2_example_dataset.py +0 -0
  499. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tools/create_bids_example_dataset.py +0 -0
  500. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tools/create_bids_example_dataset_sessions.py +0 -0
  501. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  502. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tools/create_hcp1200_example_dataset.py +0 -0
  503. {junifer-0.0.7.dev264 → junifer-0.0.7.dev289}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.7.dev264
3
+ Version: 0.0.7.dev289
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
+ Simplify ``Storage`` interface and implementations by `Synchon Mandal`_
@@ -17,11 +17,11 @@ Storage is meant to be used inside the DataGrabber context but you can operate
17
17
  on them outside the context as long as the processed data is in the memory and
18
18
  the Python runtime has not garbage-collected it.
19
19
 
20
- The :ref:`Markers <marker>` are responsible for defining what *storage kind*
21
- (``matrix``, ``vector``, ``timeseries``, ``scalar_table``) they support for
22
- which :ref:`data type <data_types>` by overriding its ``get_output_type``
23
- method. The storage object in turn declares and provides implementation for
24
- specific *storage kind*. For example, :class:`.SQLiteFeatureStorage` supports
20
+ The :ref:`Markers <marker>` are responsible for mapping the input
21
+ :ref:`data type <data_types>` to its output :ref:`storage type <storage_types>`
22
+ as shown :ref:`here <extending_markers_input_output>`.
23
+ The storage object in turn declares and provides implementation for
24
+ specific *storage type*. For example, :class:`.SQLiteFeatureStorage` supports
25
25
  saving ``matrix``, ``vector`` and ``timeseries`` via ``store_matrix``,
26
26
  ``store_vector`` and ``store_timeseries`` methods respectively.
27
27
 
@@ -57,6 +57,10 @@ Storage Types
57
57
  - A 2D square or non-square matrix of scalar values with column names
58
58
  - ``col_names``
59
59
  - :meth:`.BaseFeatureStorage.store_timeseries`
60
+ * - ``timeseries_2d``
61
+ - A 3D(2D+1D) square or non-square matrix of scalar values with column names across sessions
62
+ - ``col_names``
63
+ - :meth:`.BaseFeatureStorage.store_timeseries_2d`
60
64
  * - ``scalar_table``
61
65
  - | A 2D square or non-square matrix of scalar values with row name, column
62
66
  | name and row header column name
@@ -83,4 +87,4 @@ Storage Interfaces
83
87
  * - :class:`.HDF5FeatureStorage`
84
88
  - ``.hdf5``
85
89
  - HDF5
86
- - ``matrix``, ``vector``, ``timeseries``, ``scalar_table``
90
+ - ``matrix``, ``vector``, ``timeseries``, ``timeseries_2d``, ``scalar_table``
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.0.7.dev264'
32
- __version_tuple__ = version_tuple = (0, 0, 7, 'dev264')
31
+ __version__ = version = '0.0.7.dev289'
32
+ __version_tuple__ = version_tuple = (0, 0, 7, 'dev289')
33
33
 
34
- __commit_id__ = commit_id = 'g6eb48995c'
34
+ __commit_id__ = commit_id = 'g5abcacf68'
@@ -5,14 +5,14 @@
5
5
  # License: AGPL
6
6
 
7
7
  from abc import ABC, abstractmethod
8
- from collections.abc import Iterable
8
+ from collections.abc import Sequence
9
9
  from pathlib import Path
10
- from typing import Any, Optional, Union
10
+ from typing import Any, ClassVar, Optional, Union
11
11
 
12
12
  import numpy as np
13
13
  import pandas as pd
14
14
 
15
- from ..utils import raise_error
15
+ from ..utils import logger, raise_error
16
16
  from .utils import process_meta
17
17
 
18
18
 
@@ -22,44 +22,47 @@ __all__ = ["BaseFeatureStorage"]
22
22
  class BaseFeatureStorage(ABC):
23
23
  """Abstract base class for feature storage.
24
24
 
25
- For every interface that is required, one needs to provide a concrete
25
+ For every storage, one needs to provide a concrete
26
26
  implementation of this abstract class.
27
27
 
28
28
  Parameters
29
29
  ----------
30
30
  uri : str or pathlib.Path
31
31
  The path to the storage.
32
- storage_types : str or list of str
33
- The available storage types for the class.
34
32
  single_output : bool, optional
35
33
  Whether to have single output (default True).
36
34
 
37
35
  Raises
38
36
  ------
39
- ValueError
40
- If required storage type(s) is(are) missing from ``storage_types``.
37
+ AttributeError
38
+ If the storage does not have `_STORAGE_TYPES` attribute.
41
39
 
42
40
  """
43
41
 
42
+ _STORAGE_TYPES: ClassVar[Sequence[str]]
43
+
44
44
  def __init__(
45
45
  self,
46
46
  uri: Union[str, Path],
47
- storage_types: Union[list[str], str],
48
47
  single_output: bool = True,
49
48
  ) -> None:
50
- self.uri = uri
51
- # Convert storage_types to list
52
- if not isinstance(storage_types, list):
53
- storage_types = [storage_types]
54
- # Check if required inputs are found
55
- if any(x not in self.get_valid_inputs() for x in storage_types):
56
- wrong_storage_types = [
57
- x for x in storage_types if x not in self.get_valid_inputs()
58
- ]
49
+ # Check for missing storage types attribute
50
+ if not hasattr(self, "_STORAGE_TYPES"):
59
51
  raise_error(
60
- f"{self.__class__.__name__} cannot store {wrong_storage_types}"
52
+ msg="Missing `_STORAGE_TYPES` for the storage",
53
+ klass=AttributeError,
54
+ )
55
+ # Convert str to Path
56
+ if not isinstance(uri, Path):
57
+ uri = Path(uri)
58
+ self.uri = uri
59
+ # Create parent directories if not present
60
+ if not self.uri.parent.exists():
61
+ logger.info(
62
+ f"Output directory: '{self.uri.parent.resolve()}' "
63
+ "does not exist, creating now"
61
64
  )
62
- self._valid_inputs = storage_types
65
+ self.uri.parent.mkdir(parents=True, exist_ok=True)
63
66
  self.single_output = single_output
64
67
 
65
68
  def get_valid_inputs(self) -> list[str]:
@@ -69,13 +72,10 @@ class BaseFeatureStorage(ABC):
69
72
  -------
70
73
  list of str
71
74
  The list of storage types that can be used as input for this
72
- storage interface.
75
+ storage.
73
76
 
74
77
  """
75
- raise_error(
76
- msg="Concrete classes need to implement get_valid_inputs().",
77
- klass=NotImplementedError,
78
- )
78
+ return list(self._STORAGE_TYPES)
79
79
 
80
80
  def validate(self, input_: list[str]) -> None:
81
81
  """Validate the input to the pipeline step.
@@ -91,11 +91,12 @@ class BaseFeatureStorage(ABC):
91
91
  If the ``input_`` is invalid.
92
92
 
93
93
  """
94
- if not any(x in input_ for x in self._valid_inputs):
94
+ # self._STORAGE_TYPES should be there already
95
+ if not any(x in input_ for x in self._STORAGE_TYPES):
95
96
  raise_error(
96
97
  "Input does not have the required data."
97
98
  f"\t Input: {input}"
98
- f"\t Required (any of): {self._valid_inputs}"
99
+ f"\t Required (any of): {self._STORAGE_TYPES}"
99
100
  )
100
101
 
101
102
  @abstractmethod
@@ -113,7 +114,7 @@ class BaseFeatureStorage(ABC):
113
114
  raise_error(
114
115
  msg="Concrete classes need to implement list_features().",
115
116
  klass=NotImplementedError,
116
- )
117
+ ) # pragma: no cover
117
118
 
118
119
  @abstractmethod
119
120
  def read(
@@ -141,7 +142,7 @@ class BaseFeatureStorage(ABC):
141
142
  raise_error(
142
143
  msg="Concrete classes need to implement read().",
143
144
  klass=NotImplementedError,
144
- )
145
+ ) # pragma: no cover
145
146
 
146
147
  @abstractmethod
147
148
  def read_df(
@@ -167,7 +168,7 @@ class BaseFeatureStorage(ABC):
167
168
  raise_error(
168
169
  msg="Concrete classes need to implement read_df().",
169
170
  klass=NotImplementedError,
170
- )
171
+ ) # pragma: no cover
171
172
 
172
173
  @abstractmethod
173
174
  def store_metadata(self, meta_md5: str, element: dict, meta: dict) -> None:
@@ -186,7 +187,7 @@ class BaseFeatureStorage(ABC):
186
187
  raise_error(
187
188
  msg="Concrete classes need to implement store_metadata().",
188
189
  klass=NotImplementedError,
189
- )
190
+ ) # pragma: no cover
190
191
 
191
192
  def store(self, kind: str, **kwargs) -> None:
192
193
  """Store extracted features data.
@@ -206,14 +207,16 @@ class BaseFeatureStorage(ABC):
206
207
  """
207
208
  # Do the check before calling the abstract methods, otherwise the
208
209
  # meta might be stored even if the data is not stored.
209
- if kind not in self._valid_inputs:
210
+ if kind not in self._STORAGE_TYPES:
210
211
  raise_error(
211
212
  msg=f"I don't know how to store {kind}.",
212
213
  klass=ValueError,
213
214
  )
215
+ # Process and store metadata
214
216
  t_meta = kwargs.pop("meta")
215
217
  meta_md5, t_meta, t_element = process_meta(t_meta)
216
218
  self.store_metadata(meta_md5=meta_md5, element=t_element, meta=t_meta)
219
+ # Store data
217
220
  if kind == "matrix":
218
221
  self.store_matrix(meta_md5=meta_md5, element=t_element, **kwargs)
219
222
  elif kind == "timeseries":
@@ -236,8 +239,8 @@ class BaseFeatureStorage(ABC):
236
239
  meta_md5: str,
237
240
  element: dict,
238
241
  data: np.ndarray,
239
- col_names: Optional[Iterable[str]] = None,
240
- row_names: Optional[Iterable[str]] = None,
242
+ col_names: Optional[Sequence[str]] = None,
243
+ row_names: Optional[Sequence[str]] = None,
241
244
  matrix_kind: str = "full",
242
245
  diagonal: bool = True,
243
246
  ) -> None:
@@ -251,9 +254,9 @@ class BaseFeatureStorage(ABC):
251
254
  The element as a dictionary.
252
255
  data : numpy.ndarray
253
256
  The matrix data to store.
254
- col_names : list or tuple of str, optional
257
+ col_names : list-like of str, optional
255
258
  The column labels (default None).
256
- row_names : str, optional
259
+ row_names : list-like of str, optional
257
260
  The row labels (default None).
258
261
  matrix_kind : str, optional
259
262
  The kind of matrix:
@@ -278,7 +281,7 @@ class BaseFeatureStorage(ABC):
278
281
  meta_md5: str,
279
282
  element: dict,
280
283
  data: Union[np.ndarray, list],
281
- col_names: Optional[Iterable[str]] = None,
284
+ col_names: Optional[Sequence[str]] = None,
282
285
  ) -> None:
283
286
  """Store vector.
284
287
 
@@ -290,7 +293,7 @@ class BaseFeatureStorage(ABC):
290
293
  The element as a dictionary.
291
294
  data : numpy.ndarray or list
292
295
  The vector data to store.
293
- col_names : list or tuple of str, optional
296
+ col_names : list-like of str, optional
294
297
  The column labels (default None).
295
298
 
296
299
  """
@@ -304,7 +307,7 @@ class BaseFeatureStorage(ABC):
304
307
  meta_md5: str,
305
308
  element: dict,
306
309
  data: np.ndarray,
307
- col_names: Optional[Iterable[str]] = None,
310
+ col_names: Optional[Sequence[str]] = None,
308
311
  ) -> None:
309
312
  """Store timeseries.
310
313
 
@@ -316,7 +319,7 @@ class BaseFeatureStorage(ABC):
316
319
  The element as a dictionary.
317
320
  data : numpy.ndarray
318
321
  The timeseries data to store.
319
- col_names : list or tuple of str, optional
322
+ col_names : list-like of str, optional
320
323
  The column labels (default None).
321
324
 
322
325
  """
@@ -330,8 +333,8 @@ class BaseFeatureStorage(ABC):
330
333
  meta_md5: str,
331
334
  element: dict,
332
335
  data: np.ndarray,
333
- col_names: Optional[Iterable[str]] = None,
334
- row_names: Optional[Iterable[str]] = None,
336
+ col_names: Optional[Sequence[str]] = None,
337
+ row_names: Optional[Sequence[str]] = None,
335
338
  ) -> None:
336
339
  """Store 2D timeseries.
337
340
 
@@ -343,9 +346,9 @@ class BaseFeatureStorage(ABC):
343
346
  The element as a dictionary.
344
347
  data : numpy.ndarray
345
348
  The timeseries data to store.
346
- col_names : list or tuple of str, optional
349
+ col_names : list-like of str, optional
347
350
  The column labels (default None).
348
- row_names : list or tuple of str, optional
351
+ row_names : list-like of str, optional
349
352
  The row labels (default None).
350
353
 
351
354
  """
@@ -359,8 +362,8 @@ class BaseFeatureStorage(ABC):
359
362
  meta_md5: str,
360
363
  element: dict,
361
364
  data: np.ndarray,
362
- col_names: Optional[Iterable[str]] = None,
363
- row_names: Optional[Iterable[str]] = None,
365
+ col_names: Optional[Sequence[str]] = None,
366
+ row_names: Optional[Sequence[str]] = None,
364
367
  row_header_col_name: Optional[str] = "feature",
365
368
  ) -> None:
366
369
  """Store table with scalar values.
@@ -373,9 +376,9 @@ class BaseFeatureStorage(ABC):
373
376
  The element as a dictionary.
374
377
  data : numpy.ndarray
375
378
  The timeseries data to store.
376
- col_names : list or tuple of str, optional
379
+ col_names : list-like of str, optional
377
380
  The column labels (default None).
378
- row_names : str, optional
381
+ row_names : list-like of str, optional
379
382
  The row labels (default None).
380
383
  row_header_col_name : str, optional
381
384
  The column name for the row header column (default "feature").
@@ -392,7 +395,7 @@ class BaseFeatureStorage(ABC):
392
395
  raise_error(
393
396
  msg="Concrete classes need to implement collect().",
394
397
  klass=NotImplementedError,
395
- )
398
+ ) # pragma: no cover
396
399
 
397
400
  def __str__(self) -> str:
398
401
  """Represent object as string.