junifer 0.0.7.dev206__tar.gz → 0.0.7.dev217__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 (496) hide show
  1. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/PKG-INFO +1 -1
  2. junifer-0.0.7.dev217/docs/changes/newsfragments/462.feature +1 -0
  3. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/_version.py +3 -3
  4. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/_ants_warper.py +71 -22
  5. junifer-0.0.7.dev217/junifer/preprocess/warping/_fsl_warper.py +289 -0
  6. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/space_warper.py +68 -20
  7. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/PKG-INFO +1 -1
  8. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/SOURCES.txt +1 -0
  9. junifer-0.0.7.dev206/junifer/preprocess/warping/_fsl_warper.py +0 -163
  10. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.dockerignore +0 -0
  11. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  12. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  13. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  14. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  15. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  16. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  17. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/dependabot.yml +0 -0
  18. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/pull_request_template.md +0 -0
  19. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/check-stale.yml +0 -0
  20. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/ci-docs.yml +0 -0
  21. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/ci.yml +0 -0
  22. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docker-ci-publish.yml +0 -0
  23. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docker-docs-publish.yml +0 -0
  24. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docs-preview.yml +0 -0
  25. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docs.yml +0 -0
  26. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/lint.yml +0 -0
  27. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/publish.yml +0 -0
  28. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.gitignore +0 -0
  29. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.gitmodules +0 -0
  30. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.pre-commit-config.yaml +0 -0
  31. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/AUTHORS.rst +0 -0
  32. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/Dockerfile-ci +0 -0
  33. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/Dockerfile-docs +0 -0
  34. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/LICENSE.md +0 -0
  35. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/README.md +0 -0
  36. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/codecov.yml +0 -0
  37. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/conda-env.yml +0 -0
  38. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/Makefile +0 -0
  39. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/_static/css/custom.css +0 -0
  40. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/_static/js/custom.js +0 -0
  41. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/_templates/versions.html +0 -0
  42. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/api.rst +0 -0
  43. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/cli.rst +0 -0
  44. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/configs.rst +0 -0
  45. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/data.rst +0 -0
  46. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/datagrabbers.rst +0 -0
  47. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/datareaders.rst +0 -0
  48. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/index.rst +0 -0
  49. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/markers.rst +0 -0
  50. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/nilearn.rst +0 -0
  51. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/onthefly.rst +0 -0
  52. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/pipeline.rst +0 -0
  53. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/preprocessing.rst +0 -0
  54. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/stats.rst +0 -0
  55. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/storage.rst +0 -0
  56. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/testing.rst +0 -0
  57. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/utils.rst +0 -0
  58. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/builtin.rst +0 -0
  59. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/contributors.inc +0 -0
  60. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/.gitignore +0 -0
  61. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/333.enh +0 -0
  62. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/429.change +0 -0
  63. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/429.enh +0 -0
  64. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/432.feature +0 -0
  65. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/441.misc +0 -0
  66. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/443.feature +0 -0
  67. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/444.bugfix +0 -0
  68. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/450.doc +0 -0
  69. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/450.feature +0 -0
  70. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/451.doc +0 -0
  71. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/451.feature +0 -0
  72. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/452.doc +0 -0
  73. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/452.feature +0 -0
  74. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/454.bugfix +0 -0
  75. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/456.misc +0 -0
  76. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/457.misc +0 -0
  77. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/458.change +0 -0
  78. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/458.feature +0 -0
  79. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/458.misc +0 -0
  80. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/460.feature +0 -0
  81. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/464.misc +0 -0
  82. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/465.misc +0 -0
  83. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/466.misc +0 -0
  84. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/467.misc +0 -0
  85. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/468.misc +0 -0
  86. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/conf.py +0 -0
  87. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/contribution.rst +0 -0
  88. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/coordinates.rst +0 -0
  89. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/data_dump_asset.rst +0 -0
  90. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/data_registries.rst +0 -0
  91. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/data_types.rst +0 -0
  92. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/datagrabber.rst +0 -0
  93. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/dependencies.rst +0 -0
  94. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/extension.rst +0 -0
  95. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/index.rst +0 -0
  96. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/maps.rst +0 -0
  97. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/marker.rst +0 -0
  98. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/masks.rst +0 -0
  99. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/parcellations.rst +0 -0
  100. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/plugins.rst +0 -0
  101. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/preprocessor.rst +0 -0
  102. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/faq.rst +0 -0
  103. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/help.rst +0 -0
  104. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/images/junifer_logo.png +0 -0
  105. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/index.rst +0 -0
  106. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/installation.rst +0 -0
  107. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/links.inc +0 -0
  108. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/maintaining.rst +0 -0
  109. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/redirect.html +0 -0
  110. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/starting.rst +0 -0
  111. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/data.rst +0 -0
  112. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/datagrabber.rst +0 -0
  113. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/datareader.rst +0 -0
  114. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/index.rst +0 -0
  115. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/marker.rst +0 -0
  116. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/pipeline.rst +0 -0
  117. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/preprocess.rst +0 -0
  118. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/storage.rst +0 -0
  119. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/codeless.rst +0 -0
  120. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/configuring.rst +0 -0
  121. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/dumping.rst +0 -0
  122. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/index.rst +0 -0
  123. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/masks.rst +0 -0
  124. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/queueing.rst +0 -0
  125. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/running.rst +0 -0
  126. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/whats_new.rst +0 -0
  127. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/README.rst +0 -0
  128. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/norun_hcpfc_pearson.py +0 -0
  129. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/norun_ukbvm_gmd.py +0 -0
  130. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_compute_parcel_mean.py +0 -0
  131. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_datagrabber_bids_datalad.py +0 -0
  132. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_ets_rss_marker.py +0 -0
  133. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_junifer_julearn.py +0 -0
  134. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_run_gmd_mean.py +0 -0
  135. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/gmd_mean.yaml +0 -0
  136. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  137. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  138. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  139. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/ignore_words.txt +0 -0
  140. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/__init__.py +0 -0
  141. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/__init__.pyi +0 -0
  142. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/__init__.py +0 -0
  143. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/__init__.pyi +0 -0
  144. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/decorators.py +0 -0
  145. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/functions.py +0 -0
  146. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/py.typed +0 -0
  147. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/__init__.py +0 -0
  148. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/__init__.pyi +0 -0
  149. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  150. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  151. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/py.typed +0 -0
  152. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  153. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  154. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  155. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  156. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/3dRSFC +0 -0
  157. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/3dReHo +0 -0
  158. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/afni +0 -0
  159. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  160. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/ResampleImage +0 -0
  161. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/antsApplyTransforms +0 -0
  162. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  163. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  164. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mri_binarize +0 -0
  165. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mri_mc +0 -0
  166. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mri_pretess +0 -0
  167. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mris_convert +0 -0
  168. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  169. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/applywarp +0 -0
  170. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/flirt +0 -0
  171. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/img2imgcoord +0 -0
  172. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  173. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/std2imgcoord +0 -0
  174. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_conda.bash +0 -0
  175. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_conda.zsh +0 -0
  176. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_venv.bash +0 -0
  177. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_venv.zsh +0 -0
  178. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/tests/test_decorators.py +0 -0
  179. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/tests/test_functions.py +0 -0
  180. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/__init__.py +0 -0
  181. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/__init__.pyi +0 -0
  182. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/cli.py +0 -0
  183. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/parser.py +0 -0
  184. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/py.typed +0 -0
  185. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  186. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  187. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  188. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/test_cli.py +0 -0
  189. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/test_cli_utils.py +0 -0
  190. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/test_parser.py +0 -0
  191. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/utils.py +0 -0
  192. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/__init__.py +0 -0
  193. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/__init__.py +0 -0
  194. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/__init__.pyi +0 -0
  195. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  196. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  197. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  198. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  199. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  200. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  201. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  202. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  203. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  204. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  205. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  206. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  207. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  208. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/py.typed +0 -0
  209. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/conftest.py +0 -0
  210. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/__init__.py +0 -0
  211. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/__init__.pyi +0 -0
  212. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/_dispatch.py +0 -0
  213. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/__init__.py +0 -0
  214. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/__init__.pyi +0 -0
  215. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  216. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/_coordinates.py +0 -0
  217. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  218. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  219. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/__init__.py +0 -0
  220. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/__init__.pyi +0 -0
  221. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/_ants_maps_warper.py +0 -0
  222. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/_fsl_maps_warper.py +0 -0
  223. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/_maps.py +0 -0
  224. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/tests/test_maps.py +0 -0
  225. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/__init__.py +0 -0
  226. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/__init__.pyi +0 -0
  227. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/_ants_mask_warper.py +0 -0
  228. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  229. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/_masks.py +0 -0
  230. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/tests/test_masks.py +0 -0
  231. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/__init__.py +0 -0
  232. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/__init__.pyi +0 -0
  233. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  234. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  235. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/_parcellations.py +0 -0
  236. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  237. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/pipeline_data_registry_base.py +0 -0
  238. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/py.typed +0 -0
  239. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/template_spaces.py +0 -0
  240. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/tests/test_data_utils.py +0 -0
  241. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/tests/test_dispatch.py +0 -0
  242. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/tests/test_template_spaces.py +0 -0
  243. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/utils.py +0 -0
  244. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/__init__.py +0 -0
  245. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/__init__.pyi +0 -0
  246. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/__init__.py +0 -0
  247. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  248. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/id1000.py +0 -0
  249. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/piop1.py +0 -0
  250. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/piop2.py +0 -0
  251. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/py.typed +0 -0
  252. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  253. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  254. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  255. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/base.py +0 -0
  256. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/datalad_base.py +0 -0
  257. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  258. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  259. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  260. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  261. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  262. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/py.typed +0 -0
  263. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  264. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/multiple.py +0 -0
  265. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/pattern.py +0 -0
  266. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/pattern_datalad.py +0 -0
  267. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  268. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/py.typed +0 -0
  269. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_base.py +0 -0
  270. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  271. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  272. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_multiple.py +0 -0
  273. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_pattern.py +0 -0
  274. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  275. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  276. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/__init__.py +0 -0
  277. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/__init__.pyi +0 -0
  278. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/default.py +0 -0
  279. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/py.typed +0 -0
  280. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/tests/test_default_reader.py +0 -0
  281. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  282. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  283. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  284. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  285. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  286. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  287. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  288. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  289. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/__init__.py +0 -0
  290. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/__init__.py +0 -0
  291. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/_h5io.py +0 -0
  292. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/_version.py +0 -0
  293. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  294. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  295. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/__init__.py +0 -0
  296. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/__init__.pyi +0 -0
  297. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  298. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  299. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/py.typed +0 -0
  300. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  301. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  302. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/__init__.py +0 -0
  303. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/__init__.pyi +0 -0
  304. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/base.py +0 -0
  305. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/brainprint.py +0 -0
  306. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/__init__.py +0 -0
  307. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/__init__.pyi +0 -0
  308. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/complexity_base.py +0 -0
  309. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/hurst_exponent.py +0 -0
  310. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  311. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/perm_entropy.py +0 -0
  312. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/py.typed +0 -0
  313. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/range_entropy.py +0 -0
  314. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  315. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/sample_entropy.py +0 -0
  316. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  317. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  318. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  319. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  320. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  321. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  322. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  323. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  324. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  325. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/ets_rss.py +0 -0
  326. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/__init__.py +0 -0
  327. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/__init__.pyi +0 -0
  328. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/_afni_falff.py +0 -0
  329. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/_junifer_falff.py +0 -0
  330. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_base.py +0 -0
  331. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_maps.py +0 -0
  332. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_parcels.py +0 -0
  333. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_spheres.py +0 -0
  334. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/py.typed +0 -0
  335. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
  336. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  337. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  338. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/__init__.py +0 -0
  339. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  340. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  341. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
  342. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  343. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  344. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  345. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
  346. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  347. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  348. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/py.typed +0 -0
  349. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  350. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
  351. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  352. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  353. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  354. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
  355. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  356. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  357. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/maps_aggregation.py +0 -0
  358. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/parcel_aggregation.py +0 -0
  359. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/py.typed +0 -0
  360. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/__init__.py +0 -0
  361. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/__init__.pyi +0 -0
  362. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/_afni_reho.py +0 -0
  363. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/_junifer_reho.py +0 -0
  364. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/py.typed +0 -0
  365. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_base.py +0 -0
  366. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_maps.py +0 -0
  367. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_parcels.py +0 -0
  368. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_spheres.py +0 -0
  369. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
  370. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  371. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  372. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/sphere_aggregation.py +0 -0
  373. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/__init__.py +0 -0
  374. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  375. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/py.typed +0 -0
  376. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  377. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
  378. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  379. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  380. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  381. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
  382. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  383. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  384. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_brainprint.py +0 -0
  385. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_ets_rss.py +0 -0
  386. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_maps_aggregation.py +0 -0
  387. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_marker_utils.py +0 -0
  388. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_markers_base.py +0 -0
  389. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  390. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  391. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/utils.py +0 -0
  392. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/__init__.py +0 -0
  393. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/_brainprint.py +0 -0
  394. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/read_transform.py +0 -0
  395. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/tests/test_read_transform.py +0 -0
  396. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/__init__.py +0 -0
  397. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/__init__.pyi +0 -0
  398. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/_data_object_dumper.py +0 -0
  399. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/marker_collection.py +0 -0
  400. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/pipeline_component_registry.py +0 -0
  401. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  402. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/py.typed +0 -0
  403. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
  404. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  405. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  406. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  407. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  408. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  409. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/update_meta_mixin.py +0 -0
  410. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/utils.py +0 -0
  411. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/workdir_manager.py +0 -0
  412. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/__init__.py +0 -0
  413. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/__init__.pyi +0 -0
  414. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/_temporal_filter.py +0 -0
  415. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/_temporal_slicer.py +0 -0
  416. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/base.py +0 -0
  417. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/__init__.py +0 -0
  418. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/__init__.pyi +0 -0
  419. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  420. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/py.typed +0 -0
  421. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  422. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/py.typed +0 -0
  423. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/__init__.py +0 -0
  424. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  425. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  426. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  427. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  428. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/py.typed +0 -0
  429. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/smoothing.py +0 -0
  430. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  431. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  432. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
  433. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
  434. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/__init__.py +0 -0
  435. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/__init__.pyi +0 -0
  436. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/py.typed +0 -0
  437. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  438. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/py.typed +0 -0
  439. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/stats.py +0 -0
  440. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/__init__.py +0 -0
  441. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/__init__.pyi +0 -0
  442. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/base.py +0 -0
  443. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/hdf5.py +0 -0
  444. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/pandas_base.py +0 -0
  445. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/py.typed +0 -0
  446. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/sqlite.py +0 -0
  447. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_hdf5.py +0 -0
  448. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_pandas_base.py +0 -0
  449. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_sqlite.py +0 -0
  450. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_storage_base.py +0 -0
  451. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_utils.py +0 -0
  452. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/utils.py +0 -0
  453. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/__init__.py +0 -0
  454. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/__init__.pyi +0 -0
  455. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  456. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/datagrabbers.py +0 -0
  457. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/py.typed +0 -0
  458. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/registry.py +0 -0
  459. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  460. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  461. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  462. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_testing_registry.py +0 -0
  463. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/utils.py +0 -0
  464. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/tests/test_main.py +0 -0
  465. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/tests/test_stats.py +0 -0
  466. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/typing/__init__.py +0 -0
  467. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/typing/__init__.pyi +0 -0
  468. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/typing/_typing.py +0 -0
  469. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/__init__.py +0 -0
  470. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/__init__.pyi +0 -0
  471. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/_config.py +0 -0
  472. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/_yaml.py +0 -0
  473. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/fs.py +0 -0
  474. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/helpers.py +0 -0
  475. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/logging.py +0 -0
  476. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/py.typed +0 -0
  477. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/singleton.py +0 -0
  478. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_config.py +0 -0
  479. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_fs.py +0 -0
  480. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_helpers.py +0 -0
  481. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_logging.py +0 -0
  482. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/dependency_links.txt +0 -0
  483. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/entry_points.txt +0 -0
  484. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/requires.txt +0 -0
  485. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/top_level.txt +0 -0
  486. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/pyproject.toml +0 -0
  487. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/setup.cfg +0 -0
  488. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/setup.py +0 -0
  489. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_aomic1000_example_dataset.py +0 -0
  490. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_aomicpiop1_example_dataset.py +0 -0
  491. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_aomicpiop2_example_dataset.py +0 -0
  492. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_bids_example_dataset.py +0 -0
  493. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_bids_example_dataset_sessions.py +0 -0
  494. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  495. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_hcp1200_example_dataset.py +0 -0
  496. {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.7.dev206
3
+ Version: 0.0.7.dev217
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
+ Enable :class:`.SpaceWarper` to warp data from native space to template spaces via both FSL and ANTs by `Synchon Mandal`_
@@ -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.dev206'
32
- __version_tuple__ = version_tuple = (0, 0, 7, 'dev206')
31
+ __version__ = version = '0.0.7.dev217'
32
+ __version_tuple__ = version_tuple = (0, 0, 7, 'dev217')
33
33
 
34
- __commit_id__ = commit_id = 'g151631cf7'
34
+ __commit_id__ = commit_id = 'g0925af82f'
@@ -180,27 +180,74 @@ class ANTsWarper:
180
180
 
181
181
  # Template space warping
182
182
  else:
183
+ input_space = input["space"]
183
184
  logger.debug(
184
- f"Using ANTs to warp data from {input['space']} to {reference}"
185
+ f"Using ANTs to warp data from {input_space} space "
186
+ f"to {reference} space"
185
187
  )
186
188
 
187
- # Get xfm file
188
- xfm_file_path = get_xfm(src=input["space"], dst=reference)
189
- # Get template space image
190
- template_space_img = get_template(
191
- space=reference,
192
- target_img=input["data"],
193
- extra_input=None,
194
- )
195
- # Save template
196
- template_space_img_path = (
197
- element_tempdir / f"{reference}_T1w.nii.gz"
198
- )
199
- nib.save(template_space_img, template_space_img_path)
189
+ # Native to MNI
190
+ if input_space == "native":
191
+ # Get warp file path
192
+ xfm_file_path = None
193
+ for entry in extra_input["Warp"]:
194
+ if entry["src"] == "native" and entry["dst"] == reference:
195
+ xfm_file_path = entry["path"]
196
+ if xfm_file_path is None:
197
+ raise_error(
198
+ klass=RuntimeError,
199
+ msg="Could not find correct warp file path",
200
+ )
201
+
202
+ # Use ResampleImage if input data resolution and reference
203
+ # resolution don't match
204
+ input_res = np.min(input["data"].header.get_zooms()[:3])
205
+ ref_res = np.min(
206
+ input["reference"]["data"].header.get_zooms()[:3]
207
+ )
208
+ logger.debug(f"Input resolution: {input_res}")
209
+ logger.debug(f"Reference resolution: {ref_res}")
210
+ if input_res != ref_res:
211
+ # Create a tempfile for resampled reference output
212
+ ref_path = (
213
+ element_tempdir
214
+ / f"resampled_reference-{reference}.nii.gz"
215
+ )
216
+ # Set ResampleImage command
217
+ resample_image_cmd = [
218
+ "ResampleImage",
219
+ "3", # image dimension
220
+ f"{input['reference']['path'].resolve()}",
221
+ f"{ref_path.resolve()}",
222
+ f"{input_res}x{input_res}x{input_res}",
223
+ "0", # option for spacing and not size
224
+ "3 3", # Lanczos windowed sinc
225
+ ]
226
+ # Call ResampleImage
227
+ run_ext_cmd(name="ResampleImage", cmd=resample_image_cmd)
228
+ else:
229
+ logger.debug(
230
+ "Reference resolution matches input resolution"
231
+ )
232
+ ref_path = input["reference"]["path"]
233
+
234
+ # MNI to MNI
235
+ else:
236
+ # Get xfm file
237
+ xfm_file_path = get_xfm(src=input_space, dst=reference)
238
+ # Get template space image in correct resolution
239
+ template_space_img = get_template(
240
+ space=reference,
241
+ target_img=input["data"],
242
+ extra_input=None,
243
+ )
244
+ # Save template
245
+ ref_path = element_tempdir / f"{reference}_T1w.nii.gz"
246
+ nib.save(template_space_img, ref_path)
200
247
 
201
248
  # Create a tempfile for warped output
202
249
  warped_output_path = element_tempdir / (
203
- f"warped_data_from_{input['space']}_to_{reference}.nii.gz"
250
+ f"warped_data_from_{input_space}_to_{reference}.nii.gz"
204
251
  )
205
252
 
206
253
  # Set antsApplyTransforms command
@@ -210,7 +257,7 @@ class ANTsWarper:
210
257
  "-e 3",
211
258
  "-n LanczosWindowedSinc",
212
259
  f"-i {input['path'].resolve()}",
213
- f"-r {template_space_img_path.resolve()}",
260
+ f"-r {ref_path.resolve()}",
214
261
  f"-t {xfm_file_path.resolve()}",
215
262
  f"-o {warped_output_path.resolve()}",
216
263
  ]
@@ -226,18 +273,20 @@ class ANTsWarper:
226
273
  "data": nib.load(warped_output_path),
227
274
  # Update warped input's space
228
275
  "space": reference,
229
- # Save reference path
230
- "reference": {"path": template_space_img_path},
276
+ # Save resampled reference path or overwrite original
277
+ # keeping it same
278
+ "reference": {"path": ref_path},
231
279
  # Keep pre-warp space for further operations
232
- "prewarp_space": input["space"],
280
+ "prewarp_space": input_space,
233
281
  }
234
282
  )
235
283
 
236
284
  # Check for data type's mask and warp if found
237
285
  if input.get("mask") is not None:
286
+ logger.debug("Warping associated mask")
238
287
  # Create a tempfile for warped mask output
239
288
  apply_transforms_mask_out_path = element_tempdir / (
240
- f"warped_mask_from_{input['space']}_to_{reference}.nii.gz"
289
+ f"warped_mask_from_{input_space}_to_{reference}.nii.gz"
241
290
  )
242
291
  # Set antsApplyTransforms command
243
292
  apply_transforms_mask_cmd = [
@@ -246,8 +295,8 @@ class ANTsWarper:
246
295
  "-e 3",
247
296
  "-n 'GenericLabel[NearestNeighbor]'",
248
297
  f"-i {input['mask']['path'].resolve()}",
249
- # use resampled reference
250
- f"-r {input['reference']['path'].resolve()}",
298
+ # use resampled reference or original
299
+ f"-r {ref_path.resolve()}",
251
300
  f"-t {xfm_file_path.resolve()}",
252
301
  f"-o {apply_transforms_mask_out_path.resolve()}",
253
302
  ]
@@ -0,0 +1,289 @@
1
+ """Provide class for space warping via FSL FLIRT."""
2
+
3
+ # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
+ # License: AGPL
5
+
6
+ from typing import (
7
+ Any,
8
+ ClassVar,
9
+ )
10
+
11
+ import nibabel as nib
12
+ import numpy as np
13
+
14
+ from ...pipeline import WorkDirManager
15
+ from ...typing import Dependencies, ExternalDependencies
16
+ from ...utils import logger, raise_error, run_ext_cmd
17
+
18
+
19
+ __all__ = ["FSLWarper"]
20
+
21
+
22
+ class FSLWarper:
23
+ """Class for space warping via FSL FLIRT.
24
+
25
+ This class uses FSL FLIRT's ``flirt`` for resampling and ``applywarp`` for
26
+ transformation.
27
+
28
+ """
29
+
30
+ _EXT_DEPENDENCIES: ClassVar[ExternalDependencies] = [
31
+ {
32
+ "name": "fsl",
33
+ "commands": ["flirt", "applywarp"],
34
+ },
35
+ ]
36
+
37
+ _DEPENDENCIES: ClassVar[Dependencies] = {"numpy", "nibabel"}
38
+
39
+ def preprocess(
40
+ self,
41
+ input: dict[str, Any],
42
+ extra_input: dict[str, Any],
43
+ reference: str,
44
+ ) -> dict[str, Any]: # pragma: no cover
45
+ """Preprocess using FSL.
46
+
47
+ Parameters
48
+ ----------
49
+ input : dict
50
+ A single input from the Junifer Data object in which to preprocess.
51
+ extra_input : dict
52
+ The other fields in the Junifer Data object. Should have ``T1w``
53
+ and ``Warp`` data types.
54
+ reference : str
55
+ The data type or template space to use as reference for warping.
56
+ Template space conversion is only possible from native space,
57
+ not from another template space.
58
+
59
+ Returns
60
+ -------
61
+ dict
62
+ The ``input`` dictionary with updated values.
63
+
64
+ Raises
65
+ ------
66
+ RuntimeError
67
+ If warp file path could not be found in ``extra_input``.
68
+
69
+ """
70
+ # Create element-specific tempdir for storing post-warping assets
71
+ element_tempdir = WorkDirManager().get_element_tempdir(
72
+ prefix="fsl_warper"
73
+ )
74
+
75
+ # Warping to native space
76
+ if reference == "T1w":
77
+ logger.debug("Using FSL for space warping")
78
+
79
+ # Get the min of the voxel sizes from input and use it as the
80
+ # resolution
81
+ resolution = np.min(input["data"].header.get_zooms()[:3])
82
+
83
+ # Get warp file path
84
+ warp_file_path = None
85
+ for entry in extra_input["Warp"]:
86
+ if entry["dst"] == "native":
87
+ warp_file_path = entry["path"]
88
+ if warp_file_path is None:
89
+ raise_error(
90
+ klass=RuntimeError,
91
+ msg="Could not find correct warp file path",
92
+ )
93
+
94
+ # Create a tempfile for resampled reference output
95
+ flirt_out_path = element_tempdir / "resampled_reference.nii.gz"
96
+ # Set flirt command
97
+ flirt_cmd = [
98
+ "flirt",
99
+ "-interp spline",
100
+ f"-in {extra_input['T1w']['path'].resolve()}",
101
+ f"-ref {extra_input['T1w']['path'].resolve()}",
102
+ f"-applyisoxfm {resolution}",
103
+ f"-out {flirt_out_path.resolve()}",
104
+ ]
105
+ # Call flirt
106
+ run_ext_cmd(name="flirt", cmd=flirt_cmd)
107
+
108
+ # Create a tempfile for warped output
109
+ applywarp_out_path = element_tempdir / "warped_data.nii.gz"
110
+ # Set applywarp command
111
+ applywarp_cmd = [
112
+ "applywarp",
113
+ "--interp=spline",
114
+ f"-i {input['path'].resolve()}",
115
+ # use resampled reference
116
+ f"-r {flirt_out_path.resolve()}",
117
+ f"-w {warp_file_path.resolve()}",
118
+ f"-o {applywarp_out_path.resolve()}",
119
+ ]
120
+ # Call applywarp
121
+ run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
122
+
123
+ logger.debug("Updating warped data")
124
+ input.update(
125
+ {
126
+ # Update path to sync with "data"
127
+ "path": applywarp_out_path,
128
+ # Load nifti
129
+ "data": nib.load(applywarp_out_path),
130
+ # Use reference input's space as warped input's space
131
+ "space": extra_input["T1w"]["space"],
132
+ # Save resampled reference path
133
+ "reference": {"path": flirt_out_path},
134
+ # Keep pre-warp space for further operations
135
+ "prewarp_space": input["space"],
136
+ }
137
+ )
138
+
139
+ # Check for data type's mask and warp if found
140
+ if input.get("mask") is not None:
141
+ # Create a tempfile for warped mask output
142
+ applywarp_mask_out_path = (
143
+ element_tempdir / "warped_mask.nii.gz"
144
+ )
145
+ # Set applywarp command
146
+ applywarp_mask_cmd = [
147
+ "applywarp",
148
+ "--interp=nn",
149
+ f"-i {input['mask']['path'].resolve()}",
150
+ # use resampled reference
151
+ f"-r {input['reference']['path'].resolve()}",
152
+ f"-w {warp_file_path.resolve()}",
153
+ f"-o {applywarp_mask_out_path.resolve()}",
154
+ ]
155
+ # Call applywarp
156
+ run_ext_cmd(name="applywarp", cmd=applywarp_mask_cmd)
157
+
158
+ logger.debug("Updating warped mask data")
159
+ input.update(
160
+ {
161
+ "mask": {
162
+ # Update path to sync with "data"
163
+ "path": applywarp_mask_out_path,
164
+ # Load nifti
165
+ "data": nib.load(applywarp_mask_out_path),
166
+ # Use reference input's space as warped input
167
+ # mask's space
168
+ "space": extra_input["T1w"]["space"],
169
+ }
170
+ }
171
+ )
172
+
173
+ # Warping from native to template space
174
+ else:
175
+ logger.debug(
176
+ f"Using FSL to warp data from native space to {reference} "
177
+ "space"
178
+ )
179
+
180
+ # Get warp file path
181
+ warp_file_path = None
182
+ for entry in extra_input["Warp"]:
183
+ if entry["src"] == "native" and entry["dst"] == reference:
184
+ warp_file_path = entry["path"]
185
+ if warp_file_path is None:
186
+ raise_error(
187
+ klass=RuntimeError,
188
+ msg="Could not find correct warp file path",
189
+ )
190
+
191
+ # Use flirt if input data resolution and reference resolution don't
192
+ # match
193
+ input_resolution = np.min(input["data"].header.get_zooms()[:3])
194
+ ref_resolution = np.min(
195
+ input["reference"]["data"].header.get_zooms()[:3]
196
+ )
197
+ logger.debug(f"Input resolution: {input_resolution}")
198
+ logger.debug(f"Reference resolution: {ref_resolution}")
199
+ if input_resolution != ref_resolution:
200
+ logger.debug("Resampling reference to match input resolution")
201
+ # Create a tempfile for resampled reference output
202
+ ref_path = (
203
+ element_tempdir / f"resampled_reference-{reference}.nii.gz"
204
+ )
205
+ # Set flirt command
206
+ flirt_cmd = [
207
+ "flirt",
208
+ "-interp spline",
209
+ f"-in {input['reference']['path'].resolve()}",
210
+ f"-ref {input['reference']['path'].resolve()}",
211
+ f"-applyisoxfm {input_resolution}",
212
+ f"-out {ref_path.resolve()}",
213
+ ]
214
+ # Call flirt
215
+ run_ext_cmd(name="flirt", cmd=flirt_cmd)
216
+ else:
217
+ logger.debug("Reference resolution matches input resolution")
218
+ ref_path = input["reference"]["path"]
219
+
220
+ # Create a tempfile for warped output
221
+ applywarp_out_path = (
222
+ element_tempdir
223
+ / f"warped_data_from_native_to_{reference}.nii.gz"
224
+ )
225
+ # Set applywarp command
226
+ applywarp_cmd = [
227
+ "applywarp",
228
+ "--interp=spline",
229
+ f"-i {input['path'].resolve()}",
230
+ # use resampled reference or original
231
+ f"-r {ref_path.resolve()}",
232
+ f"-w {warp_file_path.resolve()}",
233
+ f"-o {applywarp_out_path.resolve()}",
234
+ ]
235
+ # Call applywarp
236
+ run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
237
+
238
+ logger.debug("Updating warped data")
239
+ input.update(
240
+ {
241
+ # Update path to sync with "data"
242
+ "path": applywarp_out_path,
243
+ # Load nifti
244
+ "data": nib.load(applywarp_out_path),
245
+ # Switch space and prewarp_space
246
+ "space": reference,
247
+ "prewarp_space": input["space"],
248
+ # Save resampled reference path or overwrite original
249
+ # keeping it same
250
+ "reference": {"path": ref_path},
251
+ }
252
+ )
253
+
254
+ # Check for data type's mask and warp if found
255
+ if input.get("mask") is not None:
256
+ logger.debug("Warping associated mask")
257
+ # Create a tempfile for warped mask output
258
+ applywarp_mask_out_path = (
259
+ element_tempdir
260
+ / f"warped_mask_from_native_to_{reference}.nii.gz"
261
+ )
262
+ # Set applywarp command
263
+ applywarp_mask_cmd = [
264
+ "applywarp",
265
+ "--interp=nn",
266
+ f"-i {input['mask']['path'].resolve()}",
267
+ # use resampled reference or original
268
+ f"-r {ref_path.resolve()}",
269
+ f"-w {warp_file_path.resolve()}",
270
+ f"-o {applywarp_mask_out_path.resolve()}",
271
+ ]
272
+ # Call applywarp
273
+ run_ext_cmd(name="applywarp", cmd=applywarp_mask_cmd)
274
+
275
+ logger.debug("Updating warped mask data")
276
+ input.update(
277
+ {
278
+ "mask": {
279
+ # Update path to sync with "data"
280
+ "path": applywarp_mask_out_path,
281
+ # Load nifti
282
+ "data": nib.load(applywarp_mask_out_path),
283
+ # Update mask's space
284
+ "space": reference,
285
+ }
286
+ }
287
+ )
288
+
289
+ return input
@@ -133,7 +133,7 @@ class SpaceWarper(BasePreprocessor):
133
133
  # Does not add any new keys
134
134
  return input_type
135
135
 
136
- def preprocess(
136
+ def preprocess( # noqa: C901
137
137
  self,
138
138
  input: dict[str, Any],
139
139
  extra_input: Optional[dict[str, Any]] = None,
@@ -162,7 +162,7 @@ class SpaceWarper(BasePreprocessor):
162
162
  i.e., using ``"T1w"`` as reference.
163
163
  RuntimeError
164
164
  If warper could not be found in ``extra_input`` when
165
- ``using="auto"`` or
165
+ ``using="auto"`` or converting from native space or
166
166
  if the data is in the correct space and does not require
167
167
  warping or
168
168
  if FSL is used when ``reference="T1w"``.
@@ -184,6 +184,7 @@ class SpaceWarper(BasePreprocessor):
184
184
  input = FSLWarper().preprocess(
185
185
  input=input,
186
186
  extra_input=extra_input,
187
+ reference=self.reference,
187
188
  )
188
189
  elif self.using == "ants":
189
190
  input = ANTsWarper().preprocess(
@@ -204,6 +205,7 @@ class SpaceWarper(BasePreprocessor):
204
205
  input = FSLWarper().preprocess(
205
206
  input=input,
206
207
  extra_input=extra_input,
208
+ reference=self.reference,
207
209
  )
208
210
  elif warper == "ants":
209
211
  input = ANTsWarper().preprocess(
@@ -211,10 +213,11 @@ class SpaceWarper(BasePreprocessor):
211
213
  extra_input=extra_input,
212
214
  reference=self.reference,
213
215
  )
214
- # Transform to template space with ANTs possible
215
- elif self.using == "ants" and self.reference != "T1w":
216
+ # Transform to template space
217
+ if self.using in ["fsl", "ants"] and self.reference != "T1w":
218
+ input_space = input["space"]
216
219
  # Check pre-requirements for space manipulation
217
- if self.reference == input["space"]:
220
+ if self.using == "ants" and self.reference == input_space:
218
221
  raise_error(
219
222
  (
220
223
  f"The target data is in {self.reference} space "
@@ -224,20 +227,65 @@ class SpaceWarper(BasePreprocessor):
224
227
  ),
225
228
  klass=RuntimeError,
226
229
  )
227
-
228
- input = ANTsWarper().preprocess(
229
- input=input,
230
- extra_input={},
231
- reference=self.reference,
232
- )
233
- # Transform to template space with FSL not possible
234
- elif self.using == "fsl" and self.reference != "T1w":
235
- raise_error(
236
- (
237
- f"Warping to {self.reference} space not possible with "
238
- "FSL, use ANTs instead."
239
- ),
240
- klass=RuntimeError,
241
- )
230
+ # Transform from native to MNI possible conditionally
231
+ if input_space == "native": # pragma: no cover
232
+ # Check for reference as no T1w available
233
+ if input.get("reference") is None:
234
+ raise_error(
235
+ "`reference` key missing from input data type."
236
+ )
237
+ # Check for extra inputs
238
+ if extra_input is None:
239
+ raise_error(
240
+ "No extra input provided, requires `Warp` "
241
+ "data type in particular."
242
+ )
243
+ # Warp
244
+ input_prewarp_space = input["prewarp_space"]
245
+ warper = None
246
+ for entry in extra_input["Warp"]:
247
+ if (
248
+ entry["src"] == input_space
249
+ and entry["dst"] == input_prewarp_space
250
+ ):
251
+ warper = entry["warper"]
252
+ if warper is None:
253
+ raise_error(
254
+ klass=RuntimeError, msg="Could not find correct warper"
255
+ )
256
+ if warper == "fsl":
257
+ input = FSLWarper().preprocess(
258
+ input=input,
259
+ extra_input=extra_input,
260
+ reference=input_prewarp_space,
261
+ )
262
+ elif warper == "ants":
263
+ input = ANTsWarper().preprocess(
264
+ input=input,
265
+ extra_input=extra_input,
266
+ reference=input_prewarp_space,
267
+ )
268
+ else:
269
+ raise_error(
270
+ klass=RuntimeError, msg="Could not find correct warper"
271
+ )
272
+ else:
273
+ # Transform from MNI to MNI template space not possible
274
+ if self.using == "fsl":
275
+ raise_error(
276
+ (
277
+ f"Warping from {input_space} space to "
278
+ f"{self.reference} space not possible with "
279
+ "FSL, use ANTs instead."
280
+ ),
281
+ klass=RuntimeError,
282
+ )
283
+ # Transform from MNI to MNI template space possible
284
+ else:
285
+ input = ANTsWarper().preprocess(
286
+ input=input,
287
+ extra_input={},
288
+ reference=self.reference,
289
+ )
242
290
 
243
291
  return input, None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.7.dev206
3
+ Version: 0.0.7.dev217
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>
@@ -84,6 +84,7 @@ docs/changes/newsfragments/458.change
84
84
  docs/changes/newsfragments/458.feature
85
85
  docs/changes/newsfragments/458.misc
86
86
  docs/changes/newsfragments/460.feature
87
+ docs/changes/newsfragments/462.feature
87
88
  docs/changes/newsfragments/464.misc
88
89
  docs/changes/newsfragments/465.misc
89
90
  docs/changes/newsfragments/466.misc