rapidtide 2.9.5__py3-none-any.whl → 3.1.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. cloud/gmscalc-HCPYA +1 -1
  2. cloud/mount-and-run +2 -0
  3. cloud/rapidtide-HCPYA +3 -3
  4. rapidtide/Colortables.py +538 -38
  5. rapidtide/OrthoImageItem.py +1094 -51
  6. rapidtide/RapidtideDataset.py +1709 -114
  7. rapidtide/__init__.py +0 -8
  8. rapidtide/_version.py +4 -4
  9. rapidtide/calccoherence.py +242 -97
  10. rapidtide/calcnullsimfunc.py +240 -140
  11. rapidtide/calcsimfunc.py +314 -129
  12. rapidtide/correlate.py +1211 -389
  13. rapidtide/data/examples/src/testLD +56 -0
  14. rapidtide/data/examples/src/test_findmaxlag.py +2 -2
  15. rapidtide/data/examples/src/test_mlregressallt.py +32 -17
  16. rapidtide/data/examples/src/testalign +1 -1
  17. rapidtide/data/examples/src/testatlasaverage +35 -7
  18. rapidtide/data/examples/src/testboth +21 -0
  19. rapidtide/data/examples/src/testcifti +11 -0
  20. rapidtide/data/examples/src/testdelayvar +13 -0
  21. rapidtide/data/examples/src/testdlfilt +25 -0
  22. rapidtide/data/examples/src/testfft +35 -0
  23. rapidtide/data/examples/src/testfileorfloat +37 -0
  24. rapidtide/data/examples/src/testfmri +94 -27
  25. rapidtide/data/examples/src/testfuncs +3 -3
  26. rapidtide/data/examples/src/testglmfilt +8 -6
  27. rapidtide/data/examples/src/testhappy +84 -51
  28. rapidtide/data/examples/src/testinitdelay +19 -0
  29. rapidtide/data/examples/src/testmodels +33 -0
  30. rapidtide/data/examples/src/testnewrefine +26 -0
  31. rapidtide/data/examples/src/testnoiseamp +21 -0
  32. rapidtide/data/examples/src/testppgproc +17 -0
  33. rapidtide/data/examples/src/testrefineonly +22 -0
  34. rapidtide/data/examples/src/testretro +26 -13
  35. rapidtide/data/examples/src/testretrolagtcs +16 -0
  36. rapidtide/data/examples/src/testrolloff +11 -0
  37. rapidtide/data/examples/src/testsimdata +45 -28
  38. rapidtide/data/models/model_cnn_pytorch/loss.png +0 -0
  39. rapidtide/data/models/model_cnn_pytorch/loss.txt +1 -0
  40. rapidtide/data/models/model_cnn_pytorch/model.pth +0 -0
  41. rapidtide/data/models/model_cnn_pytorch/model_meta.json +68 -0
  42. rapidtide/data/models/model_cnn_pytorch_fulldata/loss.png +0 -0
  43. rapidtide/data/models/model_cnn_pytorch_fulldata/loss.txt +1 -0
  44. rapidtide/data/models/model_cnn_pytorch_fulldata/model.pth +0 -0
  45. rapidtide/data/models/model_cnn_pytorch_fulldata/model_meta.json +80 -0
  46. rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.png +0 -0
  47. rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.txt +1 -0
  48. rapidtide/data/models/model_cnnbp_pytorch_fullldata/model.pth +0 -0
  49. rapidtide/data/models/model_cnnbp_pytorch_fullldata/model_meta.json +138 -0
  50. rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.png +0 -0
  51. rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.txt +1 -0
  52. rapidtide/data/models/model_cnnfft_pytorch_fulldata/model.pth +0 -0
  53. rapidtide/data/models/model_cnnfft_pytorch_fulldata/model_meta.json +128 -0
  54. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.png +0 -0
  55. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.txt +1 -0
  56. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model.pth +0 -0
  57. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model_meta.json +49 -0
  58. rapidtide/data/models/model_revised_tf2/model.keras +0 -0
  59. rapidtide/data/models/{model_serdar → model_revised_tf2}/model_meta.json +1 -1
  60. rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
  61. rapidtide/data/models/{model_serdar2 → model_serdar2_tf2}/model_meta.json +1 -1
  62. rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
  63. rapidtide/data/models/{model_revised → model_serdar_tf2}/model_meta.json +1 -1
  64. rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
  65. rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
  66. rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
  67. rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
  68. rapidtide/data/reference/HCP1200v2_graylaghist.json +7 -0
  69. rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
  70. rapidtide/data/reference/HCP1200v2_laghist.json +7 -0
  71. rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
  72. rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
  73. rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
  74. rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
  75. rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
  76. rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
  77. rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
  78. rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
  79. rapidtide/data/reference/HCP1200v2_whitelaghist.json +7 -0
  80. rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
  81. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +131 -0
  82. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +60 -0
  83. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
  84. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm.nii.gz +0 -0
  85. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm_mask.nii.gz +0 -0
  86. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
  87. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
  88. rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
  89. rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
  90. rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
  91. rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
  92. rapidtide/decorators.py +91 -0
  93. rapidtide/dlfilter.py +2553 -414
  94. rapidtide/dlfiltertorch.py +5201 -0
  95. rapidtide/externaltools.py +328 -13
  96. rapidtide/fMRIData_class.py +178 -0
  97. rapidtide/ffttools.py +168 -0
  98. rapidtide/filter.py +2704 -1462
  99. rapidtide/fit.py +2361 -579
  100. rapidtide/genericmultiproc.py +197 -0
  101. rapidtide/happy_supportfuncs.py +3255 -548
  102. rapidtide/helper_classes.py +590 -1181
  103. rapidtide/io.py +2569 -468
  104. rapidtide/linfitfiltpass.py +784 -0
  105. rapidtide/makelaggedtcs.py +267 -97
  106. rapidtide/maskutil.py +555 -25
  107. rapidtide/miscmath.py +867 -137
  108. rapidtide/multiproc.py +217 -44
  109. rapidtide/patchmatch.py +752 -0
  110. rapidtide/peakeval.py +32 -32
  111. rapidtide/ppgproc.py +2205 -0
  112. rapidtide/qualitycheck.py +353 -40
  113. rapidtide/refinedelay.py +854 -0
  114. rapidtide/refineregressor.py +939 -0
  115. rapidtide/resample.py +725 -204
  116. rapidtide/scripts/__init__.py +1 -0
  117. rapidtide/scripts/{adjustoffset → adjustoffset.py} +7 -2
  118. rapidtide/scripts/{aligntcs → aligntcs.py} +7 -2
  119. rapidtide/scripts/{applydlfilter → applydlfilter.py} +7 -2
  120. rapidtide/scripts/applyppgproc.py +28 -0
  121. rapidtide/scripts/{atlasaverage → atlasaverage.py} +7 -2
  122. rapidtide/scripts/{atlastool → atlastool.py} +7 -2
  123. rapidtide/scripts/{calcicc → calcicc.py} +7 -2
  124. rapidtide/scripts/{calctexticc → calctexticc.py} +7 -2
  125. rapidtide/scripts/{calcttest → calcttest.py} +7 -2
  126. rapidtide/scripts/{ccorrica → ccorrica.py} +7 -2
  127. rapidtide/scripts/delayvar.py +28 -0
  128. rapidtide/scripts/{diffrois → diffrois.py} +7 -2
  129. rapidtide/scripts/{endtidalproc → endtidalproc.py} +7 -2
  130. rapidtide/scripts/{fdica → fdica.py} +7 -2
  131. rapidtide/scripts/{filtnifti → filtnifti.py} +7 -2
  132. rapidtide/scripts/{filttc → filttc.py} +7 -2
  133. rapidtide/scripts/{fingerprint → fingerprint.py} +20 -16
  134. rapidtide/scripts/{fixtr → fixtr.py} +7 -2
  135. rapidtide/scripts/{gmscalc → gmscalc.py} +7 -2
  136. rapidtide/scripts/{happy → happy.py} +7 -2
  137. rapidtide/scripts/{happy2std → happy2std.py} +7 -2
  138. rapidtide/scripts/{happywarp → happywarp.py} +8 -4
  139. rapidtide/scripts/{histnifti → histnifti.py} +7 -2
  140. rapidtide/scripts/{histtc → histtc.py} +7 -2
  141. rapidtide/scripts/{glmfilt → linfitfilt.py} +7 -4
  142. rapidtide/scripts/{localflow → localflow.py} +7 -2
  143. rapidtide/scripts/{mergequality → mergequality.py} +7 -2
  144. rapidtide/scripts/{pairproc → pairproc.py} +7 -2
  145. rapidtide/scripts/{pairwisemergenifti → pairwisemergenifti.py} +7 -2
  146. rapidtide/scripts/{physiofreq → physiofreq.py} +7 -2
  147. rapidtide/scripts/{pixelcomp → pixelcomp.py} +7 -2
  148. rapidtide/scripts/{plethquality → plethquality.py} +7 -2
  149. rapidtide/scripts/{polyfitim → polyfitim.py} +7 -2
  150. rapidtide/scripts/{proj2flow → proj2flow.py} +7 -2
  151. rapidtide/scripts/{rankimage → rankimage.py} +7 -2
  152. rapidtide/scripts/{rapidtide → rapidtide.py} +7 -2
  153. rapidtide/scripts/{rapidtide2std → rapidtide2std.py} +7 -2
  154. rapidtide/scripts/{resamplenifti → resamplenifti.py} +7 -2
  155. rapidtide/scripts/{resampletc → resampletc.py} +7 -2
  156. rapidtide/scripts/retrolagtcs.py +28 -0
  157. rapidtide/scripts/retroregress.py +28 -0
  158. rapidtide/scripts/{roisummarize → roisummarize.py} +7 -2
  159. rapidtide/scripts/{runqualitycheck → runqualitycheck.py} +7 -2
  160. rapidtide/scripts/{showarbcorr → showarbcorr.py} +7 -2
  161. rapidtide/scripts/{showhist → showhist.py} +7 -2
  162. rapidtide/scripts/{showstxcorr → showstxcorr.py} +7 -2
  163. rapidtide/scripts/{showtc → showtc.py} +7 -2
  164. rapidtide/scripts/{showxcorr_legacy → showxcorr_legacy.py} +8 -8
  165. rapidtide/scripts/{showxcorrx → showxcorrx.py} +7 -2
  166. rapidtide/scripts/{showxy → showxy.py} +7 -2
  167. rapidtide/scripts/{simdata → simdata.py} +7 -2
  168. rapidtide/scripts/{spatialdecomp → spatialdecomp.py} +7 -2
  169. rapidtide/scripts/{spatialfit → spatialfit.py} +7 -2
  170. rapidtide/scripts/{spatialmi → spatialmi.py} +7 -2
  171. rapidtide/scripts/{spectrogram → spectrogram.py} +7 -2
  172. rapidtide/scripts/stupidramtricks.py +238 -0
  173. rapidtide/scripts/{synthASL → synthASL.py} +7 -2
  174. rapidtide/scripts/{tcfrom2col → tcfrom2col.py} +7 -2
  175. rapidtide/scripts/{tcfrom3col → tcfrom3col.py} +7 -2
  176. rapidtide/scripts/{temporaldecomp → temporaldecomp.py} +7 -2
  177. rapidtide/scripts/{testhrv → testhrv.py} +1 -1
  178. rapidtide/scripts/{threeD → threeD.py} +7 -2
  179. rapidtide/scripts/{tidepool → tidepool.py} +7 -2
  180. rapidtide/scripts/{variabilityizer → variabilityizer.py} +7 -2
  181. rapidtide/simFuncClasses.py +2113 -0
  182. rapidtide/simfuncfit.py +312 -108
  183. rapidtide/stats.py +579 -247
  184. rapidtide/tests/.coveragerc +27 -6
  185. rapidtide-2.9.5.data/scripts/fdica → rapidtide/tests/cleanposttest +4 -6
  186. rapidtide/tests/happycomp +9 -0
  187. rapidtide/tests/resethappytargets +1 -1
  188. rapidtide/tests/resetrapidtidetargets +1 -1
  189. rapidtide/tests/resettargets +1 -1
  190. rapidtide/tests/runlocaltest +3 -3
  191. rapidtide/tests/showkernels +1 -1
  192. rapidtide/tests/test_aliasedcorrelate.py +4 -4
  193. rapidtide/tests/test_aligntcs.py +1 -1
  194. rapidtide/tests/test_calcicc.py +1 -1
  195. rapidtide/tests/test_cleanregressor.py +184 -0
  196. rapidtide/tests/test_congrid.py +70 -81
  197. rapidtide/tests/test_correlate.py +1 -1
  198. rapidtide/tests/test_corrpass.py +4 -4
  199. rapidtide/tests/test_delayestimation.py +54 -59
  200. rapidtide/tests/test_dlfiltertorch.py +437 -0
  201. rapidtide/tests/test_doresample.py +2 -2
  202. rapidtide/tests/test_externaltools.py +69 -0
  203. rapidtide/tests/test_fastresampler.py +9 -5
  204. rapidtide/tests/test_filter.py +96 -57
  205. rapidtide/tests/test_findmaxlag.py +50 -19
  206. rapidtide/tests/test_fullrunhappy_v1.py +15 -10
  207. rapidtide/tests/test_fullrunhappy_v2.py +19 -13
  208. rapidtide/tests/test_fullrunhappy_v3.py +28 -13
  209. rapidtide/tests/test_fullrunhappy_v4.py +30 -11
  210. rapidtide/tests/test_fullrunhappy_v5.py +62 -0
  211. rapidtide/tests/test_fullrunrapidtide_v1.py +61 -7
  212. rapidtide/tests/test_fullrunrapidtide_v2.py +27 -15
  213. rapidtide/tests/test_fullrunrapidtide_v3.py +28 -8
  214. rapidtide/tests/test_fullrunrapidtide_v4.py +16 -8
  215. rapidtide/tests/test_fullrunrapidtide_v5.py +15 -6
  216. rapidtide/tests/test_fullrunrapidtide_v6.py +142 -0
  217. rapidtide/tests/test_fullrunrapidtide_v7.py +114 -0
  218. rapidtide/tests/test_fullrunrapidtide_v8.py +66 -0
  219. rapidtide/tests/test_getparsers.py +158 -0
  220. rapidtide/tests/test_io.py +59 -18
  221. rapidtide/tests/{test_glmpass.py → test_linfitfiltpass.py} +10 -10
  222. rapidtide/tests/test_mi.py +1 -1
  223. rapidtide/tests/test_miscmath.py +1 -1
  224. rapidtide/tests/test_motionregress.py +5 -5
  225. rapidtide/tests/test_nullcorr.py +6 -9
  226. rapidtide/tests/test_padvec.py +216 -0
  227. rapidtide/tests/test_parserfuncs.py +101 -0
  228. rapidtide/tests/test_phaseanalysis.py +1 -1
  229. rapidtide/tests/test_rapidtideparser.py +59 -53
  230. rapidtide/tests/test_refinedelay.py +296 -0
  231. rapidtide/tests/test_runmisc.py +5 -5
  232. rapidtide/tests/test_sharedmem.py +60 -0
  233. rapidtide/tests/test_simroundtrip.py +132 -0
  234. rapidtide/tests/test_simulate.py +1 -1
  235. rapidtide/tests/test_stcorrelate.py +4 -2
  236. rapidtide/tests/test_timeshift.py +2 -2
  237. rapidtide/tests/test_valtoindex.py +1 -1
  238. rapidtide/tests/test_zRapidtideDataset.py +5 -3
  239. rapidtide/tests/utils.py +10 -9
  240. rapidtide/tidepoolTemplate.py +88 -70
  241. rapidtide/tidepoolTemplate.ui +60 -46
  242. rapidtide/tidepoolTemplate_alt.py +88 -53
  243. rapidtide/tidepoolTemplate_alt.ui +62 -52
  244. rapidtide/tidepoolTemplate_alt_qt6.py +921 -0
  245. rapidtide/tidepoolTemplate_big.py +1125 -0
  246. rapidtide/tidepoolTemplate_big.ui +2386 -0
  247. rapidtide/tidepoolTemplate_big_qt6.py +1129 -0
  248. rapidtide/tidepoolTemplate_qt6.py +793 -0
  249. rapidtide/util.py +1389 -148
  250. rapidtide/voxelData.py +1048 -0
  251. rapidtide/wiener.py +138 -25
  252. rapidtide/wiener2.py +114 -8
  253. rapidtide/workflows/adjustoffset.py +107 -5
  254. rapidtide/workflows/aligntcs.py +86 -3
  255. rapidtide/workflows/applydlfilter.py +231 -89
  256. rapidtide/workflows/applyppgproc.py +540 -0
  257. rapidtide/workflows/atlasaverage.py +309 -48
  258. rapidtide/workflows/atlastool.py +130 -9
  259. rapidtide/workflows/calcSimFuncMap.py +490 -0
  260. rapidtide/workflows/calctexticc.py +202 -10
  261. rapidtide/workflows/ccorrica.py +123 -15
  262. rapidtide/workflows/cleanregressor.py +415 -0
  263. rapidtide/workflows/delayvar.py +1268 -0
  264. rapidtide/workflows/diffrois.py +84 -6
  265. rapidtide/workflows/endtidalproc.py +149 -9
  266. rapidtide/workflows/fdica.py +197 -17
  267. rapidtide/workflows/filtnifti.py +71 -4
  268. rapidtide/workflows/filttc.py +76 -5
  269. rapidtide/workflows/fitSimFuncMap.py +578 -0
  270. rapidtide/workflows/fixtr.py +74 -4
  271. rapidtide/workflows/gmscalc.py +116 -6
  272. rapidtide/workflows/happy.py +1242 -480
  273. rapidtide/workflows/happy2std.py +145 -13
  274. rapidtide/workflows/happy_parser.py +277 -59
  275. rapidtide/workflows/histnifti.py +120 -4
  276. rapidtide/workflows/histtc.py +85 -4
  277. rapidtide/workflows/{glmfilt.py → linfitfilt.py} +128 -14
  278. rapidtide/workflows/localflow.py +329 -29
  279. rapidtide/workflows/mergequality.py +80 -4
  280. rapidtide/workflows/niftidecomp.py +323 -19
  281. rapidtide/workflows/niftistats.py +178 -8
  282. rapidtide/workflows/pairproc.py +99 -5
  283. rapidtide/workflows/pairwisemergenifti.py +86 -3
  284. rapidtide/workflows/parser_funcs.py +1488 -56
  285. rapidtide/workflows/physiofreq.py +139 -12
  286. rapidtide/workflows/pixelcomp.py +211 -9
  287. rapidtide/workflows/plethquality.py +105 -23
  288. rapidtide/workflows/polyfitim.py +159 -19
  289. rapidtide/workflows/proj2flow.py +76 -3
  290. rapidtide/workflows/rankimage.py +115 -8
  291. rapidtide/workflows/rapidtide.py +1833 -1919
  292. rapidtide/workflows/rapidtide2std.py +101 -3
  293. rapidtide/workflows/rapidtide_parser.py +607 -372
  294. rapidtide/workflows/refineDelayMap.py +249 -0
  295. rapidtide/workflows/refineRegressor.py +1215 -0
  296. rapidtide/workflows/regressfrommaps.py +308 -0
  297. rapidtide/workflows/resamplenifti.py +86 -4
  298. rapidtide/workflows/resampletc.py +92 -4
  299. rapidtide/workflows/retrolagtcs.py +442 -0
  300. rapidtide/workflows/retroregress.py +1501 -0
  301. rapidtide/workflows/roisummarize.py +176 -7
  302. rapidtide/workflows/runqualitycheck.py +72 -7
  303. rapidtide/workflows/showarbcorr.py +172 -16
  304. rapidtide/workflows/showhist.py +87 -3
  305. rapidtide/workflows/showstxcorr.py +161 -4
  306. rapidtide/workflows/showtc.py +172 -10
  307. rapidtide/workflows/showxcorrx.py +250 -62
  308. rapidtide/workflows/showxy.py +186 -16
  309. rapidtide/workflows/simdata.py +418 -112
  310. rapidtide/workflows/spatialfit.py +83 -8
  311. rapidtide/workflows/spatialmi.py +252 -29
  312. rapidtide/workflows/spectrogram.py +306 -33
  313. rapidtide/workflows/synthASL.py +157 -6
  314. rapidtide/workflows/tcfrom2col.py +77 -3
  315. rapidtide/workflows/tcfrom3col.py +75 -3
  316. rapidtide/workflows/tidepool.py +3829 -666
  317. rapidtide/workflows/utils.py +45 -19
  318. rapidtide/workflows/utils_doc.py +293 -0
  319. rapidtide/workflows/variabilityizer.py +118 -5
  320. {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info}/METADATA +30 -223
  321. rapidtide-3.1.3.dist-info/RECORD +393 -0
  322. {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info}/WHEEL +1 -1
  323. rapidtide-3.1.3.dist-info/entry_points.txt +65 -0
  324. rapidtide-3.1.3.dist-info/top_level.txt +2 -0
  325. rapidtide/calcandfitcorrpairs.py +0 -262
  326. rapidtide/data/examples/src/testoutputsize +0 -45
  327. rapidtide/data/models/model_revised/model.h5 +0 -0
  328. rapidtide/data/models/model_serdar/model.h5 +0 -0
  329. rapidtide/data/models/model_serdar2/model.h5 +0 -0
  330. rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm.nii.gz +0 -0
  331. rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm_mask.nii.gz +0 -0
  332. rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm.nii.gz +0 -0
  333. rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm_mask.nii.gz +0 -0
  334. rapidtide/data/reference/HCP1200_binmask_2mm_2009c_asym.nii.gz +0 -0
  335. rapidtide/data/reference/HCP1200_lag_2mm_2009c_asym.nii.gz +0 -0
  336. rapidtide/data/reference/HCP1200_mask_2mm_2009c_asym.nii.gz +0 -0
  337. rapidtide/data/reference/HCP1200_negmask_2mm_2009c_asym.nii.gz +0 -0
  338. rapidtide/data/reference/HCP1200_sigma_2mm_2009c_asym.nii.gz +0 -0
  339. rapidtide/data/reference/HCP1200_strength_2mm_2009c_asym.nii.gz +0 -0
  340. rapidtide/glmpass.py +0 -434
  341. rapidtide/refine_factored.py +0 -641
  342. rapidtide/scripts/retroglm +0 -23
  343. rapidtide/workflows/glmfrommaps.py +0 -202
  344. rapidtide/workflows/retroglm.py +0 -643
  345. rapidtide-2.9.5.data/scripts/adjustoffset +0 -23
  346. rapidtide-2.9.5.data/scripts/aligntcs +0 -23
  347. rapidtide-2.9.5.data/scripts/applydlfilter +0 -23
  348. rapidtide-2.9.5.data/scripts/atlasaverage +0 -23
  349. rapidtide-2.9.5.data/scripts/atlastool +0 -23
  350. rapidtide-2.9.5.data/scripts/calcicc +0 -22
  351. rapidtide-2.9.5.data/scripts/calctexticc +0 -23
  352. rapidtide-2.9.5.data/scripts/calcttest +0 -22
  353. rapidtide-2.9.5.data/scripts/ccorrica +0 -23
  354. rapidtide-2.9.5.data/scripts/diffrois +0 -23
  355. rapidtide-2.9.5.data/scripts/endtidalproc +0 -23
  356. rapidtide-2.9.5.data/scripts/filtnifti +0 -23
  357. rapidtide-2.9.5.data/scripts/filttc +0 -23
  358. rapidtide-2.9.5.data/scripts/fingerprint +0 -593
  359. rapidtide-2.9.5.data/scripts/fixtr +0 -23
  360. rapidtide-2.9.5.data/scripts/glmfilt +0 -24
  361. rapidtide-2.9.5.data/scripts/gmscalc +0 -22
  362. rapidtide-2.9.5.data/scripts/happy +0 -25
  363. rapidtide-2.9.5.data/scripts/happy2std +0 -23
  364. rapidtide-2.9.5.data/scripts/happywarp +0 -350
  365. rapidtide-2.9.5.data/scripts/histnifti +0 -23
  366. rapidtide-2.9.5.data/scripts/histtc +0 -23
  367. rapidtide-2.9.5.data/scripts/localflow +0 -23
  368. rapidtide-2.9.5.data/scripts/mergequality +0 -23
  369. rapidtide-2.9.5.data/scripts/pairproc +0 -23
  370. rapidtide-2.9.5.data/scripts/pairwisemergenifti +0 -23
  371. rapidtide-2.9.5.data/scripts/physiofreq +0 -23
  372. rapidtide-2.9.5.data/scripts/pixelcomp +0 -23
  373. rapidtide-2.9.5.data/scripts/plethquality +0 -23
  374. rapidtide-2.9.5.data/scripts/polyfitim +0 -23
  375. rapidtide-2.9.5.data/scripts/proj2flow +0 -23
  376. rapidtide-2.9.5.data/scripts/rankimage +0 -23
  377. rapidtide-2.9.5.data/scripts/rapidtide +0 -23
  378. rapidtide-2.9.5.data/scripts/rapidtide2std +0 -23
  379. rapidtide-2.9.5.data/scripts/resamplenifti +0 -23
  380. rapidtide-2.9.5.data/scripts/resampletc +0 -23
  381. rapidtide-2.9.5.data/scripts/retroglm +0 -23
  382. rapidtide-2.9.5.data/scripts/roisummarize +0 -23
  383. rapidtide-2.9.5.data/scripts/runqualitycheck +0 -23
  384. rapidtide-2.9.5.data/scripts/showarbcorr +0 -23
  385. rapidtide-2.9.5.data/scripts/showhist +0 -23
  386. rapidtide-2.9.5.data/scripts/showstxcorr +0 -23
  387. rapidtide-2.9.5.data/scripts/showtc +0 -23
  388. rapidtide-2.9.5.data/scripts/showxcorr_legacy +0 -536
  389. rapidtide-2.9.5.data/scripts/showxcorrx +0 -23
  390. rapidtide-2.9.5.data/scripts/showxy +0 -23
  391. rapidtide-2.9.5.data/scripts/simdata +0 -23
  392. rapidtide-2.9.5.data/scripts/spatialdecomp +0 -23
  393. rapidtide-2.9.5.data/scripts/spatialfit +0 -23
  394. rapidtide-2.9.5.data/scripts/spatialmi +0 -23
  395. rapidtide-2.9.5.data/scripts/spectrogram +0 -23
  396. rapidtide-2.9.5.data/scripts/synthASL +0 -23
  397. rapidtide-2.9.5.data/scripts/tcfrom2col +0 -23
  398. rapidtide-2.9.5.data/scripts/tcfrom3col +0 -23
  399. rapidtide-2.9.5.data/scripts/temporaldecomp +0 -23
  400. rapidtide-2.9.5.data/scripts/threeD +0 -236
  401. rapidtide-2.9.5.data/scripts/tidepool +0 -23
  402. rapidtide-2.9.5.data/scripts/variabilityizer +0 -23
  403. rapidtide-2.9.5.dist-info/RECORD +0 -357
  404. rapidtide-2.9.5.dist-info/top_level.txt +0 -86
  405. {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info/licenses}/LICENSE +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
  #
4
- # Copyright 2016-2024 Blaise Frederick
4
+ # Copyright 2016-2025 Blaise Frederick
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
@@ -19,22 +19,65 @@
19
19
  import argparse
20
20
  import os
21
21
  import sys
22
+ from typing import Any
22
23
 
23
- import numpy as np
24
-
25
- import rapidtide.correlate as tide_corr
26
- import rapidtide.dlfilter as tide_dlfilt
27
- import rapidtide.filter as tide_filt
28
- import rapidtide.fit as tide_fit
24
+ import rapidtide.dlfiltertorch as tide_dlfilt
25
+ import rapidtide.happy_supportfuncs as happy_support
29
26
  import rapidtide.io as tide_io
30
27
  import rapidtide.miscmath as tide_math
31
- import rapidtide.util as tide_util
32
28
  import rapidtide.workflows.parser_funcs as pf
33
29
 
30
+ DEFAULT_MODEL = "model_cnn_pytorch"
31
+
32
+
33
+ def findfirst(searchlist: list, available: list, debug: bool = False) -> tuple[int, str | None]:
34
+ if debug:
35
+ print(f"FINDFIRST: {searchlist=}, {available=}")
36
+ try:
37
+ index = available.index(searchlist[0])
38
+ return index, available[index]
39
+ except ValueError:
40
+ if len(searchlist) > 1:
41
+ if debug:
42
+ print("FINDFIRST: calling again")
43
+ findfirst(searchlist[1:], available, debug=debug)
44
+ else:
45
+ if debug:
46
+ print("FINDFIRST: giving up")
47
+ return -1, None
48
+
34
49
 
35
- def _get_parser():
50
+ def _get_parser() -> Any:
36
51
  """
37
- Argument parser for plethquality
52
+ Argument parser for applydlfilter.
53
+
54
+ This function creates and configures an argument parser for the `applydlfilter`
55
+ command-line tool, which applies a deep learning filter to a timecourse.
56
+
57
+ Returns
58
+ -------
59
+ argparse.ArgumentParser
60
+ Configured argument parser object with defined arguments for `applydlfilter`.
61
+
62
+ Notes
63
+ -----
64
+ The parser includes the following required and optional arguments:
65
+
66
+ - ``infilename``: Input text file (or list of files) containing timecourse data.
67
+ - ``outfilename``: Output text file (or list of files) to save filtered data.
68
+ - ``--model``: Model root name to use for filtering (default: ``model_revised``).
69
+ - ``--filesarelists``: Flag indicating input file contains lists of filenames.
70
+ - ``--nodisplay``: Flag to disable plotting (for non-interactive use).
71
+ - ``--verbose``: Flag to enable verbose output.
72
+
73
+ Examples
74
+ --------
75
+ >>> parser = _get_parser()
76
+ >>> args = parser.parse_args(['input.txt', 'output.txt', '--model', 'custom_model'])
77
+ >>> print(args.infilename)
78
+ 'input.txt'
79
+ >>> print(args.model)
80
+ 'custom_model'
38
81
  """
39
82
  parser = argparse.ArgumentParser(
40
83
  prog="applydlfilter",
@@ -60,8 +103,8 @@ def _get_parser():
60
103
  action="store",
61
104
  metavar="MODELROOT",
62
105
  type=str,
63
- help=("Use model named MODELROOT (default is model_revised)."),
64
- default="model_revised",
106
+ help=(f"Use model named MODELROOT (default is {DEFAULT_MODEL})."),
107
+ default=DEFAULT_MODEL,
65
108
  )
66
109
  parser.add_argument(
67
110
  "--filesarelists",
@@ -87,66 +130,62 @@ def _get_parser():
87
130
  return parser
88
131
 
89
132
 
90
- def checkcardmatch(reference, candidate, samplerate, refine=True, zeropadding=0, debug=False):
91
- thecardfilt = tide_filt.NoncausalFilter(filtertype="cardiac")
92
- trimlength = np.min([len(reference), len(candidate)])
93
- thexcorr = tide_corr.fastcorrelate(
94
- tide_math.corrnormalize(
95
- thecardfilt.apply(samplerate, reference),
96
- detrendorder=3,
97
- windowfunc="hamming",
98
- )[:trimlength],
99
- tide_math.corrnormalize(
100
- thecardfilt.apply(samplerate, candidate),
101
- detrendorder=3,
102
- windowfunc="hamming",
103
- )[:trimlength],
104
- usefft=True,
105
- zeropadding=zeropadding,
106
- )
107
- xcorrlen = len(thexcorr)
108
- sampletime = 1.0 / samplerate
109
- xcorr_x = np.r_[0.0:xcorrlen] * sampletime - (xcorrlen * sampletime) / 2.0 + sampletime / 2.0
110
- searchrange = 5.0
111
- trimstart = tide_util.valtoindex(xcorr_x, -2.0 * searchrange)
112
- trimend = tide_util.valtoindex(xcorr_x, 2.0 * searchrange)
113
- (
114
- maxindex,
115
- maxdelay,
116
- maxval,
117
- maxsigma,
118
- maskval,
119
- failreason,
120
- peakstart,
121
- peakend,
122
- ) = tide_fit.findmaxlag_gauss(
123
- xcorr_x[trimstart:trimend],
124
- thexcorr[trimstart:trimend],
125
- -searchrange,
126
- searchrange,
127
- 3.0,
128
- refine=refine,
129
- zerooutbadfit=False,
130
- useguess=False,
131
- fastgauss=False,
132
- displayplots=False,
133
- )
134
- if debug:
135
- print(
136
- "CORRELATION: maxindex, maxdelay, maxval, maxsigma, maskval, failreason, peakstart, peakend:",
137
- maxindex,
138
- maxdelay,
139
- maxval,
140
- maxsigma,
141
- maskval,
142
- failreason,
143
- peakstart,
144
- peakend,
145
- )
146
- return maxval, maxdelay, failreason
133
+ def applydlfilter(args: Any) -> None:
134
+ """
135
+ Apply a deep learning filter to fMRI data files.
136
+
137
+ This function reads fMRI data from input files, applies a deep learning filter
138
+ to denoise the data, and writes the filtered output to specified files. It supports
139
+ processing multiple files either from lists or a single file, and optionally displays
140
+ the filtering results using matplotlib.
141
+
142
+ Parameters
143
+ ----------
144
+ args : Any
145
+ An object containing the following attributes:
146
+ - `infilename` : str
147
+ Path to the input file or list of input files.
148
+ - `outfilename` : str
149
+ Path to the output file or list of output files.
150
+ - `filesarelists` : bool
151
+ If True, `infilename` and `outfilename` are treated as paths to text files
152
+ containing lists of input and output filenames, respectively.
153
+ - `model` : str
154
+ Path to the deep learning model to be used for filtering.
155
+ - `display` : bool
156
+ If True, displays the original and filtered data using matplotlib.
157
+ - `verbose` : bool
158
+ If True, prints verbose output during processing.
147
159
 
160
+ Returns
161
+ -------
162
+ None
163
+ This function does not return any value. It writes filtered data to files
164
+ and optionally displays plots.
148
165
 
149
- def applydlfilter(args):
166
+ Notes
167
+ -----
168
+ - The function assumes that the input data has a sampling rate of 25.0 Hz.
169
+ - If `filesarelists` is True, the input and output filenames are read from
170
+ text files, where each line contains a single filename.
171
+ - The function checks for matching list lengths when processing multiple files.
172
+ - If a bad points file is specified, it is read and used during filtering.
173
+ - The deep learning model is loaded from a predefined model path within the
174
+ `rapidtide` package.
175
+
176
+ Examples
177
+ --------
178
+ >>> import argparse
179
+ >>> args = argparse.Namespace(
180
+ ... infilename="input.txt",
181
+ ... outfilename="output.txt",
182
+ ... filesarelists=False,
183
+ ... model="model.h5",
184
+ ... display=False,
185
+ ... verbose=True
186
+ ... )
187
+ >>> applydlfilter(args)
188
+ """
150
189
  if args.display:
151
190
  import matplotlib as mpl
152
191
 
@@ -184,41 +223,144 @@ def applydlfilter(args):
184
223
  )
185
224
  thedlfilter = tide_dlfilt.DeepLearningFilter(modelpath=modelpath)
186
225
  thedlfilter.loadmodel(args.model)
187
- model = thedlfilter.model
188
- window_size = thedlfilter.window_size
189
226
  usebadpts = thedlfilter.usebadpts
227
+ showpleth = True
190
228
 
191
- badpts = None
192
- if usebadpts:
193
- try:
194
- badpts = tide_io.readvec(args.infilename.replace(".txt", "_badpts.txt"))
195
- except:
196
- print(
197
- "bad points file",
198
- args.infilename.replace(".txt", "_badpts.txt"),
199
- "not found!",
200
- )
201
- sys.exit()
229
+ # set the list of column names
230
+ datanames = [
231
+ "cardiacfromfmri_25.0Hz",
232
+ "normcardiac_25.0Hz",
233
+ "normcardiacfromfmri_dlfiltered_25.0Hz",
234
+ "cardiacfromfmri_dlfiltered_25.0Hz",
235
+ ]
236
+ badptsnames = ["badpts"]
237
+ plethnames = [
238
+ "pleth",
239
+ "normpleth",
240
+ "plethenv",
241
+ "pleth_dlfiltered",
242
+ ]
202
243
 
203
244
  for idx, infilename in enumerate(infilenamelist):
204
245
  # read in the data
205
246
  if args.verbose:
206
247
  print("reading in", infilename)
207
- fmridata = tide_io.readvec(infilename)
248
+ (
249
+ thesamplerate,
250
+ thestarttime,
251
+ thecolumns,
252
+ thedata,
253
+ compressed,
254
+ columnsource,
255
+ extrainfo,
256
+ ) = tide_io.readbidstsv(infilename, debug=args.verbose)
208
257
 
258
+ # check to see what we have in the file
259
+ if args.verbose:
260
+ print(f"File columns: {thecolumns}")
261
+
262
+ # get the data
263
+ datacol, dataname = findfirst(datanames, thecolumns, debug=args.verbose)
264
+ if dataname is None:
265
+ print("file contains no usable raw data")
266
+ sys.exit()
267
+ if args.verbose:
268
+ print(f"Data column: {datacol}, ({dataname})")
269
+ fmridata = thedata[datacol, :]
270
+
271
+ # get the badpts
272
+ badptscol, badptsname = findfirst(badptsnames, thecolumns, debug=args.verbose)
273
+ if usebadpts and (badptsname is None):
274
+ print("file contains no usable badpts data")
275
+ sys.exit()
276
+ if args.verbose:
277
+ print(f"Bad points column: {badptscol}, ({badptsname})")
278
+ if badptsname is None:
279
+ badpts = None
280
+ else:
281
+ badpts = thedata[badptscol, :]
282
+
283
+ # get the pleth (if it is there)
284
+ plethcol, plethname = findfirst(plethnames, thecolumns, debug=args.verbose)
285
+ if args.verbose:
286
+ print(f"Pleth column: {plethcol}, ({plethname})")
287
+ print(f"{thedata.shape=}")
288
+ if plethname is None:
289
+ plethwave = None
290
+ else:
291
+ plethwave = thedata[plethcol, :]
292
+
293
+ if args.verbose:
294
+ print("data is read")
295
+ if thesamplerate != 25.0:
296
+ print("sampling rate", thesamplerate)
297
+ sys.exit()
209
298
  if args.verbose:
210
299
  print("filtering...")
211
300
  predicteddata = thedlfilter.apply(fmridata, badpts=badpts)
301
+ if args.verbose:
302
+ print("done...")
303
+
304
+ # performance metrics
305
+ extradict = {}
306
+ maxval, maxdelay, failreason = happy_support.checkcardmatch(
307
+ fmridata, predicteddata, 25.0, debug=False
308
+ )
309
+ print(infilename, "max correlation of raw data to dl filtered data:", maxval)
310
+ extradict["corr_rawtodlfiltered"] = maxval + 0.0
311
+
312
+ if plethwave is not None:
313
+ maxval, maxdelay, failreason = happy_support.checkcardmatch(
314
+ fmridata, plethwave, 25.0, debug=False
315
+ )
316
+ print(infilename, "max correlation of raw data to target plethysmogram:", maxval)
317
+ extradict["corr_rawtopleth"] = maxval + 0.0
318
+
319
+ maxval, maxdelay, failreason = happy_support.checkcardmatch(
320
+ predicteddata, plethwave, 25.0, debug=False
321
+ )
322
+ print(
323
+ infilename, "max correlation of dl filtered data to target plethysmogram:", maxval
324
+ )
325
+ extradict["corr_dlfilteredtopleth"] = maxval + 0.0
212
326
 
213
327
  if args.verbose:
214
328
  print("writing to", outfilenamelist[idx])
215
- tide_io.writevec(predicteddata, outfilenamelist[idx])
329
+ tide_io.writebidstsv(
330
+ outfilenamelist[idx],
331
+ predicteddata,
332
+ 25.0,
333
+ extraheaderinfo=extradict,
334
+ columns=["filtered_signal"],
335
+ debug=args.verbose,
336
+ )
216
337
 
217
- maxval, maxdelay, failreason = checkcardmatch(fmridata, predicteddata, 25.0, debug=False)
218
- print(infilename, "max correlation input to output:", maxval)
338
+ # normalize
339
+ fmridata = tide_math.stdnormalize(fmridata)
340
+ predicteddata = tide_math.stdnormalize(predicteddata)
219
341
 
342
+ spacing = 3.0
343
+ numwaves = 2
344
+ if badpts is not None:
345
+ numwaves += 1
346
+ if plethwave is not None:
347
+ numwaves += 1
348
+ offset = (numwaves - 1) * spacing
220
349
  if args.display:
221
350
  plt.figure()
222
- plt.plot(fmridata)
223
- plt.plot(predicteddata)
351
+ legendlist = [dataname, "filtereddata"]
352
+ plt.plot(fmridata + offset)
353
+ offset += spacing
354
+ plt.plot(predicteddata + offset)
355
+ offset += spacing
356
+ if plethwave is not None:
357
+ legendlist.append(plethname)
358
+ plt.plot(plethwave + offset)
359
+ offset += spacing
360
+ if badpts is not None:
361
+ legendlist.append(badptsname)
362
+ plt.plot(badpts + offset)
363
+ offset += spacing
364
+ plt.legend(legendlist)
365
+ plt.title(args.model)
224
366
  plt.show()