junifer 0.0.4.dev653__tar.gz → 0.0.4.dev691__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 (421) hide show
  1. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/workflows/ci-docs.yml +3 -3
  2. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/workflows/ci.yml +8 -8
  3. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/workflows/docs-preview.yml +2 -2
  4. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/workflows/docs.yml +2 -2
  5. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/workflows/pypi.yml +2 -7
  6. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/PKG-INFO +5 -3
  7. junifer-0.0.4.dev691/docs/changes/newsfragments/270.misc +1 -0
  8. junifer-0.0.4.dev691/docs/changes/newsfragments/301.feature +1 -0
  9. junifer-0.0.4.dev691/docs/changes/newsfragments/301.removal +1 -0
  10. junifer-0.0.4.dev691/docs/changes/newsfragments/312.bugfix +1 -0
  11. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/_version.py +2 -2
  12. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/queue_context/htcondor_adapter.py +2 -2
  13. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/queue_context/tests/test_htcondor_adapter.py +2 -2
  14. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/tests/test_api_utils.py +5 -1
  15. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/__init__.py +1 -0
  16. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/bold_warper.py +4 -0
  17. junifer-0.0.4.dev691/junifer/preprocess/warping/__init__.py +6 -0
  18. junifer-0.0.4.dev691/junifer/preprocess/warping/_ants_warper.py +167 -0
  19. junifer-0.0.4.dev691/junifer/preprocess/warping/_fsl_warper.py +109 -0
  20. junifer-0.0.4.dev691/junifer/preprocess/warping/space_warper.py +203 -0
  21. junifer-0.0.4.dev691/junifer/preprocess/warping/tests/test_space_warper.py +198 -0
  22. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/utils/logging.py +5 -1
  23. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer.egg-info/PKG-INFO +5 -3
  24. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer.egg-info/SOURCES.txt +9 -0
  25. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer.egg-info/requires.txt +4 -1
  26. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/pyproject.toml +5 -3
  27. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tox.ini +4 -3
  28. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  29. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  30. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  31. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  32. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  33. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  34. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/dependabot.yml +0 -0
  35. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/pull_request_template.md +0 -0
  36. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.github/workflows/lint.yml +0 -0
  37. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.gitignore +0 -0
  38. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.gitmodules +0 -0
  39. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/.pre-commit-config.yaml +0 -0
  40. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/AUTHORS.rst +0 -0
  41. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/LICENSE.md +0 -0
  42. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/README.md +0 -0
  43. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/codecov.yml +0 -0
  44. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/conda-env.yml +0 -0
  45. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/Makefile +0 -0
  46. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/_static/css/custom.css +0 -0
  47. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/_static/js/custom.js +0 -0
  48. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/_templates/versions.html +0 -0
  49. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/api.rst +0 -0
  50. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/configs.rst +0 -0
  51. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/data.rst +0 -0
  52. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/datagrabbers.rst +0 -0
  53. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/datareaders.rst +0 -0
  54. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/index.rst +0 -0
  55. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/markers.rst +0 -0
  56. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/nilearn.rst +0 -0
  57. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/onthefly.rst +0 -0
  58. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/pipeline.rst +0 -0
  59. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/preprocessing.rst +0 -0
  60. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/stats.rst +0 -0
  61. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/storage.rst +0 -0
  62. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/testing.rst +0 -0
  63. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/api/utils.rst +0 -0
  64. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/builtin.rst +0 -0
  65. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/contributors.inc +0 -0
  66. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/.gitignore +0 -0
  67. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/145.feature +0 -0
  68. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/182.enh +0 -0
  69. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/224.bugfix +0 -0
  70. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/233.bugfix +0 -0
  71. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/240.feature +0 -0
  72. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/245.change +0 -0
  73. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/245.feature +0 -0
  74. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/247.doc +0 -0
  75. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/248.change +0 -0
  76. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/249.feature +0 -0
  77. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/250.feature +0 -0
  78. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/251.doc +0 -0
  79. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/252.change +0 -0
  80. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/252.feature +0 -0
  81. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/253.misc +0 -0
  82. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/254.feature +0 -0
  83. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/258.enh +0 -0
  84. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/259.enh +0 -0
  85. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/260.enh +0 -0
  86. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/261.misc +0 -0
  87. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/262.misc +0 -0
  88. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/263.change +0 -0
  89. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/264.feature +0 -0
  90. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/265.feature +0 -0
  91. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/266.feature +0 -0
  92. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/267.feature +0 -0
  93. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/268.change +0 -0
  94. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/268.enh +0 -0
  95. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/269.misc +0 -0
  96. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/271.feature +0 -0
  97. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/272.bugfix +0 -0
  98. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/274.bugfix +0 -0
  99. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/275.feature +0 -0
  100. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/276.bugfix +0 -0
  101. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/277.misc +0 -0
  102. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/278.bugfix +0 -0
  103. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/279.misc +0 -0
  104. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/280.bugfix +0 -0
  105. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/281.bugfix +0 -0
  106. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/281.misc +0 -0
  107. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/282.bugfix +0 -0
  108. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/283.bugfix +0 -0
  109. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/284.bugfix +0 -0
  110. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/286.bugfix +0 -0
  111. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/287.enh +0 -0
  112. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/288.misc +0 -0
  113. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/291.doc +0 -0
  114. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/293.enh +0 -0
  115. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/293.feature +0 -0
  116. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/293.misc +0 -0
  117. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/294.misc +0 -0
  118. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/295.feature +0 -0
  119. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/297.feature +0 -0
  120. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/298.feature +0 -0
  121. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/300.doc +0 -0
  122. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/300.enh +0 -0
  123. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/300.misc +0 -0
  124. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/302.enh +0 -0
  125. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/309.feature +0 -0
  126. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/310.change +0 -0
  127. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/310.enh +0 -0
  128. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/311.change +0 -0
  129. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/changes/newsfragments/311.enh +0 -0
  130. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/conf.py +0 -0
  131. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/contribution.rst +0 -0
  132. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/extending/coordinates.rst +0 -0
  133. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/extending/datagrabber.rst +0 -0
  134. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/extending/extension.rst +0 -0
  135. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/extending/index.rst +0 -0
  136. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/extending/marker.rst +0 -0
  137. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/extending/masks.rst +0 -0
  138. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/extending/parcellations.rst +0 -0
  139. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/faq.rst +0 -0
  140. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/help.rst +0 -0
  141. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/images/junifer_logo.png +0 -0
  142. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/index.rst +0 -0
  143. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/installation.rst +0 -0
  144. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/links.inc +0 -0
  145. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/maintaining.rst +0 -0
  146. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/redirect.html +0 -0
  147. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/sphinxext/gh_substitutions.py +0 -0
  148. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/starting.rst +0 -0
  149. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/data.rst +0 -0
  150. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/datagrabber.rst +0 -0
  151. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/datareader.rst +0 -0
  152. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/index.rst +0 -0
  153. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/marker.rst +0 -0
  154. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/pipeline.rst +0 -0
  155. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/preprocess.rst +0 -0
  156. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/understanding/storage.rst +0 -0
  157. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/using/codeless.rst +0 -0
  158. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/using/index.rst +0 -0
  159. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/using/masks.rst +0 -0
  160. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/using/queueing.rst +0 -0
  161. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/using/running.rst +0 -0
  162. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/docs/whats_new.rst +0 -0
  163. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/README.rst +0 -0
  164. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/norun_hcpfc_pearson.py +0 -0
  165. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/norun_ukbvm_gmd.py +0 -0
  166. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/run_compute_parcel_mean.py +0 -0
  167. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/run_datagrabber_bids_datalad.py +0 -0
  168. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/run_ets_rss_marker.py +0 -0
  169. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/run_junifer_julearn.py +0 -0
  170. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/run_run_gmd_mean.py +0 -0
  171. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/yamls/gmd_mean.yaml +0 -0
  172. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  173. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  174. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/ignore_words.txt +0 -0
  175. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/__init__.py +0 -0
  176. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/__init__.py +0 -0
  177. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/cli.py +0 -0
  178. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/decorators.py +0 -0
  179. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/functions.py +0 -0
  180. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/parser.py +0 -0
  181. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/queue_context/__init__.py +0 -0
  182. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  183. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  184. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/afni/3dRSFC +0 -0
  185. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/afni/3dReHo +0 -0
  186. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/afni/afni +0 -0
  187. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  188. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/ants/ResampleImage +0 -0
  189. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/ants/antsApplyTransforms +0 -0
  190. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  191. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  192. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/fsl/applywarp +0 -0
  193. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/fsl/flirt +0 -0
  194. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/fsl/img2imgcoord +0 -0
  195. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  196. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/fsl/std2imgcoord +0 -0
  197. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/run_conda.sh +0 -0
  198. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/res/run_venv.sh +0 -0
  199. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/tests/data/gmd_mean.yaml +0 -0
  200. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/tests/data/gmd_mean_htcondor.yaml +0 -0
  201. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/tests/test_cli.py +0 -0
  202. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/tests/test_functions.py +0 -0
  203. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/tests/test_parser.py +0 -0
  204. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/api/utils.py +0 -0
  205. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/__init__.py +0 -0
  206. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/__init__.py +0 -0
  207. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  208. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  209. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  210. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  211. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  212. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  213. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  214. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  215. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  216. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  217. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  218. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
  219. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
  220. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
  221. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
  222. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  223. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
  224. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
  225. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
  226. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
  227. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
  228. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
  229. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
  230. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
  231. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
  232. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
  233. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
  234. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
  235. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
  236. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
  237. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/__init__.py +0 -0
  238. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/coordinates.py +0 -0
  239. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
  240. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
  241. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
  242. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/masks.py +0 -0
  243. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/parcellations.py +0 -0
  244. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/template_spaces.py +0 -0
  245. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/tests/test_coordinates.py +0 -0
  246. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/tests/test_data_utils.py +0 -0
  247. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/tests/test_masks.py +0 -0
  248. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/tests/test_parcellations.py +0 -0
  249. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/tests/test_template_spaces.py +0 -0
  250. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/data/utils.py +0 -0
  251. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/__init__.py +0 -0
  252. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/__init__.py +0 -0
  253. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/id1000.py +0 -0
  254. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/piop1.py +0 -0
  255. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/piop2.py +0 -0
  256. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  257. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  258. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  259. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/base.py +0 -0
  260. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/datalad_base.py +0 -0
  261. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  262. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  263. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  264. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  265. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  266. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/multiple.py +0 -0
  267. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/pattern.py +0 -0
  268. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/pattern_datalad.py +0 -0
  269. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_base.py +0 -0
  270. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_datagrabber_utils.py +0 -0
  271. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  272. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  273. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_multiple.py +0 -0
  274. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_pattern.py +0 -0
  275. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  276. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datagrabber/utils.py +0 -0
  277. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datareader/__init__.py +0 -0
  278. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datareader/default.py +0 -0
  279. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/datareader/tests/test_default_reader.py +0 -0
  280. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/__init__.py +0 -0
  281. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/__init__.py +0 -0
  282. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/_h5io.py +0 -0
  283. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/_version.py +0 -0
  284. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  285. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  286. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/nilearn/__init__.py +0 -0
  287. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  288. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  289. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/__init__.py +0 -0
  290. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/base.py +0 -0
  291. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/collection.py +0 -0
  292. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/__init__.py +0 -0
  293. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/complexity_base.py +0 -0
  294. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/hurst_exponent.py +0 -0
  295. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  296. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/perm_entropy.py +0 -0
  297. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/range_entropy.py +0 -0
  298. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  299. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/sample_entropy.py +0 -0
  300. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  301. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  302. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  303. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  304. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  305. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  306. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  307. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  308. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  309. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/ets_rss.py +0 -0
  310. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/__init__.py +0 -0
  311. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/_afni_falff.py +0 -0
  312. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/_junifer_falff.py +0 -0
  313. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/falff_base.py +0 -0
  314. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/falff_parcels.py +0 -0
  315. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/falff_spheres.py +0 -0
  316. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  317. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  318. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/__init__.py +0 -0
  319. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  320. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  321. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  322. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  323. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  324. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  325. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  326. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  327. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  328. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  329. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  330. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  331. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/parcel_aggregation.py +0 -0
  332. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/__init__.py +0 -0
  333. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/_afni_reho.py +0 -0
  334. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/_junifer_reho.py +0 -0
  335. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/reho_base.py +0 -0
  336. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/reho_parcels.py +0 -0
  337. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/reho_spheres.py +0 -0
  338. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  339. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  340. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/sphere_aggregation.py +0 -0
  341. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/__init__.py +0 -0
  342. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  343. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  344. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  345. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  346. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  347. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  348. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/tests/test_collection.py +0 -0
  349. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/tests/test_ets_rss.py +0 -0
  350. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/tests/test_marker_utils.py +0 -0
  351. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/tests/test_markers_base.py +0 -0
  352. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  353. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  354. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/markers/utils.py +0 -0
  355. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/onthefly/__init__.py +0 -0
  356. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/onthefly/read_transform.py +0 -0
  357. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/onthefly/tests/test_read_transform.py +0 -0
  358. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/__init__.py +0 -0
  359. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  360. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/registry.py +0 -0
  361. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/singleton.py +0 -0
  362. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  363. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_registry.py +0 -0
  364. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  365. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  366. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/update_meta_mixin.py +0 -0
  367. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/utils.py +0 -0
  368. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/pipeline/workdir_manager.py +0 -0
  369. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/ants/__init__.py +0 -0
  370. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/ants/ants_apply_transforms_warper.py +0 -0
  371. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/ants/tests/test_ants_apply_transforms_warper.py +0 -0
  372. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/base.py +0 -0
  373. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/confounds/__init__.py +0 -0
  374. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  375. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  376. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/fsl/__init__.py +0 -0
  377. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/fsl/apply_warper.py +0 -0
  378. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/fsl/tests/test_apply_warper.py +0 -0
  379. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/tests/test_bold_warper.py +0 -0
  380. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  381. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/stats.py +0 -0
  382. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/__init__.py +0 -0
  383. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/base.py +0 -0
  384. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/hdf5.py +0 -0
  385. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/pandas_base.py +0 -0
  386. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/sqlite.py +0 -0
  387. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/tests/test_hdf5.py +0 -0
  388. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/tests/test_pandas_base.py +0 -0
  389. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/tests/test_sqlite.py +0 -0
  390. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/tests/test_storage_base.py +0 -0
  391. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/tests/test_utils.py +0 -0
  392. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/storage/utils.py +0 -0
  393. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/__init__.py +0 -0
  394. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  395. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/datagrabbers.py +0 -0
  396. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/registry.py +0 -0
  397. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  398. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  399. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  400. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/tests/test_testing_registry.py +0 -0
  401. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/testing/utils.py +0 -0
  402. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/tests/test_main.py +0 -0
  403. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/tests/test_stats.py +0 -0
  404. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/utils/__init__.py +0 -0
  405. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/utils/fs.py +0 -0
  406. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/utils/helpers.py +0 -0
  407. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/utils/tests/test_fs.py +0 -0
  408. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/utils/tests/test_helpers.py +0 -0
  409. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer/utils/tests/test_logging.py +0 -0
  410. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer.egg-info/dependency_links.txt +0 -0
  411. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer.egg-info/entry_points.txt +0 -0
  412. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/junifer.egg-info/top_level.txt +0 -0
  413. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/setup.cfg +0 -0
  414. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/setup.py +0 -0
  415. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tools/create_aomic1000_example_dataset.py +0 -0
  416. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tools/create_aomicpiop1_example_dataset.py +0 -0
  417. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tools/create_aomicpiop2_example_dataset.py +0 -0
  418. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tools/create_bids_example_dataset.py +0 -0
  419. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tools/create_bids_example_dataset_sessions.py +0 -0
  420. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  421. {junifer-0.0.4.dev653 → junifer-0.0.4.dev691}/tools/create_hcp1200_example_dataset.py +0 -0
@@ -15,7 +15,7 @@ jobs:
15
15
  strategy:
16
16
  fail-fast: false
17
17
  matrix:
18
- python-version: ['3.8', '3.9', '3.10', '3.11']
18
+ python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
19
19
  steps:
20
20
  - run: 'echo "No build required"'
21
21
  - name: Create mock coverage.xml file
@@ -40,7 +40,7 @@ jobs:
40
40
  echo '</package>' >> coverage.xml
41
41
  echo '</packages>' >> coverage.xml
42
42
  echo '</coverage>' >> coverage.xml
43
- if: matrix.python-version == 3.10
43
+ if: matrix.python-version == 3.11
44
44
  - name: Upload mock coverage to Codecov
45
45
  uses: codecov/codecov-action@v4
46
46
  with:
@@ -48,4 +48,4 @@ jobs:
48
48
  # Allow coverage upload failure
49
49
  fail_ci_if_error: false
50
50
  flags: docs
51
- if: success() && matrix.python-version == 3.10
51
+ if: success() && matrix.python-version == 3.11
@@ -16,7 +16,7 @@ jobs:
16
16
  strategy:
17
17
  fail-fast: false
18
18
  matrix:
19
- python-version: ['3.8', '3.9', '3.10', '3.11']
19
+ python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
20
20
 
21
21
  steps:
22
22
  - name: Set up system
@@ -65,11 +65,11 @@ jobs:
65
65
  curl -O https://afni.nimh.nih.gov/pub/dist/bin/misc/@update.afni.binaries
66
66
  sudo tcsh @update.afni.binaries -package linux_ubuntu_16_64 -bindir /afni
67
67
  echo "/afni" >> $GITHUB_PATH
68
- if: matrix.python-version == 3.10
68
+ if: matrix.python-version == 3.11
69
69
  - name: Check AFNI
70
70
  run: |
71
71
  echo "Using AFNI : $(afni --version)"
72
- if: matrix.python-version == 3.10
72
+ if: matrix.python-version == 3.11
73
73
  - name: Install ANTs
74
74
  run: |
75
75
  sudo apt-get install -y -qq unzip
@@ -78,11 +78,11 @@ jobs:
78
78
  mv /opt/ants-2.5.1/bin/* /opt/ants-2.5.1
79
79
  rm ants.zip
80
80
  echo "/opt/ants-2.5.1" >> $GITHUB_PATH
81
- if: matrix.python-version == 3.10
81
+ if: matrix.python-version == 3.11
82
82
  - name: Check ANTs
83
83
  run: |
84
84
  echo "Using ANTs : $(antsRegistration --version)"
85
- if: matrix.python-version == 3.10
85
+ if: matrix.python-version == 3.11
86
86
  - name: Install FSL
87
87
  run: |
88
88
  sudo apt-get install -y -qq python3
@@ -96,13 +96,13 @@ jobs:
96
96
  FSLREMOTECALL=""
97
97
  FSLGECUDAQ="cuda.q"
98
98
  echo "/opt/fsl-6.0.6.4" >> $GITHUB_PATH
99
- if: matrix.python-version == 3.10
99
+ if: matrix.python-version == 3.11
100
100
  # Bypass FSL installation failure
101
101
  continue-on-error: true
102
102
  - name: Check FSL
103
103
  run: |
104
104
  echo "Using FSL : $(flirt -version)"
105
- if: matrix.python-version == 3.10
105
+ if: matrix.python-version == 3.11
106
106
  # Bypass FSL installation failure
107
107
  continue-on-error: true
108
108
  - name: Test with tox
@@ -114,4 +114,4 @@ jobs:
114
114
  token: ${{ secrets.CODECOV_TOKEN }}
115
115
  fail_ci_if_error: true
116
116
  flags: junifer
117
- if: success() && matrix.python-version == 3.10
117
+ if: success() && matrix.python-version == 3.11
@@ -24,10 +24,10 @@ jobs:
24
24
  with:
25
25
  fetch-depth: 0
26
26
  submodules: true
27
- - name: Set up Python 3.10
27
+ - name: Set up Python 3.11
28
28
  uses: actions/setup-python@v5
29
29
  with:
30
- python-version: '3.10'
30
+ python-version: '3.11'
31
31
  - name: Check for sudo
32
32
  shell: bash
33
33
  run: |
@@ -19,10 +19,10 @@ jobs:
19
19
  # require all of history to see all tagged versions' docs
20
20
  fetch-depth: 0
21
21
  submodules: true
22
- - name: Set up Python 3.10
22
+ - name: Set up Python 3.11
23
23
  uses: actions/setup-python@v5
24
24
  with:
25
- python-version: '3.10'
25
+ python-version: '3.11'
26
26
  - name: Check for sudo
27
27
  shell: bash
28
28
  run: |
@@ -15,21 +15,16 @@ jobs:
15
15
  with:
16
16
  fetch-depth: 0
17
17
  submodules: true
18
- - name: Set up Python 3.10
18
+ - name: Set up Python 3.11
19
19
  uses: actions/setup-python@v5
20
20
  with:
21
- python-version: '3.10'
21
+ python-version: '3.11'
22
22
  - name: Install build
23
23
  run:
24
24
  pip install build
25
25
  - name: Build a binary wheel and a source tarball
26
26
  run:
27
27
  python -m build --sdist --wheel --outdir dist/ .
28
- # - name: Publish distribution 📦 to Test PyPI
29
- # uses: pypa/gh-action-pypi-publish@master
30
- # with:
31
- # password: ${{ secrets.testpypi_token }}
32
- # repository_url: https://test.pypi.org/legacy/
33
28
  - name: Publish distribution 📦 to PyPI
34
29
  uses: pypa/gh-action-pypi-publish@release/v1
35
30
  with:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.4.dev653
3
+ Version: 0.0.4.dev691
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>
@@ -23,6 +23,7 @@ Classifier: Programming Language :: Python :: 3.8
23
23
  Classifier: Programming Language :: Python :: 3.9
24
24
  Classifier: Programming Language :: Python :: 3.10
25
25
  Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
26
27
  Requires-Python: >=3.8
27
28
  Description-Content-Type: text/markdown
28
29
  License-File: LICENSE.md
@@ -36,11 +37,12 @@ Requires-Dist: nibabel<5.11,>=3.2.0
36
37
  Requires-Dist: nilearn<=0.10.2,>=0.9.0
37
38
  Requires-Dist: sqlalchemy<=2.1.0,>=1.4.27
38
39
  Requires-Dist: ruamel.yaml<0.18,>=0.17
39
- Requires-Dist: importlib_metadata; python_version < "3.10"
40
- Requires-Dist: h5py<3.10,>=3.8.0
40
+ Requires-Dist: h5py>=3.10
41
41
  Requires-Dist: httpx[http2]==0.26.0
42
42
  Requires-Dist: tqdm==4.66.1
43
43
  Requires-Dist: templateflow>=23.0.0
44
+ Requires-Dist: importlib_metadata; python_version < "3.10"
45
+ Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
44
46
  Provides-Extra: all
45
47
  Requires-Dist: bctpy==0.6.0; extra == "all"
46
48
  Requires-Dist: neurokit2>=0.1.7; extra == "all"
@@ -0,0 +1 @@
1
+ Add support for Python 3.12 and make Python 3.11 the base for code coverage and CI checks by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Introduce :class:`.SpaceWarper` for warping ``T1w``, ``BOLD``, ``VBM_GM``, ``VBM_WM``, ``fALFF``, ``GCOR`` and ``LCOR`` data to other spaces by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Deprecate :class:`.BOLDWarper` and mark for removal in v0.0.4 by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Fix :class:`.HTCondorAdapter`'s script generation to use double quotes instead of single quotes for HTCondor's ``VARS`` by `Synchon Mandal`_
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.0.4.dev653'
16
- __version_tuple__ = version_tuple = (0, 0, 4, 'dev653')
15
+ __version__ = version = '0.0.4.dev691'
16
+ __version_tuple__ = version_tuple = (0, 0, 4, 'dev691')
@@ -274,8 +274,8 @@ class HTCondorAdapter(QueueContextAdapter):
274
274
  )
275
275
  fixed += (
276
276
  f"JOB run{idx} {self._submit_run_path}\n"
277
- f"VARS run{idx} element='{str_element}' "
278
- f"log_element='{log_element}'\n\n"
277
+ f'VARS run{idx} element="{str_element}" ' # needs to be
278
+ f'log_element="{log_element}"\n\n' # double quoted
279
279
  )
280
280
  var = ""
281
281
  if self._collect == "yes":
@@ -139,13 +139,13 @@ def test_HTCondorAdapter_run_collect(
139
139
  (
140
140
  [("sub01", "ses01")],
141
141
  "yes",
142
- "element='sub01,ses01' log_element='sub01-ses01'",
142
+ 'element="sub01,ses01" log_element="sub01-ses01"',
143
143
  ),
144
144
  (["sub01"], "on_success_only", "JOB collect"),
145
145
  (
146
146
  [("sub01", "ses01")],
147
147
  "on_success_only",
148
- "element='sub01,ses01' log_element='sub01-ses01'",
148
+ 'element="sub01,ses01" log_element="sub01-ses01"',
149
149
  ),
150
150
  ],
151
151
  )
@@ -45,9 +45,13 @@ def test_get_dependency_information_short() -> None:
45
45
  "httpx",
46
46
  "tqdm",
47
47
  "templateflow",
48
+ "looseversion",
48
49
  ]
49
- if int(pl.python_version_tuple()[1]) < 10:
50
+
51
+ python_minor_version = int(pl.python_version_tuple()[1])
52
+ if python_minor_version < 10:
50
53
  dependency_list.append("importlib_metadata")
54
+
51
55
  assert frozenset(dependency_information.keys()) == frozenset(
52
56
  dependency_list
53
57
  )
@@ -8,3 +8,4 @@
8
8
  from .base import BasePreprocessor
9
9
  from .confounds import fMRIPrepConfoundRemover
10
10
  from .bold_warper import BOLDWarper
11
+ from .warping import SpaceWarper
@@ -30,6 +30,10 @@ from .fsl.apply_warper import _ApplyWarper
30
30
  class BOLDWarper(BasePreprocessor):
31
31
  """Class for warping BOLD NIfTI images.
32
32
 
33
+ .. deprecated:: 0.0.3
34
+ `BOLDWarper` will be removed in v0.0.4, it is replaced by
35
+ `SpaceWarper` because the latter works also with T1w data.
36
+
33
37
  Parameters
34
38
  ----------
35
39
  using : {"fsl", "ants"}
@@ -0,0 +1,6 @@
1
+ """Provide imports for warping sub-package."""
2
+
3
+ # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
+ # License: AGPL
5
+
6
+ from .space_warper import SpaceWarper
@@ -0,0 +1,167 @@
1
+ """Provide class for space warping via ANTs antsApplyTransforms."""
2
+
3
+ # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
+ # License: AGPL
5
+
6
+ from typing import (
7
+ Any,
8
+ ClassVar,
9
+ Dict,
10
+ List,
11
+ Set,
12
+ Union,
13
+ )
14
+
15
+ import nibabel as nib
16
+ import numpy as np
17
+
18
+ from ...data import get_template, get_xfm
19
+ from ...pipeline import WorkDirManager
20
+ from ...utils import logger, run_ext_cmd
21
+
22
+
23
+ class ANTsWarper:
24
+ """Class for space warping via ANTs antsApplyTransforms.
25
+
26
+ This class uses ANTs' ``ResampleImage`` for resampling (if required) and
27
+ ``antsApplyTransforms`` for transformation.
28
+
29
+ """
30
+
31
+ _EXT_DEPENDENCIES: ClassVar[List[Dict[str, Union[str, List[str]]]]] = [
32
+ {
33
+ "name": "ants",
34
+ "commands": ["ResampleImage", "antsApplyTransforms"],
35
+ },
36
+ ]
37
+
38
+ _DEPENDENCIES: ClassVar[Set[str]] = {"numpy", "nibabel"}
39
+
40
+ def preprocess(
41
+ self,
42
+ input: Dict[str, Any],
43
+ extra_input: Dict[str, Any],
44
+ reference: str,
45
+ ) -> Dict[str, Any]:
46
+ """Preprocess using ANTs.
47
+
48
+ Parameters
49
+ ----------
50
+ input : dict
51
+ A single input from the Junifer Data object in which to preprocess.
52
+ extra_input : dict
53
+ The other fields in the Junifer Data object. Should have ``T1w``
54
+ and ``Warp`` data types.
55
+ reference : str
56
+ The data type or template space to use as reference for warping.
57
+
58
+ Returns
59
+ -------
60
+ dict
61
+ The ``input`` dictionary with modified ``data`` and ``space`` key
62
+ values and new ``reference_path`` key whose value points to the
63
+ reference file used for warping.
64
+
65
+ """
66
+ # Create element-specific tempdir for storing post-warping assets
67
+ element_tempdir = WorkDirManager().get_element_tempdir(
68
+ prefix="ants_warper"
69
+ )
70
+
71
+ # Native space warping
72
+ if reference == "T1w":
73
+ logger.debug("Using ANTs for space warping")
74
+
75
+ # Get the min of the voxel sizes from input and use it as the
76
+ # resolution
77
+ resolution = np.min(input["data"].header.get_zooms()[:3])
78
+
79
+ # Create a tempfile for resampled reference output
80
+ resample_image_out_path = (
81
+ element_tempdir / "resampled_reference.nii.gz"
82
+ )
83
+ # Set ResampleImage command
84
+ resample_image_cmd = [
85
+ "ResampleImage",
86
+ "3", # image dimension
87
+ f"{extra_input['T1w']['path'].resolve()}",
88
+ f"{resample_image_out_path.resolve()}",
89
+ f"{resolution}x{resolution}x{resolution}",
90
+ "0", # option for spacing and not size
91
+ "3 3", # Lanczos windowed sinc
92
+ ]
93
+ # Call ResampleImage
94
+ run_ext_cmd(name="ResampleImage", cmd=resample_image_cmd)
95
+
96
+ # Create a tempfile for warped output
97
+ apply_transforms_out_path = element_tempdir / "output.nii.gz"
98
+ # Set antsApplyTransforms command
99
+ apply_transforms_cmd = [
100
+ "antsApplyTransforms",
101
+ "-d 3",
102
+ "-e 3",
103
+ "-n LanczosWindowedSinc",
104
+ f"-i {input['path'].resolve()}",
105
+ # use resampled reference
106
+ f"-r {resample_image_out_path.resolve()}",
107
+ f"-t {extra_input['Warp']['path'].resolve()}",
108
+ f"-o {apply_transforms_out_path.resolve()}",
109
+ ]
110
+ # Call antsApplyTransforms
111
+ run_ext_cmd(name="antsApplyTransforms", cmd=apply_transforms_cmd)
112
+
113
+ # Load nifti
114
+ input["data"] = nib.load(apply_transforms_out_path)
115
+ # Save resampled reference path
116
+ input["reference_path"] = resample_image_out_path
117
+ # Use reference input's space as warped input's space
118
+ input["space"] = extra_input["T1w"]["space"]
119
+
120
+ # Template space warping
121
+ else:
122
+ logger.debug(
123
+ f"Using ANTs to warp data from {input['space']} to {reference}"
124
+ )
125
+
126
+ # Get xfm file
127
+ xfm_file_path = get_xfm(src=input["space"], dst=reference)
128
+ # Get template space image
129
+ template_space_img = get_template(
130
+ space=reference,
131
+ target_data=input,
132
+ extra_input=None,
133
+ )
134
+
135
+ # Create component-scoped tempdir
136
+ tempdir = WorkDirManager().get_tempdir(prefix="ants_warper")
137
+ # Save template
138
+ template_space_img_path = tempdir / f"{reference}_T1w.nii.gz"
139
+ nib.save(template_space_img, template_space_img_path)
140
+
141
+ # Create a tempfile for warped output
142
+ warped_output_path = element_tempdir / (
143
+ f"data_warped_from_{input['space']}_to_" f"{reference}.nii.gz"
144
+ )
145
+
146
+ # Set antsApplyTransforms command
147
+ apply_transforms_cmd = [
148
+ "antsApplyTransforms",
149
+ "-d 3",
150
+ "-e 3",
151
+ "-n LanczosWindowedSinc",
152
+ f"-i {input['path'].resolve()}",
153
+ f"-r {template_space_img_path.resolve()}",
154
+ f"-t {xfm_file_path.resolve()}",
155
+ f"-o {warped_output_path.resolve()}",
156
+ ]
157
+ # Call antsApplyTransforms
158
+ run_ext_cmd(name="antsApplyTransforms", cmd=apply_transforms_cmd)
159
+
160
+ # Delete tempdir
161
+ WorkDirManager().delete_tempdir(tempdir)
162
+
163
+ # Modify target data
164
+ input["data"] = nib.load(warped_output_path)
165
+ input["space"] = reference
166
+
167
+ return input
@@ -0,0 +1,109 @@
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
+ Dict,
10
+ List,
11
+ Set,
12
+ Union,
13
+ )
14
+
15
+ import nibabel as nib
16
+ import numpy as np
17
+
18
+ from ...pipeline import WorkDirManager
19
+ from ...utils import logger, run_ext_cmd
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[List[Dict[str, Union[str, List[str]]]]] = [
31
+ {
32
+ "name": "fsl",
33
+ "commands": ["flirt", "applywarp"],
34
+ },
35
+ ]
36
+
37
+ _DEPENDENCIES: ClassVar[Set[str]] = {"numpy", "nibabel"}
38
+
39
+ def preprocess(
40
+ self,
41
+ input: Dict[str, Any],
42
+ extra_input: Dict[str, Any],
43
+ ) -> Dict[str, Any]:
44
+ """Preprocess using FSL.
45
+
46
+ Parameters
47
+ ----------
48
+ input : dict
49
+ A single input from the Junifer Data object in which to preprocess.
50
+ extra_input : dict
51
+ The other fields in the Junifer Data object. Should have ``T1w``
52
+ and ``Warp`` data types.
53
+
54
+ Returns
55
+ -------
56
+ dict
57
+ The ``input`` dictionary with modified ``data`` and ``space`` key
58
+ values and new ``reference_path`` key whose value points to the
59
+ reference file used for warping.
60
+
61
+ """
62
+ logger.debug("Using FSL for space warping")
63
+
64
+ # Get the min of the voxel sizes from input and use it as the
65
+ # resolution
66
+ resolution = np.min(input["data"].header.get_zooms()[:3])
67
+
68
+ # Create element-specific tempdir for storing post-warping assets
69
+ element_tempdir = WorkDirManager().get_element_tempdir(
70
+ prefix="fsl_warper"
71
+ )
72
+
73
+ # Create a tempfile for resampled reference output
74
+ flirt_out_path = element_tempdir / "resampled_reference.nii.gz"
75
+ # Set flirt command
76
+ flirt_cmd = [
77
+ "flirt",
78
+ "-interp spline",
79
+ f"-in {extra_input['T1w']['path'].resolve()}",
80
+ f"-ref {extra_input['T1w']['path'].resolve()}",
81
+ f"-applyisoxfm {resolution}",
82
+ f"-out {flirt_out_path.resolve()}",
83
+ ]
84
+ # Call flirt
85
+ run_ext_cmd(name="flirt", cmd=flirt_cmd)
86
+
87
+ # Create a tempfile for warped output
88
+ applywarp_out_path = element_tempdir / "output.nii.gz"
89
+ # Set applywarp command
90
+ applywarp_cmd = [
91
+ "applywarp",
92
+ "--interp=spline",
93
+ f"-i {input['path'].resolve()}",
94
+ f"-r {flirt_out_path.resolve()}", # use resampled reference
95
+ f"-w {extra_input['Warp']['path'].resolve()}",
96
+ f"-o {applywarp_out_path.resolve()}",
97
+ ]
98
+ # Call applywarp
99
+ run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
100
+
101
+ # Load nifti
102
+ input["data"] = nib.load(applywarp_out_path)
103
+ # Save resampled reference path
104
+ input["reference_path"] = flirt_out_path
105
+
106
+ # Use reference input's space as warped input's space
107
+ input["space"] = extra_input["T1w"]["space"]
108
+
109
+ return input