junifer 0.0.4.dev829__tar.gz → 0.0.5__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 (479) hide show
  1. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/workflows/ci.yml +15 -8
  2. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/workflows/docs.yml +1 -1
  3. junifer-0.0.5/.gitmodules +6 -0
  4. {junifer-0.0.4.dev829 → junifer-0.0.5}/.pre-commit-config.yaml +12 -5
  5. {junifer-0.0.4.dev829 → junifer-0.0.5}/PKG-INFO +17 -16
  6. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/nilearn.rst +0 -2
  7. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/onthefly.rst +0 -2
  8. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/builtin.rst +0 -8
  9. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/conf.py +1 -0
  10. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/coordinates.rst +2 -8
  11. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/datagrabber.rst +180 -137
  12. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/dependencies.rst +2 -0
  13. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/marker.rst +76 -81
  14. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/parcellations.rst +1 -1
  15. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/preprocessor.rst +12 -3
  16. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/installation.rst +33 -0
  17. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/data.rst +14 -7
  18. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/marker.rst +2 -4
  19. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/preprocess.rst +4 -8
  20. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/storage.rst +20 -13
  21. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/using/queueing.rst +80 -7
  22. junifer-0.0.5/docs/whats_new.rst +728 -0
  23. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/run_compute_parcel_mean.py +2 -2
  24. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/run_ets_rss_marker.py +2 -2
  25. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/run_junifer_julearn.py +1 -1
  26. {junifer-0.0.4.dev829 → junifer-0.0.5}/ignore_words.txt +2 -0
  27. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/__init__.py +17 -0
  28. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/_version.py +2 -2
  29. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/__init__.py +4 -1
  30. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/cli.py +91 -1
  31. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/decorators.py +9 -0
  32. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/functions.py +56 -10
  33. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/parser.py +3 -0
  34. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/queue_context/__init__.py +4 -1
  35. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/queue_context/gnu_parallel_local_adapter.py +16 -6
  36. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/queue_context/htcondor_adapter.py +16 -5
  37. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +41 -12
  38. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/queue_context/tests/test_htcondor_adapter.py +48 -15
  39. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/afni/run_afni_docker.sh +1 -1
  40. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/ants/run_ants_docker.sh +1 -1
  41. junifer-0.0.5/junifer/api/res/freesurfer/mri_binarize +3 -0
  42. junifer-0.0.5/junifer/api/res/freesurfer/mri_mc +3 -0
  43. junifer-0.0.5/junifer/api/res/freesurfer/mri_pretess +3 -0
  44. junifer-0.0.5/junifer/api/res/freesurfer/mris_convert +3 -0
  45. junifer-0.0.5/junifer/api/res/freesurfer/run_freesurfer_docker.sh +61 -0
  46. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/fsl/run_fsl_docker.sh +1 -1
  47. junifer-0.0.4.dev829/junifer/api/res/run_conda.sh → junifer-0.0.5/junifer/api/res/run_conda.bash +1 -1
  48. junifer-0.0.5/junifer/api/res/run_conda.zsh +23 -0
  49. junifer-0.0.5/junifer/api/res/run_venv.bash +22 -0
  50. junifer-0.0.4.dev829/junifer/api/res/run_venv.sh → junifer-0.0.5/junifer/api/res/run_venv.zsh +1 -1
  51. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/tests/test_api_utils.py +4 -2
  52. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/tests/test_cli.py +83 -0
  53. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/tests/test_functions.py +27 -2
  54. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/__init__.py +1 -1
  55. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/__init__.py +4 -1
  56. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/__init__.py +10 -1
  57. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +4 -3
  58. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +3 -0
  59. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +4 -3
  60. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +1 -3
  61. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/ucla.py +12 -9
  62. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +3 -0
  63. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/__init__.py +21 -1
  64. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/coordinates.py +10 -19
  65. junifer-0.0.5/junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz +0 -0
  66. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/masks.py +58 -87
  67. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/parcellations.py +14 -3
  68. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/template_spaces.py +4 -1
  69. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/tests/test_masks.py +26 -37
  70. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/utils.py +3 -0
  71. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/__init__.py +18 -1
  72. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/aomic/__init__.py +3 -0
  73. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/aomic/id1000.py +70 -37
  74. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/aomic/piop1.py +69 -36
  75. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/aomic/piop2.py +71 -38
  76. junifer-0.0.5/junifer/datagrabber/aomic/tests/test_id1000.py +124 -0
  77. junifer-0.0.5/junifer/datagrabber/aomic/tests/test_piop1.py +166 -0
  78. junifer-0.0.5/junifer/datagrabber/aomic/tests/test_piop2.py +146 -0
  79. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/base.py +13 -6
  80. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/datalad_base.py +13 -1
  81. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/dmcc13_benchmark.py +36 -53
  82. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/hcp1200/__init__.py +3 -0
  83. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +3 -0
  84. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/hcp1200/hcp1200.py +4 -1
  85. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/multiple.py +45 -6
  86. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/pattern.py +170 -62
  87. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/pattern_datalad.py +25 -12
  88. junifer-0.0.5/junifer/datagrabber/pattern_validation_mixin.py +388 -0
  89. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/tests/test_datalad_base.py +4 -4
  90. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +46 -19
  91. junifer-0.0.5/junifer/datagrabber/tests/test_multiple.py +280 -0
  92. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/tests/test_pattern.py +45 -0
  93. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/tests/test_pattern_datalad.py +4 -4
  94. junifer-0.0.5/junifer/datagrabber/tests/test_pattern_validation_mixin.py +249 -0
  95. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datareader/__init__.py +4 -1
  96. junifer-0.0.5/junifer/datareader/default.py +210 -0
  97. junifer-0.0.5/junifer/external/BrainPrint/brainprint/__init__.py +4 -0
  98. junifer-0.0.5/junifer/external/BrainPrint/brainprint/_version.py +3 -0
  99. junifer-0.0.5/junifer/external/BrainPrint/brainprint/asymmetry.py +91 -0
  100. junifer-0.0.5/junifer/external/BrainPrint/brainprint/brainprint.py +441 -0
  101. junifer-0.0.5/junifer/external/BrainPrint/brainprint/surfaces.py +258 -0
  102. junifer-0.0.5/junifer/external/BrainPrint/brainprint/utils/__init__.py +1 -0
  103. junifer-0.0.5/junifer/external/BrainPrint/brainprint/utils/_config.py +112 -0
  104. junifer-0.0.5/junifer/external/BrainPrint/brainprint/utils/utils.py +188 -0
  105. {junifer-0.0.4.dev829/junifer/preprocess/fsl → junifer-0.0.5/junifer/external}/__init__.py +1 -1
  106. junifer-0.0.5/junifer/external/nilearn/__init__.py +10 -0
  107. junifer-0.0.5/junifer/external/nilearn/junifer_connectivity_measure.py +483 -0
  108. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +23 -9
  109. junifer-0.0.5/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +1089 -0
  110. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +76 -1
  111. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/__init__.py +23 -1
  112. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/base.py +68 -28
  113. junifer-0.0.5/junifer/markers/brainprint.py +459 -0
  114. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/collection.py +10 -2
  115. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/__init__.py +10 -0
  116. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/complexity_base.py +26 -43
  117. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/hurst_exponent.py +3 -0
  118. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/multiscale_entropy_auc.py +3 -0
  119. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/perm_entropy.py +3 -0
  120. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/range_entropy.py +3 -0
  121. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/range_entropy_auc.py +3 -0
  122. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/sample_entropy.py +3 -0
  123. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_hurst_exponent.py +11 -3
  124. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +11 -3
  125. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_perm_entropy.py +11 -3
  126. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_range_entropy.py +11 -3
  127. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_range_entropy_auc.py +11 -3
  128. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_sample_entropy.py +11 -3
  129. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +11 -3
  130. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/weighted_perm_entropy.py +3 -0
  131. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/ets_rss.py +27 -42
  132. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/__init__.py +3 -0
  133. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/_afni_falff.py +5 -2
  134. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/_junifer_falff.py +3 -0
  135. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/falff_base.py +20 -46
  136. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/falff_parcels.py +56 -27
  137. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/falff_spheres.py +60 -29
  138. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/tests/test_falff_parcels.py +39 -23
  139. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/falff/tests/test_falff_spheres.py +39 -23
  140. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/__init__.py +9 -0
  141. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +63 -60
  142. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +45 -32
  143. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +49 -36
  144. junifer-0.0.5/junifer/markers/functional_connectivity/functional_connectivity_base.py +155 -0
  145. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +34 -25
  146. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +40 -30
  147. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +11 -7
  148. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +27 -7
  149. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +28 -12
  150. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +35 -11
  151. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +36 -62
  152. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/parcel_aggregation.py +47 -61
  153. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/__init__.py +3 -0
  154. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/_afni_reho.py +5 -2
  155. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/_junifer_reho.py +4 -1
  156. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/reho_base.py +8 -27
  157. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/reho_parcels.py +28 -17
  158. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/reho_spheres.py +27 -18
  159. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/tests/test_reho_parcels.py +8 -3
  160. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/reho/tests/test_reho_spheres.py +8 -3
  161. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/sphere_aggregation.py +43 -59
  162. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/temporal_snr/__init__.py +3 -0
  163. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/temporal_snr/temporal_snr_base.py +23 -32
  164. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/temporal_snr/temporal_snr_parcels.py +9 -6
  165. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/temporal_snr/temporal_snr_spheres.py +9 -6
  166. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +6 -3
  167. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +6 -3
  168. junifer-0.0.5/junifer/markers/tests/test_brainprint.py +58 -0
  169. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/tests/test_collection.py +9 -8
  170. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/tests/test_ets_rss.py +15 -9
  171. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/tests/test_markers_base.py +17 -18
  172. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/tests/test_parcel_aggregation.py +93 -32
  173. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/tests/test_sphere_aggregation.py +72 -19
  174. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/onthefly/__init__.py +4 -1
  175. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/onthefly/read_transform.py +3 -0
  176. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/__init__.py +9 -1
  177. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/pipeline_step_mixin.py +21 -4
  178. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/registry.py +3 -0
  179. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/singleton.py +3 -0
  180. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/tests/test_registry.py +1 -1
  181. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/update_meta_mixin.py +3 -0
  182. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/utils.py +67 -1
  183. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/workdir_manager.py +3 -0
  184. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/__init__.py +10 -2
  185. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/base.py +6 -3
  186. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/confounds/__init__.py +3 -0
  187. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/confounds/fmriprep_confound_remover.py +47 -60
  188. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +72 -113
  189. junifer-0.0.5/junifer/preprocess/smoothing/__init__.py +9 -0
  190. junifer-0.0.5/junifer/preprocess/smoothing/_afni_smoothing.py +119 -0
  191. junifer-0.0.5/junifer/preprocess/smoothing/_fsl_smoothing.py +116 -0
  192. junifer-0.0.5/junifer/preprocess/smoothing/_nilearn_smoothing.py +69 -0
  193. junifer-0.0.5/junifer/preprocess/smoothing/smoothing.py +174 -0
  194. junifer-0.0.5/junifer/preprocess/smoothing/tests/test_smoothing.py +94 -0
  195. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/warping/__init__.py +3 -0
  196. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/warping/_ants_warper.py +3 -0
  197. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/warping/_fsl_warper.py +3 -0
  198. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/stats.py +4 -1
  199. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/__init__.py +9 -1
  200. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/base.py +40 -1
  201. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/hdf5.py +71 -9
  202. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/pandas_base.py +3 -0
  203. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/sqlite.py +3 -0
  204. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/tests/test_hdf5.py +82 -10
  205. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/utils.py +9 -0
  206. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/__init__.py +4 -1
  207. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/datagrabbers.py +13 -6
  208. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +7 -7
  209. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/utils.py +3 -0
  210. junifer-0.0.5/junifer/utils/__init__.py +20 -0
  211. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/utils/fs.py +3 -0
  212. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/utils/helpers.py +32 -1
  213. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/utils/logging.py +33 -4
  214. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/utils/tests/test_logging.py +8 -0
  215. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer.egg-info/PKG-INFO +17 -16
  216. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer.egg-info/SOURCES.txt +30 -91
  217. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer.egg-info/requires.txt +16 -15
  218. {junifer-0.0.4.dev829 → junifer-0.0.5}/pyproject.toml +49 -27
  219. {junifer-0.0.4.dev829 → junifer-0.0.5}/tools/create_aomic1000_example_dataset.py +39 -2
  220. {junifer-0.0.4.dev829 → junifer-0.0.5}/tools/create_aomicpiop1_example_dataset.py +38 -1
  221. {junifer-0.0.4.dev829 → junifer-0.0.5}/tools/create_aomicpiop2_example_dataset.py +38 -1
  222. junifer-0.0.5/tools/create_bids_example_dataset.py +40 -0
  223. junifer-0.0.5/tools/create_bids_example_dataset_sessions.py +50 -0
  224. {junifer-0.0.4.dev829 → junifer-0.0.5}/tox.ini +1 -0
  225. junifer-0.0.4.dev829/.gitmodules +0 -3
  226. junifer-0.0.4.dev829/docs/changes/newsfragments/145.feature +0 -1
  227. junifer-0.0.4.dev829/docs/changes/newsfragments/182.enh +0 -1
  228. junifer-0.0.4.dev829/docs/changes/newsfragments/224.bugfix +0 -1
  229. junifer-0.0.4.dev829/docs/changes/newsfragments/233.bugfix +0 -1
  230. junifer-0.0.4.dev829/docs/changes/newsfragments/240.feature +0 -1
  231. junifer-0.0.4.dev829/docs/changes/newsfragments/245.change +0 -1
  232. junifer-0.0.4.dev829/docs/changes/newsfragments/245.feature +0 -1
  233. junifer-0.0.4.dev829/docs/changes/newsfragments/247.doc +0 -1
  234. junifer-0.0.4.dev829/docs/changes/newsfragments/248.change +0 -1
  235. junifer-0.0.4.dev829/docs/changes/newsfragments/249.feature +0 -1
  236. junifer-0.0.4.dev829/docs/changes/newsfragments/250.feature +0 -1
  237. junifer-0.0.4.dev829/docs/changes/newsfragments/251.doc +0 -1
  238. junifer-0.0.4.dev829/docs/changes/newsfragments/252.change +0 -1
  239. junifer-0.0.4.dev829/docs/changes/newsfragments/252.feature +0 -1
  240. junifer-0.0.4.dev829/docs/changes/newsfragments/253.misc +0 -1
  241. junifer-0.0.4.dev829/docs/changes/newsfragments/254.feature +0 -1
  242. junifer-0.0.4.dev829/docs/changes/newsfragments/258.enh +0 -1
  243. junifer-0.0.4.dev829/docs/changes/newsfragments/259.enh +0 -1
  244. junifer-0.0.4.dev829/docs/changes/newsfragments/260.enh +0 -1
  245. junifer-0.0.4.dev829/docs/changes/newsfragments/261.misc +0 -1
  246. junifer-0.0.4.dev829/docs/changes/newsfragments/262.misc +0 -1
  247. junifer-0.0.4.dev829/docs/changes/newsfragments/263.change +0 -1
  248. junifer-0.0.4.dev829/docs/changes/newsfragments/264.feature +0 -1
  249. junifer-0.0.4.dev829/docs/changes/newsfragments/265.feature +0 -1
  250. junifer-0.0.4.dev829/docs/changes/newsfragments/266.feature +0 -1
  251. junifer-0.0.4.dev829/docs/changes/newsfragments/267.feature +0 -1
  252. junifer-0.0.4.dev829/docs/changes/newsfragments/268.change +0 -1
  253. junifer-0.0.4.dev829/docs/changes/newsfragments/268.enh +0 -1
  254. junifer-0.0.4.dev829/docs/changes/newsfragments/269.misc +0 -1
  255. junifer-0.0.4.dev829/docs/changes/newsfragments/270.misc +0 -1
  256. junifer-0.0.4.dev829/docs/changes/newsfragments/271.feature +0 -1
  257. junifer-0.0.4.dev829/docs/changes/newsfragments/272.bugfix +0 -1
  258. junifer-0.0.4.dev829/docs/changes/newsfragments/274.bugfix +0 -1
  259. junifer-0.0.4.dev829/docs/changes/newsfragments/275.feature +0 -1
  260. junifer-0.0.4.dev829/docs/changes/newsfragments/276.bugfix +0 -1
  261. junifer-0.0.4.dev829/docs/changes/newsfragments/277.misc +0 -1
  262. junifer-0.0.4.dev829/docs/changes/newsfragments/278.bugfix +0 -1
  263. junifer-0.0.4.dev829/docs/changes/newsfragments/279.misc +0 -1
  264. junifer-0.0.4.dev829/docs/changes/newsfragments/280.bugfix +0 -1
  265. junifer-0.0.4.dev829/docs/changes/newsfragments/281.bugfix +0 -1
  266. junifer-0.0.4.dev829/docs/changes/newsfragments/281.misc +0 -1
  267. junifer-0.0.4.dev829/docs/changes/newsfragments/282.bugfix +0 -1
  268. junifer-0.0.4.dev829/docs/changes/newsfragments/283.bugfix +0 -1
  269. junifer-0.0.4.dev829/docs/changes/newsfragments/284.bugfix +0 -1
  270. junifer-0.0.4.dev829/docs/changes/newsfragments/286.bugfix +0 -1
  271. junifer-0.0.4.dev829/docs/changes/newsfragments/287.enh +0 -1
  272. junifer-0.0.4.dev829/docs/changes/newsfragments/288.misc +0 -1
  273. junifer-0.0.4.dev829/docs/changes/newsfragments/291.doc +0 -1
  274. junifer-0.0.4.dev829/docs/changes/newsfragments/293.enh +0 -1
  275. junifer-0.0.4.dev829/docs/changes/newsfragments/293.feature +0 -1
  276. junifer-0.0.4.dev829/docs/changes/newsfragments/293.misc +0 -1
  277. junifer-0.0.4.dev829/docs/changes/newsfragments/294.misc +0 -1
  278. junifer-0.0.4.dev829/docs/changes/newsfragments/295.feature +0 -1
  279. junifer-0.0.4.dev829/docs/changes/newsfragments/297.feature +0 -1
  280. junifer-0.0.4.dev829/docs/changes/newsfragments/298.feature +0 -1
  281. junifer-0.0.4.dev829/docs/changes/newsfragments/299.change +0 -1
  282. junifer-0.0.4.dev829/docs/changes/newsfragments/299.enh +0 -1
  283. junifer-0.0.4.dev829/docs/changes/newsfragments/299.feature +0 -1
  284. junifer-0.0.4.dev829/docs/changes/newsfragments/300.doc +0 -1
  285. junifer-0.0.4.dev829/docs/changes/newsfragments/300.enh +0 -1
  286. junifer-0.0.4.dev829/docs/changes/newsfragments/300.misc +0 -1
  287. junifer-0.0.4.dev829/docs/changes/newsfragments/301.feature +0 -1
  288. junifer-0.0.4.dev829/docs/changes/newsfragments/301.removal +0 -1
  289. junifer-0.0.4.dev829/docs/changes/newsfragments/302.enh +0 -1
  290. junifer-0.0.4.dev829/docs/changes/newsfragments/306.enh +0 -1
  291. junifer-0.0.4.dev829/docs/changes/newsfragments/308.enh +0 -1
  292. junifer-0.0.4.dev829/docs/changes/newsfragments/309.feature +0 -1
  293. junifer-0.0.4.dev829/docs/changes/newsfragments/310.change +0 -1
  294. junifer-0.0.4.dev829/docs/changes/newsfragments/310.enh +0 -1
  295. junifer-0.0.4.dev829/docs/changes/newsfragments/311.change +0 -1
  296. junifer-0.0.4.dev829/docs/changes/newsfragments/311.enh +0 -1
  297. junifer-0.0.4.dev829/docs/changes/newsfragments/312.bugfix +0 -1
  298. junifer-0.0.4.dev829/docs/changes/newsfragments/314.bugfix +0 -1
  299. junifer-0.0.4.dev829/docs/changes/newsfragments/317.doc +0 -1
  300. junifer-0.0.4.dev829/docs/changes/newsfragments/320.change +0 -1
  301. junifer-0.0.4.dev829/docs/changes/newsfragments/320.fix +0 -1
  302. junifer-0.0.4.dev829/docs/changes/newsfragments/321.fix +0 -1
  303. junifer-0.0.4.dev829/docs/changes/newsfragments/322.bugfix +0 -1
  304. junifer-0.0.4.dev829/docs/changes/newsfragments/325.change +0 -1
  305. junifer-0.0.4.dev829/docs/whats_new.rst +0 -379
  306. junifer-0.0.4.dev829/junifer/datagrabber/aomic/tests/test_id1000.py +0 -180
  307. junifer-0.0.4.dev829/junifer/datagrabber/aomic/tests/test_piop1.py +0 -209
  308. junifer-0.0.4.dev829/junifer/datagrabber/aomic/tests/test_piop2.py +0 -203
  309. junifer-0.0.4.dev829/junifer/datagrabber/tests/test_datagrabber_utils.py +0 -218
  310. junifer-0.0.4.dev829/junifer/datagrabber/tests/test_multiple.py +0 -203
  311. junifer-0.0.4.dev829/junifer/datagrabber/utils.py +0 -230
  312. junifer-0.0.4.dev829/junifer/datareader/default.py +0 -158
  313. junifer-0.0.4.dev829/junifer/external/__init__.py +0 -4
  314. junifer-0.0.4.dev829/junifer/external/nilearn/__init__.py +0 -6
  315. junifer-0.0.4.dev829/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -154
  316. junifer-0.0.4.dev829/junifer/preprocess/ants/__init__.py +0 -4
  317. junifer-0.0.4.dev829/junifer/preprocess/ants/ants_apply_transforms_warper.py +0 -185
  318. junifer-0.0.4.dev829/junifer/preprocess/ants/tests/test_ants_apply_transforms_warper.py +0 -56
  319. junifer-0.0.4.dev829/junifer/preprocess/bold_warper.py +0 -265
  320. junifer-0.0.4.dev829/junifer/preprocess/fsl/apply_warper.py +0 -179
  321. junifer-0.0.4.dev829/junifer/preprocess/fsl/tests/test_apply_warper.py +0 -45
  322. junifer-0.0.4.dev829/junifer/preprocess/tests/test_bold_warper.py +0 -159
  323. junifer-0.0.4.dev829/junifer/utils/__init__.py +0 -9
  324. junifer-0.0.4.dev829/tools/create_bids_example_dataset.py +0 -34
  325. junifer-0.0.4.dev829/tools/create_bids_example_dataset_sessions.py +0 -41
  326. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  327. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  328. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  329. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  330. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  331. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  332. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/dependabot.yml +0 -0
  333. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/pull_request_template.md +0 -0
  334. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/workflows/ci-docs.yml +0 -0
  335. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/workflows/docs-preview.yml +0 -0
  336. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/workflows/lint.yml +0 -0
  337. {junifer-0.0.4.dev829 → junifer-0.0.5}/.github/workflows/pypi.yml +0 -0
  338. {junifer-0.0.4.dev829 → junifer-0.0.5}/.gitignore +0 -0
  339. {junifer-0.0.4.dev829 → junifer-0.0.5}/AUTHORS.rst +0 -0
  340. {junifer-0.0.4.dev829 → junifer-0.0.5}/LICENSE.md +0 -0
  341. {junifer-0.0.4.dev829 → junifer-0.0.5}/README.md +0 -0
  342. {junifer-0.0.4.dev829 → junifer-0.0.5}/codecov.yml +0 -0
  343. {junifer-0.0.4.dev829 → junifer-0.0.5}/conda-env.yml +0 -0
  344. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/Makefile +0 -0
  345. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/_static/css/custom.css +0 -0
  346. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/_static/js/custom.js +0 -0
  347. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/_templates/versions.html +0 -0
  348. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/api.rst +0 -0
  349. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/configs.rst +0 -0
  350. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/data.rst +0 -0
  351. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/datagrabbers.rst +0 -0
  352. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/datareaders.rst +0 -0
  353. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/index.rst +0 -0
  354. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/markers.rst +0 -0
  355. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/pipeline.rst +0 -0
  356. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/preprocessing.rst +0 -0
  357. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/stats.rst +0 -0
  358. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/storage.rst +0 -0
  359. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/testing.rst +0 -0
  360. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/api/utils.rst +0 -0
  361. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/changes/contributors.inc +0 -0
  362. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/changes/newsfragments/.gitignore +0 -0
  363. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/contribution.rst +0 -0
  364. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/extension.rst +0 -0
  365. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/index.rst +0 -0
  366. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/extending/masks.rst +0 -0
  367. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/faq.rst +0 -0
  368. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/help.rst +0 -0
  369. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/images/junifer_logo.png +0 -0
  370. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/index.rst +0 -0
  371. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/links.inc +0 -0
  372. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/maintaining.rst +0 -0
  373. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/redirect.html +0 -0
  374. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/sphinxext/gh_substitutions.py +0 -0
  375. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/starting.rst +0 -0
  376. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/datagrabber.rst +0 -0
  377. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/datareader.rst +0 -0
  378. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/index.rst +0 -0
  379. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/understanding/pipeline.rst +0 -0
  380. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/using/codeless.rst +0 -0
  381. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/using/index.rst +0 -0
  382. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/using/masks.rst +0 -0
  383. {junifer-0.0.4.dev829 → junifer-0.0.5}/docs/using/running.rst +0 -0
  384. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/README.rst +0 -0
  385. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/norun_hcpfc_pearson.py +0 -0
  386. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/norun_ukbvm_gmd.py +0 -0
  387. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/run_datagrabber_bids_datalad.py +0 -0
  388. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/run_run_gmd_mean.py +0 -0
  389. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/yamls/gmd_mean.yaml +0 -0
  390. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  391. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  392. {junifer-0.0.4.dev829 → junifer-0.0.5}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  393. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  394. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  395. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/afni/3dRSFC +0 -0
  396. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/afni/3dReHo +0 -0
  397. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/afni/afni +0 -0
  398. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/ants/ResampleImage +0 -0
  399. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/ants/antsApplyTransforms +0 -0
  400. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  401. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/fsl/applywarp +0 -0
  402. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/fsl/flirt +0 -0
  403. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/fsl/img2imgcoord +0 -0
  404. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/res/fsl/std2imgcoord +0 -0
  405. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/tests/data/gmd_mean.yaml +0 -0
  406. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/tests/data/gmd_mean_htcondor.yaml +0 -0
  407. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  408. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/tests/test_parser.py +0 -0
  409. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/api/utils.py +0 -0
  410. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  411. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  412. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  413. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  414. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
  415. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
  416. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
  417. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
  418. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  419. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
  420. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
  421. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
  422. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
  423. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
  424. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
  425. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
  426. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
  427. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
  428. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
  429. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
  430. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
  431. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
  432. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
  433. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
  434. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
  435. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
  436. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/tests/test_coordinates.py +0 -0
  437. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/tests/test_data_utils.py +0 -0
  438. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/tests/test_parcellations.py +0 -0
  439. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/data/tests/test_template_spaces.py +0 -0
  440. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  441. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datagrabber/tests/test_base.py +0 -0
  442. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/datareader/tests/test_default_reader.py +0 -0
  443. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/external/h5io/h5io/__init__.py +0 -0
  444. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/external/h5io/h5io/_h5io.py +0 -0
  445. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/external/h5io/h5io/_version.py +0 -0
  446. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  447. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  448. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  449. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  450. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  451. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/tests/test_marker_utils.py +0 -0
  452. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/markers/utils.py +0 -0
  453. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/onthefly/tests/test_read_transform.py +0 -0
  454. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  455. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  456. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  457. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  458. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/warping/space_warper.py +0 -0
  459. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  460. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/tests/test_pandas_base.py +0 -0
  461. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/tests/test_sqlite.py +0 -0
  462. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/tests/test_storage_base.py +0 -0
  463. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/storage/tests/test_utils.py +0 -0
  464. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  465. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/registry.py +0 -0
  466. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  467. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  468. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/testing/tests/test_testing_registry.py +0 -0
  469. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/tests/test_main.py +0 -0
  470. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/tests/test_stats.py +0 -0
  471. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/utils/tests/test_fs.py +0 -0
  472. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer/utils/tests/test_helpers.py +0 -0
  473. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer.egg-info/dependency_links.txt +0 -0
  474. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer.egg-info/entry_points.txt +0 -0
  475. {junifer-0.0.4.dev829 → junifer-0.0.5}/junifer.egg-info/top_level.txt +0 -0
  476. {junifer-0.0.4.dev829 → junifer-0.0.5}/setup.cfg +0 -0
  477. {junifer-0.0.4.dev829 → junifer-0.0.5}/setup.py +0 -0
  478. {junifer-0.0.4.dev829 → junifer-0.0.5}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  479. {junifer-0.0.4.dev829 → junifer-0.0.5}/tools/create_hcp1200_example_dataset.py +0 -0
@@ -66,36 +66,43 @@ jobs:
66
66
  sudo tcsh @update.afni.binaries -package linux_ubuntu_16_64 -bindir /afni
67
67
  echo "/afni" >> $GITHUB_PATH
68
68
  if: matrix.python-version == 3.11
69
+ # Bypass AFNI installation failure
70
+ continue-on-error: true
69
71
  - name: Check AFNI
70
72
  run: |
71
73
  echo "Using AFNI : $(afni --version)"
72
74
  if: matrix.python-version == 3.11
75
+ # Bypass AFNI installation failure
76
+ continue-on-error: true
73
77
  - name: Install ANTs
74
78
  run: |
75
79
  sudo apt-get install -y -qq unzip
76
- curl -fsSL -o ants.zip https://github.com/ANTsX/ANTs/releases/download/v2.5.1/ants-2.5.1-ubuntu-22.04-X64-gcc.zip
80
+ curl -fsSL -o ants.zip https://github.com/ANTsX/ANTs/releases/download/v2.5.2/ants-2.5.2-ubuntu-22.04-X64-gcc.zip
77
81
  unzip ants.zip -d /opt
78
- mv /opt/ants-2.5.1/bin/* /opt/ants-2.5.1
82
+ mv /opt/ants-2.5.2/bin/* /opt/ants-2.5.2
79
83
  rm ants.zip
80
- echo "/opt/ants-2.5.1" >> $GITHUB_PATH
84
+ echo "/opt/ants-2.5.2" >> $GITHUB_PATH
81
85
  if: matrix.python-version == 3.11
86
+ # Bypass ANTs installation failure
87
+ continue-on-error: true
82
88
  - name: Check ANTs
83
89
  run: |
84
90
  echo "Using ANTs : $(antsRegistration --version)"
85
91
  if: matrix.python-version == 3.11
92
+ # Bypass ANTs installation failure
93
+ continue-on-error: true
86
94
  - name: Install FSL
87
95
  run: |
88
- sudo apt-get install -y -qq python3
89
- curl -fsSL https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/fslinstaller.py | python3 - -d /opt/fsl-6.0.6.4 -V 6.0.6.4
96
+ curl -fsSL https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/fslinstaller.py | python - -d /opt/fsl/
90
97
  FSLOUTPUTTYPE="NIFTI_GZ"
91
98
  FSLMULTIFILEQUIT="TRUE"
92
- FSLTCLSH="/opt/fsl-6.0.6.4/bin/fsltclsh"
93
- FSLWISH="/opt/fsl-6.0.6.4/bin/fslwish"
99
+ FSLTCLSH="/opt/fsl/bin/fsltclsh"
100
+ FSLWISH="/opt/fsl/bin/fslwish"
94
101
  FSLLOCKDIR=""
95
102
  FSLMACHINELIST=""
96
103
  FSLREMOTECALL=""
97
104
  FSLGECUDAQ="cuda.q"
98
- echo "/opt/fsl-6.0.6.4" >> $GITHUB_PATH
105
+ echo "/opt/fsl" >> $GITHUB_PATH
99
106
  if: matrix.python-version == 3.11
100
107
  # Bypass FSL installation failure
101
108
  continue-on-error: true
@@ -68,7 +68,7 @@ jobs:
68
68
  touch docs/_build/.nojekyll
69
69
  cp docs/redirect.html docs/_build/index.html
70
70
  - name: Publish docs to gh-pages
71
- uses: peaceiris/actions-gh-pages@v3
71
+ uses: peaceiris/actions-gh-pages@v4
72
72
  with:
73
73
  github_token: ${{ secrets.GITHUB_TOKEN }}
74
74
  publish_dir: docs/_build
@@ -0,0 +1,6 @@
1
+ [submodule "junifer/external/h5io"]
2
+ path = junifer/external/h5io
3
+ url = https://github.com/juaml/h5io
4
+ [submodule "junifer/external/BrainPrint"]
5
+ path = junifer/external/BrainPrint
6
+ url = https://github.com/juaml/BrainPrint.git
@@ -4,7 +4,7 @@ ci:
4
4
 
5
5
  repos:
6
6
  - repo: https://github.com/pre-commit/pre-commit-hooks
7
- rev: v4.5.0
7
+ rev: v4.6.0
8
8
  hooks:
9
9
  - id: check-ast
10
10
  - id: check-docstring-first
@@ -20,14 +20,14 @@ repos:
20
20
  rev: v0.16
21
21
  hooks:
22
22
  - id: validate-pyproject
23
- - repo: https://github.com/psf/black
24
- rev: 24.1.1
23
+ - repo: https://github.com/psf/black-pre-commit-mirror
24
+ rev: 24.4.2
25
25
  hooks:
26
26
  - id: black
27
27
  exclude: ^(docs/|examples/|tools/)
28
28
  args: [--check]
29
29
  - repo: https://github.com/astral-sh/ruff-pre-commit
30
- rev: v0.1.15
30
+ rev: v0.4.2
31
31
  hooks:
32
32
  - id: ruff
33
33
  types_or: [python, jupyter]
@@ -38,7 +38,7 @@ repos:
38
38
  hooks:
39
39
  - id: codespell
40
40
  exclude: ^(.github/|docs/)
41
- args: [--config, tox.ini]
41
+ args: [--toml, pyproject.toml]
42
42
  - repo: https://github.com/pre-commit/pygrep-hooks
43
43
  rev: v1.10.0
44
44
  hooks:
@@ -47,3 +47,10 @@ repos:
47
47
  - id: rst-backticks
48
48
  - id: rst-directive-colons
49
49
  - id: rst-inline-touching-normal
50
+ - repo: https://github.com/adamchainz/blacken-docs
51
+ rev: "1.16.0"
52
+ hooks:
53
+ - id: blacken-docs
54
+ additional_dependencies:
55
+ - black==24.4.2
56
+ args: [-l 79]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.4.dev829
3
+ Version: 0.0.5
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>
@@ -29,19 +29,20 @@ Description-Content-Type: text/markdown
29
29
  License-File: LICENSE.md
30
30
  License-File: AUTHORS.rst
31
31
  Requires-Dist: click<8.2,>=8.1.3
32
- Requires-Dist: numpy<1.27,>=1.24
33
- Requires-Dist: scipy<=1.11.4,>=1.9.0
34
- Requires-Dist: datalad<0.20,>=0.15.4
35
- Requires-Dist: pandas<2.2,>=1.4.0
36
- Requires-Dist: nibabel<5.11,>=3.2.0
37
- Requires-Dist: nilearn<=0.10.2,>=0.9.0
38
- Requires-Dist: sqlalchemy<=2.1.0,>=1.4.27
32
+ Requires-Dist: numpy<2.0.0,>=1.24.0
33
+ Requires-Dist: scipy<=1.14.0,>=1.10.0
34
+ Requires-Dist: datalad<1.2.0,>=1.0.0
35
+ Requires-Dist: pandas<2.3.0,>=2.0.0
36
+ Requires-Dist: nibabel<5.3.0,>=5.2.0
37
+ Requires-Dist: nilearn<=0.10.4,>=0.10.3
38
+ Requires-Dist: sqlalchemy<=2.1.0,>=2.0.25
39
39
  Requires-Dist: ruamel.yaml<0.18,>=0.17
40
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"
44
+ Requires-Dist: lapy<2.0.0,>=1.0.0
45
+ Requires-Dist: importlib_metadata; python_version < "3.9"
45
46
  Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
46
47
  Provides-Extra: all
47
48
  Requires-Dist: bctpy==0.6.0; extra == "all"
@@ -56,14 +57,14 @@ Provides-Extra: dev
56
57
  Requires-Dist: tox; extra == "dev"
57
58
  Requires-Dist: pre-commit; extra == "dev"
58
59
  Provides-Extra: docs
59
- Requires-Dist: seaborn<0.13,>=0.11.2; extra == "docs"
60
- Requires-Dist: sphinx<7.3,>=5.3.0; extra == "docs"
61
- Requires-Dist: sphinx-gallery<0.15.0,>=0.11.0; extra == "docs"
62
- Requires-Dist: furo<2023.10.0,>=2022.9.29; extra == "docs"
63
- Requires-Dist: numpydoc<1.6,>=1.5.0; extra == "docs"
64
- Requires-Dist: julearn<0.4,>=0.3.0; extra == "docs"
60
+ Requires-Dist: seaborn<0.14.0,>=0.13.0; extra == "docs"
61
+ Requires-Dist: sphinx<7.4.0,>=7.3.0; extra == "docs"
62
+ Requires-Dist: sphinx-gallery<0.17.0,>=0.15.0; extra == "docs"
63
+ Requires-Dist: furo<2024.6.0,>=2024.4.27; extra == "docs"
64
+ Requires-Dist: numpydoc<1.8.0,>=1.6.0; extra == "docs"
65
+ Requires-Dist: julearn==0.3.3; extra == "docs"
65
66
  Requires-Dist: sphinx-copybutton<0.5.3,>=0.5.1; extra == "docs"
66
- Requires-Dist: towncrier<23.7,>=22.12.0; extra == "docs"
67
+ Requires-Dist: towncrier<23.12.0,>=23.10.0; extra == "docs"
67
68
  Requires-Dist: sphinxcontrib-mermaid<0.10,>=0.8.1; extra == "docs"
68
69
 
69
70
  ![Junifer logo](docs/images/junifer_logo.png "junifer logo")
@@ -1,8 +1,6 @@
1
1
  Nilearn
2
2
  =======
3
3
 
4
- This package provides re-implementations of some of the functions in `nilearn`_.
5
-
6
4
  .. automodule:: junifer.external.nilearn
7
5
  :members:
8
6
  :imported-members:
@@ -1,8 +1,6 @@
1
1
  On-the-fly
2
2
  ==========
3
3
 
4
- This package provides functions for quick transform operations on stored data.
5
-
6
4
  .. automodule:: junifer.onthefly
7
5
  :members:
8
6
  :imported-members:
@@ -729,14 +729,6 @@ Available
729
729
  - | Compute a brain mask for the images by guessing the value of the
730
730
  | background from the border of the image.
731
731
  | See :func:`nilearn.masking.compute_background_mask`
732
- * - ``nilearn``'s ICBM152 template gray-matter mask
733
- - | ``fetch_icbm152_brain_gm_mask``
734
- - ``MNI152NLin2009aAsym``
735
- - 0.0.2
736
- - | Compute a gray-matter mask from the asymmetrical ICBM152 2009 template,
737
- | release a.
738
- | See :func:`nilearn.datasets.fetch_icbm152_brain_gm_mask`
739
-
740
732
 
741
733
  ..
742
734
  Planned
@@ -170,6 +170,7 @@ numpydoc_xref_ignore = {
170
170
  "Engine",
171
171
  "positive",
172
172
  "negative",
173
+ "estimator",
173
174
  }
174
175
  # numpydoc_validation_checks = {
175
176
  # "all",
@@ -70,10 +70,7 @@ with the DMN. Here, we use the DMN coordinates used in a
70
70
  .. code-block:: python
71
71
 
72
72
  dmn_coords = np.array(
73
- [[0, -52, 18],
74
- [-46, -68, 32],
75
- [46, -68, 32],
76
- [1, 50, -5]]
73
+ [[0, -52, 18], [-46, -68, 32], [46, -68, 32], [1, 50, -5]]
77
74
  )
78
75
  voi_names = [
79
76
  "Posterior Cingulate Cortex",
@@ -90,10 +87,7 @@ simply use this to register our coordinates:
90
87
  .. code-block:: python
91
88
 
92
89
  register_coordinates(
93
- name="DMNCustom",
94
- coordinates=dmn_coords,
95
- voi_names=voi_names,
96
- space="MNI"
90
+ name="DMNCustom", coordinates=dmn_coords, voi_names=voi_names, space="MNI"
97
91
  )
98
92
 
99
93
  Now, when we run this script, ``junifer`` registers these coordinates and we can
@@ -115,14 +115,14 @@ For example, in our BIDS example, the variables will be:
115
115
 
116
116
  types = ["T1w", "BOLD"]
117
117
  patterns = {
118
- "T1w": {
119
- "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
120
- "space": "native",
121
- },
122
- "BOLD": {
123
- "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
124
- "space": "MNI152NLin6Asym",
125
- },
118
+ "T1w": {
119
+ "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
120
+ "space": "native",
121
+ },
122
+ "BOLD": {
123
+ "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
124
+ "space": "MNI152NLin6Asym",
125
+ },
126
126
  }
127
127
  replacements = ["subject", "session"]
128
128
 
@@ -144,25 +144,24 @@ With the variables defined above, we can create our DataGrabber and name it
144
144
 
145
145
 
146
146
  class ExampleBIDSDataGrabber(PatternDataGrabber):
147
-
148
147
  def __init__(self, datadir: str | Path) -> None:
149
148
  types = ["T1w", "BOLD"]
150
149
  patterns = {
151
- "T1w": {
152
- "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
153
- "space": "native",
154
- },
155
- "BOLD": {
156
- "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
157
- "space": "MNI152NLin6Asym",
158
- },
150
+ "T1w": {
151
+ "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
152
+ "space": "native",
153
+ },
154
+ "BOLD": {
155
+ "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
156
+ "space": "MNI152NLin6Asym",
157
+ },
159
158
  }
160
159
  replacements = ["subject", "session"]
161
160
  super().__init__(
162
- datadir=datadir,
163
- types=types,
164
- patterns=patterns,
165
- replacements=replacements,
161
+ datadir=datadir,
162
+ types=types,
163
+ patterns=patterns,
164
+ replacements=replacements,
166
165
  )
167
166
 
168
167
  Our DataGrabber is ready to be used by ``junifer``. However, it is still unknown
@@ -180,25 +179,24 @@ use the :func:`.register_datagrabber` decorator.
180
179
 
181
180
  @register_datagrabber
182
181
  class ExampleBIDSDataGrabber(PatternDataGrabber):
183
-
184
182
  def __init__(self, datadir: str | Path) -> None:
185
183
  types = ["T1w", "BOLD"]
186
184
  patterns = {
187
- "T1w": {
188
- "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
189
- "space": "native",
190
- },
191
- "BOLD": {
192
- "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
193
- "space": "MNI152NLin6Asym",
194
- },
185
+ "T1w": {
186
+ "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
187
+ "space": "native",
188
+ },
189
+ "BOLD": {
190
+ "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
191
+ "space": "MNI152NLin6Asym",
192
+ },
195
193
  }
196
194
  replacements = ["subject", "session"]
197
195
  super().__init__(
198
- datadir=datadir,
199
- types=types,
200
- patterns=patterns,
201
- replacements=replacements,
196
+ datadir=datadir,
197
+ types=types,
198
+ patterns=patterns,
199
+ replacements=replacements,
202
200
  )
203
201
 
204
202
 
@@ -267,29 +265,28 @@ And we can create our DataGrabber:
267
265
 
268
266
  @register_datagrabber
269
267
  class ExampleBIDSDataGrabber(PatternDataladDataGrabber):
270
-
271
268
  def __init__(self) -> None:
272
269
  types = ["T1w", "BOLD"]
273
270
  patterns = {
274
- "T1w": {
275
- "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
276
- "space": "native",
277
- },
278
- "BOLD": {
279
- "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
280
- "space": "MNI152NLin6Asym",
281
- },
271
+ "T1w": {
272
+ "pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
273
+ "space": "native",
274
+ },
275
+ "BOLD": {
276
+ "pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
277
+ "space": "MNI152NLin6Asym",
278
+ },
282
279
  }
283
280
  replacements = ["subject", "session"]
284
281
  uri = "https://gin.g-node.org/juaml/datalad-example-bids"
285
282
  rootdir = "example_bids_ses"
286
283
  super().__init__(
287
- datadir=None,
288
- uri=uri,
289
- rootdir=rootdir,
290
- types=types,
291
- patterns=patterns,
292
- replacements=replacements,
284
+ datadir=None,
285
+ uri=uri,
286
+ rootdir=rootdir,
287
+ types=types,
288
+ patterns=patterns,
289
+ replacements=replacements,
293
290
  )
294
291
 
295
292
  This approach can be used directly from the YAML, like so:
@@ -297,22 +294,69 @@ This approach can be used directly from the YAML, like so:
297
294
  .. code-block:: yaml
298
295
 
299
296
  datagrabber:
300
- - kind: PatternDataladDataGrabber
301
- types:
302
- - BOLD
303
- - T1w
304
- patterns:
305
- BOLD:
306
- pattern: "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz"
307
- space: MNI152NLin6Asym
308
- T1w:
309
- pattern: "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz"
310
- space: native
311
- replacements:
312
- - subject
313
- - session
314
- uri: "https://gin.g-node.org/juaml/datalad-example-bids"
315
- rootdir: example_bids_ses
297
+ kind: PatternDataladDataGrabber
298
+ types:
299
+ - BOLD
300
+ - T1w
301
+ patterns:
302
+ BOLD:
303
+ pattern: "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz"
304
+ space: MNI152NLin6Asym
305
+ T1w:
306
+ pattern: "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz"
307
+ space: native
308
+ replacements:
309
+ - subject
310
+ - session
311
+ uri: "https://gin.g-node.org/juaml/datalad-example-bids"
312
+ rootdir: example_bids_ses
313
+
314
+ Advanced: Using Unix-like path expansion directives
315
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
316
+
317
+ It is also possible to use some advanced Unix-like path expansion tricks to
318
+ define our patterns.
319
+
320
+ A very common thing would be to use ``*`` to match any number of
321
+ characters but we cannot use it right after a replacement like:
322
+
323
+ .. code-block:: python
324
+
325
+ "derivatives/freesurfer/{subject}*"
326
+
327
+ or if there are multiple files or no files which can be globbed.
328
+
329
+ We can also use ``[]`` and ``[!]`` to glob certain tricky files like with the
330
+ case of FreeSurfer derivatives. The file structure seen in a typical
331
+ FreeSurfer derivative of a dataset (like ``AOMIC`` ones) is like so:
332
+
333
+ .. code-block::
334
+
335
+ .
336
+ └── derivatives
337
+ └── freesurfer
338
+ ├── fsaverage
339
+ │ ├── mri
340
+ │ | ├── T1.mgz
341
+ │ | └── ...
342
+ │ └── ...
343
+ ├── sub-01
344
+ │ ├── mri
345
+ │ | ├── T1.mgz
346
+ │ | └── ...
347
+ │ | └── ...
348
+ │ └── ...
349
+ ...
350
+
351
+ With a structure like this, it would be cumbersome to write custom methods
352
+ for the class and thus we could use a pattern like this:
353
+
354
+ .. code-block:: python
355
+
356
+ "derivatives/freesurfer/[!f]{subject}/mri/T1.mg[z]"
357
+
358
+ This would ignore the ``fsaverage`` directory as a subject and let ``T1.mgz`` be
359
+ fetched as there can be many files with the same prefix.
316
360
 
317
361
  .. _extending_datagrabbers_base:
318
362
 
@@ -344,17 +388,17 @@ and ``session``, we will use them as parameters of ``get_item``:
344
388
  .. code-block:: python
345
389
 
346
390
  def get_item(self, subject: str, session: str) -> dict[str, dict[str, str]]:
347
- out = {
348
- "T1w": {
349
- "path": f"{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
350
- "space": "native",
351
- },
352
- "BOLD": {
353
- "path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
354
- "space": "MNI152NLin6Asym",
355
- },
356
- }
357
- return out
391
+ out = {
392
+ "T1w": {
393
+ "path": f"{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
394
+ "space": "native",
395
+ },
396
+ "BOLD": {
397
+ "path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
398
+ "space": "MNI152NLin6Asym",
399
+ },
400
+ }
401
+ return out
358
402
 
359
403
 
360
404
  The second method, ``get_elements``, needs to return a list of all the elements
@@ -368,16 +412,16 @@ need to remember that for session *ses-03* there is no BOLD data.
368
412
 
369
413
 
370
414
  def get_elements(self) -> list[str]:
371
- subjects = ["sub-01", "sub-02", "sub-03"]
372
- sessions = ["ses-01", "ses-02"]
415
+ subjects = ["sub-01", "sub-02", "sub-03"]
416
+ sessions = ["ses-01", "ses-02"]
373
417
 
374
- # If we are not working on BOLD data, we can add "ses-03"
375
- if "BOLD" not in self.types:
376
- sessions.append("ses-03")
377
- elements = []
378
- for subject, element in product(subjects, sessions):
379
- elements.append({"subject": subject, "session": session})
380
- return elements
418
+ # If we are not working on BOLD data, we can add "ses-03"
419
+ if "BOLD" not in self.types:
420
+ sessions.append("ses-03")
421
+ elements = []
422
+ for subject, element in product(subjects, sessions):
423
+ elements.append({"subject": subject, "session": session})
424
+ return elements
381
425
 
382
426
 
383
427
  And finally, we can implement the ``get_element_keys`` method. This method needs
@@ -388,7 +432,7 @@ method, in the same order.
388
432
  .. code-block:: python
389
433
 
390
434
  def get_element_keys(self) -> list[str]:
391
- return ["subject", "session"]
435
+ return ["subject", "session"]
392
436
 
393
437
 
394
438
  So, to summarise, our DataGrabber will look like this:
@@ -401,35 +445,36 @@ So, to summarise, our DataGrabber will look like this:
401
445
 
402
446
  @register_datagrabber
403
447
  class ExampleBIDSDataGrabber(BaseDataGrabber):
448
+ def get_item(
449
+ self, subject: str, session: str
450
+ ) -> dict[str, dict[str, str]]:
451
+ out = {
452
+ "T1w": {
453
+ "path": f"{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
454
+ "space": "native",
455
+ },
456
+ "BOLD": {
457
+ "path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
458
+ "space": "MNI152NLin6Asym",
459
+ },
460
+ }
461
+ return out
462
+
463
+ def get_elements(self) -> list[str]:
464
+ subjects = ["sub-01", "sub-02", "sub-03"]
465
+ sessions = ["ses-01", "ses-02"]
404
466
 
405
- def get_item(self, subject: str, session: str) -> dict[str, dict[str, str]]:
406
- out = {
407
- "T1w": {
408
- "path": f"{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
409
- "space": "native",
410
- },
411
- "BOLD": {
412
- "path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
413
- "space": "MNI152NLin6Asym",
414
- },
415
- }
416
- return out
417
-
418
- def get_elements(self) -> list[str]:
419
- subjects = ["sub-01", "sub-02", "sub-03"]
420
- sessions = ["ses-01", "ses-02"]
421
-
422
- # If we are not working on BOLD data, we can add "ses-03"
423
- if "BOLD" not in self.types:
424
- sessions.append("ses-03")
425
- elements = []
426
- for subject in subjects:
427
- for session in sessions:
428
- elements.append({"subject": subject, "session": session})
429
- return elements
430
-
431
- def get_element_keys(self) -> list[str]:
432
- return ["subject", "session"]
467
+ # If we are not working on BOLD data, we can add "ses-03"
468
+ if "BOLD" not in self.types:
469
+ sessions.append("ses-03")
470
+ elements = []
471
+ for subject in subjects:
472
+ for session in sessions:
473
+ elements.append({"subject": subject, "session": session})
474
+ return elements
475
+
476
+ def get_element_keys(self) -> list[str]:
477
+ return ["subject", "session"]
433
478
 
434
479
  Optional: Using datalad
435
480
  ~~~~~~~~~~~~~~~~~~~~~~~
@@ -442,11 +487,11 @@ Step 4: Optional: Adding *BOLD confounds*
442
487
  -----------------------------------------
443
488
 
444
489
  For some analyses, it is useful to have the confounds associated with the BOLD
445
- data. This corresponds to the ``BOLD_confounds`` item in the
490
+ data. This corresponds to the ``BOLD.confounds`` item in the
446
491
  :ref:`Data Object <data_object>` (see :ref:`data_types`). However, the
447
- ``BOLD_confounds`` element does not only consists of a ``path``, but it requires
492
+ ``BOLD.confounds`` element does not only consists of a ``path``, but it requires
448
493
  more information about the format of the confounds file. Thus, the
449
- ``BOLD_confounds`` element is a dictionary with the following keys:
494
+ ``BOLD.confounds`` element is a dictionary with the following keys:
450
495
 
451
496
  - ``path``: the path to the confounds file.
452
497
  - ``format``: the format of the confounds file. Currently, this can be either
@@ -475,26 +520,24 @@ this:
475
520
 
476
521
  .. code-block:: python
477
522
 
478
- def get_item(
479
- self, subject: str, session: str
480
- ) -> dict:
481
- out = {
482
- "BOLD": {
483
- "path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
484
- "space": "MNI152NLin6Asym",
485
- },
486
- "BOLD_confounds": {
487
- "path": f"{subject}/{session}/func/{subject}_{session}_confounds.tsv",
488
- "format": "adhoc",
489
- "mappings": {
490
- "fmriprep": {
491
- "variable1": "rot_x",
492
- "variable2": "rot_z",
493
- "variable3": "rot_y",
494
- },
495
- },
496
- },
497
- }
523
+ def get_item(self, subject: str, session: str) -> dict:
524
+ out = {
525
+ "BOLD": {
526
+ "path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
527
+ "space": "MNI152NLin6Asym",
528
+ "confounds": {
529
+ "path": f"{subject}/{session}/func/{subject}_{session}_confounds.tsv",
530
+ "format": "adhoc",
531
+ "mappings": {
532
+ "fmriprep": {
533
+ "variable1": "rot_x",
534
+ "variable2": "rot_z",
535
+ "variable3": "rot_y",
536
+ },
537
+ },
538
+ },
539
+ },
540
+ }
498
541
 
499
542
  .. note::
500
543