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.
- junifer/_version.py +2 -2
- junifer/data/__init__.pyi +17 -31
- junifer/data/_dispatch.py +251 -0
- junifer/data/coordinates/__init__.py +9 -0
- junifer/data/coordinates/__init__.pyi +5 -0
- junifer/data/coordinates/_ants_coordinates_warper.py +96 -0
- junifer/data/coordinates/_coordinates.py +356 -0
- junifer/data/coordinates/_fsl_coordinates_warper.py +83 -0
- junifer/data/{tests → coordinates/tests}/test_coordinates.py +25 -31
- junifer/data/masks/__init__.py +9 -0
- junifer/data/masks/__init__.pyi +6 -0
- junifer/data/masks/_ants_mask_warper.py +144 -0
- junifer/data/masks/_fsl_mask_warper.py +87 -0
- junifer/data/masks/_masks.py +624 -0
- junifer/data/{tests → masks/tests}/test_masks.py +63 -58
- junifer/data/parcellations/__init__.py +9 -0
- junifer/data/parcellations/__init__.pyi +6 -0
- junifer/data/parcellations/_ants_parcellation_warper.py +154 -0
- junifer/data/parcellations/_fsl_parcellation_warper.py +91 -0
- junifer/data/{parcellations.py → parcellations/_parcellations.py} +450 -473
- junifer/data/{tests → parcellations/tests}/test_parcellations.py +73 -81
- junifer/data/pipeline_data_registry_base.py +74 -0
- junifer/data/utils.py +4 -0
- junifer/markers/complexity/hurst_exponent.py +2 -2
- junifer/markers/complexity/multiscale_entropy_auc.py +2 -2
- junifer/markers/complexity/perm_entropy.py +2 -2
- junifer/markers/complexity/range_entropy.py +2 -2
- junifer/markers/complexity/range_entropy_auc.py +2 -2
- junifer/markers/complexity/sample_entropy.py +2 -2
- junifer/markers/complexity/weighted_perm_entropy.py +2 -2
- junifer/markers/ets_rss.py +2 -2
- junifer/markers/falff/falff_parcels.py +2 -2
- junifer/markers/falff/falff_spheres.py +2 -2
- junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +1 -1
- junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +1 -1
- junifer/markers/functional_connectivity/functional_connectivity_parcels.py +1 -1
- junifer/markers/functional_connectivity/functional_connectivity_spheres.py +1 -1
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +3 -3
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +2 -2
- junifer/markers/parcel_aggregation.py +11 -7
- junifer/markers/reho/reho_parcels.py +2 -2
- junifer/markers/reho/reho_spheres.py +2 -2
- junifer/markers/sphere_aggregation.py +11 -7
- junifer/markers/temporal_snr/temporal_snr_parcels.py +2 -2
- junifer/markers/temporal_snr/temporal_snr_spheres.py +2 -2
- junifer/markers/tests/test_ets_rss.py +3 -3
- junifer/markers/tests/test_parcel_aggregation.py +24 -24
- junifer/markers/tests/test_sphere_aggregation.py +6 -6
- junifer/pipeline/pipeline_component_registry.py +1 -1
- junifer/preprocess/confounds/fmriprep_confound_remover.py +6 -3
- {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/METADATA +1 -1
- {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/RECORD +76 -62
- {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/WHEEL +1 -1
- junifer/data/coordinates.py +0 -408
- junifer/data/masks.py +0 -670
- /junifer/data/{VOIs → coordinates/VOIs}/meta/AutobiographicalMemory_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/CogAC_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/CogAR_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/DMNBuckner_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/Empathy_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/Motor_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/MultiTask_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/PhysioStress_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/Power2011_MNI_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/Power2013_MNI_VOIs.tsv +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/Rew_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/Somatosensory_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/ToM_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/VigAtt_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/WM_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/eMDN_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/eSAD_VOIs.txt +0 -0
- /junifer/data/{VOIs → coordinates/VOIs}/meta/extDMN_VOIs.txt +0 -0
- {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/AUTHORS.rst +0 -0
- {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/LICENSE.md +0 -0
- {junifer-0.0.6.dev175.dist-info → junifer-0.0.6.dev194.dist-info}/entry_points.txt +0 -0
- {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=
|
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=
|
74
|
-
junifer/data/
|
75
|
-
junifer/data/
|
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=
|
80
|
-
junifer/data/
|
81
|
-
junifer/data/
|
82
|
-
junifer/data/
|
83
|
-
junifer/data/
|
84
|
-
junifer/data/
|
85
|
-
junifer/data/VOIs/meta/
|
86
|
-
junifer/data/VOIs/meta/
|
87
|
-
junifer/data/VOIs/meta/
|
88
|
-
junifer/data/VOIs/meta/
|
89
|
-
junifer/data/VOIs/meta/
|
90
|
-
junifer/data/VOIs/meta/
|
91
|
-
junifer/data/VOIs/meta/
|
92
|
-
junifer/data/VOIs/meta/
|
93
|
-
junifer/data/VOIs/meta/
|
94
|
-
junifer/data/VOIs/meta/
|
95
|
-
junifer/data/VOIs/meta/
|
96
|
-
junifer/data/VOIs/meta/
|
97
|
-
junifer/data/VOIs/meta/
|
98
|
-
junifer/data/VOIs/meta/
|
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/
|
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=
|
171
|
-
junifer/markers/parcel_aggregation.py,sha256=
|
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=
|
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=
|
179
|
-
junifer/markers/complexity/multiscale_entropy_auc.py,sha256=
|
180
|
-
junifer/markers/complexity/perm_entropy.py,sha256=
|
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=
|
183
|
-
junifer/markers/complexity/range_entropy_auc.py,sha256=
|
184
|
-
junifer/markers/complexity/sample_entropy.py,sha256=
|
185
|
-
junifer/markers/complexity/weighted_perm_entropy.py,sha256=
|
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=
|
200
|
-
junifer/markers/falff/falff_spheres.py,sha256=
|
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=
|
208
|
-
junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py,sha256=
|
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=
|
211
|
-
junifer/markers/functional_connectivity/functional_connectivity_spheres.py,sha256
|
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=
|
218
|
-
junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py,sha256=
|
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=
|
226
|
-
junifer/markers/reho/reho_spheres.py,sha256=
|
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=
|
234
|
-
junifer/markers/temporal_snr/temporal_snr_spheres.py,sha256=
|
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=
|
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=
|
243
|
-
junifer/markers/tests/test_sphere_aggregation.py,sha256=
|
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=
|
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=
|
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.
|
325
|
-
junifer-0.0.6.
|
326
|
-
junifer-0.0.6.
|
327
|
-
junifer-0.0.6.
|
328
|
-
junifer-0.0.6.
|
329
|
-
junifer-0.0.6.
|
330
|
-
junifer-0.0.6.
|
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,,
|
junifer/data/coordinates.py
DELETED
@@ -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"]
|