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
@@ -0,0 +1,415 @@
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, Callable, Dict, List, Optional, Tuple, Union
20
+
21
+ import numpy as np
22
+ from numpy.typing import NDArray
23
+
24
+ import rapidtide.correlate as tide_corr
25
+ import rapidtide.filter as tide_filt
26
+ import rapidtide.io as tide_io
27
+ import rapidtide.miscmath as tide_math
28
+ import rapidtide.simFuncClasses as tide_simFuncClasses
29
+ import rapidtide.simfuncfit as tide_simfuncfit
30
+
31
+
32
+ def cleanregressor(
33
+ outputname: Any,
34
+ thepass: Any,
35
+ referencetc: Any,
36
+ resampref_y: Any,
37
+ resampnonosref_y: Any,
38
+ fmrifreq: Any,
39
+ oversampfreq: Any,
40
+ osvalidsimcalcstart: Any,
41
+ osvalidsimcalcend: Any,
42
+ lagmininpts: Any,
43
+ lagmaxinpts: Any,
44
+ theFitter: Any,
45
+ theCorrelator: Any,
46
+ lagmin: Any,
47
+ lagmax: Any,
48
+ LGR: Optional[Any] = None,
49
+ check_autocorrelation: bool = True,
50
+ fix_autocorrelation: bool = True,
51
+ despeckle_thresh: float = 5.0,
52
+ lthreshval: float = 0.0,
53
+ fixdelay: bool = False,
54
+ detrendorder: int = 3,
55
+ windowfunc: str = "hamming",
56
+ respdelete: bool = False,
57
+ displayplots: bool = False,
58
+ debug: bool = False,
59
+ rt_floattype: np.dtype = np.float64,
60
+ ) -> Tuple[
61
+ NDArray,
62
+ NDArray,
63
+ NDArray,
64
+ float,
65
+ float | None,
66
+ float | None,
67
+ float,
68
+ float | None,
69
+ float | None,
70
+ ]:
71
+ """
72
+ Clean and preprocess a regressor signal by checking and correcting autocorrelation properties.
73
+
74
+ This function performs several operations on the input regressor signal, including:
75
+ detrending, normalization, optional filtering to remove periodic components, and
76
+ autocorrelation analysis to detect and correct sidelobes. It returns cleaned versions
77
+ of the regressor and associated metadata for further use in time series analysis.
78
+
79
+ Parameters
80
+ ----------
81
+ outputname : Any
82
+ Base name for output files.
83
+ thepass : Any
84
+ Pass identifier, used for labeling output files.
85
+ referencetc : Any
86
+ Reference time course data (normalized).
87
+ resampref_y : Any
88
+ Resampled reference signal.
89
+ resampnonosref_y : Any
90
+ Non-oversampled reference signal.
91
+ fmrifreq : Any
92
+ fMRI sampling frequency.
93
+ oversampfreq : Any
94
+ Oversampled frequency.
95
+ osvalidsimcalcstart : Any
96
+ Start index for valid data in oversampled signal.
97
+ osvalidsimcalcend : Any
98
+ End index for valid data in oversampled signal.
99
+ lagmininpts : Any
100
+ Minimum lag in samples for autocorrelation calculation.
101
+ lagmaxinpts : Any
102
+ Maximum lag in samples for autocorrelation calculation.
103
+ theFitter : Any
104
+ Fitter object for fitting autocorrelation data.
105
+ theCorrelator : Any
106
+ Correlator object for computing cross-correlations.
107
+ lagmin : Any
108
+ Minimum lag in seconds.
109
+ lagmax : Any
110
+ Maximum lag in seconds.
111
+ LGR : Optional[Any], optional
112
+ Logger object for logging messages. Default is None.
113
+ check_autocorrelation : bool, optional
114
+ If True, perform autocorrelation checks. Default is True.
115
+ fix_autocorrelation : bool, optional
116
+ If True, attempt to fix detected autocorrelation issues. Default is True.
117
+ despeckle_thresh : float, optional
118
+ Threshold for despeckling autocorrelation data. Default is 5.0.
119
+ lthreshval : float, optional
120
+ Low threshold value for fitting. Default is 0.0.
121
+ fixdelay : bool, optional
122
+ If True, fix delay in fitting. Default is False.
123
+ detrendorder : int, optional
124
+ Order of detrending polynomial. Default is 3.
125
+ windowfunc : str, optional
126
+ Window function to use for normalization. Default is "hamming".
127
+ respdelete : bool, optional
128
+ If True, remove periodic components from the reference signal. Default is False.
129
+ displayplots : bool, optional
130
+ If True, display plots during processing. Default is False.
131
+ debug : bool, optional
132
+ If True, print debugging information. Default is False.
133
+ rt_floattype : np.dtype, optional
134
+ Float type setting for rapidtide processing. Default is np.float64.
135
+
136
+ Returns
137
+ -------
138
+ tuple
139
+ A tuple containing:
140
+ - cleaned_resampref_y : NDArray
141
+ Cleaned resampled reference signal.
142
+ - cleaned_referencetc : NDArray
143
+ Cleaned reference time course.
144
+ - cleaned_nonosreferencetc : NDArray
145
+ Cleaned non-oversampled reference signal.
146
+ - despeckle_thresh : float
147
+ Updated despeckle threshold.
148
+ - sidelobeamp : float or None
149
+ Amplitude of detected sidelobe, or None if not found.
150
+ - sidelobetime : float or None
151
+ Time of detected sidelobe in seconds, or None if not found.
152
+ - lagmod : float
153
+ Lag modulus value used for correction.
154
+ - acwidth : float or None
155
+ Width of autocorrelation function, or None if not computed.
156
+ - absmaxsigma : float or None
157
+ Absolute maximum sigma value, or None if not computed.
158
+
159
+ Notes
160
+ -----
161
+ - If `respdelete` is True, the function applies frequency tracking and filtering to remove
162
+ periodic components from the reference signal.
163
+ - Autocorrelation analysis is performed using `tide_corr.check_autocorrelation` to detect
164
+ sidelobes that may affect the regressor quality.
165
+ - If `fix_autocorrelation` is True, detected sidelobes are corrected by applying a notch filter
166
+ and adjusting the lag modulus.
167
+
168
+ Examples
169
+ --------
170
+ >>> cleanregressor(
171
+ ... outputname="test_output",
172
+ ... thepass=1,
173
+ ... referencetc=ref_tc,
174
+ ... resampref_y=resamp_ref,
175
+ ... resampnonosref_y=resamp_nonos_ref,
176
+ ... fmrifreq=2.0,
177
+ ... oversampfreq=10.0,
178
+ ... osvalidsimcalcstart=0,
179
+ ... osvalidsimcalcend=100,
180
+ ... lagmininpts=5,
181
+ ... lagmaxinpts=20,
182
+ ... theFitter=fitter,
183
+ ... theCorrelator=correlator,
184
+ ... lagmin=-10,
185
+ ... lagmax=10,
186
+ ... check_autocorrelation=True,
187
+ ... fix_autocorrelation=True,
188
+ ... detrendorder=3,
189
+ ... windowfunc="hamming",
190
+ ... respdelete=False,
191
+ ... displayplots=False,
192
+ ... debug=False,
193
+ ... )
194
+ """
195
+ # print debugging info
196
+ if debug:
197
+ print("cleanregressor:")
198
+ print(f"\t{thepass=}")
199
+ print(f"\t{lagmininpts=}")
200
+ print(f"\t{lagmaxinpts=}")
201
+ print(f"\t{lagmin=}")
202
+ print(f"\t{lagmax=}")
203
+ print(f"\t{detrendorder=}")
204
+ print(f"\t{windowfunc=}")
205
+ print(f"\t{respdelete=}")
206
+ print(f"\t{check_autocorrelation=}")
207
+ print(f"\t{fix_autocorrelation=}")
208
+ print(f"\t{despeckle_thresh=}")
209
+ print(f"\t{lthreshval=}")
210
+ print(f"\t{fixdelay=}")
211
+ print(f"\t{check_autocorrelation=}")
212
+ print(f"\t{displayplots=}")
213
+ print(f"\t{rt_floattype=}")
214
+
215
+ # check the regressor for periodic components in the passband
216
+ dolagmod = True
217
+ doreferencenotch = True
218
+ if respdelete:
219
+ resptracker = tide_simFuncClasses.FrequencyTracker(nperseg=64)
220
+ thetimes, thefreqs = resptracker.track(resampref_y, oversampfreq)
221
+ tide_io.writevec(thefreqs, f"{outputname}_peakfreaks_pass{thepass}.txt")
222
+ resampref_y = resptracker.clean(resampref_y, oversampfreq, thetimes, thefreqs)
223
+ tide_io.writevec(resampref_y, f"{outputname}_respfilt_pass{thepass}.txt")
224
+ referencetc = tide_math.corrnormalize(
225
+ resampref_y[osvalidsimcalcstart : osvalidsimcalcend + 1],
226
+ detrendorder=detrendorder,
227
+ windowfunc=windowfunc,
228
+ )
229
+
230
+ if check_autocorrelation:
231
+ if LGR is not None:
232
+ LGR.info("checking reference regressor autocorrelation properties")
233
+ lagmod = 1000.0
234
+ lagindpad = np.max((lagmininpts, lagmaxinpts))
235
+ acmininpts = lagindpad
236
+ acmaxinpts = lagindpad
237
+ theCorrelator.setreftc(referencetc)
238
+ theCorrelator.setlimits(acmininpts, acmaxinpts)
239
+ # theCorrelator.setlimits(lagmininpts, lagmaxinpts)
240
+ print("check_autocorrelation:", acmininpts, acmaxinpts, lagmininpts, lagmaxinpts)
241
+ thexcorr, accheckcorrscale, theglobalmax = theCorrelator.run(
242
+ resampref_y[osvalidsimcalcstart : osvalidsimcalcend + 1],
243
+ trim=False,
244
+ )
245
+ theFitter.setcorrtimeaxis(accheckcorrscale)
246
+ (
247
+ dummy,
248
+ dummy,
249
+ dummy,
250
+ acwidth,
251
+ dummy,
252
+ dummy,
253
+ dummy,
254
+ dummy,
255
+ ) = tide_simfuncfit.onesimfuncfit(
256
+ thexcorr,
257
+ theFitter,
258
+ despeckle_thresh=despeckle_thresh,
259
+ lthreshval=lthreshval,
260
+ fixdelay=fixdelay,
261
+ rt_floattype=rt_floattype,
262
+ )
263
+ tide_io.writebidstsv(
264
+ f"{outputname}_desc-autocorr_timeseries",
265
+ thexcorr,
266
+ 1.0 / (accheckcorrscale[1] - accheckcorrscale[0]),
267
+ starttime=accheckcorrscale[0],
268
+ extraheaderinfo={
269
+ "Description": "Autocorrelation of the probe regressor for each pass"
270
+ },
271
+ columns=[f"pass{thepass}"],
272
+ append=(thepass > 1),
273
+ )
274
+ thelagthresh = np.max((abs(lagmin), abs(lagmax)))
275
+ theampthresh = 0.1
276
+ if LGR is not None:
277
+ LGR.info(
278
+ f"searching for sidelobes with amplitude > {theampthresh} "
279
+ f"with abs(lag) < {thelagthresh} s"
280
+ )
281
+ if debug:
282
+ print(
283
+ (
284
+ f"searching for sidelobes with amplitude > {theampthresh} "
285
+ f"with abs(lag) < {thelagthresh} s"
286
+ )
287
+ )
288
+ sidelobetime, sidelobeamp = tide_corr.check_autocorrelation(
289
+ accheckcorrscale,
290
+ thexcorr,
291
+ acampthresh=theampthresh,
292
+ aclagthresh=thelagthresh,
293
+ detrendorder=detrendorder,
294
+ displayplots=displayplots,
295
+ debug=debug,
296
+ )
297
+ if debug:
298
+ print(f"check_autocorrelation returned: {sidelobetime=}, {sidelobeamp=}")
299
+ absmaxsigma = acwidth * 10.0
300
+ passsuffix = "_pass" + str(thepass)
301
+ if sidelobetime is not None:
302
+ despeckle_thresh = np.max([despeckle_thresh, sidelobetime / 2.0])
303
+ if LGR is not None:
304
+ LGR.warning(
305
+ f"\n\nWARNING: check_autocorrelation found bad sidelobe at {sidelobetime} "
306
+ f"seconds ({1.0 / sidelobetime} Hz)..."
307
+ )
308
+ # bidsify
309
+ """tide_io.writebidstsv(
310
+ f"{outputname}_desc-movingregressor_timeseries",
311
+ tide_math.stdnormalize(resampnonosref_y),
312
+ 1.0 / fmritr,
313
+ columns=["pass1"],
314
+ append=False,
315
+ )"""
316
+ tide_io.writenpvecs(
317
+ np.array([sidelobetime]),
318
+ f"{outputname}_autocorr_sidelobetime" + passsuffix + ".txt",
319
+ )
320
+ if fix_autocorrelation:
321
+ if LGR is not None:
322
+ LGR.info("Removing sidelobe")
323
+ if dolagmod:
324
+ if LGR is not None:
325
+ LGR.info("subjecting lag times to modulus")
326
+ lagmod = sidelobetime / 2.0
327
+ if doreferencenotch:
328
+ if LGR is not None:
329
+ LGR.info("removing spectral component at sidelobe frequency")
330
+ acstopfreq = 1.0 / sidelobetime
331
+ acfixfilter = tide_filt.NoncausalFilter(
332
+ debug=False,
333
+ )
334
+ acfixfilter.settype("arb_stop")
335
+ acfixfilter.setfreqs(
336
+ acstopfreq * 0.9,
337
+ acstopfreq * 0.95,
338
+ acstopfreq * 1.05,
339
+ acstopfreq * 1.1,
340
+ )
341
+ cleaned_resampref_y = tide_math.corrnormalize(
342
+ acfixfilter.apply(oversampfreq, resampref_y),
343
+ windowfunc="None",
344
+ detrendorder=detrendorder,
345
+ )
346
+ cleaned_referencetc = tide_math.corrnormalize(
347
+ cleaned_resampref_y[osvalidsimcalcstart : osvalidsimcalcend + 1],
348
+ detrendorder=detrendorder,
349
+ windowfunc=windowfunc,
350
+ )
351
+ cleaned_nonosreferencetc = tide_math.stdnormalize(
352
+ acfixfilter.apply(fmrifreq, resampnonosref_y)
353
+ )
354
+ tide_io.writebidstsv(
355
+ f"{outputname}_desc-cleanedreferencefmrires_info",
356
+ cleaned_nonosreferencetc,
357
+ fmrifreq,
358
+ columns=[f"pass{thepass}"],
359
+ append=(thepass > 1),
360
+ )
361
+ tide_io.writebidstsv(
362
+ f"{outputname}_desc-cleanedreference_info",
363
+ cleaned_referencetc,
364
+ oversampfreq,
365
+ columns=[f"pass{thepass}"],
366
+ append=(thepass > 1),
367
+ )
368
+ tide_io.writebidstsv(
369
+ f"{outputname}_desc-cleanedresamprefy_info",
370
+ cleaned_resampref_y,
371
+ oversampfreq,
372
+ columns=[f"pass{thepass}"],
373
+ append=(thepass > 1),
374
+ )
375
+ else:
376
+ cleaned_resampref_y = 1.0 * tide_math.corrnormalize(
377
+ resampref_y,
378
+ windowfunc="None",
379
+ detrendorder=detrendorder,
380
+ )
381
+ cleaned_referencetc = 1.0 * referencetc
382
+ cleaned_nonosreferencetc = 1.0 * resampnonosref_y
383
+ else:
384
+ if LGR is not None:
385
+ LGR.info("no sidelobes found in range")
386
+ cleaned_resampref_y = 1.0 * tide_math.corrnormalize(
387
+ resampref_y,
388
+ windowfunc="None",
389
+ detrendorder=detrendorder,
390
+ )
391
+ cleaned_referencetc = 1.0 * referencetc
392
+ cleaned_nonosreferencetc = 1.0 * resampnonosref_y
393
+ else:
394
+ sidelobetime = None
395
+ sidelobeamp = None
396
+ lagmod = 1000.0
397
+ acwidth = None
398
+ absmaxsigma = None
399
+ cleaned_resampref_y = 1.0 * tide_math.corrnormalize(
400
+ resampref_y, windowfunc="None", detrendorder=detrendorder
401
+ )
402
+ cleaned_referencetc = 1.0 * referencetc
403
+ cleaned_nonosreferencetc = 1.0 * resampnonosref_y
404
+
405
+ return (
406
+ cleaned_resampref_y,
407
+ cleaned_referencetc,
408
+ cleaned_nonosreferencetc,
409
+ despeckle_thresh,
410
+ sidelobeamp,
411
+ sidelobetime,
412
+ lagmod,
413
+ acwidth,
414
+ absmaxsigma,
415
+ )