junifer 0.0.6.dev175__py3-none-any.whl → 0.0.6.dev194__py3-none-any.whl

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 (78) hide show
  1. junifer/_version.py +2 -2
  2. junifer/data/__init__.pyi +17 -31
  3. junifer/data/_dispatch.py +251 -0
  4. junifer/data/coordinates/__init__.py +9 -0
  5. junifer/data/coordinates/__init__.pyi +5 -0
  6. junifer/data/coordinates/_ants_coordinates_warper.py +96 -0
  7. junifer/data/coordinates/_coordinates.py +356 -0
  8. junifer/data/coordinates/_fsl_coordinates_warper.py +83 -0
  9. junifer/data/{tests → coordinates/tests}/test_coordinates.py +25 -31
  10. junifer/data/masks/__init__.py +9 -0
  11. junifer/data/masks/__init__.pyi +6 -0
  12. junifer/data/masks/_ants_mask_warper.py +144 -0
  13. junifer/data/masks/_fsl_mask_warper.py +87 -0
  14. junifer/data/masks/_masks.py +624 -0
  15. junifer/data/{tests → masks/tests}/test_masks.py +63 -58
  16. junifer/data/parcellations/__init__.py +9 -0
  17. junifer/data/parcellations/__init__.pyi +6 -0
  18. junifer/data/parcellations/_ants_parcellation_warper.py +154 -0
  19. junifer/data/parcellations/_fsl_parcellation_warper.py +91 -0
  20. junifer/data/{parcellations.py → parcellations/_parcellations.py} +450 -473
  21. junifer/data/{tests → parcellations/tests}/test_parcellations.py +73 -81
  22. junifer/data/pipeline_data_registry_base.py +74 -0
  23. junifer/data/utils.py +4 -0
  24. junifer/markers/complexity/hurst_exponent.py +2 -2
  25. junifer/markers/complexity/multiscale_entropy_auc.py +2 -2
  26. junifer/markers/complexity/perm_entropy.py +2 -2
  27. junifer/markers/complexity/range_entropy.py +2 -2
  28. junifer/markers/complexity/range_entropy_auc.py +2 -2
  29. junifer/markers/complexity/sample_entropy.py +2 -2
  30. junifer/markers/complexity/weighted_perm_entropy.py +2 -2
  31. junifer/markers/ets_rss.py +2 -2
  32. junifer/markers/falff/falff_parcels.py +2 -2
  33. junifer/markers/falff/falff_spheres.py +2 -2
  34. junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +1 -1
  35. junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +1 -1
  36. junifer/markers/functional_connectivity/functional_connectivity_parcels.py +1 -1
  37. junifer/markers/functional_connectivity/functional_connectivity_spheres.py +1 -1
  38. junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +3 -3
  39. junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +2 -2
  40. junifer/markers/parcel_aggregation.py +11 -7
  41. junifer/markers/reho/reho_parcels.py +2 -2
  42. junifer/markers/reho/reho_spheres.py +2 -2
  43. junifer/markers/sphere_aggregation.py +11 -7
  44. junifer/markers/temporal_snr/temporal_snr_parcels.py +2 -2
  45. junifer/markers/temporal_snr/temporal_snr_spheres.py +2 -2
  46. junifer/markers/tests/test_ets_rss.py +3 -3
  47. junifer/markers/tests/test_parcel_aggregation.py +24 -24
  48. junifer/markers/tests/test_sphere_aggregation.py +6 -6
  49. junifer/pipeline/pipeline_component_registry.py +1 -1
  50. junifer/preprocess/confounds/fmriprep_confound_remover.py +6 -3
  51. {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/METADATA +1 -1
  52. {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/RECORD +76 -62
  53. {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/WHEEL +1 -1
  54. junifer/data/coordinates.py +0 -408
  55. junifer/data/masks.py +0 -670
  56. /junifer/data/{VOIs → coordinates/VOIs}/meta/AutobiographicalMemory_VOIs.txt +0 -0
  57. /junifer/data/{VOIs → coordinates/VOIs}/meta/CogAC_VOIs.txt +0 -0
  58. /junifer/data/{VOIs → coordinates/VOIs}/meta/CogAR_VOIs.txt +0 -0
  59. /junifer/data/{VOIs → coordinates/VOIs}/meta/DMNBuckner_VOIs.txt +0 -0
  60. /junifer/data/{VOIs → coordinates/VOIs}/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  61. /junifer/data/{VOIs → coordinates/VOIs}/meta/Empathy_VOIs.txt +0 -0
  62. /junifer/data/{VOIs → coordinates/VOIs}/meta/Motor_VOIs.txt +0 -0
  63. /junifer/data/{VOIs → coordinates/VOIs}/meta/MultiTask_VOIs.txt +0 -0
  64. /junifer/data/{VOIs → coordinates/VOIs}/meta/PhysioStress_VOIs.txt +0 -0
  65. /junifer/data/{VOIs → coordinates/VOIs}/meta/Power2011_MNI_VOIs.txt +0 -0
  66. /junifer/data/{VOIs → coordinates/VOIs}/meta/Power2013_MNI_VOIs.tsv +0 -0
  67. /junifer/data/{VOIs → coordinates/VOIs}/meta/Rew_VOIs.txt +0 -0
  68. /junifer/data/{VOIs → coordinates/VOIs}/meta/Somatosensory_VOIs.txt +0 -0
  69. /junifer/data/{VOIs → coordinates/VOIs}/meta/ToM_VOIs.txt +0 -0
  70. /junifer/data/{VOIs → coordinates/VOIs}/meta/VigAtt_VOIs.txt +0 -0
  71. /junifer/data/{VOIs → coordinates/VOIs}/meta/WM_VOIs.txt +0 -0
  72. /junifer/data/{VOIs → coordinates/VOIs}/meta/eMDN_VOIs.txt +0 -0
  73. /junifer/data/{VOIs → coordinates/VOIs}/meta/eSAD_VOIs.txt +0 -0
  74. /junifer/data/{VOIs → coordinates/VOIs}/meta/extDMN_VOIs.txt +0 -0
  75. {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/AUTHORS.rst +0 -0
  76. {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/LICENSE.md +0 -0
  77. {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/entry_points.txt +0 -0
  78. {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  junifer/__init__.py,sha256=2McgH1yNue6Z1V26-uN_mfMjbTcx4CLhym-DMBl5xA4,266
2
2
  junifer/__init__.pyi,sha256=uPLuY27S7AY4kFzJX0ncCpzHnWJdztveMJpY3Di-wwQ,482
3
- junifer/_version.py,sha256=kxb4jDdB46TYAsROV8U-peWvw8kJsVsZHpoSPS_JLT0,428
3
+ junifer/_version.py,sha256=3Rg3rnSlDZ28mFFdWqzgj1pw9KotN5k2vqz_IgbP7SM,428
4
4
  junifer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  junifer/stats.py,sha256=BjQb2lfTGDP9l4UuQYmJFcJJNRfbJDGlNvC06SJaDDE,6237
6
6
  junifer/api/__init__.py,sha256=aAXW_KAEGQ8aAP5Eni2G1R4MWBF7UgjKOgM6akLuJco,252
@@ -70,40 +70,54 @@ junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py,sha256=8jxpNZelXwpJG
70
70
  junifer/configs/juseless/datagrabbers/tests/test_ucla.py,sha256=NfEKlpaMNImiPLGyETDDCMoWZ7_oHGsiVAbQNYsfi3o,3252
71
71
  junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py,sha256=b9hjc1mgO--PSRC3id2EzzfE2yWNsuZ2UI47a6sfGZU,1025
72
72
  junifer/data/__init__.py,sha256=xJDI2QKtdjcNzpd1oVFM3guh1SFHM6jKstl7pFmzOuk,267
73
- junifer/data/__init__.pyi,sha256=p7vnpEIYvh6rbaMNXJRt1V22efudAW0uw2Y-34gmYoU,798
74
- junifer/data/coordinates.py,sha256=1HH2Kz5nzZKN6-wJRmYotPH76fPaL1yYbCt8AhONogk,12496
75
- junifer/data/masks.py,sha256=omKOJLnUpmI1yVUkckWy9HhzbFZuYbYdOyr49xFvEwU,21640
76
- junifer/data/parcellations.py,sha256=mw1xa6yFWAaVktTkkpCt2ZgSUapZbPwloN2UoPdLzdg,65490
73
+ junifer/data/__init__.pyi,sha256=qYszjUYcbFi_2zO23MnbA2HhTW-Ad2oh1pqPQYd6yt0,542
74
+ junifer/data/_dispatch.py,sha256=_hmlIXuuuLJBbY5VH6lohJzhbMB7KEhFkVFwRDEdR_E,6189
75
+ junifer/data/pipeline_data_registry_base.py,sha256=_3NheI2Wu5RuKI87WwR1bRzcNyZv_0UcL9q07jmPdh8,1922
77
76
  junifer/data/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
77
  junifer/data/template_spaces.py,sha256=9uZuFztBGNZk3mhUI2h0oQMajjx6Wv31Fx11pGlDI20,6510
79
- junifer/data/utils.py,sha256=dIdhCJMJHoXsjTjEMi2b-NXyCiSKsFZQt-5Ca00Obd4,1330
80
- junifer/data/VOIs/meta/AutobiographicalMemory_VOIs.txt,sha256=9af38naeL18Tlt_gy_ep6vyTAxOB336JYjbo5FvP8PQ,686
81
- junifer/data/VOIs/meta/CogAC_VOIs.txt,sha256=Sr5_E712OLdeQRyUcDNM0wLBvZIyO6gc9Q7KkyJHX1A,398
82
- junifer/data/VOIs/meta/CogAR_VOIs.txt,sha256=t3NLwEVUZTPP34p15SaB3UInLrQyK-7Qc4iLBuQlZu8,189
83
- junifer/data/VOIs/meta/DMNBuckner_VOIs.txt,sha256=2trjgKF00PnCxTtfCXYmr-J7P_Jl-iX_qUocmzOR1nk,86
84
- junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt,sha256=rIh9-OCBG0if2v1V4CeK27ZDVXPg6A2sFSqcwHZ1i3Y,3372
85
- junifer/data/VOIs/meta/Empathy_VOIs.txt,sha256=8rwZkEe-TrI7vT_ArzqIMSSlkGvg3RJG3PlHoxZKYjU,486
86
- junifer/data/VOIs/meta/Motor_VOIs.txt,sha256=NFpqgxlSrt9x3Tb9vn1ISogc684rRgVQbFPlifmI8S4,219
87
- junifer/data/VOIs/meta/MultiTask_VOIs.txt,sha256=T2f7_9qWpJcfMic-Pgg4VyNDrcNDOzN9kE81WM_6elk,220
88
- junifer/data/VOIs/meta/PhysioStress_VOIs.txt,sha256=6hLYGMPFFnbhtu_9J3_hDul0LfUYAwhygzdLLG6R0qU,378
89
- junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt,sha256=0tLVEmCEUjwJ7Rsdibv2qxilc2u-jvoBgCbOs7ax6iU,3836
90
- junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv,sha256=FERfBfExvbBWQxOJ4xRITiFB1rL4O4PpUeHFKPS03Fk,3836
91
- junifer/data/VOIs/meta/Rew_VOIs.txt,sha256=dCYre7kP4Ca-S52W0weU7N2UUZM8522WYlb9d7kUo-A,569
92
- junifer/data/VOIs/meta/Somatosensory_VOIs.txt,sha256=OylWpfoluG65whXqEODQ5qvreMdYXBQskMjmnvA2fYc,295
93
- junifer/data/VOIs/meta/ToM_VOIs.txt,sha256=sMSqMCe6p0MGwIWEGkelMWuFH5sfpJ8ONjGlqmRe_Vw,323
94
- junifer/data/VOIs/meta/VigAtt_VOIs.txt,sha256=EPklcFTcfKnuI08QjYIrE_87BSQLipU_VZYRWuSXhY8,353
95
- junifer/data/VOIs/meta/WM_VOIs.txt,sha256=6uyH5nsv9i5bKS_aEYCgg3wgE7hjw5DI1gD37lUR5Zg,518
96
- junifer/data/VOIs/meta/eMDN_VOIs.txt,sha256=p5D4GdBuGl1d5IbXhsuj3XIU6UGMxhzCR-T8Dwfxz30,382
97
- junifer/data/VOIs/meta/eSAD_VOIs.txt,sha256=DwgDEFSZoAojG5RP6HpSvlRPpXItBzx8ms-1zoSxKRk,268
98
- junifer/data/VOIs/meta/extDMN_VOIs.txt,sha256=Ogx1QvqZcnXDM3ncF2ha78br8xwQ5wklSjHygtoLpyI,317
78
+ junifer/data/utils.py,sha256=R-AMuerRiJLU4aMK9_WWXFJn2yOuXtZ-YKrdHvFjZf4,1454
79
+ junifer/data/coordinates/__init__.py,sha256=ffM8rwcHLgHAWixJbKrATrbUKzX940V1UF6RAxZdUMg,186
80
+ junifer/data/coordinates/__init__.pyi,sha256=Z-Ti5XD3HigkZ8uYN6oYsLqw40-F1GvTVQ5QAy08Wng,88
81
+ junifer/data/coordinates/_ants_coordinates_warper.py,sha256=Q08zC0MBQPwj94V8G6ZGdRoYA7V3ACNCDlcFlLXc0j8,2809
82
+ junifer/data/coordinates/_coordinates.py,sha256=SVBhFdESAafQ1Vi4LfPaQxwx4s_PxBCjpq3OyQ1akbc,11953
83
+ junifer/data/coordinates/_fsl_coordinates_warper.py,sha256=9R0JiyYWXogMr1i6DLepXkjb1aeTZ3CUoxvAPuxNGls,2568
84
+ junifer/data/coordinates/VOIs/meta/AutobiographicalMemory_VOIs.txt,sha256=9af38naeL18Tlt_gy_ep6vyTAxOB336JYjbo5FvP8PQ,686
85
+ junifer/data/coordinates/VOIs/meta/CogAC_VOIs.txt,sha256=Sr5_E712OLdeQRyUcDNM0wLBvZIyO6gc9Q7KkyJHX1A,398
86
+ junifer/data/coordinates/VOIs/meta/CogAR_VOIs.txt,sha256=t3NLwEVUZTPP34p15SaB3UInLrQyK-7Qc4iLBuQlZu8,189
87
+ junifer/data/coordinates/VOIs/meta/DMNBuckner_VOIs.txt,sha256=2trjgKF00PnCxTtfCXYmr-J7P_Jl-iX_qUocmzOR1nk,86
88
+ junifer/data/coordinates/VOIs/meta/Dosenbach2010_MNI_VOIs.txt,sha256=rIh9-OCBG0if2v1V4CeK27ZDVXPg6A2sFSqcwHZ1i3Y,3372
89
+ junifer/data/coordinates/VOIs/meta/Empathy_VOIs.txt,sha256=8rwZkEe-TrI7vT_ArzqIMSSlkGvg3RJG3PlHoxZKYjU,486
90
+ junifer/data/coordinates/VOIs/meta/Motor_VOIs.txt,sha256=NFpqgxlSrt9x3Tb9vn1ISogc684rRgVQbFPlifmI8S4,219
91
+ junifer/data/coordinates/VOIs/meta/MultiTask_VOIs.txt,sha256=T2f7_9qWpJcfMic-Pgg4VyNDrcNDOzN9kE81WM_6elk,220
92
+ junifer/data/coordinates/VOIs/meta/PhysioStress_VOIs.txt,sha256=6hLYGMPFFnbhtu_9J3_hDul0LfUYAwhygzdLLG6R0qU,378
93
+ junifer/data/coordinates/VOIs/meta/Power2011_MNI_VOIs.txt,sha256=0tLVEmCEUjwJ7Rsdibv2qxilc2u-jvoBgCbOs7ax6iU,3836
94
+ junifer/data/coordinates/VOIs/meta/Power2013_MNI_VOIs.tsv,sha256=FERfBfExvbBWQxOJ4xRITiFB1rL4O4PpUeHFKPS03Fk,3836
95
+ junifer/data/coordinates/VOIs/meta/Rew_VOIs.txt,sha256=dCYre7kP4Ca-S52W0weU7N2UUZM8522WYlb9d7kUo-A,569
96
+ junifer/data/coordinates/VOIs/meta/Somatosensory_VOIs.txt,sha256=OylWpfoluG65whXqEODQ5qvreMdYXBQskMjmnvA2fYc,295
97
+ junifer/data/coordinates/VOIs/meta/ToM_VOIs.txt,sha256=sMSqMCe6p0MGwIWEGkelMWuFH5sfpJ8ONjGlqmRe_Vw,323
98
+ junifer/data/coordinates/VOIs/meta/VigAtt_VOIs.txt,sha256=EPklcFTcfKnuI08QjYIrE_87BSQLipU_VZYRWuSXhY8,353
99
+ junifer/data/coordinates/VOIs/meta/WM_VOIs.txt,sha256=6uyH5nsv9i5bKS_aEYCgg3wgE7hjw5DI1gD37lUR5Zg,518
100
+ junifer/data/coordinates/VOIs/meta/eMDN_VOIs.txt,sha256=p5D4GdBuGl1d5IbXhsuj3XIU6UGMxhzCR-T8Dwfxz30,382
101
+ junifer/data/coordinates/VOIs/meta/eSAD_VOIs.txt,sha256=DwgDEFSZoAojG5RP6HpSvlRPpXItBzx8ms-1zoSxKRk,268
102
+ junifer/data/coordinates/VOIs/meta/extDMN_VOIs.txt,sha256=Ogx1QvqZcnXDM3ncF2ha78br8xwQ5wklSjHygtoLpyI,317
103
+ junifer/data/coordinates/tests/test_coordinates.py,sha256=_c2P4oaDGpsmui5gJBe_jN6HLGiKxONkYPR69sRBUlU,4219
104
+ junifer/data/masks/__init__.py,sha256=eEEhHglyVEx1LrqwXjq3cOmjf4sTsgBstRx5-k7zIQU,180
105
+ junifer/data/masks/__init__.pyi,sha256=lcgr8gmWDPibC4RxnWBXb8DDpIkO73Aax09u6VXiJJI,114
106
+ junifer/data/masks/_ants_mask_warper.py,sha256=6bBqFO9HNoYG5eYw4IVNZEv2sL58Koz-YXCdpM7U6NQ,4937
107
+ junifer/data/masks/_fsl_mask_warper.py,sha256=mxxJy4WYbbMHEZSpNaBL1RDT4H0RmhA4u8fp7oOW_k4,2567
108
+ junifer/data/masks/_masks.py,sha256=ku9DX2FFo1Ndjzvh-SZzcSK_--eF46H1zcS-1SMsfvg,20953
109
+ junifer/data/masks/tests/test_masks.py,sha256=RDYe8Z46M_hHdZn3hOvdqQXqiMlxJ6454gD3d1ee3zM,16132
99
110
  junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz,sha256=jcX1pDOrDsoph8cPMNFVKH5gZYio5G4rJNpOFXm9wJI,946636
100
111
  junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz,sha256=j6EY8EtRnUuRxeKgD65Q6B0GPEPIALKDJEIje1TfnAU,88270
101
112
  junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz,sha256=crb_y7YO1vjjf2PwbRJUm8KamPK6fx1y0B_l-E3g8FY,12862
102
113
  junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz,sha256=jfMe_4H9XEnArYms5bSQbqS2V1_HbLHTfI5amQa_Pes,8700
103
- junifer/data/tests/test_coordinates.py,sha256=BNkz9qFbnwAI0oVlIm_XrT-z4Vsia_rMtMVaoFXT6mU,4328
114
+ junifer/data/parcellations/__init__.py,sha256=6-Ysil3NyZ69V6rWx4RO15_d-iDKizfbHuxSjsHNt24,188
115
+ junifer/data/parcellations/__init__.pyi,sha256=lhBHTbMDizzqUqVHrx2eyfPFodrTBgMFeTgxfESSkQ8,140
116
+ junifer/data/parcellations/_ants_parcellation_warper.py,sha256=1oOY_O0Ft0NOkGjk4Cx8lyChy7QYJRZbOtdQfDpo4jI,5399
117
+ junifer/data/parcellations/_fsl_parcellation_warper.py,sha256=PwGXT1fEchjIIyQJVr53Ksssf6hHJTtJwgJj8t65LTA,2839
118
+ junifer/data/parcellations/_parcellations.py,sha256=6aU7CaOixDB-jhe1AW-l6STpOtniNduL-bFUH6m3Lgs,65773
119
+ junifer/data/parcellations/tests/test_parcellations.py,sha256=43h7lR7nEvo9vTK-AeUDMk0XdGTqyzQI8isYl8dWw6s,38339
104
120
  junifer/data/tests/test_data_utils.py,sha256=_DaiC8K79gs9HFHxr-udNeE2YTM6JA0-1i-K2cqK9qA,1087
105
- junifer/data/tests/test_masks.py,sha256=pL42xTzrvy0qLCqpG5p5CdCCqjJ9n5nz7BCUofydfag,15723
106
- junifer/data/tests/test_parcellations.py,sha256=ZEU1VHIK0AyxpclcJhG_0rQU0phaBU_dHP7Erfi3mN8,38222
107
121
  junifer/data/tests/test_template_spaces.py,sha256=PJulN7xHpAcSOTY-UzTG_WPywZEBSlAZGiNG4gzk1_8,3144
108
122
  junifer/datagrabber/__init__.py,sha256=EHIK-lbjuvkt0V8ypFvLSt85OAAXSkaxBmVlCbNNz8M,323
109
123
  junifer/datagrabber/__init__.pyi,sha256=zOQE4TaCKXBTHnNqgmECtsszWIOHYiQ1CUEeXXFU9F4,832
@@ -167,22 +181,22 @@ junifer/markers/__init__.py,sha256=wHAxljlZppxgXimSJw21mp9oUYYyaID4LYfeBolva30,3
167
181
  junifer/markers/__init__.pyi,sha256=9a72D9k6esTzLvmvULXHOeaQtIchjtN7VELpCeaddsM,957
168
182
  junifer/markers/base.py,sha256=__Z0owDdjTwb7alQneOeoaUqaeCVbHwFRnaRZERi37M,8364
169
183
  junifer/markers/brainprint.py,sha256=WqK78RVaFX1e0AcwpkNzCUEZWRSMgoMCX1-wNOXDhmk,15116
170
- junifer/markers/ets_rss.py,sha256=4b1rUIMt4RISNSMQqATJadYheyT-YOnadWZDwGsFELk,4273
171
- junifer/markers/parcel_aggregation.py,sha256=WKS_GILu80JF6IMK0BsHLvq7NefqlHt6u37b2lOx7_Q,8349
184
+ junifer/markers/ets_rss.py,sha256=xbAO0T3k12XMuzf88OMEDaFh0yytIs-2OVkLABMLN6A,4256
185
+ junifer/markers/parcel_aggregation.py,sha256=BUDjmhSKQTUnk7h4wwsYyy_LP1KVkuj77hisCsyQcdc,8394
172
186
  junifer/markers/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
- junifer/markers/sphere_aggregation.py,sha256=E_f6bEf_EzuK1WDreO1Hstsp2hXTwaVBysbVX9gnX2Y,7910
187
+ junifer/markers/sphere_aggregation.py,sha256=hvHDBrkS2cE30TmYJVcy_jPR5OFnask-JqHP9Pqy0vM,7972
174
188
  junifer/markers/utils.py,sha256=b6Bt_isqsOD2OF7oHvEpHyilauxYZzyz8YcbGWq6J4A,3833
175
189
  junifer/markers/complexity/__init__.py,sha256=6ZoTQy7hU_vnH65VlJbi61VfPAdg-RpuV84aXhzr8j0,552
176
190
  junifer/markers/complexity/__init__.pyi,sha256=I2IbSuKnUEf03Yunv884ASBxKjQ9_fenACccjaxTkyc,495
177
191
  junifer/markers/complexity/complexity_base.py,sha256=_JIqrglcPG8lEzCdM27o0KLOyLcncebk_YVBq_-pPak,4165
178
- junifer/markers/complexity/hurst_exponent.py,sha256=gx8ZRzfJq6UIwnfPFXhZrHdMuhWO-arqM12iZx7ZzBo,4697
179
- junifer/markers/complexity/multiscale_entropy_auc.py,sha256=6FbRHA1CAPaZQNUL6VZsjODDDMUPpCb9CN2qQWE_U50,4928
180
- junifer/markers/complexity/perm_entropy.py,sha256=WPE4bdPZ9_FyCemR3C30mdOxQDYrM0N3uZz3-2DYmrc,4446
192
+ junifer/markers/complexity/hurst_exponent.py,sha256=ypdKo7MFQeHsJnqQX2PtD0W3Vx1p3_f0xSD6rgr1wns,4654
193
+ junifer/markers/complexity/multiscale_entropy_auc.py,sha256=fHVFt9KL3d2on0_35lPG-eeLK_2dKqbJC9ybIG49eYo,4885
194
+ junifer/markers/complexity/perm_entropy.py,sha256=kP5dREqGfMe8BS3MGGiOSbAsIJVkCooVQ8cH6jOadLI,4403
181
195
  junifer/markers/complexity/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
- junifer/markers/complexity/range_entropy.py,sha256=Bhc5gvsM8BS9FQIAHWiFzySMuOz8nkcFWGrxUxDxDKI,4577
183
- junifer/markers/complexity/range_entropy_auc.py,sha256=PuuyluXhzghPY66er-bWIlDMEFyHMfFTFtY_JhrVmPs,5060
184
- junifer/markers/complexity/sample_entropy.py,sha256=a-4qBavXNTSC-JnnCJBnGJu1Wwn5s0pNjfeFrXp-3qc,4528
185
- junifer/markers/complexity/weighted_perm_entropy.py,sha256=bMQOlgvOrIimFmlAhKCqutOewTNc3xMF4hZuhiB-Vj8,4580
196
+ junifer/markers/complexity/range_entropy.py,sha256=AbKmDM435JzvsEPktZFfTiiPjfR-ztnCZyPJ-Lp_Heg,4534
197
+ junifer/markers/complexity/range_entropy_auc.py,sha256=1cDMItM30uP4WkIR7Z-jtdB5807TeKp7huXHW5o0vvA,5017
198
+ junifer/markers/complexity/sample_entropy.py,sha256=_ipcIX9b833hJa7sg9d5qnjnn6nd3SNwsZOQfVnF8Vg,4485
199
+ junifer/markers/complexity/weighted_perm_entropy.py,sha256=U04g-apF-6abVa5LPyMSutbIxWBRuTRj4t9mtA0rn0s,4537
186
200
  junifer/markers/complexity/tests/test_complexity_base.py,sha256=0E0AjjBqenIb6ZzK-EMie24J4vVjWUjAPfkvvognu9Y,453
187
201
  junifer/markers/complexity/tests/test_hurst_exponent.py,sha256=s1G8xF5rBc0TgWbe7nKFgcwlAjUb1Yabw3ALEcXYBj0,2311
188
202
  junifer/markers/complexity/tests/test_multiscale_entropy_auc.py,sha256=UDScZLPYc1S1kpL04_Rcj2U_dgRhq2VzNOEDv5O8WGE,2382
@@ -196,51 +210,51 @@ junifer/markers/falff/__init__.pyi,sha256=X-q2zBjUX0imQ37yN2Cg5gKfDvq8sh_9y2hRH4
196
210
  junifer/markers/falff/_afni_falff.py,sha256=QNi_4MU4_sfnfXedrYHT-kn17KCDE6a7ELfSGmRZPmA,4521
197
211
  junifer/markers/falff/_junifer_falff.py,sha256=Datf23VxbiD6ZiC-3tANN9MMVHuZKzQx04nX1GXA25c,4417
198
212
  junifer/markers/falff/falff_base.py,sha256=1VjEZMd7BpXDc2subm0VzZNxFp6uxMb9QjBmMC6tDVg,4903
199
- junifer/markers/falff/falff_parcels.py,sha256=raciVfTA8GDfftqnraWVyRsaSsNiz82K1bJkVq9fmME,6046
200
- junifer/markers/falff/falff_spheres.py,sha256=h-A2B8D2KvnvLzBcBeB6Kt3EcXhcfvvIMvOeztiA-Z8,6675
213
+ junifer/markers/falff/falff_parcels.py,sha256=RuACr7qjxJ6fDo8KrbO2fUwpLtzLQXPr9WX4n--XUb0,6029
214
+ junifer/markers/falff/falff_spheres.py,sha256=ZjcPLg29LBfsCLD8iZk0pW0nItH5uLmsn4nlLoUNB78,6668
201
215
  junifer/markers/falff/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
202
216
  junifer/markers/falff/tests/test_falff_parcels.py,sha256=Z3n1i8dkYbdXgouUjfIif9yLv5MubBEdrtAA-a6kRcc,4349
203
217
  junifer/markers/falff/tests/test_falff_spheres.py,sha256=-VLEvFaF8CMCN_7FLYCSfP7MMjy-gm1Zgu13je5Pku8,4373
204
218
  junifer/markers/functional_connectivity/__init__.py,sha256=dGTn69eS7a3rylMQh_wKlO28UmYGjsoDEGu4q5sgQFA,230
205
219
  junifer/markers/functional_connectivity/__init__.pyi,sha256=qfw6WVyE65u-5NZNi0xPa8zZVtkRfFvwyl4jHH2Xl00,539
206
220
  junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py,sha256=V2-WbUOGoCtW32A0VOWO-2G-iBiG5mV88Z2EvTjS3HY,5696
207
- junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py,sha256=nAvTT4ZLqW-uDAQ_r5hT__TbxFTqTkjm4BJ-1YD7a7s,4745
208
- junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py,sha256=atV7iNjnFbIKbzBkzFYtgF0cbetESvv3a5R-SLzrt6Y,5412
221
+ junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py,sha256=4vRiph2nHK6iBQcbhAo6LACp_QLOvA8ADyXSUQvXvfQ,4736
222
+ junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py,sha256=BZYiUv_E3VYCr500zKGeb3q7WpN816UxR0_gRvawkvA,5405
209
223
  junifer/markers/functional_connectivity/functional_connectivity_base.py,sha256=dUv-pfgAhkHuz_zSKClEYeOkcIdhjdJ1fiNvvWhATDg,5639
210
- junifer/markers/functional_connectivity/functional_connectivity_parcels.py,sha256=pefRn1EhYegN1KCs1VvMOe4vj4KO-5kSzXJxoUzHSvw,4213
211
- junifer/markers/functional_connectivity/functional_connectivity_spheres.py,sha256=-N-OO3vl1Djl1nSTJAey_Re3BH2tpyr4UpXfR38ogWw,4946
224
+ junifer/markers/functional_connectivity/functional_connectivity_parcels.py,sha256=lSgzwfQzfLB73CAZNqNpuGuQ-ENcGhG2c_yiVsJY0Pw,4204
225
+ junifer/markers/functional_connectivity/functional_connectivity_spheres.py,sha256=qM82D9h1FmFH8sCfJuA7WEqnzCH-4Lizpk7mQYuf7xA,4939
212
226
  junifer/markers/functional_connectivity/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
227
  junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py,sha256=CP8ZZoTciMoI9c-VVsLF9mJivyzPB6C4mZE0tlL52pI,3231
214
228
  junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py,sha256=y0O-eBjOzUp77g6o_II7D5KB2rKtDz_a_hez-MPDU3M,2482
215
229
  junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py,sha256=NYWe8kdSVVXlluLm074koDE6xw_t0bhPn47kRYMg1vA,2522
216
230
  junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py,sha256=RmPTrG0uLKb5RgdHXUnH6lon60FxN1JCtr-dsTBaX28,522
217
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py,sha256=GiRtQ-cbbmM4_oekGjIDtFaNkmYON_eSf3F4jzS0XCo,3876
218
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py,sha256=Bu2vicoxET-eHYqmfiPtYmFOhBCjBsXO7vv9UzLdYJQ,4143
231
+ junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py,sha256=EVJTTtCws93g3AYVzA0XDIYY_BUMun4v40dsS_YXUBs,3891
232
+ junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py,sha256=OU2FWAH0Gb4gEOF0m1PAoo5xLKVPetNkwV-ssQTZ1Yw,4157
219
233
  junifer/markers/reho/__init__.py,sha256=WZf4A0XaRThjl8SlFOhvTLUfhTHp5koLxZgowsgTSAE,211
220
234
  junifer/markers/reho/__init__.pyi,sha256=_aFb-Ry_EP2OMU6xRL4GlfuDpSl_egHllL-fz7vXjcE,118
221
235
  junifer/markers/reho/_afni_reho.py,sha256=iaZFPJbyB9-QQAZ5-kKxwN0APB5MH85pOAChq-JFLNI,6469
222
236
  junifer/markers/reho/_junifer_reho.py,sha256=7-jD28YQQWb3dfT6SxyYfGugFSq8wi7_2hUA-ryiGAo,9307
223
237
  junifer/markers/reho/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
238
  junifer/markers/reho/reho_base.py,sha256=Tdnl5SJ66p461UJ-UilEGKrMdEPwGMemN_QIQgmc8o8,4065
225
- junifer/markers/reho/reho_parcels.py,sha256=GTYy1cMe0RdAgkvgZnnIGlQ-u3EfkxhRmBloPNUrFuk,6421
226
- junifer/markers/reho/reho_spheres.py,sha256=dTTTksT1iqtPnc0lMtbVU-FmeLAO8Ml6N3fBLGyIaac,7015
239
+ junifer/markers/reho/reho_parcels.py,sha256=tfGasSaAI-ioxVBTD2L_4gJQthoAq5Fp9e5iRS3mXhI,6404
240
+ junifer/markers/reho/reho_spheres.py,sha256=5IcqWfGO4dgBFaWB4s1QIJnt2M3li0VUz5oeQimG_BA,7008
227
241
  junifer/markers/reho/tests/test_reho_parcels.py,sha256=bRtDi91qRcRYaRqqQjuSU6NuNz-KwLVCoTYo-e5VmsI,4075
228
242
  junifer/markers/reho/tests/test_reho_spheres.py,sha256=VyyQ3hhD6ArFc1BmigmAdePACB1EMQlo1mDr2QKvT2I,3989
229
243
  junifer/markers/temporal_snr/__init__.py,sha256=86hNMyaSfWlWOXZ6m9reSDtMIgUaByOXjcxCvo7LmDw,235
230
244
  junifer/markers/temporal_snr/__init__.pyi,sha256=20FhG9ZkAHQfmJ0r5p6fRMxhK8xrFQeFr0cgTrqu3ik,162
231
245
  junifer/markers/temporal_snr/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
246
  junifer/markers/temporal_snr/temporal_snr_base.py,sha256=xWBTrwsrI44DCV5okRaliLJHrlvDs5LkD0xLEIGZcMc,3874
233
- junifer/markers/temporal_snr/temporal_snr_parcels.py,sha256=f85zsqYVox7B4WNGXe8XigBGaVxWannz8EmTc4S7GpQ,3279
234
- junifer/markers/temporal_snr/temporal_snr_spheres.py,sha256=sU0VzxQdr5a1XESUPwPsGF5NAT7EzSLnmPT9nxCKcLA,3987
247
+ junifer/markers/temporal_snr/temporal_snr_parcels.py,sha256=O8kBU-Jzlf12m-DaBLxZtHEVVqBW0jiGlbMgdFk8ots,3262
248
+ junifer/markers/temporal_snr/temporal_snr_spheres.py,sha256=DPh4CziLyMNbdfzqobR2RHx2aKSy6UfZMRS5aGfNuF8,3980
235
249
  junifer/markers/temporal_snr/tests/test_temporal_snr_base.py,sha256=KRln5ibLTJJQ_f3pnioATfwyhK5htGc2o2J7CPcoyfs,426
236
250
  junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py,sha256=JnsLIF0qT4L3JfSIBeHxFsugQ89P9by0CmNwNJiFnZY,2042
237
251
  junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py,sha256=cxYnKreFRauIs3NYaaB1EKeFEHZxPplxOuywWNcUnLg,2175
238
252
  junifer/markers/tests/test_brainprint.py,sha256=fjwGQZk0Or0VUaMxcOr8i_onXRInfspcm3wD_qjqxDs,1588
239
- junifer/markers/tests/test_ets_rss.py,sha256=KCPVx0e1Xcku8ktPjKUXG7OQA6a_dgc7kuzTIVSRff0,2603
253
+ junifer/markers/tests/test_ets_rss.py,sha256=kKjdpn6QlJuE4D-JvFcwp9MlxLYzeS_X_O-egM2d0H0,2618
240
254
  junifer/markers/tests/test_marker_utils.py,sha256=SR3ADWI3uGv4ozYqVu-rMZnJVqP6JnjLBgo6qUm16Wk,1478
241
255
  junifer/markers/tests/test_markers_base.py,sha256=XYe1Z_88h2g1WX6Em4aM8VMyBuCpy5sNHbbpC0I89m4,2979
242
- junifer/markers/tests/test_parcel_aggregation.py,sha256=FkB0O0HjTk1CnLOn-dzNs_9_byUOISRc4jV92shN2Kc,27655
243
- junifer/markers/tests/test_sphere_aggregation.py,sha256=TGn5S7zKK0SJ4nHIxRZQSCpqRBmz7c8Sb8C79dLoHjE,10611
256
+ junifer/markers/tests/test_parcel_aggregation.py,sha256=04OqtY_Z-KW4W1jU5K6GeWnLpBYheM1shcH1Jgw_L3k,27798
257
+ junifer/markers/tests/test_sphere_aggregation.py,sha256=HPaLD6xKdewTt0iANz3nYOD7ZI-g7BqMTiRdV-4sM8M,10669
244
258
  junifer/onthefly/__init__.py,sha256=TA6tPuw54ynDlumb9Ii-2p59hw2rGoCMe1-vQ89JzZ8,238
245
259
  junifer/onthefly/_brainprint.py,sha256=-q5j5xOkuZD_f-pjWi-b8VRqM9ZXDk1TnccuQDfLwz4,3860
246
260
  junifer/onthefly/read_transform.py,sha256=kZ-N_fKe9glaBTjhj_HXrdTtWXGI-fMoBpsawcOgsTw,4340
@@ -248,7 +262,7 @@ junifer/onthefly/tests/test_read_transform.py,sha256=D2C3IpXQHdsJSF07v8rEwGntLGX
248
262
  junifer/pipeline/__init__.py,sha256=rxKQGRwc6_sts1KhVIcVVpuXeiFABf11mQQ2h5jgA3U,194
249
263
  junifer/pipeline/__init__.pyi,sha256=hhcvNcABhtLaUQiZdTjo5sMWC3rtDkwVshL0sxD5JAE,399
250
264
  junifer/pipeline/marker_collection.py,sha256=1xcJqeOZ_IerB7PAMN1itWBv8UR6lUW9xXRoIu4qLXU,5557
251
- junifer/pipeline/pipeline_component_registry.py,sha256=fyGIEv30w01IhLBvKDmnxWtAi-Z9pRq-T1hpamDceyY,9481
265
+ junifer/pipeline/pipeline_component_registry.py,sha256=TVtAFf0QjeES7TFovc6_nUlkczNeQnDpq85aqNr5Gjg,9484
252
266
  junifer/pipeline/pipeline_step_mixin.py,sha256=wakimkG8GC0PWkFHMHIfgzM2yak41xLrzbVRH0oe8D4,7613
253
267
  junifer/pipeline/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
254
268
  junifer/pipeline/singleton.py,sha256=c5U8Xn10MQqaXjlLzxLbw3AmSYW6aTw_iSL0rDkbuMU,1011
@@ -266,7 +280,7 @@ junifer/preprocess/base.py,sha256=v6azVA3RwDe3HriYlcaISOX1A6gYgFUKNzQeIDLx92Q,66
266
280
  junifer/preprocess/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
267
281
  junifer/preprocess/confounds/__init__.py,sha256=L3CquKcndFb2b8yVo-XLi-zsNCe8MMKUN41UOVdooWc,270
268
282
  junifer/preprocess/confounds/__init__.pyi,sha256=iC70cqcWNMX4JM42RcUgKb9YX8ciK8oVERdWWjo-13c,102
269
- junifer/preprocess/confounds/fmriprep_confound_remover.py,sha256=WW4ybrUJJiTHcigRhNxuz1gyAqrSjufL4CinDvjqkAM,20307
283
+ junifer/preprocess/confounds/fmriprep_confound_remover.py,sha256=XVF3CUXk-UX3Jb36bjZLdfE_hfzHize21PFbNXQBBKU,20369
270
284
  junifer/preprocess/confounds/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
271
285
  junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py,sha256=xN9tPkktuRHQtmY1UOP0H_sXT7LXPY282kMgYkoQTFE,19973
272
286
  junifer/preprocess/smoothing/__init__.py,sha256=7aTwvAG522kA76QQwqxwY5zV_6asyPaaH2uSMTaKQls,216
@@ -321,10 +335,10 @@ junifer/utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
321
335
  junifer/utils/tests/test_fs.py,sha256=WQS7cKlKEZ742CIuiOYYpueeAhY9PqlastfDVpVVtvE,923
322
336
  junifer/utils/tests/test_helpers.py,sha256=k5qqfxK8dFyuewTJyR1Qn6-nFaYNuVr0ysc18bfPjyU,929
323
337
  junifer/utils/tests/test_logging.py,sha256=duO4ou365hxwa_kwihFtKPLaL6LC5XHiyhOijrrngbA,8009
324
- junifer-0.0.6.dev175.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
325
- junifer-0.0.6.dev175.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
326
- junifer-0.0.6.dev175.dist-info/METADATA,sha256=CsgsHCA_JZ2DN2_3uysC3HhYOZVpzOouUOgF1l7OJxs,8448
327
- junifer-0.0.6.dev175.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
328
- junifer-0.0.6.dev175.dist-info/entry_points.txt,sha256=6O8ru0BP-SP7YMUZiizFNoaZ2HvJpadO2G7nKk4PwjI,48
329
- junifer-0.0.6.dev175.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
330
- junifer-0.0.6.dev175.dist-info/RECORD,,
338
+ junifer-0.0.6.dev194.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
339
+ junifer-0.0.6.dev194.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
340
+ junifer-0.0.6.dev194.dist-info/METADATA,sha256=6DbhevG928yw2l9pvkrhTN-fDl_Y9GEcgc2GDrNUi7U,8448
341
+ junifer-0.0.6.dev194.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
342
+ junifer-0.0.6.dev194.dist-info/entry_points.txt,sha256=6O8ru0BP-SP7YMUZiizFNoaZ2HvJpadO2G7nKk4PwjI,48
343
+ junifer-0.0.6.dev194.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
344
+ junifer-0.0.6.dev194.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,408 +0,0 @@
1
- """Functions for coordinates manipulation."""
2
-
3
- # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
- # Synchon Mandal <s.mandal@fz-juelich.de>
5
- # License: AGPL
6
-
7
- import typing
8
- from pathlib import Path
9
- from typing import Any, Dict, List, Optional, Tuple, Union
10
-
11
- import numpy as np
12
- import pandas as pd
13
- from numpy.typing import ArrayLike
14
-
15
- from ..pipeline import WorkDirManager
16
- from ..utils import logger, raise_error, run_ext_cmd
17
-
18
-
19
- __all__ = [
20
- "register_coordinates",
21
- "list_coordinates",
22
- "get_coordinates",
23
- "load_coordinates",
24
- ]
25
-
26
-
27
- # Path to the VOIs
28
- _vois_path = Path(__file__).parent / "VOIs"
29
-
30
- # Path to the metadata of the VOIs
31
- _vois_meta_path = _vois_path / "meta"
32
-
33
- # A dictionary containing all supported coordinates and their respective file
34
- # or data.
35
-
36
- # Each entry is a dictionary that must contain at least the following keys:
37
- # * 'space': the coordinates' space (e.g., 'MNI')
38
-
39
- # The built-in coordinates are files that are shipped with the package in the
40
- # data/VOIs directory. The user can also register their own coordinates, which
41
- # will be stored as numpy arrays in the dictionary.
42
- _available_coordinates: Dict[
43
- str, Dict[str, Union[Path, ArrayLike, List[str]]]
44
- ] = {
45
- "CogAC": {
46
- "path": _vois_meta_path / "CogAC_VOIs.txt",
47
- "space": "MNI",
48
- },
49
- "CogAR": {
50
- "path": _vois_meta_path / "CogAR_VOIs.txt",
51
- "space": "MNI",
52
- },
53
- "DMNBuckner": {
54
- "path": _vois_meta_path / "DMNBuckner_VOIs.txt",
55
- "space": "MNI",
56
- },
57
- "eMDN": {
58
- "path": _vois_meta_path / "eMDN_VOIs.txt",
59
- "space": "MNI",
60
- },
61
- "Empathy": {
62
- "path": _vois_meta_path / "Empathy_VOIs.txt",
63
- "space": "MNI",
64
- },
65
- "eSAD": {
66
- "path": _vois_meta_path / "eSAD_VOIs.txt",
67
- "space": "MNI",
68
- },
69
- "extDMN": {
70
- "path": _vois_meta_path / "extDMN_VOIs.txt",
71
- "space": "MNI",
72
- },
73
- "Motor": {
74
- "path": _vois_meta_path / "Motor_VOIs.txt",
75
- "space": "MNI",
76
- },
77
- "MultiTask": {
78
- "path": _vois_meta_path / "MultiTask_VOIs.txt",
79
- "space": "MNI",
80
- },
81
- "PhysioStress": {
82
- "path": _vois_meta_path / "PhysioStress_VOIs.txt",
83
- "space": "MNI",
84
- },
85
- "Rew": {
86
- "path": _vois_meta_path / "Rew_VOIs.txt",
87
- "space": "MNI",
88
- },
89
- "Somatosensory": {
90
- "path": _vois_meta_path / "Somatosensory_VOIs.txt",
91
- "space": "MNI",
92
- },
93
- "ToM": {
94
- "path": _vois_meta_path / "ToM_VOIs.txt",
95
- "space": "MNI",
96
- },
97
- "VigAtt": {
98
- "path": _vois_meta_path / "VigAtt_VOIs.txt",
99
- "space": "MNI",
100
- },
101
- "WM": {
102
- "path": _vois_meta_path / "WM_VOIs.txt",
103
- "space": "MNI",
104
- },
105
- "Power": {
106
- "path": _vois_meta_path / "Power2011_MNI_VOIs.txt",
107
- "space": "MNI",
108
- },
109
- "Power2011": {
110
- "path": _vois_meta_path / "Power2011_MNI_VOIs.txt",
111
- "space": "MNI",
112
- },
113
- "Dosenbach": {
114
- "path": _vois_meta_path / "Dosenbach2010_MNI_VOIs.txt",
115
- "space": "MNI",
116
- },
117
- "Power2013": {
118
- "path": _vois_meta_path / "Power2013_MNI_VOIs.tsv",
119
- "space": "MNI",
120
- },
121
- "AutobiographicalMemory": {
122
- "path": _vois_meta_path / "AutobiographicalMemory_VOIs.txt",
123
- "space": "MNI",
124
- },
125
- }
126
-
127
-
128
- def register_coordinates(
129
- name: str,
130
- coordinates: ArrayLike,
131
- voi_names: List[str],
132
- space: str,
133
- overwrite: Optional[bool] = False,
134
- ) -> None:
135
- """Register a custom user coordinates.
136
-
137
- Parameters
138
- ----------
139
- name : str
140
- The name of the coordinates.
141
- coordinates : numpy.ndarray
142
- The coordinates. This should be a 2-dimensional array with three
143
- columns. Each row corresponds to a volume-of-interest (VOI) and each
144
- column corresponds to a spatial dimension (i.e. x, y, and
145
- z-coordinates).
146
- voi_names : list of str
147
- The names of the VOIs.
148
- space : str
149
- The space of the coordinates, for e.g., "MNI".
150
- overwrite : bool, optional
151
- If True, overwrite an existing list of coordinates with the same name.
152
- Does not apply to built-in coordinates (default False).
153
-
154
- Raises
155
- ------
156
- ValueError
157
- If the coordinates name is already registered and overwrite is set to
158
- False or if the coordinates name is a built-in coordinates or if the
159
- ``coordinates`` is not a 2D array or if coordinate value does not have
160
- 3 components or if the ``voi_names`` shape does not match the
161
- ``coordinates`` shape.
162
- TypeError
163
- If ``coordinates`` is not a ``numpy.ndarray``.
164
-
165
- """
166
- if name in _available_coordinates:
167
- if isinstance(_available_coordinates[name].get("path"), Path):
168
- raise_error(
169
- f"Coordinates {name} already registered as built-in "
170
- "coordinates."
171
- )
172
- if overwrite is True:
173
- logger.info(f"Overwriting coordinates {name}")
174
- else:
175
- raise_error(
176
- f"Coordinates {name} already registered. "
177
- "Set `overwrite=True` to update its value."
178
- )
179
-
180
- if not isinstance(coordinates, np.ndarray):
181
- raise_error(
182
- f"Coordinates must be a `numpy.ndarray`, not {type(coordinates)}.",
183
- klass=TypeError,
184
- )
185
- if coordinates.ndim != 2:
186
- raise_error(
187
- f"Coordinates must be a 2D array, not {coordinates.ndim}D."
188
- )
189
- if coordinates.shape[1] != 3:
190
- raise_error(
191
- f"Each coordinate must have 3 values, not {coordinates.shape[1]} "
192
- )
193
- if len(voi_names) != coordinates.shape[0]:
194
- raise_error(
195
- f"Length of `voi_names` ({len(voi_names)}) does not match the "
196
- f"number of `coordinates` ({coordinates.shape[0]})."
197
- )
198
- _available_coordinates[name] = {
199
- "coords": coordinates,
200
- "voi_names": voi_names,
201
- "space": space,
202
- }
203
-
204
-
205
- def list_coordinates() -> List[str]:
206
- """List all the available coordinates (VOIs).
207
-
208
- Returns
209
- -------
210
- list of str
211
- A list with all available coordinates names.
212
-
213
- """
214
- return sorted(_available_coordinates.keys())
215
-
216
-
217
- def get_coordinates(
218
- coords: str,
219
- target_data: Dict[str, Any],
220
- extra_input: Optional[Dict[str, Any]] = None,
221
- ) -> Tuple[ArrayLike, List[str]]:
222
- """Get coordinates, tailored for the target image.
223
-
224
- Parameters
225
- ----------
226
- coords : str
227
- The name of the coordinates.
228
- target_data : dict
229
- The corresponding item of the data object to which the coordinates
230
- will be applied.
231
- extra_input : dict, optional
232
- The other fields in the data object. Useful for accessing other data
233
- kinds that needs to be used in the computation of coordinates
234
- (default None).
235
-
236
- Returns
237
- -------
238
- numpy.ndarray
239
- The coordinates.
240
- list of str
241
- The names of the VOIs.
242
-
243
- Raises
244
- ------
245
- RuntimeError
246
- If warp / transformation file extension is not ".mat" or ".h5".
247
- ValueError
248
- If ``extra_input`` is None when ``target_data``'s space is native.
249
-
250
- """
251
- # Load the coordinates
252
- seeds, labels, _ = load_coordinates(name=coords)
253
-
254
- # Transform coordinate if target data is native
255
- if target_data["space"] == "native":
256
- # Check for extra inputs
257
- if extra_input is None:
258
- raise_error(
259
- "No extra input provided, requires `Warp` and `T1w` "
260
- "data types in particular for transformation to "
261
- f"{target_data['space']} space for further computation."
262
- )
263
-
264
- # Create component-scoped tempdir
265
- tempdir = WorkDirManager().get_tempdir(prefix="coordinates")
266
-
267
- # Create element-scoped tempdir so that transformed coordinates is
268
- # available later as numpy stores file path reference for
269
- # loading on computation
270
- element_tempdir = WorkDirManager().get_element_tempdir(
271
- prefix="coordinates"
272
- )
273
-
274
- # Check for warp file type to use correct tool
275
- warp_file_ext = extra_input["Warp"]["path"].suffix
276
- if warp_file_ext == ".mat":
277
- # Save existing coordinates to a component-scoped tempfile
278
- pretransform_coordinates_path = (
279
- tempdir / "pretransform_coordinates.txt"
280
- )
281
- np.savetxt(pretransform_coordinates_path, seeds)
282
-
283
- # Create an element-scoped tempfile for transformed coordinates
284
- # output
285
- transformed_coords_path = (
286
- element_tempdir / "coordinates_transformed.txt"
287
- )
288
-
289
- logger.debug("Using FSL for coordinates transformation")
290
- # Set img2imgcoord command
291
- img2imgcoord_cmd = [
292
- "cat",
293
- f"{pretransform_coordinates_path.resolve()}",
294
- "| img2imgcoord -mm",
295
- f"-src {target_data['path'].resolve()}",
296
- f"-dest {target_data['reference_path'].resolve()}",
297
- f"-warp {extra_input['Warp']['path'].resolve()}",
298
- f"> {transformed_coords_path.resolve()};",
299
- f"sed -i 1d {transformed_coords_path.resolve()}",
300
- ]
301
- # Call img2imgcoord
302
- run_ext_cmd(name="img2imgcoord", cmd=img2imgcoord_cmd)
303
-
304
- # Load coordinates
305
- seeds = np.loadtxt(transformed_coords_path)
306
-
307
- elif warp_file_ext == ".h5":
308
- # Save existing coordinates to a component-scoped tempfile
309
- pretransform_coordinates_path = (
310
- tempdir / "pretransform_coordinates.csv"
311
- )
312
- np.savetxt(
313
- pretransform_coordinates_path,
314
- seeds,
315
- delimiter=",",
316
- # Add header while saving to make ANTs work
317
- header="x,y,z",
318
- )
319
-
320
- # Create an element-scoped tempfile for transformed coordinates
321
- # output
322
- transformed_coords_path = (
323
- element_tempdir / "coordinates_transformed.csv"
324
- )
325
-
326
- logger.debug("Using ANTs for coordinates transformation")
327
- # Set antsApplyTransformsToPoints command
328
- apply_transforms_to_points_cmd = [
329
- "antsApplyTransformsToPoints",
330
- "-d 3",
331
- "-p 1",
332
- "-f 0",
333
- f"-i {pretransform_coordinates_path.resolve()}",
334
- f"-o {transformed_coords_path.resolve()}",
335
- f"-t {extra_input['Warp']['path'].resolve()};",
336
- ]
337
- # Call antsApplyTransformsToPoints
338
- run_ext_cmd(
339
- name="antsApplyTransformsToPoints",
340
- cmd=apply_transforms_to_points_cmd,
341
- )
342
-
343
- # Load coordinates
344
- seeds = np.loadtxt(
345
- # Skip header when reading
346
- transformed_coords_path,
347
- delimiter=",",
348
- skiprows=1,
349
- )
350
-
351
- else:
352
- raise_error(
353
- msg=(
354
- "Unknown warp / transformation file extension: "
355
- f"{warp_file_ext}"
356
- ),
357
- klass=RuntimeError,
358
- )
359
-
360
- # Delete tempdir
361
- WorkDirManager().delete_tempdir(tempdir)
362
-
363
- return seeds, labels
364
-
365
-
366
- def load_coordinates(name: str) -> Tuple[ArrayLike, List[str], str]:
367
- """Load coordinates.
368
-
369
- Parameters
370
- ----------
371
- name : str
372
- The name of the coordinates.
373
-
374
- Returns
375
- -------
376
- numpy.ndarray
377
- The coordinates.
378
- list of str
379
- The names of the VOIs.
380
- str
381
- The space of the coordinates.
382
-
383
- Raises
384
- ------
385
- ValueError
386
- If ``name`` is invalid.
387
-
388
- """
389
- # Check for valid coordinates name
390
- if name not in _available_coordinates:
391
- raise_error(
392
- f"Coordinates {name} not found. "
393
- f"Valid options are: {list_coordinates()}"
394
- )
395
- # Load coordinates
396
- t_coord = _available_coordinates[name]
397
- if isinstance(t_coord.get("path"), Path):
398
- # Load via pandas
399
- df_coords = pd.read_csv(t_coord["path"], sep="\t", header=None)
400
- coords = df_coords.iloc[:, [0, 1, 2]].to_numpy()
401
- names = list(df_coords.iloc[:, [3]].values[:, 0])
402
- else:
403
- coords = t_coord["coords"]
404
- coords = typing.cast(ArrayLike, coords)
405
- names = t_coord["voi_names"]
406
- names = typing.cast(List[str], names)
407
-
408
- return coords, names, t_coord["space"]