junifer 0.0.8.dev284__tar.gz → 0.0.8.dev295__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 (601) hide show
  1. {junifer-0.0.8.dev284/junifer.egg-info → junifer-0.0.8.dev295}/PKG-INFO +1 -1
  2. junifer-0.0.8.dev295/docs/changes/newsfragments/521.bugfix +1 -0
  3. junifer-0.0.8.dev295/docs/changes/newsfragments/522.bugfix +1 -0
  4. junifer-0.0.8.dev295/docs/changes/newsfragments/522.enh +1 -0
  5. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/_version.py +3 -3
  6. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/base.py +12 -1
  7. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/complexity_base.py +9 -9
  8. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/ets_rss.py +8 -3
  9. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_base.py +12 -3
  10. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_base.py +6 -4
  11. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +3 -0
  12. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +3 -0
  13. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +3 -0
  14. junifer-0.0.8.dev295/junifer/markers/tests/test_lost_regions.py +279 -0
  15. junifer-0.0.8.dev295/junifer/markers/tests/test_markers_base.py +349 -0
  16. junifer-0.0.8.dev295/junifer/markers/utils.py +304 -0
  17. junifer-0.0.8.dev295/junifer/pipeline/tests/test_marker_collection.py +195 -0
  18. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/fmriprep_confound_remover.py +2 -2
  19. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295/junifer.egg-info}/PKG-INFO +1 -1
  20. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/SOURCES.txt +4 -0
  21. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/scm_file_list.json +4 -0
  22. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/scm_version.json +2 -2
  23. junifer-0.0.8.dev284/junifer/markers/tests/test_markers_base.py +0 -107
  24. junifer-0.0.8.dev284/junifer/markers/utils.py +0 -121
  25. junifer-0.0.8.dev284/junifer/pipeline/tests/test_marker_collection.py +0 -224
  26. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.dockerignore +0 -0
  27. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  28. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  29. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  30. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  31. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  32. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  33. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/dependabot.yml +0 -0
  34. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/pull_request_template.md +0 -0
  35. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/check-stale.yml +0 -0
  36. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/ci.yml +0 -0
  37. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/docker-publish.yml +0 -0
  38. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/docs-preview.yml +0 -0
  39. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/docs.yml +0 -0
  40. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/lint.yml +0 -0
  41. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/publish.yml +0 -0
  42. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.gitignore +0 -0
  43. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.gitmodules +0 -0
  44. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.pre-commit-config.yaml +0 -0
  45. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.python-version +0 -0
  46. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/AUTHORS.rst +0 -0
  47. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/Dockerfile +0 -0
  48. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/Dockerfile-ci +0 -0
  49. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/LICENSE.md +0 -0
  50. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/README.md +0 -0
  51. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/codecov.yml +0 -0
  52. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/conda-env.yml +0 -0
  53. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/Makefile +0 -0
  54. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_static/css/custom.css +0 -0
  55. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_static/css/version_selector.css +0 -0
  56. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_static/js/custom.js +0 -0
  57. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_templates/versions.html +0 -0
  58. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/api.rst +0 -0
  59. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/cli.rst +0 -0
  60. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/configs.rst +0 -0
  61. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/data.rst +0 -0
  62. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/datagrabbers.rst +0 -0
  63. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/datareaders.rst +0 -0
  64. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/index.rst +0 -0
  65. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/markers.rst +0 -0
  66. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/nilearn.rst +0 -0
  67. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/onthefly.rst +0 -0
  68. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/pipeline.rst +0 -0
  69. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/preprocessing.rst +0 -0
  70. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/stats.rst +0 -0
  71. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/storage.rst +0 -0
  72. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/testing.rst +0 -0
  73. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/utils.rst +0 -0
  74. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/builtin.rst +0 -0
  75. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/contributors.inc +0 -0
  76. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/.gitignore +0 -0
  77. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/239.enh +0 -0
  78. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/364.doc +0 -0
  79. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/364.enh +0 -0
  80. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/364.feature +0 -0
  81. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/474.misc +0 -0
  82. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/482.bugfix +0 -0
  83. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/492.bugfix +0 -0
  84. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/499.enh +0 -0
  85. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/502.bugfix +0 -0
  86. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/503.enh +0 -0
  87. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/510.bugfix +0 -0
  88. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.bugfix +0 -0
  89. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.bugfix.1 +0 -0
  90. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.change +0 -0
  91. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.enh +0 -0
  92. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.enh.1 +0 -0
  93. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.feature +0 -0
  94. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.misc +0 -0
  95. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.misc.1 +0 -0
  96. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/513.doc +0 -0
  97. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/513.misc +0 -0
  98. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/514.bugfix +0 -0
  99. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/514.bugfix.1 +0 -0
  100. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/514.enh +0 -0
  101. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.doc +0 -0
  102. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.enh +0 -0
  103. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.enh.1 +0 -0
  104. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.misc +0 -0
  105. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.misc.1 +0 -0
  106. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.bugfix +0 -0
  107. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.bugfix.1 +0 -0
  108. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.bugfix.2 +0 -0
  109. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.change +0 -0
  110. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.change.1 +0 -0
  111. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.misc +0 -0
  112. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix +0 -0
  113. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.1 +0 -0
  114. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.2 +0 -0
  115. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.3 +0 -0
  116. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.4 +0 -0
  117. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.5 +0 -0
  118. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.6 +0 -0
  119. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.change +0 -0
  120. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.doc +0 -0
  121. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc +0 -0
  122. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc.1 +0 -0
  123. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc.2 +0 -0
  124. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc.3 +0 -0
  125. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.removal +0 -0
  126. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/conf.py +0 -0
  127. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/contribution.rst +0 -0
  128. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/confounds_format.rst +0 -0
  129. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/coordinates.rst +0 -0
  130. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/data_dump_asset.rst +0 -0
  131. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/data_registries.rst +0 -0
  132. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/data_types.rst +0 -0
  133. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/datagrabber.rst +0 -0
  134. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/dependencies.rst +0 -0
  135. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/extension.rst +0 -0
  136. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/index.rst +0 -0
  137. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/logging.rst +0 -0
  138. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/maps.rst +0 -0
  139. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/marker.rst +0 -0
  140. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/masks.rst +0 -0
  141. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/parcellations.rst +0 -0
  142. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/plugins.rst +0 -0
  143. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/preprocessor.rst +0 -0
  144. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/faq.rst +0 -0
  145. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/help.rst +0 -0
  146. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/images/junifer_logo.png +0 -0
  147. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/index.rst +0 -0
  148. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/installation.rst +0 -0
  149. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/links.inc +0 -0
  150. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/maintaining.rst +0 -0
  151. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly.py +0 -0
  152. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly_files/patches/version_banner.html +0 -0
  153. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly_files/patches/versions.html +0 -0
  154. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly_files/templates/index.html +0 -0
  155. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/starting.rst +0 -0
  156. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/data.rst +0 -0
  157. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/datagrabber.rst +0 -0
  158. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/datareader.rst +0 -0
  159. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/index.rst +0 -0
  160. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/marker.rst +0 -0
  161. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/pipeline.rst +0 -0
  162. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/preprocess.rst +0 -0
  163. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/storage.rst +0 -0
  164. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/codeless.rst +0 -0
  165. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/configuring.rst +0 -0
  166. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/dumping.rst +0 -0
  167. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/index.rst +0 -0
  168. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/masks.rst +0 -0
  169. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/queueing.rst +0 -0
  170. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/running.rst +0 -0
  171. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/whats_new.rst +0 -0
  172. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/README.rst +0 -0
  173. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/norun_hcpfc_pearson.py +0 -0
  174. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/norun_ukbvm_gmd.py +0 -0
  175. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_compute_parcel_mean.py +0 -0
  176. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_datagrabber_bids_datalad.py +0 -0
  177. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_ets_rss_marker.py +0 -0
  178. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_junifer_julearn.py +0 -0
  179. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_run_gmd_mean.py +0 -0
  180. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/gmd_mean.yaml +0 -0
  181. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  182. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  183. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  184. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/ignore_words.txt +0 -0
  185. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/__init__.py +0 -0
  186. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/__init__.pyi +0 -0
  187. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/__init__.py +0 -0
  188. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/__init__.pyi +0 -0
  189. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/decorators.py +0 -0
  190. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/functions.py +0 -0
  191. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/py.typed +0 -0
  192. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/__init__.py +0 -0
  193. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/__init__.pyi +0 -0
  194. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  195. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  196. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/py.typed +0 -0
  197. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  198. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  199. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  200. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  201. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/3dRSFC +0 -0
  202. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/3dReHo +0 -0
  203. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/afni +0 -0
  204. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  205. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/ResampleImage +0 -0
  206. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/antsApplyTransforms +0 -0
  207. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  208. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  209. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mri_binarize +0 -0
  210. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mri_mc +0 -0
  211. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mri_pretess +0 -0
  212. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mris_convert +0 -0
  213. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  214. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/applywarp +0 -0
  215. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/flirt +0 -0
  216. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/img2imgcoord +0 -0
  217. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  218. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/std2imgcoord +0 -0
  219. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_conda.bash +0 -0
  220. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_conda.zsh +0 -0
  221. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_venv.bash +0 -0
  222. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_venv.zsh +0 -0
  223. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/tests/test_decorators.py +0 -0
  224. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/tests/test_functions.py +0 -0
  225. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/__init__.py +0 -0
  226. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/__init__.pyi +0 -0
  227. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/cli.py +0 -0
  228. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/parser.py +0 -0
  229. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/py.typed +0 -0
  230. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  231. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  232. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  233. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/test_cli.py +0 -0
  234. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/test_cli_utils.py +0 -0
  235. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/utils.py +0 -0
  236. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/__init__.py +0 -0
  237. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/__init__.pyi +0 -0
  238. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/__init__.py +0 -0
  239. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/__init__.pyi +0 -0
  240. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  241. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  242. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  243. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  244. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  245. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  246. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  247. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  248. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  249. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  250. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  251. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  252. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  253. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/py.typed +0 -0
  254. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/py.typed +0 -0
  255. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/conftest.py +0 -0
  256. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/__init__.py +0 -0
  257. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/__init__.pyi +0 -0
  258. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/_dispatch.py +0 -0
  259. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/__init__.py +0 -0
  260. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/__init__.pyi +0 -0
  261. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  262. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/_coordinates.py +0 -0
  263. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  264. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  265. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/tests/test_coordinates_names.py +0 -0
  266. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/__init__.py +0 -0
  267. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/__init__.pyi +0 -0
  268. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/_ants_maps_warper.py +0 -0
  269. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/_fsl_maps_warper.py +0 -0
  270. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/_maps.py +0 -0
  271. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/tests/test_maps.py +0 -0
  272. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/__init__.py +0 -0
  273. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/__init__.pyi +0 -0
  274. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/_ants_mask_warper.py +0 -0
  275. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  276. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/_masks.py +0 -0
  277. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/tests/test_masks.py +0 -0
  278. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/__init__.py +0 -0
  279. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/__init__.pyi +0 -0
  280. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  281. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  282. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/_parcellations.py +0 -0
  283. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  284. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/pipeline_data_registry_base.py +0 -0
  285. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/py.typed +0 -0
  286. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/template_spaces.py +0 -0
  287. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/tests/test_data_utils.py +0 -0
  288. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/tests/test_dispatch.py +0 -0
  289. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/tests/test_template_spaces.py +0 -0
  290. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/utils.py +0 -0
  291. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/__init__.py +0 -0
  292. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/__init__.pyi +0 -0
  293. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/__init__.py +0 -0
  294. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  295. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/_types.py +0 -0
  296. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/id1000.py +0 -0
  297. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/piop1.py +0 -0
  298. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/piop2.py +0 -0
  299. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/py.typed +0 -0
  300. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  301. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  302. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  303. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/base.py +0 -0
  304. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/datalad_base.py +0 -0
  305. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  306. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  307. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  308. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  309. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  310. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/py.typed +0 -0
  311. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  312. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/multiple.py +0 -0
  313. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/pattern.py +0 -0
  314. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/pattern_datalad.py +0 -0
  315. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  316. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/py.typed +0 -0
  317. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_base.py +0 -0
  318. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  319. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  320. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_multiple.py +0 -0
  321. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_pattern.py +0 -0
  322. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  323. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  324. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/__init__.py +0 -0
  325. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/__init__.pyi +0 -0
  326. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/default.py +0 -0
  327. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/py.typed +0 -0
  328. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/tests/test_default_reader.py +0 -0
  329. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.codecov.yml +0 -0
  330. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.codespellignore +0 -0
  331. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  332. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  333. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  334. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +0 -0
  335. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/dependabot.yml +0 -0
  336. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/build.yml +0 -0
  337. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/code-style.yml +0 -0
  338. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/doc.yml +0 -0
  339. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/publish.yml +0 -0
  340. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/pytest.yml +0 -0
  341. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.gitignore +0 -0
  342. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/LICENSE +0 -0
  343. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/README.md +0 -0
  344. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  345. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  346. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  347. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  348. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/__init__.py +0 -0
  349. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/help_text.py +0 -0
  350. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/parser.py +0 -0
  351. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/utils.py +0 -0
  352. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
  353. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/commands/sys_info.py +0 -0
  354. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  355. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  356. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  357. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
  358. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +0 -0
  359. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  360. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/Makefile +0 -0
  361. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
  362. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +0 -0
  363. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +0 -0
  364. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +0 -0
  365. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/api/index.rst +0 -0
  366. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/conf.py +0 -0
  367. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/index.rst +0 -0
  368. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/links.inc +0 -0
  369. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/make.bat +0 -0
  370. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/references.bib +0 -0
  371. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/pyproject.toml +0 -0
  372. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/setup.py +0 -0
  373. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/__init__.py +0 -0
  374. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/__init__.pyi +0 -0
  375. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.coveragerc +0 -0
  376. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.gitattributes +0 -0
  377. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.gitignore +0 -0
  378. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.travis.yml +0 -0
  379. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.vscode/launch.json +0 -0
  380. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.vscode/settings.json +0 -0
  381. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/LICENSE.txt +0 -0
  382. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/MANIFEST.in +0 -0
  383. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/Makefile +0 -0
  384. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/README.rst +0 -0
  385. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/azure-pipelines.yml +0 -0
  386. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/__init__.py +0 -0
  387. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/_h5io.py +0 -0
  388. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/_version.py +0 -0
  389. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  390. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  391. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/__init__.py +0 -0
  392. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/test_chunked_array.py +0 -0
  393. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/test_chunked_list.py +0 -0
  394. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/test_io.py +0 -0
  395. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/setup.cfg +0 -0
  396. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/setup.py +0 -0
  397. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/versioneer.py +0 -0
  398. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/__init__.py +0 -0
  399. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/__init__.pyi +0 -0
  400. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  401. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  402. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/py.typed +0 -0
  403. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  404. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  405. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/py.typed +0 -0
  406. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/__init__.py +0 -0
  407. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/__init__.pyi +0 -0
  408. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/brainprint.py +0 -0
  409. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/__init__.py +0 -0
  410. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/__init__.pyi +0 -0
  411. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/hurst_exponent.py +0 -0
  412. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  413. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/perm_entropy.py +0 -0
  414. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/py.typed +0 -0
  415. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/range_entropy.py +0 -0
  416. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  417. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/sample_entropy.py +0 -0
  418. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  419. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  420. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  421. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  422. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  423. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  424. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  425. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  426. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  427. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/__init__.py +0 -0
  428. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/__init__.pyi +0 -0
  429. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/_afni_falff.py +0 -0
  430. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/_junifer_falff.py +0 -0
  431. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_base.py +0 -0
  432. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_maps.py +0 -0
  433. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_parcels.py +0 -0
  434. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_spheres.py +0 -0
  435. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/py.typed +0 -0
  436. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
  437. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  438. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  439. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/__init__.py +0 -0
  440. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  441. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  442. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
  443. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  444. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  445. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
  446. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  447. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  448. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/py.typed +0 -0
  449. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  450. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
  451. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  452. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  453. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  454. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
  455. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  456. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  457. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/maps_aggregation.py +0 -0
  458. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/parcel_aggregation.py +0 -0
  459. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/py.typed +0 -0
  460. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/__init__.py +0 -0
  461. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/__init__.pyi +0 -0
  462. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/_afni_reho.py +0 -0
  463. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/_junifer_reho.py +0 -0
  464. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/py.typed +0 -0
  465. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_base.py +0 -0
  466. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_maps.py +0 -0
  467. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_parcels.py +0 -0
  468. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_spheres.py +0 -0
  469. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_junifer_reho.py +0 -0
  470. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
  471. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  472. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  473. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/sphere_aggregation.py +0 -0
  474. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/__init__.py +0 -0
  475. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  476. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/py.typed +0 -0
  477. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
  478. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  479. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  480. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  481. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_brainprint.py +0 -0
  482. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_ets_rss.py +0 -0
  483. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_maps_aggregation.py +0 -0
  484. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_marker_utils.py +0 -0
  485. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  486. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  487. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/__init__.py +0 -0
  488. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/__init__.pyi +0 -0
  489. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/_brainprint.py +0 -0
  490. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/py.typed +0 -0
  491. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/read_transform.py +0 -0
  492. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/tests/test_read_transform.py +0 -0
  493. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/__init__.py +0 -0
  494. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/__init__.pyi +0 -0
  495. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/_data_object_dumper.py +0 -0
  496. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/marker_collection.py +0 -0
  497. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/pipeline_component_registry.py +0 -0
  498. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  499. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/py.typed +0 -0
  500. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
  501. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  502. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  503. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  504. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  505. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/update_meta_mixin.py +0 -0
  506. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/utils.py +0 -0
  507. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/workdir_manager.py +0 -0
  508. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/__init__.py +0 -0
  509. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/__init__.pyi +0 -0
  510. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/_temporal_filter.py +0 -0
  511. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/_temporal_slicer.py +0 -0
  512. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/base.py +0 -0
  513. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/__init__.py +0 -0
  514. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/__init__.pyi +0 -0
  515. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/py.typed +0 -0
  516. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  517. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/py.typed +0 -0
  518. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/__init__.py +0 -0
  519. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  520. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  521. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  522. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  523. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/py.typed +0 -0
  524. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/smoothing.py +0 -0
  525. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  526. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  527. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
  528. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
  529. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/__init__.py +0 -0
  530. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/__init__.pyi +0 -0
  531. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/_ants_warper.py +0 -0
  532. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  533. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/py.typed +0 -0
  534. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/space_warper.py +0 -0
  535. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  536. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/py.typed +0 -0
  537. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/stats.py +0 -0
  538. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/__init__.py +0 -0
  539. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/__init__.pyi +0 -0
  540. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/base.py +0 -0
  541. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/hdf5.py +0 -0
  542. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/pandas_base.py +0 -0
  543. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/py.typed +0 -0
  544. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/sqlite.py +0 -0
  545. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_hdf5.py +0 -0
  546. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_pandas_base.py +0 -0
  547. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_sqlite.py +0 -0
  548. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_storage_base.py +0 -0
  549. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_utils.py +0 -0
  550. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/utils.py +0 -0
  551. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/__init__.py +0 -0
  552. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/__init__.pyi +0 -0
  553. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  554. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/datagrabbers.py +0 -0
  555. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/py.typed +0 -0
  556. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/registry.py +0 -0
  557. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_adhdtesting_datagrabber.py +0 -0
  558. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  559. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  560. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  561. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_testing_registry.py +0 -0
  562. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_testing_utils.py +0 -0
  563. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +0 -0
  564. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/utils.py +0 -0
  565. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/tests/test_main.py +0 -0
  566. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/tests/test_stats.py +0 -0
  567. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/__init__.py +0 -0
  568. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/__init__.pyi +0 -0
  569. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/_typing.py +0 -0
  570. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/py.typed +0 -0
  571. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/__init__.py +0 -0
  572. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/__init__.pyi +0 -0
  573. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/_config.py +0 -0
  574. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/_yaml.py +0 -0
  575. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/fs.py +0 -0
  576. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/helpers.py +0 -0
  577. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/logging.py +0 -0
  578. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/py.typed +0 -0
  579. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/singleton.py +0 -0
  580. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_config.py +0 -0
  581. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_fs.py +0 -0
  582. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_helpers.py +0 -0
  583. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_logging.py +0 -0
  584. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/dependency_links.txt +0 -0
  585. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/entry_points.txt +0 -0
  586. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/requires.txt +0 -0
  587. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/top_level.txt +0 -0
  588. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/justfile +0 -0
  589. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/pyproject.toml +0 -0
  590. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/scripts/start.sh +0 -0
  591. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/setup.cfg +0 -0
  592. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/setup.py +0 -0
  593. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_aomic1000_example_dataset.py +0 -0
  594. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_aomicpiop1_example_dataset.py +0 -0
  595. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_aomicpiop2_example_dataset.py +0 -0
  596. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_bids_example_dataset.py +0 -0
  597. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_bids_example_dataset_sessions.py +0 -0
  598. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  599. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_hcp1200_example_dataset.py +0 -0
  600. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tox.ini +0 -0
  601. {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.8.dev284
3
+ Version: 0.0.8.dev295
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
+ Handle regions without voxels (e.g. lost when resampling or warping the parcellation) in parcel markers: functional connectivity and complexity markers are computed on the regions with data and give ``NaN`` for the others, instead of failing or returning values for the lost regions, and :class:`.RSSETSMarker` only uses the edges with data by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Fix :class:`.TemporalSNRParcels`, :class:`.TemporalSNRSpheres` and :class:`.TemporalSNRMaps` replacing the BOLD data with the tSNR map, so the markers computed after them in a pipeline used the tSNR map instead of the BOLD data by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Raise an error if a marker changes its input data (which is shared with the other markers of a pipeline), checking the values and their contents (arrays, data frames and images) by `Fede Raimondo`_
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.0.8.dev284'
22
- __version_tuple__ = version_tuple = (0, 0, 8, 'dev284')
21
+ __version__ = version = '0.0.8.dev295'
22
+ __version_tuple__ = version_tuple = (0, 0, 8, 'dev295')
23
23
 
24
- __commit_id__ = commit_id = 'g3efb83df1'
24
+ __commit_id__ = commit_id = 'g4eb842a09'
@@ -16,10 +16,12 @@ from ..pipeline import PipelineStepMixin, UpdateMetaMixin
16
16
  from ..storage import StorageType
17
17
  from ..typing import MarkerInOutMappings, StorageLike
18
18
  from ..utils import ensure_list_or_none, raise_error
19
+ from .utils import _changed_paths, _fingerprint
19
20
 
20
21
 
21
22
  __all__ = ["BaseMarker"]
22
23
 
24
+
23
25
  _log = structlog.get_logger("junifer")
24
26
  logger = _log.bind(pkg="markers", step="marker")
25
27
 
@@ -257,8 +259,17 @@ class BaseMarker(BaseModel, ABC, PipelineStepMixin, UpdateMetaMixin):
257
259
  # Copy metadata
258
260
  t_meta = t_input["meta"].copy()
259
261
  t_meta["type"] = t.value
260
- # Compute marker
262
+ # Compute marker, checking it does not change the data, as
263
+ # it is shared with the markers computed afterwards
264
+ fingerprint = _fingerprint(input)
261
265
  t_out = self.compute(input=t_input, extra_input=extra_input)
266
+ changed = _changed_paths(fingerprint, _fingerprint(input))
267
+ if changed:
268
+ raise_error(
269
+ f"Marker {self.name} changed its input data, which is "
270
+ f"shared with the other markers: {', '.join(changed)}",
271
+ klass=RuntimeError,
272
+ )
262
273
  # Initialize empty dictionary if no storage object is provided
263
274
  if storage is None:
264
275
  out[t] = {}
@@ -6,12 +6,12 @@
6
6
 
7
7
  from abc import abstractmethod
8
8
  from typing import (
9
- TYPE_CHECKING,
10
9
  Annotated,
11
10
  Any,
12
11
  ClassVar,
13
12
  )
14
13
 
14
+ import numpy as np
15
15
  from pydantic import BeforeValidator
16
16
 
17
17
  from ...datagrabber import DataType
@@ -20,10 +20,7 @@ from ...typing import Dependencies, MarkerInOutMappings
20
20
  from ...utils import ensure_list, ensure_list_or_none, raise_error
21
21
  from ..base import BaseMarker
22
22
  from ..parcel_aggregation import ParcelAggregation
23
-
24
-
25
- if TYPE_CHECKING:
26
- import numpy as np
23
+ from ..utils import _has_data
27
24
 
28
25
 
29
26
  __all__ = ["ComplexityBase"]
@@ -118,12 +115,15 @@ class ComplexityBase(BaseMarker):
118
115
  masks=self.masks,
119
116
  on=DataType.BOLD,
120
117
  ).compute(input=input, extra_input=extra_input)
121
- # Compute complexity measure
118
+ # Compute complexity measure on the regions with data (e.g. regions
119
+ # lost in resampling have none) and set the others to NaN
120
+ data = parcel_aggregation["aggregation"]["data"]
121
+ has_data = _has_data(data)
122
+ complexity = np.full((1, data.shape[1]), np.nan)
123
+ complexity[:, has_data] = self.compute_complexity(data[:, has_data])
122
124
  return {
123
125
  "complexity": {
124
- "data": self.compute_complexity(
125
- parcel_aggregation["aggregation"]["data"]
126
- ),
126
+ "data": complexity,
127
127
  "col_names": parcel_aggregation["aggregation"]["col_names"],
128
128
  }
129
129
  }
@@ -18,7 +18,7 @@ from ..typing import Dependencies, MarkerInOutMappings
18
18
  from ..utils import ensure_list, ensure_list_or_none
19
19
  from .base import BaseMarker, logger
20
20
  from .parcel_aggregation import ParcelAggregation
21
- from .utils import _ets
21
+ from .utils import _ets, _has_data
22
22
 
23
23
 
24
24
  __all__ = ["RSSETSMarker"]
@@ -113,8 +113,13 @@ class RSSETSMarker(BaseMarker):
113
113
  ).compute(input=input, extra_input=extra_input)
114
114
  # Compute edgewise timeseries
115
115
  edge_ts, _ = _ets(aggregation["aggregation"]["data"])
116
- # Compute the RSS of edgewise timeseries
117
- rss = np.sum(edge_ts**2, 1) ** 0.5
116
+ # Compute the RSS of edgewise timeseries, only using the edges with
117
+ # data (e.g. regions lost in resampling have none)
118
+ edge_ts = edge_ts[:, _has_data(edge_ts)]
119
+ if edge_ts.shape[1] > 0:
120
+ rss = np.sum(edge_ts**2, 1) ** 0.5
121
+ else:
122
+ rss = np.full(edge_ts.shape[0], np.nan)
118
123
 
119
124
  return {
120
125
  "rss_ets": {
@@ -6,6 +6,7 @@
6
6
  from abc import abstractmethod
7
7
  from typing import Annotated, Any, ClassVar
8
8
 
9
+ import numpy as np
9
10
  from pydantic import BeforeValidator
10
11
  from sklearn.covariance import EmpiricalCovariance, LedoitWolf
11
12
 
@@ -15,6 +16,7 @@ from ...storage import MatrixKind, StorageType
15
16
  from ...typing import Dependencies, MarkerInOutMappings
16
17
  from ...utils import ensure_list_or_none, raise_error
17
18
  from ..base import BaseMarker
19
+ from ..utils import _has_data
18
20
 
19
21
 
20
22
  __all__ = ["FunctionalConnectivityBase"]
@@ -140,13 +142,20 @@ class FunctionalConnectivityBase(BaseMarker):
140
142
  if k != "empirical"
141
143
  },
142
144
  )
145
+ # Compute on the columns with data (e.g. regions lost in
146
+ # resampling have none) and set the others to NaN
147
+ data = aggregation["aggregation"]["data"]
148
+ has_data = _has_data(data)
149
+ conn = np.full((data.shape[1], data.shape[1]), np.nan)
150
+ if has_data.any():
151
+ conn[np.ix_(has_data, has_data)] = connectivity.fit_transform(
152
+ [data[:, has_data]]
153
+ )[0]
143
154
  # Create dictionary for output
144
155
  labels = aggregation["aggregation"]["col_names"]
145
156
  return {
146
157
  "functional_connectivity": {
147
- "data": connectivity.fit_transform(
148
- [aggregation["aggregation"]["data"]]
149
- )[0],
158
+ "data": conn,
150
159
  "row_names": labels,
151
160
  "col_names": labels,
152
161
  # xi correlation coefficient is not symmetric
@@ -104,7 +104,9 @@ class TemporalSNRBase(BaseMarker):
104
104
  "img.std(axis=-1).squeeze()", img=input["data"]
105
105
  )
106
106
  mask_img = nimg.math_img("(stdv_img != 0)", stdv_img=stdv_img)
107
- input["data"] = nimg.math_img(
107
+ # Aggregate the tSNR image, without changing the input
108
+ aggregation_input = dict(input.items())
109
+ aggregation_input["data"] = nimg.math_img(
108
110
  "np.divide(mean_img, stdv_img, where=mask_img.astype(bool))",
109
111
  mean_img=mean_img,
110
112
  stdv_img=stdv_img,
@@ -113,8 +115,8 @@ class TemporalSNRBase(BaseMarker):
113
115
  # Perform necessary aggregation and return
114
116
  return {
115
117
  "tsnr": {
116
- **self.aggregate(input=input, extra_input=extra_input)[
117
- "aggregation"
118
- ]
118
+ **self.aggregate(
119
+ input=aggregation_input, extra_input=extra_input
120
+ )["aggregation"]
119
121
  }
120
122
  }
@@ -28,7 +28,10 @@ def test_TemporalSNRMaps_computation() -> None:
28
28
  input_type=DataType.BOLD, output_feature="tsnr"
29
29
  )
30
30
  # Fit-transform the data
31
+ bold_img = element_data["BOLD"]["data"]
31
32
  tsnr_parcels = marker.fit_transform(element_data)
33
+ # The input is not changed
34
+ assert element_data["BOLD"]["data"] is bold_img
32
35
  tsnr_parcels_bold = tsnr_parcels["BOLD"]["tsnr"]
33
36
 
34
37
  assert "data" in tsnr_parcels_bold
@@ -30,7 +30,10 @@ def test_TemporalSNRParcels_computation() -> None:
30
30
  input_type=DataType.BOLD, output_feature="tsnr"
31
31
  )
32
32
  # Fit-transform the data
33
+ bold_img = element_data["BOLD"]["data"]
33
34
  tsnr_parcels = marker.fit_transform(element_data)
35
+ # The input is not changed
36
+ assert element_data["BOLD"]["data"] is bold_img
34
37
  tsnr_parcels_bold = tsnr_parcels["BOLD"]["tsnr"]
35
38
 
36
39
  assert "data" in tsnr_parcels_bold
@@ -28,7 +28,10 @@ def test_TemporalSNRSpheres_computation() -> None:
28
28
  input_type=DataType.BOLD, output_feature="tsnr"
29
29
  )
30
30
  # Fit-transform the data
31
+ bold_img = element_data["BOLD"]["data"]
31
32
  tsnr_spheres = marker.fit_transform(element_data)
33
+ # The input is not changed
34
+ assert element_data["BOLD"]["data"] is bold_img
32
35
  tsnr_spheres_bold = tsnr_spheres["BOLD"]["tsnr"]
33
36
 
34
37
  assert "data" in tsnr_spheres_bold
@@ -0,0 +1,279 @@
1
+ """Provide tests for markers on regions lost in resampling."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # License: AGPL
5
+
6
+ from collections.abc import Iterator
7
+ from importlib.util import find_spec
8
+ from pathlib import Path
9
+
10
+ import nibabel as nib
11
+ import numpy as np
12
+ import pytest
13
+
14
+ from junifer import markers
15
+ from junifer.data import deregister_data, register_data
16
+ from junifer.datareader import DefaultDataReader
17
+ from junifer.pipeline import WorkDirManager
18
+
19
+
20
+ COMPLEXITY_MARKERS = (
21
+ "HurstExponent",
22
+ "RangeEntropy",
23
+ "RangeEntropyAUC",
24
+ "MultiscaleEntropyAUC",
25
+ "PermEntropy",
26
+ "WeightedPermEntropy",
27
+ "SampleEntropy",
28
+ )
29
+
30
+ skip_no_neurokit2 = pytest.mark.skipif(
31
+ find_spec("neurokit2") is None, reason="requires neurokit2"
32
+ )
33
+
34
+
35
+ @pytest.fixture(scope="module")
36
+ def element(tmp_path_factory: pytest.TempPathFactory) -> Iterator[dict]:
37
+ """Provide BOLD data where regions of the parcellations are lost.
38
+
39
+ The parcellations are on a 1mm grid and the BOLD data on a 3mm grid,
40
+ which does not sample their single-voxel regions:
41
+
42
+ * ``LostRegion`` (and ``LostRegion2``, the same): regions ``a``, ``b``,
43
+ ``lost``, ``c`` and ``d``.
44
+ * ``OneRegionLeft``: regions ``kept``, ``lost`` and ``lost_too``.
45
+
46
+ Parameters
47
+ ----------
48
+ tmp_path_factory : pytest.TempPathFactory
49
+ The pytest factory for temporary directories.
50
+
51
+ Yields
52
+ ------
53
+ dict
54
+ The element data.
55
+
56
+ """
57
+ tmp_path = tmp_path_factory.mktemp("lost_regions")
58
+ # Voxels 0, 3, 6, ... are sampled by the 3mm grid, 7 and 13 are not
59
+ lost_region = np.zeros((24, 24, 24), dtype=np.int16)
60
+ lost_region[0:12, 0:12] = 1
61
+ lost_region[12:24, 0:12] = 2
62
+ lost_region[7, 13, 7] = 3
63
+ lost_region[0:12, 15:24] = 4
64
+ lost_region[12:24, 15:24] = 5
65
+ one_region_left = np.zeros((24, 24, 24), dtype=np.int16)
66
+ one_region_left[0:12, 0:12] = 1
67
+ one_region_left[7, 13, 7] = 2
68
+ one_region_left[13, 7, 7] = 3
69
+ for name, data, labels in (
70
+ ("LostRegion", lost_region, ["a", "b", "lost", "c", "d"]),
71
+ ("LostRegion2", lost_region, ["a", "b", "lost", "c", "d"]),
72
+ ("OneRegionLeft", one_region_left, ["kept", "lost", "lost_too"]),
73
+ ):
74
+ path = tmp_path / f"{name}.nii.gz"
75
+ nib.save(nib.Nifti1Image(data, np.eye(4)), path)
76
+ register_data(
77
+ kind="parcellation",
78
+ name=name,
79
+ parcellation_path=path,
80
+ parcels_labels=labels,
81
+ space="MNI152NLin6Asym",
82
+ )
83
+ # Random walks, so all the measures are defined
84
+ rng = np.random.default_rng(0)
85
+ bold = rng.normal(size=(8, 8, 8, 120)).cumsum(axis=-1) + 1000
86
+ bold_img = nib.Nifti1Image(
87
+ bold.astype(np.float32), np.diag([3.0, 3.0, 3.0, 1.0])
88
+ )
89
+ bold_img.header.set_xyzt_units("mm", "sec")
90
+ bold_path = tmp_path / "bold.nii.gz"
91
+ nib.save(bold_img, bold_path)
92
+ yield DefaultDataReader().fit_transform(
93
+ {"BOLD": {"path": bold_path, "space": "MNI152NLin6Asym"}}
94
+ )
95
+ for name in ("LostRegion", "LostRegion2", "OneRegionLeft"):
96
+ deregister_data(kind="parcellation", name=name)
97
+
98
+
99
+ def _case(name: str, params: dict, feature: str, nan: list) -> object:
100
+ """Get a test case.
101
+
102
+ Parameters
103
+ ----------
104
+ name : str
105
+ The name of the marker class.
106
+ params : dict
107
+ The parameters of the marker.
108
+ feature : str
109
+ The name of the feature to check.
110
+ nan : list
111
+ The values that are NaN.
112
+
113
+ Returns
114
+ -------
115
+ object
116
+ The test case, named after the parcellation, marker and feature.
117
+ Complexity markers are skipped if neurokit2 is not installed.
118
+
119
+ """
120
+ parcellation = params.get("parcellation", params.get("parcellation_one"))
121
+ return pytest.param(
122
+ name,
123
+ params,
124
+ feature,
125
+ nan,
126
+ marks=skip_no_neurokit2 if name in COMPLEXITY_MARKERS else (),
127
+ id=f"{parcellation}-{name}-{feature}",
128
+ )
129
+
130
+
131
+ # Whether the values are NaN for LostRegion, whose 3rd region is lost
132
+ REGIONS = [False, False, True, False, False]
133
+ # For connectivity, a region pair is NaN if one of the regions is lost
134
+ PAIRS = [[r or c for c in REGIONS] for r in REGIONS]
135
+ # For edge-centric FC, the edges are the region pairs (lower triangle)
136
+ EDGES = [r or c for i, r in enumerate(REGIONS) for c in REGIONS[:i]]
137
+ EDGE_PAIRS = [[r or c for c in EDGES] for r in EDGES]
138
+
139
+
140
+ @pytest.mark.parametrize(
141
+ "name, params, feature, nan",
142
+ [
143
+ _case(
144
+ "ParcelAggregation",
145
+ {"parcellation": "LostRegion", "method": "mean", "on": "BOLD"},
146
+ "aggregation",
147
+ [REGIONS] * 120,
148
+ ),
149
+ _case(
150
+ "FunctionalConnectivityParcels",
151
+ {"parcellation": "LostRegion"},
152
+ "functional_connectivity",
153
+ PAIRS,
154
+ ),
155
+ _case(
156
+ "EdgeCentricFCParcels",
157
+ {"parcellation": "LostRegion"},
158
+ "functional_connectivity",
159
+ EDGE_PAIRS,
160
+ ),
161
+ _case(
162
+ "CrossParcellationFC",
163
+ {
164
+ "parcellation_one": "LostRegion",
165
+ "parcellation_two": "LostRegion2",
166
+ },
167
+ "functional_connectivity",
168
+ PAIRS,
169
+ ),
170
+ _case(
171
+ "ReHoParcels",
172
+ {"parcellation": "LostRegion", "using": "junifer"},
173
+ "reho",
174
+ [REGIONS],
175
+ ),
176
+ _case(
177
+ "ALFFParcels",
178
+ {"parcellation": "LostRegion", "using": "junifer"},
179
+ "alff",
180
+ [REGIONS],
181
+ ),
182
+ _case(
183
+ "ALFFParcels",
184
+ {"parcellation": "LostRegion", "using": "junifer"},
185
+ "falff",
186
+ [REGIONS],
187
+ ),
188
+ _case(
189
+ "TemporalSNRParcels",
190
+ {"parcellation": "LostRegion"},
191
+ "tsnr",
192
+ [REGIONS],
193
+ ),
194
+ # Computed with the edges with data
195
+ _case(
196
+ "RSSETSMarker",
197
+ {"parcellation": "LostRegion"},
198
+ "rss_ets",
199
+ [[False]] * 120,
200
+ ),
201
+ *[
202
+ _case(
203
+ name, {"parcellation": "LostRegion"}, "complexity", [REGIONS]
204
+ )
205
+ for name in COMPLEXITY_MARKERS
206
+ ],
207
+ # Only the kept region with itself
208
+ _case(
209
+ "FunctionalConnectivityParcels",
210
+ {"parcellation": "OneRegionLeft"},
211
+ "functional_connectivity",
212
+ [[False, True, True], [True, True, True], [True, True, True]],
213
+ ),
214
+ # All the edges have a lost region
215
+ _case(
216
+ "EdgeCentricFCParcels",
217
+ {"parcellation": "OneRegionLeft"},
218
+ "functional_connectivity",
219
+ [[True] * 3] * 3,
220
+ ),
221
+ # No edges with data
222
+ _case(
223
+ "RSSETSMarker",
224
+ {"parcellation": "OneRegionLeft"},
225
+ "rss_ets",
226
+ [[True]] * 120,
227
+ ),
228
+ *[
229
+ _case(
230
+ name,
231
+ {"parcellation": "OneRegionLeft"},
232
+ "complexity",
233
+ [[False, True, True]],
234
+ )
235
+ for name in COMPLEXITY_MARKERS
236
+ ],
237
+ ],
238
+ )
239
+ def test_lost_regions(
240
+ tmp_path: Path,
241
+ element: dict,
242
+ name: str,
243
+ params: dict,
244
+ feature: str,
245
+ nan: list,
246
+ ) -> None:
247
+ """Test markers on regions lost in resampling.
248
+
249
+ The lost regions have no data (NaN), and the other regions are not
250
+ affected.
251
+
252
+ Parameters
253
+ ----------
254
+ tmp_path : pathlib.Path
255
+ The path to the test directory.
256
+ element : dict
257
+ The element data.
258
+ name : str
259
+ The parametrized name of the marker class.
260
+ params : dict
261
+ The parametrized parameters of the marker.
262
+ feature : str
263
+ The parametrized name of the feature to check.
264
+ nan : list
265
+ The parametrized values that are NaN.
266
+
267
+ """
268
+ if name in COMPLEXITY_MARKERS:
269
+ from junifer.markers import complexity
270
+
271
+ marker = getattr(complexity, name)(**params)
272
+ else:
273
+ marker = getattr(markers, name)(**params)
274
+ WorkDirManager().workdir = tmp_path
275
+ with pytest.warns(RuntimeWarning, match=r"region\(s\) .* have no voxels"):
276
+ # Copy the data, as some markers change their input
277
+ out = marker.fit_transform({"BOLD": dict(element["BOLD"])})
278
+ data = np.asarray(out["BOLD"][feature]["data"], dtype=float)
279
+ assert np.array_equal(np.isnan(data), nan)