rapidtide 2.9.6__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 +92 -42
  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 +2 -2
  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 +108 -92
  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 +587 -1116
  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 +835 -144
  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.6.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 +26 -14
  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 +1785 -1858
  292. rapidtide/workflows/rapidtide2std.py +101 -3
  293. rapidtide/workflows/rapidtide_parser.py +590 -389
  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.6.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.6.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.6.data/scripts/adjustoffset +0 -23
  346. rapidtide-2.9.6.data/scripts/aligntcs +0 -23
  347. rapidtide-2.9.6.data/scripts/applydlfilter +0 -23
  348. rapidtide-2.9.6.data/scripts/atlasaverage +0 -23
  349. rapidtide-2.9.6.data/scripts/atlastool +0 -23
  350. rapidtide-2.9.6.data/scripts/calcicc +0 -22
  351. rapidtide-2.9.6.data/scripts/calctexticc +0 -23
  352. rapidtide-2.9.6.data/scripts/calcttest +0 -22
  353. rapidtide-2.9.6.data/scripts/ccorrica +0 -23
  354. rapidtide-2.9.6.data/scripts/diffrois +0 -23
  355. rapidtide-2.9.6.data/scripts/endtidalproc +0 -23
  356. rapidtide-2.9.6.data/scripts/filtnifti +0 -23
  357. rapidtide-2.9.6.data/scripts/filttc +0 -23
  358. rapidtide-2.9.6.data/scripts/fingerprint +0 -593
  359. rapidtide-2.9.6.data/scripts/fixtr +0 -23
  360. rapidtide-2.9.6.data/scripts/glmfilt +0 -24
  361. rapidtide-2.9.6.data/scripts/gmscalc +0 -22
  362. rapidtide-2.9.6.data/scripts/happy +0 -25
  363. rapidtide-2.9.6.data/scripts/happy2std +0 -23
  364. rapidtide-2.9.6.data/scripts/happywarp +0 -350
  365. rapidtide-2.9.6.data/scripts/histnifti +0 -23
  366. rapidtide-2.9.6.data/scripts/histtc +0 -23
  367. rapidtide-2.9.6.data/scripts/localflow +0 -23
  368. rapidtide-2.9.6.data/scripts/mergequality +0 -23
  369. rapidtide-2.9.6.data/scripts/pairproc +0 -23
  370. rapidtide-2.9.6.data/scripts/pairwisemergenifti +0 -23
  371. rapidtide-2.9.6.data/scripts/physiofreq +0 -23
  372. rapidtide-2.9.6.data/scripts/pixelcomp +0 -23
  373. rapidtide-2.9.6.data/scripts/plethquality +0 -23
  374. rapidtide-2.9.6.data/scripts/polyfitim +0 -23
  375. rapidtide-2.9.6.data/scripts/proj2flow +0 -23
  376. rapidtide-2.9.6.data/scripts/rankimage +0 -23
  377. rapidtide-2.9.6.data/scripts/rapidtide +0 -23
  378. rapidtide-2.9.6.data/scripts/rapidtide2std +0 -23
  379. rapidtide-2.9.6.data/scripts/resamplenifti +0 -23
  380. rapidtide-2.9.6.data/scripts/resampletc +0 -23
  381. rapidtide-2.9.6.data/scripts/retroglm +0 -23
  382. rapidtide-2.9.6.data/scripts/roisummarize +0 -23
  383. rapidtide-2.9.6.data/scripts/runqualitycheck +0 -23
  384. rapidtide-2.9.6.data/scripts/showarbcorr +0 -23
  385. rapidtide-2.9.6.data/scripts/showhist +0 -23
  386. rapidtide-2.9.6.data/scripts/showstxcorr +0 -23
  387. rapidtide-2.9.6.data/scripts/showtc +0 -23
  388. rapidtide-2.9.6.data/scripts/showxcorr_legacy +0 -536
  389. rapidtide-2.9.6.data/scripts/showxcorrx +0 -23
  390. rapidtide-2.9.6.data/scripts/showxy +0 -23
  391. rapidtide-2.9.6.data/scripts/simdata +0 -23
  392. rapidtide-2.9.6.data/scripts/spatialdecomp +0 -23
  393. rapidtide-2.9.6.data/scripts/spatialfit +0 -23
  394. rapidtide-2.9.6.data/scripts/spatialmi +0 -23
  395. rapidtide-2.9.6.data/scripts/spectrogram +0 -23
  396. rapidtide-2.9.6.data/scripts/synthASL +0 -23
  397. rapidtide-2.9.6.data/scripts/tcfrom2col +0 -23
  398. rapidtide-2.9.6.data/scripts/tcfrom3col +0 -23
  399. rapidtide-2.9.6.data/scripts/temporaldecomp +0 -23
  400. rapidtide-2.9.6.data/scripts/threeD +0 -236
  401. rapidtide-2.9.6.data/scripts/tidepool +0 -23
  402. rapidtide-2.9.6.data/scripts/variabilityizer +0 -23
  403. rapidtide-2.9.6.dist-info/RECORD +0 -359
  404. rapidtide-2.9.6.dist-info/top_level.txt +0 -86
  405. {rapidtide-2.9.6.dist-info → rapidtide-3.1.3.dist-info/licenses}/LICENSE +0 -0
@@ -1,643 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 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
- import argparse
20
- import copy
21
- import logging
22
- import os
23
- import sys
24
-
25
- import numpy as np
26
-
27
- import rapidtide.filter as tide_filt
28
- import rapidtide.io as tide_io
29
- import rapidtide.miscmath as tide_math
30
- import rapidtide.multiproc as tide_multiproc
31
- import rapidtide.resample as tide_resample
32
- import rapidtide.util as tide_util
33
- import rapidtide.workflows.glmfrommaps as tide_glmfrommaps
34
- import rapidtide.workflows.parser_funcs as pf
35
-
36
- LGR = logging.getLogger("GENERAL")
37
- ErrorLGR = logging.getLogger("ERROR")
38
- TimingLGR = logging.getLogger("TIMING")
39
-
40
- DEFAULT_GLMDERIVS = 0
41
-
42
-
43
- def _get_parser():
44
- """
45
- Argument parser for glmfilt
46
- """
47
- parser = argparse.ArgumentParser(
48
- prog="retroglm",
49
- description="Do the rapidtide GLM filtering using the maps generated from a previous analysis.",
50
- allow_abbrev=False,
51
- )
52
-
53
- # Required arguments
54
- parser.add_argument(
55
- "fmrifile",
56
- type=lambda x: pf.is_valid_file(parser, x),
57
- help="The name of 4D nifti fmri file to filter.",
58
- )
59
- parser.add_argument(
60
- "datafileroot",
61
- type=str,
62
- help="The root name of the previously run rapidtide dataset (everything up to but not including the underscore.)",
63
- )
64
- parser.add_argument(
65
- "--alternateoutput",
66
- dest="alternateoutput",
67
- type=str,
68
- help="Alternate output root (if not specified, will use the same root as the previous dataset).",
69
- default=None,
70
- )
71
- parser.add_argument(
72
- "--glmderivs",
73
- dest="glmderivs",
74
- action="store",
75
- type=int,
76
- metavar="NDERIVS",
77
- help=(
78
- f"When doing final GLM, include derivatives up to NDERIVS order. Default is {DEFAULT_GLMDERIVS}"
79
- ),
80
- default=DEFAULT_GLMDERIVS,
81
- )
82
- parser.add_argument(
83
- "--nprocs",
84
- dest="nprocs",
85
- action="store",
86
- type=int,
87
- metavar="NPROCS",
88
- help=(
89
- "Use NPROCS worker processes for multiprocessing. "
90
- "Setting NPROCS to less than 1 sets the number of "
91
- "worker processes to n_cpus."
92
- ),
93
- default=1,
94
- )
95
- parser.add_argument(
96
- "--numskip",
97
- dest="numskip",
98
- action="store",
99
- type=int,
100
- metavar="NUMSKIP",
101
- help=("Skip NUMSKIP points at the beginning of the fmri file."),
102
- default=0,
103
- )
104
- parser.add_argument(
105
- "--outputlevel",
106
- dest="outputlevel",
107
- action="store",
108
- type=str,
109
- choices=["min", "less", "normal", "more", "max"],
110
- help=(
111
- "The level of file output produced. 'min' produces only absolutely essential files, 'less' adds in "
112
- "the GLM filtered data (rather than just filter efficacy metrics), 'normal' saves what you "
113
- "would typically want around for interactive data exploration, "
114
- "'more' adds files that are sometimes useful, and 'max' outputs anything you might possibly want. "
115
- "Selecting 'max' will produce ~3x your input datafile size as output. "
116
- f'Default is "normal".'
117
- ),
118
- default="normal",
119
- )
120
- parser.add_argument(
121
- "--noprogressbar",
122
- dest="showprogressbar",
123
- action="store_false",
124
- help=("Will disable showing progress bars (helpful if stdout is going to a file)."),
125
- default=True,
126
- )
127
- parser.add_argument(
128
- "--makepseudofile",
129
- dest="makepseudofile",
130
- action="store_true",
131
- help=("Make a simulated input file from the mean and the movingsignal."),
132
- default=False,
133
- )
134
- parser.add_argument(
135
- "--debug",
136
- dest="debug",
137
- action="store_true",
138
- help=("Output lots of helpful information."),
139
- default=False,
140
- )
141
- return parser
142
-
143
-
144
- def retroglm(args):
145
- rt_floatset = np.float64
146
- rt_floattype = "float64"
147
- rt_outfloatset = np.float64
148
- rt_outfloattype = "float64"
149
-
150
- if args.outputlevel == "min":
151
- args.saveminimumglmfiles = False
152
- args.savenormalglmfiles = False
153
- args.savemovingsignal = False
154
- args.saveallglmfiles = False
155
- elif args.outputlevel == "less":
156
- args.saveminimumglmfiles = True
157
- args.savenormalglmfiles = False
158
- args.savemovingsignal = False
159
- args.saveallglmfiles = False
160
- elif args.outputlevel == "normal":
161
- args.saveminimumglmfiles = True
162
- args.savenormalglmfiles = True
163
- args.savemovingsignal = False
164
- args.saveallglmfiles = False
165
- elif args.outputlevel == "more":
166
- args.saveminimumglmfiles = True
167
- args.savenormalglmfiles = True
168
- args.savemovingsignal = True
169
- args.saveallglmfiles = False
170
- elif args.outputlevel == "max":
171
- args.saveminimumglmfiles = True
172
- args.savenormalglmfiles = True
173
- args.savemovingsignal = True
174
- args.saveallglmfiles = True
175
- else:
176
- print(f"illegal output level {args['outputlevel']}")
177
- sys.exit()
178
-
179
- thecommandline = " ".join(sys.argv[1:])
180
-
181
- if args.nprocs < 1:
182
- args.nprocs = tide_multiproc.maxcpus()
183
- # don't use shared memory if there is only one process
184
- if args.nprocs == 1:
185
- usesharedmem = False
186
- else:
187
- usesharedmem = True
188
-
189
- # read the runoptions file
190
- print("reading runoptions")
191
- runoptionsfile = f"{args.datafileroot}_desc-runoptions_info"
192
- therunoptions = tide_io.readoptionsfile(runoptionsfile)
193
- try:
194
- candoretroglm = therunoptions["retroglmcompatible"]
195
- except KeyError:
196
- print("this rapidtide dataset does not support retrospective GLM calculation")
197
- sys.exit()
198
-
199
- # read the fmri input files
200
- print("reading fmrifile")
201
- fmri_input, fmri_data, fmri_header, fmri_dims, fmri_sizes = tide_io.readfromnifti(
202
- args.fmrifile
203
- )
204
- if args.debug:
205
- print(f"{fmri_data.shape=}")
206
- xdim, ydim, slicedim, fmritr = tide_io.parseniftisizes(fmri_sizes)
207
- xsize, ysize, numslices, timepoints = tide_io.parseniftidims(fmri_dims)
208
- numspatiallocs = int(xsize) * int(ysize) * int(numslices)
209
- fmri_data_spacebytime = fmri_data.reshape((numspatiallocs, timepoints))
210
- if args.debug:
211
- print(f"{fmri_data_spacebytime.shape=}")
212
-
213
- # read the processed mask
214
- print("reading procfit maskfile")
215
- procmaskfile = f"{args.datafileroot}_desc-processed_mask.nii.gz"
216
- (
217
- procmask_input,
218
- procmask,
219
- procmask_header,
220
- procmask_dims,
221
- procmask_sizes,
222
- ) = tide_io.readfromnifti(procmaskfile)
223
- if not tide_io.checkspacematch(fmri_header, procmask_header):
224
- raise ValueError("procmask dimensions do not match fmri dimensions")
225
- procmask_spacebytime = procmask.reshape((numspatiallocs))
226
- if args.debug:
227
- print(f"{procmask_spacebytime.shape=}")
228
-
229
- # read the corrfit mask
230
- print("reading corrfit maskfile")
231
- corrmaskfile = f"{args.datafileroot}_desc-corrfit_mask.nii.gz"
232
- (
233
- corrmask_input,
234
- corrmask,
235
- corrmask_header,
236
- corrmask_dims,
237
- corrmask_sizes,
238
- ) = tide_io.readfromnifti(corrmaskfile)
239
- if not tide_io.checkspacematch(fmri_header, corrmask_header):
240
- raise ValueError("corrmask dimensions do not match fmri dimensions")
241
- corrmask_spacebytime = corrmask.reshape((numspatiallocs))
242
- if args.debug:
243
- print(f"{corrmask_spacebytime.shape=}")
244
-
245
- print("reading lagtimes")
246
- lagtimesfile = f"{args.datafileroot}_desc-maxtime_map.nii.gz"
247
- (
248
- lagtimes_input,
249
- lagtimes,
250
- lagtimes_header,
251
- lagtimes_dims,
252
- lagtimes_sizes,
253
- ) = tide_io.readfromnifti(lagtimesfile)
254
- if not tide_io.checkspacematch(fmri_header, lagtimes_header):
255
- raise ValueError("lagtimes dimensions do not match fmri dimensions")
256
- if args.debug:
257
- print(f"{lagtimes.shape=}")
258
- lagtimes_spacebytime = lagtimes.reshape((numspatiallocs))
259
- if args.debug:
260
- print(f"{lagtimes_spacebytime.shape=}")
261
-
262
- startpt = args.numskip
263
- endpt = timepoints - 1
264
- validtimepoints = endpt - startpt + 1
265
- skiptime = startpt * fmritr
266
- initial_fmri_x = (
267
- np.linspace(0.0, validtimepoints * fmritr, num=validtimepoints, endpoint=False) + skiptime
268
- )
269
-
270
- if therunoptions["arbvec"] is not None:
271
- # NOTE - this vector is LOWERPASS, UPPERPASS, LOWERSTOP, UPPERSTOP
272
- # setfreqs expects LOWERSTOP, LOWERPASS, UPPERPASS, UPPERSTOP
273
- theprefilter = tide_filt.NoncausalFilter(
274
- "arb",
275
- transferfunc=therunoptions["filtertype"],
276
- )
277
- theprefilter.setfreqs(
278
- therunoptions["arbvec"][2],
279
- therunoptions["arbvec"][0],
280
- therunoptions["arbvec"][1],
281
- therunoptions["arbvec"][3],
282
- )
283
- else:
284
- theprefilter = tide_filt.NoncausalFilter(
285
- therunoptions["filterband"],
286
- transferfunc=therunoptions["filtertype"],
287
- padtime=therunoptions["padseconds"],
288
- )
289
-
290
- # read the lagtc generator file
291
- print("reading lagtc generator")
292
- lagtcgeneratorfile = f"{args.datafileroot}_desc-lagtcgenerator_timeseries"
293
- genlagtc = tide_resample.FastResamplerFromFile(lagtcgeneratorfile)
294
-
295
- # select the voxels in the mask
296
- print("figuring out valid voxels")
297
- validvoxels = np.where(procmask_spacebytime > 0)[0]
298
- if args.debug:
299
- print(f"{validvoxels.shape=}")
300
- numvalidspatiallocs = np.shape(validvoxels)[0]
301
- if args.debug:
302
- print(f"{numvalidspatiallocs=}")
303
- internalvalidspaceshape = numvalidspatiallocs
304
- internalvalidspaceshapederivs = (
305
- internalvalidspaceshape,
306
- args.glmderivs + 1,
307
- )
308
- internalvalidfmrishape = (numvalidspatiallocs, np.shape(initial_fmri_x)[0])
309
- if args.debug:
310
- print(f"validvoxels shape = {numvalidspatiallocs}")
311
- print(f"internalvalidfmrishape shape = {internalvalidfmrishape}")
312
-
313
- # slicing to valid voxels
314
- print("selecting valid voxels")
315
- fmri_data_valid = fmri_data_spacebytime[validvoxels, :]
316
- lagtimes_valid = lagtimes_spacebytime[validvoxels]
317
- corrmask_valid = corrmask_spacebytime[validvoxels]
318
- procmask_valid = procmask_spacebytime[validvoxels]
319
- if args.debug:
320
- print(f"{fmri_data_valid.shape=}")
321
-
322
- if usesharedmem:
323
- if args.debug:
324
- print("allocating shared memory")
325
- glmmean, dummy, dummy = tide_util.allocshared(internalvalidspaceshape, rt_outfloatset)
326
- rvalue, dummy, dummy = tide_util.allocshared(internalvalidspaceshape, rt_outfloatset)
327
- r2value, dummy, dummy = tide_util.allocshared(internalvalidspaceshape, rt_outfloatset)
328
- fitNorm, dummy, dummy = tide_util.allocshared(
329
- internalvalidspaceshapederivs, rt_outfloatset
330
- )
331
- fitcoeff, dummy, dummy = tide_util.allocshared(
332
- internalvalidspaceshapederivs, rt_outfloatset
333
- )
334
- movingsignal, dummy, dummy = tide_util.allocshared(internalvalidfmrishape, rt_outfloatset)
335
- lagtc, dummy, dummy = tide_util.allocshared(internalvalidfmrishape, rt_floatset)
336
- filtereddata, dummy, dummy = tide_util.allocshared(internalvalidfmrishape, rt_outfloatset)
337
- else:
338
- if args.debug:
339
- print("allocating memory")
340
- glmmean = np.zeros(internalvalidspaceshape, dtype=rt_outfloattype)
341
- rvalue = np.zeros(internalvalidspaceshape, dtype=rt_outfloattype)
342
- r2value = np.zeros(internalvalidspaceshape, dtype=rt_outfloattype)
343
- fitNorm = np.zeros(internalvalidspaceshapederivs, dtype=rt_outfloattype)
344
- fitcoeff = np.zeros(internalvalidspaceshapederivs, dtype=rt_outfloattype)
345
- movingsignal = np.zeros(internalvalidfmrishape, dtype=rt_outfloattype)
346
- lagtc = np.zeros(internalvalidfmrishape, dtype=rt_floattype)
347
- filtereddata = np.zeros(internalvalidfmrishape, dtype=rt_outfloattype)
348
-
349
- oversampfactor = int(therunoptions["oversampfactor"])
350
- if args.alternateoutput is None:
351
- outputname = therunoptions["outputname"]
352
- else:
353
- outputname = args.alternateoutput
354
- if args.debug:
355
- print(f"{outputname=}")
356
- oversamptr = fmritr / oversampfactor
357
- try:
358
- threshval = therunoptions["glmthreshval"]
359
- except KeyError:
360
- threshval = 0.0
361
- mode = "glm"
362
-
363
- outputpath = os.path.dirname(outputname)
364
- rawsources = [
365
- os.path.relpath(args.fmrifile, start=outputpath),
366
- os.path.relpath(lagtimesfile, start=outputpath),
367
- os.path.relpath(corrmaskfile, start=outputpath),
368
- os.path.relpath(procmaskfile, start=outputpath),
369
- os.path.relpath(runoptionsfile, start=outputpath),
370
- os.path.relpath(lagtcgeneratorfile, start=outputpath),
371
- ]
372
-
373
- bidsbasedict = {
374
- "RawSources": rawsources,
375
- "Units": "arbitrary",
376
- "CommandLineArgs": thecommandline,
377
- }
378
-
379
- if args.debug:
380
- # dump the fmri input file going to glm
381
- theheader = copy.deepcopy(fmri_header)
382
- theheader["dim"][4] = validtimepoints
383
- theheader["pixdim"][4] = fmritr
384
-
385
- maplist = [
386
- (
387
- fmri_data_valid,
388
- "datatofilter",
389
- "bold",
390
- None,
391
- "fMRI data that will be subjected to GLM filtering",
392
- ),
393
- ]
394
- tide_io.savemaplist(
395
- outputname,
396
- maplist,
397
- validvoxels,
398
- (xsize, ysize, numslices, validtimepoints),
399
- theheader,
400
- bidsbasedict,
401
- textio=False,
402
- fileiscifti=False,
403
- rt_floattype=rt_floattype,
404
- cifti_hdr=None,
405
- )
406
-
407
- initialvariance = tide_math.imagevariance(fmri_data_valid, theprefilter, 1.0 / fmritr)
408
-
409
- print("calling glmmfrommaps")
410
- voxelsprocessed_glm, regressorset = tide_glmfrommaps.glmfrommaps(
411
- fmri_data_valid,
412
- validvoxels,
413
- initial_fmri_x,
414
- lagtimes_valid,
415
- corrmask_valid,
416
- genlagtc,
417
- mode,
418
- outputname,
419
- oversamptr,
420
- glmmean,
421
- rvalue,
422
- r2value,
423
- fitNorm,
424
- fitcoeff,
425
- movingsignal,
426
- lagtc,
427
- filtereddata,
428
- LGR,
429
- TimingLGR,
430
- threshval,
431
- args.saveminimumglmfiles,
432
- nprocs_makelaggedtcs=args.nprocs,
433
- nprocs_glm=args.nprocs,
434
- glmderivs=args.glmderivs,
435
- showprogressbar=args.showprogressbar,
436
- debug=args.debug,
437
- )
438
-
439
- print(f"filtered {voxelsprocessed_glm} voxels")
440
- finalvariance = tide_math.imagevariance(filtereddata, theprefilter, 1.0 / fmritr)
441
- divlocs = np.where(finalvariance > 0.0)
442
- varchange = initialvariance * 0.0
443
- varchange[divlocs] = 100.0 * (finalvariance[divlocs] / initialvariance[divlocs] - 1.0)
444
-
445
- theheader = copy.deepcopy(lagtimes_header)
446
- if mode == "glm":
447
- maplist = [
448
- (
449
- initialvariance,
450
- "lfofilterInbandVarianceBefore",
451
- "map",
452
- None,
453
- "Inband variance prior to filtering",
454
- ),
455
- (
456
- finalvariance,
457
- "lfofilterInbandVarianceAfter",
458
- "map",
459
- None,
460
- "Inband variance after filtering",
461
- ),
462
- (
463
- varchange,
464
- "lfofilterInbandVarianceChange",
465
- "map",
466
- "percent",
467
- "Change in inband variance after filtering, in percent",
468
- ),
469
- ]
470
- if args.saveminimumglmfiles:
471
- maplist += [
472
- (
473
- r2value,
474
- "lfofilterR2",
475
- "map",
476
- None,
477
- "Squared R value of the GLM fit (proportion of variance explained)",
478
- ),
479
- ]
480
- if args.savenormalglmfiles:
481
- maplist += [
482
- (rvalue, "lfofilterR", "map", None, "R value of the GLM fit"),
483
- (glmmean, "lfofilterMean", "map", None, "Intercept from GLM fit"),
484
- ]
485
- else:
486
- maplist = [
487
- (initialvariance, "lfofilterInbandVarianceBefore", "map", None),
488
- (finalvariance, "lfofilterInbandVarianceAfter", "map", None),
489
- (varchange, "CVRVariance", "map", None),
490
- ]
491
- if args.savenormalglmfiles:
492
- maplist += [
493
- (rvalue, "CVRR", "map", None),
494
- (r2value, "CVRR2", "map", None),
495
- (fitcoeff, "CVR", "map", "percent"),
496
- ]
497
-
498
- bidsdict = bidsbasedict.copy()
499
-
500
- if args.debug:
501
- maplist += [
502
- (
503
- lagtimes_valid,
504
- "maxtimeREAD",
505
- "map",
506
- "second",
507
- "Lag time in seconds used for calculation",
508
- ),
509
- (corrmask_valid, "corrfitREAD", "mask", None, "Correlation mask used for calculation"),
510
- (procmask_valid, "processedREAD", "mask", None, "Processed mask used for calculation"),
511
- ]
512
- if args.savenormalglmfiles:
513
- if args.glmderivs > 0:
514
- maplist += [
515
- (fitcoeff[:, 0], "lfofilterCoeff", "map", None, "Fit coefficient"),
516
- (fitNorm[:, 0], "lfofilterNorm", "map", None, "Normalized fit coefficient"),
517
- ]
518
- for thederiv in range(1, args.glmderivs + 1):
519
- maplist += [
520
- (
521
- fitcoeff[:, thederiv],
522
- f"lfofilterCoeffDeriv{thederiv}",
523
- "map",
524
- None,
525
- f"Fit coefficient for temporal derivative {thederiv}",
526
- ),
527
- (
528
- fitNorm[:, thederiv],
529
- f"lfofilterNormDeriv{thederiv}",
530
- "map",
531
- None,
532
- f"Normalized fit coefficient for temporal derivative {thederiv}",
533
- ),
534
- ]
535
- else:
536
- maplist += [
537
- (fitcoeff, "lfofilterCoeff", "map", None, "Fit coefficient"),
538
- (fitNorm, "lfofilterNorm", "map", None, "Normalized fit coefficient"),
539
- ]
540
-
541
- # write the 3D maps
542
- tide_io.savemaplist(
543
- outputname,
544
- maplist,
545
- validvoxels,
546
- (xsize, ysize, numslices),
547
- theheader,
548
- bidsdict,
549
- debug=args.debug,
550
- )
551
-
552
- # write the 4D maps
553
- theheader = copy.deepcopy(fmri_header)
554
- maplist = []
555
- if args.saveminimumglmfiles:
556
- maplist = [
557
- (
558
- filtereddata,
559
- "lfofilterCleaned",
560
- "bold",
561
- None,
562
- "fMRI data with sLFO signal filtered out",
563
- ),
564
- ]
565
- if args.savemovingsignal:
566
- maplist += [
567
- (
568
- movingsignal,
569
- "lfofilterRemoved",
570
- "bold",
571
- None,
572
- "sLFO signal filtered out of this voxel",
573
- )
574
- ]
575
-
576
- if args.saveallglmfiles:
577
- if args.glmderivs > 0:
578
- if args.debug:
579
- print("going down the multiple EV path")
580
- print(f"{regressorset[:, :, 0].shape=}")
581
- maplist += [
582
- (
583
- regressorset[:, :, 0],
584
- "lfofilterEV",
585
- "bold",
586
- None,
587
- "Shifted sLFO regressor to filter",
588
- ),
589
- ]
590
- for thederiv in range(1, args.glmderivs + 1):
591
- if args.debug:
592
- print(f"{regressorset[:, :, thederiv].shape=}")
593
- maplist += [
594
- (
595
- regressorset[:, :, thederiv],
596
- f"lfofilterEVDeriv{thederiv}",
597
- "bold",
598
- None,
599
- f"Time derivative {thederiv} of shifted sLFO regressor",
600
- ),
601
- ]
602
- else:
603
- if args.debug:
604
- print("going down the single EV path")
605
- maplist += [
606
- (
607
- regressorset,
608
- "lfofilterEV",
609
- "bold",
610
- None,
611
- "Shifted sLFO regressor to filter",
612
- ),
613
- ]
614
- if args.debug:
615
- maplist.append((fmri_data_valid, "inputdata", "bold", None, None))
616
- if args.makepseudofile:
617
- print("reading mean image")
618
- meanfile = f"{args.datafileroot}_desc-mean_map.nii.gz"
619
- (
620
- mean_input,
621
- mean,
622
- mean_header,
623
- mean_dims,
624
- mean_sizes,
625
- ) = tide_io.readfromnifti(meanfile)
626
- if not tide_io.checkspacematch(fmri_header, mean_header):
627
- raise ValueError("mean dimensions do not match fmri dimensions")
628
- if args.debug:
629
- print(f"{mean.shape=}")
630
- mean_spacebytime = mean.reshape((numspatiallocs))
631
- if args.debug:
632
- print(f"{mean_spacebytime.shape=}")
633
- pseudofile = mean_spacebytime[validvoxels, None] + movingsignal[:, :]
634
- maplist.append((pseudofile, "pseudofile", "bold", None, None))
635
- tide_io.savemaplist(
636
- outputname,
637
- maplist,
638
- validvoxels,
639
- (xsize, ysize, numslices, validtimepoints),
640
- theheader,
641
- bidsdict,
642
- debug=args.debug,
643
- )
@@ -1,23 +0,0 @@
1
- #!python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 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
- import rapidtide.workflows.adjustoffset as theworkflow
20
- import rapidtide.workflows.parser_funcs as pf
21
-
22
- if __name__ == "__main__":
23
- pf.generic_init(theworkflow._get_parser, theworkflow.adjustoffset)
@@ -1,23 +0,0 @@
1
- #!python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 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
- import rapidtide.workflows.aligntcs as theworkflow
20
- import rapidtide.workflows.parser_funcs as pf
21
-
22
- if __name__ == "__main__":
23
- pf.generic_init(theworkflow._get_parser, theworkflow.aligntcs)