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
@@ -0,0 +1,442 @@
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
+ import argparse
20
+ import copy
21
+ import logging
22
+ import os
23
+ import sys
24
+ from argparse import Namespace
25
+ from typing import Any, Callable, Dict, List, Optional, Tuple, Union
26
+
27
+ import numpy as np
28
+ from numpy.typing import NDArray
29
+
30
+ import rapidtide.io as tide_io
31
+ import rapidtide.linfitfiltpass as tide_linfitfiltpass
32
+ import rapidtide.makelaggedtcs as tide_makelagged
33
+ import rapidtide.multiproc as tide_multiproc
34
+ import rapidtide.resample as tide_resample
35
+ import rapidtide.util as tide_util
36
+ import rapidtide.workflows.parser_funcs as pf
37
+
38
+ LGR = logging.getLogger("GENERAL")
39
+ ErrorLGR = logging.getLogger("ERROR")
40
+ TimingLGR = logging.getLogger("TIMING")
41
+
42
+ DEFAULT_REGRESSIONFILTDERIVS = 0
43
+
44
+
45
+ def _get_parser() -> Any:
46
+ """
47
+ Argument parser for retrolagtcs.
48
+
49
+ This function constructs and returns an `argparse.ArgumentParser` object configured
50
+ for the `retrolagtcs` command-line tool. It defines all required and optional
51
+ arguments needed to generate voxel-specific lagged timecourses from rapidtide
52
+ analysis maps.
53
+
54
+ Returns
55
+ -------
56
+ argparse.ArgumentParser
57
+ Configured argument parser for retrolagtcs.
58
+
59
+ Notes
60
+ -----
61
+ The parser expects several input files and parameters to define the processing
62
+ pipeline. The function uses `pf.is_valid_file` to validate the existence of
63
+ the input 4D NIfTI file.
64
+
65
+ Examples
66
+ --------
67
+ >>> parser = _get_parser()
68
+ >>> args = parser.parse_args()
69
+ >>> print(args.fmrifile)
70
+ 'sub-01_task-rest_bold.nii.gz'
71
+ """
72
+ parser = argparse.ArgumentParser(
73
+ prog="retrolagtcs",
74
+ description="Generate voxel specific lagged timecourses using the maps generated from a previous rapidtide analysis.",
75
+ allow_abbrev=False,
76
+ )
77
+
78
+ # Required arguments
79
+ parser.add_argument(
80
+ "fmrifile",
81
+ type=lambda x: pf.is_valid_file(parser, x),
82
+ help="The name of 4D nifti fmri target file.",
83
+ )
84
+ parser.add_argument(
85
+ "maskfile",
86
+ type=str,
87
+ help="The mask file to use (usually called XXX_desc-corrfit_mask.nii.gz)",
88
+ )
89
+ parser.add_argument(
90
+ "lagtimesfile",
91
+ type=str,
92
+ help="The name of the lag times file (usually called XXX_desc-maxtime_map.nii.gz)",
93
+ )
94
+ parser.add_argument(
95
+ "lagtcgeneratorfile",
96
+ type=str,
97
+ help="The root name of the lagtc generator file (usually called XXX_desc-lagtcgenerator_timeseries)",
98
+ )
99
+ parser.add_argument(
100
+ "outputroot",
101
+ type=str,
102
+ help="Output root.",
103
+ )
104
+ parser.add_argument(
105
+ "--regressderivs",
106
+ dest="regressderivs",
107
+ action="store",
108
+ type=int,
109
+ metavar="NDERIVS",
110
+ help=(
111
+ f"When doing final GLM, include derivatives up to NDERIVS order. Default is {DEFAULT_REGRESSIONFILTDERIVS}"
112
+ ),
113
+ default=DEFAULT_REGRESSIONFILTDERIVS,
114
+ )
115
+ parser.add_argument(
116
+ "--nprocs",
117
+ dest="nprocs",
118
+ action="store",
119
+ type=int,
120
+ metavar="NPROCS",
121
+ help=(
122
+ "Use NPROCS worker processes for multiprocessing. "
123
+ "Setting NPROCS to less than 1 sets the number of "
124
+ "worker processes to n_cpus."
125
+ ),
126
+ default=1,
127
+ )
128
+ parser.add_argument(
129
+ "--numskip",
130
+ dest="numskip",
131
+ action="store",
132
+ type=int,
133
+ metavar="NUMSKIP",
134
+ help=("Skip NUMSKIP points at the beginning of the fmri file."),
135
+ default=0,
136
+ )
137
+ parser.add_argument(
138
+ "--noprogressbar",
139
+ dest="showprogressbar",
140
+ action="store_false",
141
+ help=("Will disable showing progress bars (helpful if stdout is going to a file)."),
142
+ default=True,
143
+ )
144
+
145
+ parser.add_argument(
146
+ "--debug",
147
+ dest="debug",
148
+ action="store_true",
149
+ help=("Output lots of helpful information."),
150
+ default=False,
151
+ )
152
+ return parser
153
+
154
+
155
+ def retrolagtcs(args: Any) -> None:
156
+ """
157
+ Generate lagged time series regressors from fMRI data using a lag-time map and a generator file.
158
+
159
+ This function reads fMRI data, a mask, and a lag-time map to compute lagged time series
160
+ regressors for each voxel in the mask. It supports both single-process and multi-process
161
+ execution using shared memory. The computed regressors are saved as NIfTI files.
162
+
163
+ Parameters
164
+ ----------
165
+ args : Any
166
+ An object containing the following attributes:
167
+ - fmrifile : str
168
+ Path to the input fMRI NIfTI file.
169
+ - maskfile : str
170
+ Path to the processing mask NIfTI file.
171
+ - lagtimesfile : str
172
+ Path to the lag times NIfTI file.
173
+ - lagtcgeneratorfile : str
174
+ Path to the lagtc generator file (used for resampling).
175
+ - outputroot : str
176
+ Root path for output files.
177
+ - nprocs : int
178
+ Number of processes to use for parallel execution. If less than 1, defaults to max CPU count.
179
+ - numskip : int
180
+ Number of initial time points to skip.
181
+ - regressderivs : int
182
+ Number of time derivatives to include in the regressor set.
183
+ - showprogressbar : bool
184
+ Whether to display a progress bar during processing.
185
+ - debug : bool
186
+ Whether to enable debug mode for additional logging.
187
+
188
+ Returns
189
+ -------
190
+ None
191
+ This function does not return a value but writes output files to disk.
192
+
193
+ Notes
194
+ -----
195
+ - The function requires the input files to have matching spatial dimensions.
196
+ - Shared memory is used for multi-process execution to improve performance.
197
+ - Output files include:
198
+ - Regressor time series (4D NIfTI)
199
+ - Optional mask and lag time maps (3D NIfTI)
200
+
201
+ Examples
202
+ --------
203
+ >>> import argparse
204
+ >>> args = argparse.Namespace(
205
+ ... fmrifile='fmri.nii.gz',
206
+ ... maskfile='mask.nii.gz',
207
+ ... lagtimesfile='lagtimes.nii.gz',
208
+ ... lagtcgeneratorfile='generator.txt',
209
+ ... outputroot='output',
210
+ ... nprocs=4,
211
+ ... numskip=5,
212
+ ... regressderivs=2,
213
+ ... showprogressbar=True,
214
+ ... debug=False
215
+ ... )
216
+ >>> retrolagtcs(args)
217
+ """
218
+ rt_floattype = np.float64
219
+ rt_outfloattype = np.float64
220
+
221
+ # get the pid of the parent process
222
+ args.pid = os.getpid()
223
+
224
+ thecommandline = " ".join(sys.argv[1:])
225
+
226
+ if args.nprocs < 1:
227
+ args.nprocs = tide_multiproc.maxcpus()
228
+ # don't use shared memory if there is only one process
229
+ if args.nprocs == 1:
230
+ usesharedmem = False
231
+ else:
232
+ usesharedmem = True
233
+
234
+ # read the fmri input files
235
+ print("reading fmrifile header")
236
+ fmri_input, dummy, fmri_header, fmri_dims, fmri_sizes = tide_io.readfromnifti(
237
+ args.fmrifile,
238
+ headeronly=True,
239
+ )
240
+ xdim, ydim, slicedim, fmritr = tide_io.parseniftisizes(fmri_sizes)
241
+ xsize, ysize, numslices, timepoints = tide_io.parseniftidims(fmri_dims)
242
+ numspatiallocs = int(xsize) * int(ysize) * int(numslices)
243
+
244
+ # read the processed mask
245
+ print("reading procfit maskfile")
246
+ (
247
+ procmask_input,
248
+ procmask,
249
+ procmask_header,
250
+ procmask_dims,
251
+ procmask_sizes,
252
+ ) = tide_io.readfromnifti(args.maskfile)
253
+ if not tide_io.checkspacematch(fmri_header, procmask_header):
254
+ raise ValueError("procmask dimensions do not match fmri dimensions")
255
+ procmask_spacebytime = procmask.reshape((numspatiallocs))
256
+ if args.debug:
257
+ print(f"{procmask_spacebytime.shape=}")
258
+
259
+ print("reading lagtimes")
260
+ (
261
+ lagtimes_input,
262
+ lagtimes,
263
+ lagtimes_header,
264
+ lagtimes_dims,
265
+ lagtimes_sizes,
266
+ ) = tide_io.readfromnifti(args.lagtimesfile)
267
+ if not tide_io.checkspacematch(fmri_header, lagtimes_header):
268
+ raise ValueError("lagtimes dimensions do not match fmri dimensions")
269
+ if args.debug:
270
+ print(f"{lagtimes.shape=}")
271
+ lagtimes_spacebytime = lagtimes.reshape((numspatiallocs))
272
+ if args.debug:
273
+ print(f"{lagtimes_spacebytime.shape=}")
274
+
275
+ startpt = args.numskip
276
+ endpt = timepoints - 1
277
+ validtimepoints = endpt - startpt + 1
278
+ skiptime = startpt * fmritr
279
+ initial_fmri_x = (
280
+ np.linspace(0.0, validtimepoints * fmritr, num=validtimepoints, endpoint=False) + skiptime
281
+ )
282
+
283
+ # read the lagtc generator file
284
+ print("reading lagtc generator")
285
+ genlagtc = tide_resample.FastResamplerFromFile(args.lagtcgeneratorfile)
286
+
287
+ # select the voxels in the mask
288
+ print("figuring out valid voxels")
289
+ validvoxels = np.where(procmask_spacebytime > 0)[0]
290
+ if args.debug:
291
+ print(f"{validvoxels.shape=}")
292
+ numvalidspatiallocs = np.shape(validvoxels)[0]
293
+ if args.debug:
294
+ print(f"{numvalidspatiallocs=}")
295
+ internalvalidspaceshape = numvalidspatiallocs
296
+ internalvalidspaceshapederivs = (
297
+ internalvalidspaceshape,
298
+ args.regressderivs + 1,
299
+ )
300
+ internalvalidfmrishape = (numvalidspatiallocs, np.shape(initial_fmri_x)[0])
301
+ if args.debug:
302
+ print(f"validvoxels shape = {numvalidspatiallocs}")
303
+ print(f"internalvalidfmrishape shape = {internalvalidfmrishape}")
304
+
305
+ # slicing to valid voxels
306
+ print("selecting valid voxels")
307
+ lagtimes_valid = lagtimes_spacebytime[validvoxels]
308
+ procmask_valid = procmask_spacebytime[validvoxels]
309
+ if args.debug:
310
+ print(f"{lagtimes_valid.shape=}")
311
+
312
+ if usesharedmem:
313
+ if args.debug:
314
+ print("allocating shared memory")
315
+ else:
316
+ if args.debug:
317
+ print("allocating memory")
318
+ fitNorm, fitNorm_shm = tide_util.allocarray(
319
+ internalvalidspaceshapederivs, rt_outfloattype, shared=usesharedmem
320
+ )
321
+ fitcoeff, fitcoeff_shm = tide_util.allocarray(
322
+ internalvalidspaceshapederivs, rt_outfloattype, shared=usesharedmem
323
+ )
324
+ lagtc, lagtc_shm = tide_util.allocarray(
325
+ internalvalidfmrishape, rt_floattype, shared=usesharedmem
326
+ )
327
+
328
+ outputpath = os.path.dirname(args.outputroot)
329
+ rawsources = [
330
+ os.path.relpath(args.fmrifile, start=outputpath),
331
+ os.path.relpath(args.lagtimesfile, start=outputpath),
332
+ os.path.relpath(args.maskfile, start=outputpath),
333
+ os.path.relpath(args.lagtcgeneratorfile, start=outputpath),
334
+ ]
335
+
336
+ bidsbasedict = {
337
+ "RawSources": rawsources,
338
+ "Units": "arbitrary",
339
+ "CommandLineArgs": thecommandline,
340
+ }
341
+
342
+ print("calling makelaggedtcs")
343
+ voxelsprocessed_makelagged = tide_makelagged.makelaggedtcs(
344
+ genlagtc,
345
+ initial_fmri_x,
346
+ procmask_valid,
347
+ lagtimes_valid,
348
+ lagtc,
349
+ LGR=LGR,
350
+ nprocs=args.nprocs,
351
+ showprogressbar=args.showprogressbar,
352
+ )
353
+
354
+ print(f"generated regressors for {voxelsprocessed_makelagged} voxels")
355
+
356
+ theheader = copy.deepcopy(lagtimes_header)
357
+ bidsdict = bidsbasedict.copy()
358
+
359
+ if args.debug:
360
+ maplist = [
361
+ (
362
+ lagtimes_valid,
363
+ "maxtimeREAD",
364
+ "map",
365
+ "second",
366
+ "Lag time in seconds used for calculation",
367
+ ),
368
+ (procmask_valid, "maskREAD", "mask", None, "Mask used for calculation"),
369
+ ]
370
+
371
+ # write the 3D maps
372
+ tide_io.savemaplist(
373
+ args.outputroot,
374
+ maplist,
375
+ validvoxels,
376
+ (xsize, ysize, numslices),
377
+ theheader,
378
+ bidsdict,
379
+ debug=args.debug,
380
+ )
381
+
382
+ # write the 4D maps
383
+ theheader = copy.deepcopy(fmri_header)
384
+ maplist = []
385
+
386
+ if args.regressderivs > 0:
387
+ if args.debug:
388
+ print(f"adding derivatives up to order {args.regressderivs} prior to regression")
389
+ regressorset = tide_linfitfiltpass.makevoxelspecificderivs(lagtc, args.regressderivs)
390
+
391
+ if args.debug:
392
+ print("going down the multiple EV path")
393
+ print(f"{regressorset[:, :, 0].shape=}")
394
+ maplist += [
395
+ (
396
+ regressorset[:, :, 0],
397
+ "lfofilterEV",
398
+ "bold",
399
+ None,
400
+ "Shifted sLFO regressor to filter",
401
+ ),
402
+ ]
403
+ for thederiv in range(1, args.regressderivs + 1):
404
+ if args.debug:
405
+ print(f"{regressorset[:, :, thederiv].shape=}")
406
+ maplist += [
407
+ (
408
+ regressorset[:, :, thederiv],
409
+ f"lfofilterEVDeriv{thederiv}",
410
+ "bold",
411
+ None,
412
+ f"Time derivative {thederiv} of shifted sLFO regressor",
413
+ ),
414
+ ]
415
+ else:
416
+ regressorset = lagtc
417
+ if args.debug:
418
+ print("going down the single EV path")
419
+ maplist += [
420
+ (
421
+ regressorset,
422
+ "lfofilterEV",
423
+ "bold",
424
+ None,
425
+ "Shifted sLFO regressor to filter",
426
+ ),
427
+ ]
428
+ tide_io.savemaplist(
429
+ args.outputroot,
430
+ maplist,
431
+ validvoxels,
432
+ (xsize, ysize, numslices, validtimepoints),
433
+ theheader,
434
+ bidsdict,
435
+ debug=args.debug,
436
+ )
437
+
438
+ # clean up shared memory
439
+ if usesharedmem:
440
+ tide_util.cleanup_shm(fitNorm_shm)
441
+ tide_util.cleanup_shm(fitcoeff_shm)
442
+ tide_util.cleanup_shm(lagtc_shm)