rapidtide 2.9.5__py3-none-any.whl → 3.1.3__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 (405) hide show
  1. cloud/gmscalc-HCPYA +1 -1
  2. cloud/mount-and-run +2 -0
  3. cloud/rapidtide-HCPYA +3 -3
  4. rapidtide/Colortables.py +538 -38
  5. rapidtide/OrthoImageItem.py +1094 -51
  6. rapidtide/RapidtideDataset.py +1709 -114
  7. rapidtide/__init__.py +0 -8
  8. rapidtide/_version.py +4 -4
  9. rapidtide/calccoherence.py +242 -97
  10. rapidtide/calcnullsimfunc.py +240 -140
  11. rapidtide/calcsimfunc.py +314 -129
  12. rapidtide/correlate.py +1211 -389
  13. rapidtide/data/examples/src/testLD +56 -0
  14. rapidtide/data/examples/src/test_findmaxlag.py +2 -2
  15. rapidtide/data/examples/src/test_mlregressallt.py +32 -17
  16. rapidtide/data/examples/src/testalign +1 -1
  17. rapidtide/data/examples/src/testatlasaverage +35 -7
  18. rapidtide/data/examples/src/testboth +21 -0
  19. rapidtide/data/examples/src/testcifti +11 -0
  20. rapidtide/data/examples/src/testdelayvar +13 -0
  21. rapidtide/data/examples/src/testdlfilt +25 -0
  22. rapidtide/data/examples/src/testfft +35 -0
  23. rapidtide/data/examples/src/testfileorfloat +37 -0
  24. rapidtide/data/examples/src/testfmri +94 -27
  25. rapidtide/data/examples/src/testfuncs +3 -3
  26. rapidtide/data/examples/src/testglmfilt +8 -6
  27. rapidtide/data/examples/src/testhappy +84 -51
  28. rapidtide/data/examples/src/testinitdelay +19 -0
  29. rapidtide/data/examples/src/testmodels +33 -0
  30. rapidtide/data/examples/src/testnewrefine +26 -0
  31. rapidtide/data/examples/src/testnoiseamp +21 -0
  32. rapidtide/data/examples/src/testppgproc +17 -0
  33. rapidtide/data/examples/src/testrefineonly +22 -0
  34. rapidtide/data/examples/src/testretro +26 -13
  35. rapidtide/data/examples/src/testretrolagtcs +16 -0
  36. rapidtide/data/examples/src/testrolloff +11 -0
  37. rapidtide/data/examples/src/testsimdata +45 -28
  38. rapidtide/data/models/model_cnn_pytorch/loss.png +0 -0
  39. rapidtide/data/models/model_cnn_pytorch/loss.txt +1 -0
  40. rapidtide/data/models/model_cnn_pytorch/model.pth +0 -0
  41. rapidtide/data/models/model_cnn_pytorch/model_meta.json +68 -0
  42. rapidtide/data/models/model_cnn_pytorch_fulldata/loss.png +0 -0
  43. rapidtide/data/models/model_cnn_pytorch_fulldata/loss.txt +1 -0
  44. rapidtide/data/models/model_cnn_pytorch_fulldata/model.pth +0 -0
  45. rapidtide/data/models/model_cnn_pytorch_fulldata/model_meta.json +80 -0
  46. rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.png +0 -0
  47. rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.txt +1 -0
  48. rapidtide/data/models/model_cnnbp_pytorch_fullldata/model.pth +0 -0
  49. rapidtide/data/models/model_cnnbp_pytorch_fullldata/model_meta.json +138 -0
  50. rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.png +0 -0
  51. rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.txt +1 -0
  52. rapidtide/data/models/model_cnnfft_pytorch_fulldata/model.pth +0 -0
  53. rapidtide/data/models/model_cnnfft_pytorch_fulldata/model_meta.json +128 -0
  54. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.png +0 -0
  55. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.txt +1 -0
  56. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model.pth +0 -0
  57. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model_meta.json +49 -0
  58. rapidtide/data/models/model_revised_tf2/model.keras +0 -0
  59. rapidtide/data/models/{model_serdar → model_revised_tf2}/model_meta.json +1 -1
  60. rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
  61. rapidtide/data/models/{model_serdar2 → model_serdar2_tf2}/model_meta.json +1 -1
  62. rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
  63. rapidtide/data/models/{model_revised → model_serdar_tf2}/model_meta.json +1 -1
  64. rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
  65. rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
  66. rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
  67. rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
  68. rapidtide/data/reference/HCP1200v2_graylaghist.json +7 -0
  69. rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
  70. rapidtide/data/reference/HCP1200v2_laghist.json +7 -0
  71. rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
  72. rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
  73. rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
  74. rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
  75. rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
  76. rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
  77. rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
  78. rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
  79. rapidtide/data/reference/HCP1200v2_whitelaghist.json +7 -0
  80. rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
  81. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +131 -0
  82. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +60 -0
  83. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
  84. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm.nii.gz +0 -0
  85. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm_mask.nii.gz +0 -0
  86. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
  87. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
  88. rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
  89. rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
  90. rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
  91. rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
  92. rapidtide/decorators.py +91 -0
  93. rapidtide/dlfilter.py +2553 -414
  94. rapidtide/dlfiltertorch.py +5201 -0
  95. rapidtide/externaltools.py +328 -13
  96. rapidtide/fMRIData_class.py +178 -0
  97. rapidtide/ffttools.py +168 -0
  98. rapidtide/filter.py +2704 -1462
  99. rapidtide/fit.py +2361 -579
  100. rapidtide/genericmultiproc.py +197 -0
  101. rapidtide/happy_supportfuncs.py +3255 -548
  102. rapidtide/helper_classes.py +590 -1181
  103. rapidtide/io.py +2569 -468
  104. rapidtide/linfitfiltpass.py +784 -0
  105. rapidtide/makelaggedtcs.py +267 -97
  106. rapidtide/maskutil.py +555 -25
  107. rapidtide/miscmath.py +867 -137
  108. rapidtide/multiproc.py +217 -44
  109. rapidtide/patchmatch.py +752 -0
  110. rapidtide/peakeval.py +32 -32
  111. rapidtide/ppgproc.py +2205 -0
  112. rapidtide/qualitycheck.py +353 -40
  113. rapidtide/refinedelay.py +854 -0
  114. rapidtide/refineregressor.py +939 -0
  115. rapidtide/resample.py +725 -204
  116. rapidtide/scripts/__init__.py +1 -0
  117. rapidtide/scripts/{adjustoffset → adjustoffset.py} +7 -2
  118. rapidtide/scripts/{aligntcs → aligntcs.py} +7 -2
  119. rapidtide/scripts/{applydlfilter → applydlfilter.py} +7 -2
  120. rapidtide/scripts/applyppgproc.py +28 -0
  121. rapidtide/scripts/{atlasaverage → atlasaverage.py} +7 -2
  122. rapidtide/scripts/{atlastool → atlastool.py} +7 -2
  123. rapidtide/scripts/{calcicc → calcicc.py} +7 -2
  124. rapidtide/scripts/{calctexticc → calctexticc.py} +7 -2
  125. rapidtide/scripts/{calcttest → calcttest.py} +7 -2
  126. rapidtide/scripts/{ccorrica → ccorrica.py} +7 -2
  127. rapidtide/scripts/delayvar.py +28 -0
  128. rapidtide/scripts/{diffrois → diffrois.py} +7 -2
  129. rapidtide/scripts/{endtidalproc → endtidalproc.py} +7 -2
  130. rapidtide/scripts/{fdica → fdica.py} +7 -2
  131. rapidtide/scripts/{filtnifti → filtnifti.py} +7 -2
  132. rapidtide/scripts/{filttc → filttc.py} +7 -2
  133. rapidtide/scripts/{fingerprint → fingerprint.py} +20 -16
  134. rapidtide/scripts/{fixtr → fixtr.py} +7 -2
  135. rapidtide/scripts/{gmscalc → gmscalc.py} +7 -2
  136. rapidtide/scripts/{happy → happy.py} +7 -2
  137. rapidtide/scripts/{happy2std → happy2std.py} +7 -2
  138. rapidtide/scripts/{happywarp → happywarp.py} +8 -4
  139. rapidtide/scripts/{histnifti → histnifti.py} +7 -2
  140. rapidtide/scripts/{histtc → histtc.py} +7 -2
  141. rapidtide/scripts/{glmfilt → linfitfilt.py} +7 -4
  142. rapidtide/scripts/{localflow → localflow.py} +7 -2
  143. rapidtide/scripts/{mergequality → mergequality.py} +7 -2
  144. rapidtide/scripts/{pairproc → pairproc.py} +7 -2
  145. rapidtide/scripts/{pairwisemergenifti → pairwisemergenifti.py} +7 -2
  146. rapidtide/scripts/{physiofreq → physiofreq.py} +7 -2
  147. rapidtide/scripts/{pixelcomp → pixelcomp.py} +7 -2
  148. rapidtide/scripts/{plethquality → plethquality.py} +7 -2
  149. rapidtide/scripts/{polyfitim → polyfitim.py} +7 -2
  150. rapidtide/scripts/{proj2flow → proj2flow.py} +7 -2
  151. rapidtide/scripts/{rankimage → rankimage.py} +7 -2
  152. rapidtide/scripts/{rapidtide → rapidtide.py} +7 -2
  153. rapidtide/scripts/{rapidtide2std → rapidtide2std.py} +7 -2
  154. rapidtide/scripts/{resamplenifti → resamplenifti.py} +7 -2
  155. rapidtide/scripts/{resampletc → resampletc.py} +7 -2
  156. rapidtide/scripts/retrolagtcs.py +28 -0
  157. rapidtide/scripts/retroregress.py +28 -0
  158. rapidtide/scripts/{roisummarize → roisummarize.py} +7 -2
  159. rapidtide/scripts/{runqualitycheck → runqualitycheck.py} +7 -2
  160. rapidtide/scripts/{showarbcorr → showarbcorr.py} +7 -2
  161. rapidtide/scripts/{showhist → showhist.py} +7 -2
  162. rapidtide/scripts/{showstxcorr → showstxcorr.py} +7 -2
  163. rapidtide/scripts/{showtc → showtc.py} +7 -2
  164. rapidtide/scripts/{showxcorr_legacy → showxcorr_legacy.py} +8 -8
  165. rapidtide/scripts/{showxcorrx → showxcorrx.py} +7 -2
  166. rapidtide/scripts/{showxy → showxy.py} +7 -2
  167. rapidtide/scripts/{simdata → simdata.py} +7 -2
  168. rapidtide/scripts/{spatialdecomp → spatialdecomp.py} +7 -2
  169. rapidtide/scripts/{spatialfit → spatialfit.py} +7 -2
  170. rapidtide/scripts/{spatialmi → spatialmi.py} +7 -2
  171. rapidtide/scripts/{spectrogram → spectrogram.py} +7 -2
  172. rapidtide/scripts/stupidramtricks.py +238 -0
  173. rapidtide/scripts/{synthASL → synthASL.py} +7 -2
  174. rapidtide/scripts/{tcfrom2col → tcfrom2col.py} +7 -2
  175. rapidtide/scripts/{tcfrom3col → tcfrom3col.py} +7 -2
  176. rapidtide/scripts/{temporaldecomp → temporaldecomp.py} +7 -2
  177. rapidtide/scripts/{testhrv → testhrv.py} +1 -1
  178. rapidtide/scripts/{threeD → threeD.py} +7 -2
  179. rapidtide/scripts/{tidepool → tidepool.py} +7 -2
  180. rapidtide/scripts/{variabilityizer → variabilityizer.py} +7 -2
  181. rapidtide/simFuncClasses.py +2113 -0
  182. rapidtide/simfuncfit.py +312 -108
  183. rapidtide/stats.py +579 -247
  184. rapidtide/tests/.coveragerc +27 -6
  185. rapidtide-2.9.5.data/scripts/fdica → rapidtide/tests/cleanposttest +4 -6
  186. rapidtide/tests/happycomp +9 -0
  187. rapidtide/tests/resethappytargets +1 -1
  188. rapidtide/tests/resetrapidtidetargets +1 -1
  189. rapidtide/tests/resettargets +1 -1
  190. rapidtide/tests/runlocaltest +3 -3
  191. rapidtide/tests/showkernels +1 -1
  192. rapidtide/tests/test_aliasedcorrelate.py +4 -4
  193. rapidtide/tests/test_aligntcs.py +1 -1
  194. rapidtide/tests/test_calcicc.py +1 -1
  195. rapidtide/tests/test_cleanregressor.py +184 -0
  196. rapidtide/tests/test_congrid.py +70 -81
  197. rapidtide/tests/test_correlate.py +1 -1
  198. rapidtide/tests/test_corrpass.py +4 -4
  199. rapidtide/tests/test_delayestimation.py +54 -59
  200. rapidtide/tests/test_dlfiltertorch.py +437 -0
  201. rapidtide/tests/test_doresample.py +2 -2
  202. rapidtide/tests/test_externaltools.py +69 -0
  203. rapidtide/tests/test_fastresampler.py +9 -5
  204. rapidtide/tests/test_filter.py +96 -57
  205. rapidtide/tests/test_findmaxlag.py +50 -19
  206. rapidtide/tests/test_fullrunhappy_v1.py +15 -10
  207. rapidtide/tests/test_fullrunhappy_v2.py +19 -13
  208. rapidtide/tests/test_fullrunhappy_v3.py +28 -13
  209. rapidtide/tests/test_fullrunhappy_v4.py +30 -11
  210. rapidtide/tests/test_fullrunhappy_v5.py +62 -0
  211. rapidtide/tests/test_fullrunrapidtide_v1.py +61 -7
  212. rapidtide/tests/test_fullrunrapidtide_v2.py +27 -15
  213. rapidtide/tests/test_fullrunrapidtide_v3.py +28 -8
  214. rapidtide/tests/test_fullrunrapidtide_v4.py +16 -8
  215. rapidtide/tests/test_fullrunrapidtide_v5.py +15 -6
  216. rapidtide/tests/test_fullrunrapidtide_v6.py +142 -0
  217. rapidtide/tests/test_fullrunrapidtide_v7.py +114 -0
  218. rapidtide/tests/test_fullrunrapidtide_v8.py +66 -0
  219. rapidtide/tests/test_getparsers.py +158 -0
  220. rapidtide/tests/test_io.py +59 -18
  221. rapidtide/tests/{test_glmpass.py → test_linfitfiltpass.py} +10 -10
  222. rapidtide/tests/test_mi.py +1 -1
  223. rapidtide/tests/test_miscmath.py +1 -1
  224. rapidtide/tests/test_motionregress.py +5 -5
  225. rapidtide/tests/test_nullcorr.py +6 -9
  226. rapidtide/tests/test_padvec.py +216 -0
  227. rapidtide/tests/test_parserfuncs.py +101 -0
  228. rapidtide/tests/test_phaseanalysis.py +1 -1
  229. rapidtide/tests/test_rapidtideparser.py +59 -53
  230. rapidtide/tests/test_refinedelay.py +296 -0
  231. rapidtide/tests/test_runmisc.py +5 -5
  232. rapidtide/tests/test_sharedmem.py +60 -0
  233. rapidtide/tests/test_simroundtrip.py +132 -0
  234. rapidtide/tests/test_simulate.py +1 -1
  235. rapidtide/tests/test_stcorrelate.py +4 -2
  236. rapidtide/tests/test_timeshift.py +2 -2
  237. rapidtide/tests/test_valtoindex.py +1 -1
  238. rapidtide/tests/test_zRapidtideDataset.py +5 -3
  239. rapidtide/tests/utils.py +10 -9
  240. rapidtide/tidepoolTemplate.py +88 -70
  241. rapidtide/tidepoolTemplate.ui +60 -46
  242. rapidtide/tidepoolTemplate_alt.py +88 -53
  243. rapidtide/tidepoolTemplate_alt.ui +62 -52
  244. rapidtide/tidepoolTemplate_alt_qt6.py +921 -0
  245. rapidtide/tidepoolTemplate_big.py +1125 -0
  246. rapidtide/tidepoolTemplate_big.ui +2386 -0
  247. rapidtide/tidepoolTemplate_big_qt6.py +1129 -0
  248. rapidtide/tidepoolTemplate_qt6.py +793 -0
  249. rapidtide/util.py +1389 -148
  250. rapidtide/voxelData.py +1048 -0
  251. rapidtide/wiener.py +138 -25
  252. rapidtide/wiener2.py +114 -8
  253. rapidtide/workflows/adjustoffset.py +107 -5
  254. rapidtide/workflows/aligntcs.py +86 -3
  255. rapidtide/workflows/applydlfilter.py +231 -89
  256. rapidtide/workflows/applyppgproc.py +540 -0
  257. rapidtide/workflows/atlasaverage.py +309 -48
  258. rapidtide/workflows/atlastool.py +130 -9
  259. rapidtide/workflows/calcSimFuncMap.py +490 -0
  260. rapidtide/workflows/calctexticc.py +202 -10
  261. rapidtide/workflows/ccorrica.py +123 -15
  262. rapidtide/workflows/cleanregressor.py +415 -0
  263. rapidtide/workflows/delayvar.py +1268 -0
  264. rapidtide/workflows/diffrois.py +84 -6
  265. rapidtide/workflows/endtidalproc.py +149 -9
  266. rapidtide/workflows/fdica.py +197 -17
  267. rapidtide/workflows/filtnifti.py +71 -4
  268. rapidtide/workflows/filttc.py +76 -5
  269. rapidtide/workflows/fitSimFuncMap.py +578 -0
  270. rapidtide/workflows/fixtr.py +74 -4
  271. rapidtide/workflows/gmscalc.py +116 -6
  272. rapidtide/workflows/happy.py +1242 -480
  273. rapidtide/workflows/happy2std.py +145 -13
  274. rapidtide/workflows/happy_parser.py +277 -59
  275. rapidtide/workflows/histnifti.py +120 -4
  276. rapidtide/workflows/histtc.py +85 -4
  277. rapidtide/workflows/{glmfilt.py → linfitfilt.py} +128 -14
  278. rapidtide/workflows/localflow.py +329 -29
  279. rapidtide/workflows/mergequality.py +80 -4
  280. rapidtide/workflows/niftidecomp.py +323 -19
  281. rapidtide/workflows/niftistats.py +178 -8
  282. rapidtide/workflows/pairproc.py +99 -5
  283. rapidtide/workflows/pairwisemergenifti.py +86 -3
  284. rapidtide/workflows/parser_funcs.py +1488 -56
  285. rapidtide/workflows/physiofreq.py +139 -12
  286. rapidtide/workflows/pixelcomp.py +211 -9
  287. rapidtide/workflows/plethquality.py +105 -23
  288. rapidtide/workflows/polyfitim.py +159 -19
  289. rapidtide/workflows/proj2flow.py +76 -3
  290. rapidtide/workflows/rankimage.py +115 -8
  291. rapidtide/workflows/rapidtide.py +1833 -1919
  292. rapidtide/workflows/rapidtide2std.py +101 -3
  293. rapidtide/workflows/rapidtide_parser.py +607 -372
  294. rapidtide/workflows/refineDelayMap.py +249 -0
  295. rapidtide/workflows/refineRegressor.py +1215 -0
  296. rapidtide/workflows/regressfrommaps.py +308 -0
  297. rapidtide/workflows/resamplenifti.py +86 -4
  298. rapidtide/workflows/resampletc.py +92 -4
  299. rapidtide/workflows/retrolagtcs.py +442 -0
  300. rapidtide/workflows/retroregress.py +1501 -0
  301. rapidtide/workflows/roisummarize.py +176 -7
  302. rapidtide/workflows/runqualitycheck.py +72 -7
  303. rapidtide/workflows/showarbcorr.py +172 -16
  304. rapidtide/workflows/showhist.py +87 -3
  305. rapidtide/workflows/showstxcorr.py +161 -4
  306. rapidtide/workflows/showtc.py +172 -10
  307. rapidtide/workflows/showxcorrx.py +250 -62
  308. rapidtide/workflows/showxy.py +186 -16
  309. rapidtide/workflows/simdata.py +418 -112
  310. rapidtide/workflows/spatialfit.py +83 -8
  311. rapidtide/workflows/spatialmi.py +252 -29
  312. rapidtide/workflows/spectrogram.py +306 -33
  313. rapidtide/workflows/synthASL.py +157 -6
  314. rapidtide/workflows/tcfrom2col.py +77 -3
  315. rapidtide/workflows/tcfrom3col.py +75 -3
  316. rapidtide/workflows/tidepool.py +3829 -666
  317. rapidtide/workflows/utils.py +45 -19
  318. rapidtide/workflows/utils_doc.py +293 -0
  319. rapidtide/workflows/variabilityizer.py +118 -5
  320. {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info}/METADATA +30 -223
  321. rapidtide-3.1.3.dist-info/RECORD +393 -0
  322. {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info}/WHEEL +1 -1
  323. rapidtide-3.1.3.dist-info/entry_points.txt +65 -0
  324. rapidtide-3.1.3.dist-info/top_level.txt +2 -0
  325. rapidtide/calcandfitcorrpairs.py +0 -262
  326. rapidtide/data/examples/src/testoutputsize +0 -45
  327. rapidtide/data/models/model_revised/model.h5 +0 -0
  328. rapidtide/data/models/model_serdar/model.h5 +0 -0
  329. rapidtide/data/models/model_serdar2/model.h5 +0 -0
  330. rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm.nii.gz +0 -0
  331. rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm_mask.nii.gz +0 -0
  332. rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm.nii.gz +0 -0
  333. rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm_mask.nii.gz +0 -0
  334. rapidtide/data/reference/HCP1200_binmask_2mm_2009c_asym.nii.gz +0 -0
  335. rapidtide/data/reference/HCP1200_lag_2mm_2009c_asym.nii.gz +0 -0
  336. rapidtide/data/reference/HCP1200_mask_2mm_2009c_asym.nii.gz +0 -0
  337. rapidtide/data/reference/HCP1200_negmask_2mm_2009c_asym.nii.gz +0 -0
  338. rapidtide/data/reference/HCP1200_sigma_2mm_2009c_asym.nii.gz +0 -0
  339. rapidtide/data/reference/HCP1200_strength_2mm_2009c_asym.nii.gz +0 -0
  340. rapidtide/glmpass.py +0 -434
  341. rapidtide/refine_factored.py +0 -641
  342. rapidtide/scripts/retroglm +0 -23
  343. rapidtide/workflows/glmfrommaps.py +0 -202
  344. rapidtide/workflows/retroglm.py +0 -643
  345. rapidtide-2.9.5.data/scripts/adjustoffset +0 -23
  346. rapidtide-2.9.5.data/scripts/aligntcs +0 -23
  347. rapidtide-2.9.5.data/scripts/applydlfilter +0 -23
  348. rapidtide-2.9.5.data/scripts/atlasaverage +0 -23
  349. rapidtide-2.9.5.data/scripts/atlastool +0 -23
  350. rapidtide-2.9.5.data/scripts/calcicc +0 -22
  351. rapidtide-2.9.5.data/scripts/calctexticc +0 -23
  352. rapidtide-2.9.5.data/scripts/calcttest +0 -22
  353. rapidtide-2.9.5.data/scripts/ccorrica +0 -23
  354. rapidtide-2.9.5.data/scripts/diffrois +0 -23
  355. rapidtide-2.9.5.data/scripts/endtidalproc +0 -23
  356. rapidtide-2.9.5.data/scripts/filtnifti +0 -23
  357. rapidtide-2.9.5.data/scripts/filttc +0 -23
  358. rapidtide-2.9.5.data/scripts/fingerprint +0 -593
  359. rapidtide-2.9.5.data/scripts/fixtr +0 -23
  360. rapidtide-2.9.5.data/scripts/glmfilt +0 -24
  361. rapidtide-2.9.5.data/scripts/gmscalc +0 -22
  362. rapidtide-2.9.5.data/scripts/happy +0 -25
  363. rapidtide-2.9.5.data/scripts/happy2std +0 -23
  364. rapidtide-2.9.5.data/scripts/happywarp +0 -350
  365. rapidtide-2.9.5.data/scripts/histnifti +0 -23
  366. rapidtide-2.9.5.data/scripts/histtc +0 -23
  367. rapidtide-2.9.5.data/scripts/localflow +0 -23
  368. rapidtide-2.9.5.data/scripts/mergequality +0 -23
  369. rapidtide-2.9.5.data/scripts/pairproc +0 -23
  370. rapidtide-2.9.5.data/scripts/pairwisemergenifti +0 -23
  371. rapidtide-2.9.5.data/scripts/physiofreq +0 -23
  372. rapidtide-2.9.5.data/scripts/pixelcomp +0 -23
  373. rapidtide-2.9.5.data/scripts/plethquality +0 -23
  374. rapidtide-2.9.5.data/scripts/polyfitim +0 -23
  375. rapidtide-2.9.5.data/scripts/proj2flow +0 -23
  376. rapidtide-2.9.5.data/scripts/rankimage +0 -23
  377. rapidtide-2.9.5.data/scripts/rapidtide +0 -23
  378. rapidtide-2.9.5.data/scripts/rapidtide2std +0 -23
  379. rapidtide-2.9.5.data/scripts/resamplenifti +0 -23
  380. rapidtide-2.9.5.data/scripts/resampletc +0 -23
  381. rapidtide-2.9.5.data/scripts/retroglm +0 -23
  382. rapidtide-2.9.5.data/scripts/roisummarize +0 -23
  383. rapidtide-2.9.5.data/scripts/runqualitycheck +0 -23
  384. rapidtide-2.9.5.data/scripts/showarbcorr +0 -23
  385. rapidtide-2.9.5.data/scripts/showhist +0 -23
  386. rapidtide-2.9.5.data/scripts/showstxcorr +0 -23
  387. rapidtide-2.9.5.data/scripts/showtc +0 -23
  388. rapidtide-2.9.5.data/scripts/showxcorr_legacy +0 -536
  389. rapidtide-2.9.5.data/scripts/showxcorrx +0 -23
  390. rapidtide-2.9.5.data/scripts/showxy +0 -23
  391. rapidtide-2.9.5.data/scripts/simdata +0 -23
  392. rapidtide-2.9.5.data/scripts/spatialdecomp +0 -23
  393. rapidtide-2.9.5.data/scripts/spatialfit +0 -23
  394. rapidtide-2.9.5.data/scripts/spatialmi +0 -23
  395. rapidtide-2.9.5.data/scripts/spectrogram +0 -23
  396. rapidtide-2.9.5.data/scripts/synthASL +0 -23
  397. rapidtide-2.9.5.data/scripts/tcfrom2col +0 -23
  398. rapidtide-2.9.5.data/scripts/tcfrom3col +0 -23
  399. rapidtide-2.9.5.data/scripts/temporaldecomp +0 -23
  400. rapidtide-2.9.5.data/scripts/threeD +0 -236
  401. rapidtide-2.9.5.data/scripts/tidepool +0 -23
  402. rapidtide-2.9.5.data/scripts/variabilityizer +0 -23
  403. rapidtide-2.9.5.dist-info/RECORD +0 -357
  404. rapidtide-2.9.5.dist-info/top_level.txt +0 -86
  405. {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info/licenses}/LICENSE +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
  #
4
- # Copyright 2016-2024 Blaise Frederick
4
+ # Copyright 2016-2025 Blaise Frederick
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -24,7 +24,33 @@ import rapidtide.io as tide_io
24
24
  import rapidtide.util as tide_util
25
25
 
26
26
 
27
- def fslinfo():
27
+ def fslinfo() -> str | None:
28
+ """
29
+ Get FSL directory path from environment variable.
30
+
31
+ This function retrieves the FSL directory path from the FSLDIR environment
32
+ variable. It also sets a global flag `fslexists` to indicate whether FSL
33
+ is available in the current environment.
34
+
35
+ Returns
36
+ -------
37
+ str or None
38
+ The path to the FSL directory if FSLDIR environment variable is set,
39
+ otherwise None.
40
+
41
+ Notes
42
+ -----
43
+ This function modifies the global variable `fslexists` which is set to
44
+ True if FSLDIR is found, False otherwise. The function does not perform
45
+ any validation of the FSL directory existence or integrity.
46
+
47
+ Examples
48
+ --------
49
+ >>> fslinfo()
50
+ '/usr/local/fsl' # if FSLDIR is set
51
+ >>> fslinfo()
52
+ None # if FSLDIR is not set
53
+ """
28
54
  global fslexists
29
55
  fsldir = os.environ.get("FSLDIR")
30
56
  if fsldir is not None:
@@ -34,7 +60,35 @@ def fslinfo():
34
60
  return fsldir
35
61
 
36
62
 
37
- def whatexists():
63
+ def whatexists() -> tuple[bool, bool, bool]:
64
+ """
65
+ Check for existence of FSL, c3d, and ANTS executables.
66
+
67
+ This function checks whether the FSL directory is set in the environment
68
+ and verifies the existence of c3d_affine_tool and antsApplyTransforms
69
+ executables in the system PATH.
70
+
71
+ Returns
72
+ -------
73
+ tuple[bool, bool, bool]
74
+ A tuple containing three boolean values:
75
+ - First value: True if FSLDIR environment variable is set, False otherwise
76
+ - Second value: True if c3d_affine_tool executable is found, False otherwise
77
+ - Third value: True if antsApplyTransforms executable is found, False otherwise
78
+
79
+ Notes
80
+ -----
81
+ The function uses os.environ.get() to check for FSLDIR and tide_util.isexecutable()
82
+ to check for executable existence. The results are printed to stdout for debugging
83
+ purposes.
84
+
85
+ Examples
86
+ --------
87
+ >>> whatexists()
88
+ c3dexists = True
89
+ antsexists = False
90
+ (True, True, False)
91
+ """
38
92
  fsldir = os.environ.get("FSLDIR")
39
93
  if fsldir is not None:
40
94
  fslexists = True
@@ -48,15 +102,91 @@ def whatexists():
48
102
  return fslexists, c3dexists, antsexists
49
103
 
50
104
 
51
- def getfslcmds():
105
+ def getfslcmds() -> tuple[str | None, str | None, str | None]:
106
+ """
107
+ Get paths to FSL command executables.
108
+
109
+ This function retrieves the paths to three core FSL commands (fsl_sub, flirt, and applywarp)
110
+ by looking up the FSLDIR environment variable. If FSLDIR is not set, all returned paths will be None.
111
+
112
+ Returns
113
+ -------
114
+ tuple[str | None, str | None, str | None]
115
+ A tuple containing three elements:
116
+ - fslsubcmd: Path to fsl_sub command, or None if FSLDIR is not set
117
+ - flirtcmd: Path to flirt command, or None if FSLDIR is not set
118
+ - applywarpcmd: Path to applywarp command, or None if FSLDIR is not set
119
+
120
+ Notes
121
+ -----
122
+ The function expects the FSLDIR environment variable to be set to the FSL installation directory.
123
+ The returned paths are constructed by joining the FSLDIR with "bin/fsl_sub", "bin/flirt", and "bin/applywarp".
124
+
125
+ Examples
126
+ --------
127
+ >>> fslsub, flirt, applywarp = getfslcmds()
128
+ >>> print(fslsub)
129
+ '/usr/local/fsl/bin/fsl_sub' # if FSLDIR is set
130
+ >>> print(flirt)
131
+ '/usr/local/fsl/bin/flirt' # if FSLDIR is set
132
+ >>> print(applywarp)
133
+ '/usr/local/fsl/bin/applywarp' # if FSLDIR is set
134
+ """
52
135
  fsldir = os.environ.get("FSLDIR")
53
- fslsubcmd = os.path.join(fsldir, "bin", "fsl_sub")
54
- flirtcmd = os.path.join(fsldir, "bin", "flirt")
55
- applywarpcmd = os.path.join(fsldir, "bin", "applywarp")
136
+ if fsldir is not None:
137
+ fslsubcmd = os.path.join(fsldir, "bin", "fsl_sub")
138
+ flirtcmd = os.path.join(fsldir, "bin", "flirt")
139
+ applywarpcmd = os.path.join(fsldir, "bin", "applywarp")
140
+ else:
141
+ fslsubcmd = None
142
+ flirtcmd = None
143
+ applywarpcmd = None
56
144
  return fslsubcmd, flirtcmd, applywarpcmd
57
145
 
58
146
 
59
- def runcmd(thecmd, fake=False, debug=False):
147
+ def runcmd(thecmd: list[str], fake: bool = False, debug: bool = False) -> None:
148
+ """
149
+ Execute a command using subprocess.call or simulate execution.
150
+
151
+ This function executes a command represented as a list of strings using
152
+ subprocess.call. It can also simulate command execution for testing purposes
153
+ when the 'fake' parameter is set to True.
154
+
155
+ Parameters
156
+ ----------
157
+ thecmd : list[str]
158
+ Command to execute, represented as a list of strings where the first
159
+ element is the command and subsequent elements are arguments.
160
+ fake : bool, optional
161
+ If True, print the command that would be executed without actually
162
+ running it. Default is False.
163
+ debug : bool, optional
164
+ If True, print the command before executing or simulating. Default is False.
165
+
166
+ Returns
167
+ -------
168
+ None
169
+ This function does not return any value.
170
+
171
+ Notes
172
+ -----
173
+ The function uses subprocess.call to execute commands, which means it will
174
+ block until the command completes. The 'fake' mode is useful for testing
175
+ without actually executing commands.
176
+
177
+ Examples
178
+ --------
179
+ >>> runcmd(['ls', '-l'])
180
+ # Executes 'ls -l' command
181
+
182
+ >>> runcmd(['echo', 'hello'], fake=True)
183
+ # Prints: echo hello
184
+ # But does not actually execute the echo command
185
+
186
+ >>> runcmd(['python', '--version'], debug=True)
187
+ # Prints: ['python', '--version']
188
+ # Then executes the command
189
+ """
60
190
  if debug:
61
191
  print(thecmd)
62
192
  if fake:
@@ -67,8 +197,59 @@ def runcmd(thecmd, fake=False, debug=False):
67
197
 
68
198
 
69
199
  def makeflirtcmd(
70
- inputfile, targetname, xform, outputname, warpfile=None, cluster=False, debug=False
71
- ):
200
+ inputfile: str,
201
+ targetname: str,
202
+ xform: str,
203
+ outputname: str,
204
+ warpfile: str | None = None,
205
+ cluster: bool = False,
206
+ debug: bool = False,
207
+ ) -> list[str]:
208
+ """
209
+ Create FSL FLIRT command for image registration.
210
+
211
+ This function generates a command list for FSL's FLIRT tool to perform either
212
+ linear or nonlinear image registration depending on whether a warp file is provided.
213
+
214
+ Parameters
215
+ ----------
216
+ inputfile : str
217
+ Path to the input image file to be registered
218
+ targetname : str
219
+ Path to the target reference image
220
+ xform : str
221
+ Path to the transformation matrix file (for linear registration)
222
+ outputname : str
223
+ Path where the registered output image will be saved
224
+ warpfile : str, optional
225
+ Path to the warp field file for nonlinear registration. If None,
226
+ linear registration is performed (default is None)
227
+ cluster : bool, optional
228
+ If True, prefix the command with fslsub for cluster execution (default is False)
229
+ debug : bool, optional
230
+ If True, print the constructed command for debugging purposes (default is False)
231
+
232
+ Returns
233
+ -------
234
+ list[str]
235
+ List of command arguments that can be executed using subprocess or similar
236
+
237
+ Notes
238
+ -----
239
+ - For linear registration, the function uses FLIRT with the -applyxfm flag
240
+ - For nonlinear registration, the function uses applywarp instead of FLIRT
241
+ - The function prints transformation type information to stdout
242
+
243
+ Examples
244
+ --------
245
+ >>> cmd = makeflirtcmd('input.nii', 'target.nii', 'xform.mat', 'output.nii')
246
+ >>> print(' '.join(cmd))
247
+ flirt -in input.nii -ref target.nii -applyxfm -init xform.mat -out output.nii
248
+
249
+ >>> cmd = makeflirtcmd('input.nii', 'target.nii', 'xform.mat', 'output.nii', 'warp.nii')
250
+ >>> print(' '.join(cmd))
251
+ applywarp --ref=target.nii --in=input.nii --out=output.nii --warp=warp.nii
252
+ """
72
253
  fslsubcmd, flirtcmd, applywarpcmd = getfslcmds()
73
254
  thecommand = []
74
255
  if warpfile is None:
@@ -99,12 +280,101 @@ def makeflirtcmd(
99
280
  return thecommand
100
281
 
101
282
 
102
- def runflirt(inputfile, targetname, xform, outputname, warpfile=None, fake=False, debug=False):
283
+ def runflirt(
284
+ inputfile: str,
285
+ targetname: str,
286
+ xform: str,
287
+ outputname: str,
288
+ warpfile: str | None = None,
289
+ fake: bool = False,
290
+ debug: bool = False,
291
+ ) -> None:
292
+ """
293
+ Run FLIRT (FMRIB's Linear Image Registration Tool) for image registration.
294
+
295
+ This function constructs and executes a FLIRT command for linear image registration
296
+ between an input file and a target file. It supports various transformation types
297
+ and can optionally generate warp fields for non-linear registration.
298
+
299
+ Parameters
300
+ ----------
301
+ inputfile : str
302
+ Path to the input image file to be registered
303
+ targetname : str
304
+ Path to the target image file for registration
305
+ xform : str
306
+ Transformation type to use (e.g., 'rigid', 'affine', 'syn')
307
+ outputname : str
308
+ Path where the registered output image will be saved
309
+ warpfile : str, optional
310
+ Path to save the warp field file (default is None)
311
+ fake : bool, optional
312
+ If True, only print the command without executing it (default is False)
313
+ debug : bool, optional
314
+ If True, enable debug mode with additional output (default is False)
315
+
316
+ Returns
317
+ -------
318
+ None
319
+ This function does not return any value
320
+
321
+ Notes
322
+ -----
323
+ This function relies on the `makeflirtcmd` function to construct the command
324
+ and `runcmd` function to execute it. The actual FLIRT command execution
325
+ is delegated to these helper functions.
326
+
327
+ Examples
328
+ --------
329
+ >>> runflirt('input.nii.gz', 'target.nii.gz', 'affine', 'output.nii.gz')
330
+ >>> runflirt('input.nii.gz', 'target.nii.gz', 'rigid', 'output.nii.gz',
331
+ ... warpfile='warpfield.nii.gz', fake=True)
332
+ """
103
333
  thecommand = makeflirtcmd(inputfile, targetname, xform, outputname, warpfile=warpfile)
104
334
  runcmd(thecommand, fake=fake, debug=debug)
105
335
 
106
336
 
107
- def n4correct(inputfile, outputdir, fake=False, debug=False):
337
+ def n4correct(inputfile: str, outputdir: str, fake: bool = False, debug: bool = False) -> None:
338
+ """
339
+ Apply N4 bias field correction to MRI images.
340
+
341
+ This function performs N4 bias field correction using the ANTs N4BiasFieldCorrection
342
+ tool. It corrects intensity inhomogeneities in MRI images by estimating and removing
343
+ the bias field component from the input image.
344
+
345
+ Parameters
346
+ ----------
347
+ inputfile : str
348
+ Path to the input NIfTI image file to be corrected
349
+ outputdir : str
350
+ Directory path where the corrected output file will be saved
351
+ fake : bool, optional
352
+ If True, only print the command that would be executed without actually running it
353
+ Default is False
354
+ debug : bool, optional
355
+ If True, enable debug mode to print additional information during execution
356
+ Default is False
357
+
358
+ Returns
359
+ -------
360
+ None
361
+ This function does not return any value but saves the corrected image to the
362
+ specified output directory
363
+
364
+ Notes
365
+ -----
366
+ The output file will be saved with the naming convention: {input_filename}_n4{file_extension}
367
+
368
+ Examples
369
+ --------
370
+ >>> n4correct('subject1.nii.gz', '/path/to/output')
371
+ >>> n4correct('subject1.nii.gz', '/path/to/output', fake=True, debug=True)
372
+
373
+ See Also
374
+ --------
375
+ tide_io.niftisplitext : Function used to split filename and extension
376
+ runcmd : Function used to execute the N4 command
377
+ """
108
378
  thename, theext = tide_io.niftisplitext(inputfile)
109
379
  n4cmd = []
110
380
  n4cmd += ["N4BiasFieldCorrection"]
@@ -114,7 +384,52 @@ def n4correct(inputfile, outputdir, fake=False, debug=False):
114
384
  runcmd(n4cmd, fake=fake, debug=debug)
115
385
 
116
386
 
117
- def antsapply(inputname, targetname, outputroot, transforms, fake=False, debug=False):
387
+ def antsapply(
388
+ inputname: str,
389
+ targetname: str,
390
+ outputroot: str,
391
+ transforms: list[str],
392
+ fake: bool = False,
393
+ debug: bool = False,
394
+ ) -> None:
395
+ """
396
+ Apply ANTs transforms to an input image using antsApplyTransforms.
397
+
398
+ This function constructs and executes an antsApplyTransforms command to apply
399
+ a series of transforms to an input image, resampling it to match a target image.
400
+
401
+ Parameters
402
+ ----------
403
+ inputname : str
404
+ Path to the input image to be transformed
405
+ targetname : str
406
+ Path to the target image (reference space) for resampling
407
+ outputroot : str
408
+ Root name for the output file (without extension)
409
+ transforms : list[str]
410
+ List of transform files to apply in order
411
+ fake : bool, optional
412
+ If True, only print the command without executing it (default: False)
413
+ debug : bool, optional
414
+ If True, print additional debug information (default: False)
415
+
416
+ Returns
417
+ -------
418
+ None
419
+ This function does not return a value but executes the antsApplyTransforms command
420
+
421
+ Notes
422
+ -----
423
+ The function uses antsApplyTransforms with the following fixed parameters:
424
+ - Default value set to 0
425
+ - Dimensionality set to 3
426
+ - Uses the target image as reference for resampling
427
+
428
+ Examples
429
+ --------
430
+ >>> antsapply('input.nii.gz', 'target.nii.gz', 'output', ['transform1.nii.gz', 'transform2.nii.gz'])
431
+ >>> antsapply('input.nii.gz', 'target.nii.gz', 'output', ['transform1.nii.gz'], fake=True)
432
+ """
118
433
  applyxfmcmd = []
119
434
  applyxfmcmd += ["antsApplyTransforms"]
120
435
  applyxfmcmd += ["--default-value", "0"]
@@ -0,0 +1,178 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ #
4
+ # Copyright 2016-2025 Blaise Frederick
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ #
19
+ from typing import Any
20
+
21
+ import numpy as np
22
+ from numpy.typing import NDArray
23
+
24
+ import rapidtide.io as tide_io
25
+
26
+
27
+ class fMRIData:
28
+ header = None
29
+ data = None
30
+ data_byvoxel = None
31
+ data_valid = None
32
+ nativeshape = None
33
+ mask = None
34
+ validvoxels = None
35
+ filename = None
36
+ filetype = None
37
+
38
+ def __init__(
39
+ self,
40
+ filename: str | None = None,
41
+ header: Any | None = None,
42
+ data: NDArray | None = None,
43
+ mask: NDArray | None = None,
44
+ validvoxels: NDArray | None = None,
45
+ dims: tuple | None = None,
46
+ sizes: tuple | None = None,
47
+ description: str | None = None,
48
+ ) -> None:
49
+ """
50
+ Initialize a new instance.
51
+
52
+ Parameters
53
+ ----------
54
+ filename : str, optional
55
+ Path to the data file. Default is None.
56
+ header : Any, optional
57
+ Header information associated with the data. Default is None.
58
+ data : NDArray, optional
59
+ Main data array. Default is None.
60
+ mask : NDArray, optional
61
+ Mask array for data filtering. Default is None.
62
+ validvoxels : NDArray, optional
63
+ Array indicating valid voxels. Default is None.
64
+ dims : tuple, optional
65
+ Dimensions of the data. Default is None.
66
+ sizes : tuple, optional
67
+ Size information for the data. Default is None.
68
+ description : str, optional
69
+ Description of the data. Default is None.
70
+
71
+ Returns
72
+ -------
73
+ None
74
+ This method initializes the instance attributes but does not return anything.
75
+
76
+ Notes
77
+ -----
78
+ This constructor sets up the basic attributes for data handling. All parameters
79
+ are optional and can be None, allowing for flexible initialization of instances.
80
+
81
+ Examples
82
+ --------
83
+ >>> instance = MyClass()
84
+ >>> instance = MyClass(filename="data.nii", data=np.array([1, 2, 3]))
85
+ """
86
+ self.filename = filename
87
+ self.header = header
88
+ self.data = data
89
+ self.mask = mask
90
+ self.validvoxels = validvoxels
91
+ self.dims = dims
92
+ self.sizes = sizes
93
+ self.description = description
94
+
95
+ def load(self, filename: str) -> None:
96
+ """
97
+ Load fMRI data from a file.
98
+
99
+ Load fMRI data from a file, supporting text, CIFTI, and NIFTI formats.
100
+ The function determines the file type and reads the data accordingly,
101
+ setting appropriate attributes such as data shape, timepoints, and spatial dimensions.
102
+
103
+ Parameters
104
+ ----------
105
+ filename : str
106
+ Path to the input file. Supported formats are text, CIFTI, and NIFTI.
107
+
108
+ Returns
109
+ -------
110
+ None
111
+ This function does not return a value but updates the instance attributes
112
+ with loaded data and metadata.
113
+
114
+ Notes
115
+ -----
116
+ This function modifies the instance state by setting the following attributes:
117
+ - `filename`: The path to the input file.
118
+ - `filetype`: The type of the file ('text', 'cifti', or 'nifti').
119
+ - `data`: The loaded data array.
120
+ - `header`: The header information (if available).
121
+ - `xsize`, `ysize`, `numslices`, `timepoints`: Spatial and temporal dimensions.
122
+ - `thesizes`: A list containing the dimensions of the data.
123
+ - `numspatiallocs`: Total number of spatial locations.
124
+ - `nativespaceshape`: Shape of the native space.
125
+ - `cifti_hdr`: CIFTI header (if applicable).
126
+
127
+ Examples
128
+ --------
129
+ >>> loader = DataReader()
130
+ >>> loader.load('fmri_data.nii.gz')
131
+ >>> print(loader.timepoints)
132
+ 100
133
+ """
134
+ self.filename = filename
135
+ ####################################################
136
+ # Read data
137
+ ####################################################
138
+ # open the fmri datafile
139
+ if tide_io.checkiftext(self.filename):
140
+ self.filetype = "text"
141
+ self.data = tide_io.readvecs(self.filename)
142
+ self.header = None
143
+ theshape = np.shape(nim_data)
144
+ self.xsize = theshape[0]
145
+ self.ysize = 1
146
+ self.numslices = 1
147
+ self.timepoints = theshape[1]
148
+ self.thesizes = [0, int(self.xsize), 1, 1, int(self.timepoints)]
149
+ self.numspatiallocs = int(self.xsize)
150
+ self.nativespaceshape = self.xsize
151
+ self.cifti_hdr = None
152
+ elif tide_io.checkifcifti(self.filename):
153
+ self.filetype = "cifti"
154
+ (
155
+ cifti,
156
+ cifti_hdr,
157
+ self.data,
158
+ self.header,
159
+ thedims,
160
+ thesizes,
161
+ dummy,
162
+ ) = tide_io.readfromcifti(self.filename)
163
+ self.isgrayordinate = True
164
+ self.timepoints = nim_data.shape[1]
165
+ numspatiallocs = nim_data.shape[0]
166
+ LGR.debug(f"cifti file has {timepoints} timepoints, {numspatiallocs} numspatiallocs")
167
+ slicesize = numspatiallocs
168
+ nativespaceshape = (1, 1, 1, 1, numspatiallocs)
169
+ else:
170
+ self.filetype = "nifti"
171
+ LGR.debug("input file is NIFTI")
172
+ nim, self.data, self.header, thedims, thesizes = tide_io.readfromnifti(fmrifilename)
173
+ optiondict["isgrayordinate"] = False
174
+ xsize, ysize, numslices, timepoints = tide_io.parseniftidims(thedims)
175
+ numspatiallocs = int(xsize) * int(ysize) * int(numslices)
176
+ cifti_hdr = None
177
+ nativespaceshape = (xsize, ysize, numslices)
178
+ xdim, ydim, slicethickness, tr = tide_io.parseniftisizes(thesizes)