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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. cloud/gmscalc-HCPYA +1 -1
  2. cloud/mount-and-run +2 -0
  3. cloud/rapidtide-HCPYA +3 -3
  4. rapidtide/Colortables.py +538 -38
  5. rapidtide/OrthoImageItem.py +1094 -51
  6. rapidtide/RapidtideDataset.py +1709 -114
  7. rapidtide/__init__.py +0 -8
  8. rapidtide/_version.py +4 -4
  9. rapidtide/calccoherence.py +242 -97
  10. rapidtide/calcnullsimfunc.py +240 -140
  11. rapidtide/calcsimfunc.py +314 -129
  12. rapidtide/correlate.py +1211 -389
  13. rapidtide/data/examples/src/testLD +56 -0
  14. rapidtide/data/examples/src/test_findmaxlag.py +2 -2
  15. rapidtide/data/examples/src/test_mlregressallt.py +32 -17
  16. rapidtide/data/examples/src/testalign +1 -1
  17. rapidtide/data/examples/src/testatlasaverage +35 -7
  18. rapidtide/data/examples/src/testboth +21 -0
  19. rapidtide/data/examples/src/testcifti +11 -0
  20. rapidtide/data/examples/src/testdelayvar +13 -0
  21. rapidtide/data/examples/src/testdlfilt +25 -0
  22. rapidtide/data/examples/src/testfft +35 -0
  23. rapidtide/data/examples/src/testfileorfloat +37 -0
  24. rapidtide/data/examples/src/testfmri +92 -42
  25. rapidtide/data/examples/src/testfuncs +3 -3
  26. rapidtide/data/examples/src/testglmfilt +8 -6
  27. rapidtide/data/examples/src/testhappy +84 -51
  28. rapidtide/data/examples/src/testinitdelay +19 -0
  29. rapidtide/data/examples/src/testmodels +33 -0
  30. rapidtide/data/examples/src/testnewrefine +26 -0
  31. rapidtide/data/examples/src/testnoiseamp +2 -2
  32. rapidtide/data/examples/src/testppgproc +17 -0
  33. rapidtide/data/examples/src/testrefineonly +22 -0
  34. rapidtide/data/examples/src/testretro +26 -13
  35. rapidtide/data/examples/src/testretrolagtcs +16 -0
  36. rapidtide/data/examples/src/testrolloff +11 -0
  37. rapidtide/data/examples/src/testsimdata +45 -28
  38. rapidtide/data/models/model_cnn_pytorch/loss.png +0 -0
  39. rapidtide/data/models/model_cnn_pytorch/loss.txt +1 -0
  40. rapidtide/data/models/model_cnn_pytorch/model.pth +0 -0
  41. rapidtide/data/models/model_cnn_pytorch/model_meta.json +68 -0
  42. rapidtide/data/models/model_cnn_pytorch_fulldata/loss.png +0 -0
  43. rapidtide/data/models/model_cnn_pytorch_fulldata/loss.txt +1 -0
  44. rapidtide/data/models/model_cnn_pytorch_fulldata/model.pth +0 -0
  45. rapidtide/data/models/model_cnn_pytorch_fulldata/model_meta.json +80 -0
  46. rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.png +0 -0
  47. rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.txt +1 -0
  48. rapidtide/data/models/model_cnnbp_pytorch_fullldata/model.pth +0 -0
  49. rapidtide/data/models/model_cnnbp_pytorch_fullldata/model_meta.json +138 -0
  50. rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.png +0 -0
  51. rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.txt +1 -0
  52. rapidtide/data/models/model_cnnfft_pytorch_fulldata/model.pth +0 -0
  53. rapidtide/data/models/model_cnnfft_pytorch_fulldata/model_meta.json +128 -0
  54. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.png +0 -0
  55. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.txt +1 -0
  56. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model.pth +0 -0
  57. rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model_meta.json +49 -0
  58. rapidtide/data/models/model_revised_tf2/model.keras +0 -0
  59. rapidtide/data/models/{model_serdar → model_revised_tf2}/model_meta.json +1 -1
  60. rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
  61. rapidtide/data/models/{model_serdar2 → model_serdar2_tf2}/model_meta.json +1 -1
  62. rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
  63. rapidtide/data/models/{model_revised → model_serdar_tf2}/model_meta.json +1 -1
  64. rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
  65. rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
  66. rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
  67. rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
  68. rapidtide/data/reference/HCP1200v2_graylaghist.json +7 -0
  69. rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
  70. rapidtide/data/reference/HCP1200v2_laghist.json +7 -0
  71. rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
  72. rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
  73. rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
  74. rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
  75. rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
  76. rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
  77. rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
  78. rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
  79. rapidtide/data/reference/HCP1200v2_whitelaghist.json +7 -0
  80. rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
  81. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +131 -0
  82. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +60 -0
  83. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
  84. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm.nii.gz +0 -0
  85. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm_mask.nii.gz +0 -0
  86. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
  87. rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
  88. rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
  89. rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
  90. rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
  91. rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
  92. rapidtide/decorators.py +91 -0
  93. rapidtide/dlfilter.py +2553 -414
  94. rapidtide/dlfiltertorch.py +5201 -0
  95. rapidtide/externaltools.py +328 -13
  96. rapidtide/fMRIData_class.py +108 -92
  97. rapidtide/ffttools.py +168 -0
  98. rapidtide/filter.py +2704 -1462
  99. rapidtide/fit.py +2361 -579
  100. rapidtide/genericmultiproc.py +197 -0
  101. rapidtide/happy_supportfuncs.py +3255 -548
  102. rapidtide/helper_classes.py +587 -1116
  103. rapidtide/io.py +2569 -468
  104. rapidtide/linfitfiltpass.py +784 -0
  105. rapidtide/makelaggedtcs.py +267 -97
  106. rapidtide/maskutil.py +555 -25
  107. rapidtide/miscmath.py +835 -144
  108. rapidtide/multiproc.py +217 -44
  109. rapidtide/patchmatch.py +752 -0
  110. rapidtide/peakeval.py +32 -32
  111. rapidtide/ppgproc.py +2205 -0
  112. rapidtide/qualitycheck.py +353 -40
  113. rapidtide/refinedelay.py +854 -0
  114. rapidtide/refineregressor.py +939 -0
  115. rapidtide/resample.py +725 -204
  116. rapidtide/scripts/__init__.py +1 -0
  117. rapidtide/scripts/{adjustoffset → adjustoffset.py} +7 -2
  118. rapidtide/scripts/{aligntcs → aligntcs.py} +7 -2
  119. rapidtide/scripts/{applydlfilter → applydlfilter.py} +7 -2
  120. rapidtide/scripts/applyppgproc.py +28 -0
  121. rapidtide/scripts/{atlasaverage → atlasaverage.py} +7 -2
  122. rapidtide/scripts/{atlastool → atlastool.py} +7 -2
  123. rapidtide/scripts/{calcicc → calcicc.py} +7 -2
  124. rapidtide/scripts/{calctexticc → calctexticc.py} +7 -2
  125. rapidtide/scripts/{calcttest → calcttest.py} +7 -2
  126. rapidtide/scripts/{ccorrica → ccorrica.py} +7 -2
  127. rapidtide/scripts/delayvar.py +28 -0
  128. rapidtide/scripts/{diffrois → diffrois.py} +7 -2
  129. rapidtide/scripts/{endtidalproc → endtidalproc.py} +7 -2
  130. rapidtide/scripts/{fdica → fdica.py} +7 -2
  131. rapidtide/scripts/{filtnifti → filtnifti.py} +7 -2
  132. rapidtide/scripts/{filttc → filttc.py} +7 -2
  133. rapidtide/scripts/{fingerprint → fingerprint.py} +20 -16
  134. rapidtide/scripts/{fixtr → fixtr.py} +7 -2
  135. rapidtide/scripts/{gmscalc → gmscalc.py} +7 -2
  136. rapidtide/scripts/{happy → happy.py} +7 -2
  137. rapidtide/scripts/{happy2std → happy2std.py} +7 -2
  138. rapidtide/scripts/{happywarp → happywarp.py} +8 -4
  139. rapidtide/scripts/{histnifti → histnifti.py} +7 -2
  140. rapidtide/scripts/{histtc → histtc.py} +7 -2
  141. rapidtide/scripts/{glmfilt → linfitfilt.py} +7 -4
  142. rapidtide/scripts/{localflow → localflow.py} +7 -2
  143. rapidtide/scripts/{mergequality → mergequality.py} +7 -2
  144. rapidtide/scripts/{pairproc → pairproc.py} +7 -2
  145. rapidtide/scripts/{pairwisemergenifti → pairwisemergenifti.py} +7 -2
  146. rapidtide/scripts/{physiofreq → physiofreq.py} +7 -2
  147. rapidtide/scripts/{pixelcomp → pixelcomp.py} +7 -2
  148. rapidtide/scripts/{plethquality → plethquality.py} +7 -2
  149. rapidtide/scripts/{polyfitim → polyfitim.py} +7 -2
  150. rapidtide/scripts/{proj2flow → proj2flow.py} +7 -2
  151. rapidtide/scripts/{rankimage → rankimage.py} +7 -2
  152. rapidtide/scripts/{rapidtide → rapidtide.py} +7 -2
  153. rapidtide/scripts/{rapidtide2std → rapidtide2std.py} +7 -2
  154. rapidtide/scripts/{resamplenifti → resamplenifti.py} +7 -2
  155. rapidtide/scripts/{resampletc → resampletc.py} +7 -2
  156. rapidtide/scripts/retrolagtcs.py +28 -0
  157. rapidtide/scripts/retroregress.py +28 -0
  158. rapidtide/scripts/{roisummarize → roisummarize.py} +7 -2
  159. rapidtide/scripts/{runqualitycheck → runqualitycheck.py} +7 -2
  160. rapidtide/scripts/{showarbcorr → showarbcorr.py} +7 -2
  161. rapidtide/scripts/{showhist → showhist.py} +7 -2
  162. rapidtide/scripts/{showstxcorr → showstxcorr.py} +7 -2
  163. rapidtide/scripts/{showtc → showtc.py} +7 -2
  164. rapidtide/scripts/{showxcorr_legacy → showxcorr_legacy.py} +8 -8
  165. rapidtide/scripts/{showxcorrx → showxcorrx.py} +7 -2
  166. rapidtide/scripts/{showxy → showxy.py} +7 -2
  167. rapidtide/scripts/{simdata → simdata.py} +7 -2
  168. rapidtide/scripts/{spatialdecomp → spatialdecomp.py} +7 -2
  169. rapidtide/scripts/{spatialfit → spatialfit.py} +7 -2
  170. rapidtide/scripts/{spatialmi → spatialmi.py} +7 -2
  171. rapidtide/scripts/{spectrogram → spectrogram.py} +7 -2
  172. rapidtide/scripts/stupidramtricks.py +238 -0
  173. rapidtide/scripts/{synthASL → synthASL.py} +7 -2
  174. rapidtide/scripts/{tcfrom2col → tcfrom2col.py} +7 -2
  175. rapidtide/scripts/{tcfrom3col → tcfrom3col.py} +7 -2
  176. rapidtide/scripts/{temporaldecomp → temporaldecomp.py} +7 -2
  177. rapidtide/scripts/{testhrv → testhrv.py} +1 -1
  178. rapidtide/scripts/{threeD → threeD.py} +7 -2
  179. rapidtide/scripts/{tidepool → tidepool.py} +7 -2
  180. rapidtide/scripts/{variabilityizer → variabilityizer.py} +7 -2
  181. rapidtide/simFuncClasses.py +2113 -0
  182. rapidtide/simfuncfit.py +312 -108
  183. rapidtide/stats.py +579 -247
  184. rapidtide/tests/.coveragerc +27 -6
  185. rapidtide-2.9.6.data/scripts/fdica → rapidtide/tests/cleanposttest +4 -6
  186. rapidtide/tests/happycomp +9 -0
  187. rapidtide/tests/resethappytargets +1 -1
  188. rapidtide/tests/resetrapidtidetargets +1 -1
  189. rapidtide/tests/resettargets +1 -1
  190. rapidtide/tests/runlocaltest +3 -3
  191. rapidtide/tests/showkernels +1 -1
  192. rapidtide/tests/test_aliasedcorrelate.py +4 -4
  193. rapidtide/tests/test_aligntcs.py +1 -1
  194. rapidtide/tests/test_calcicc.py +1 -1
  195. rapidtide/tests/test_cleanregressor.py +184 -0
  196. rapidtide/tests/test_congrid.py +70 -81
  197. rapidtide/tests/test_correlate.py +1 -1
  198. rapidtide/tests/test_corrpass.py +4 -4
  199. rapidtide/tests/test_delayestimation.py +54 -59
  200. rapidtide/tests/test_dlfiltertorch.py +437 -0
  201. rapidtide/tests/test_doresample.py +2 -2
  202. rapidtide/tests/test_externaltools.py +69 -0
  203. rapidtide/tests/test_fastresampler.py +9 -5
  204. rapidtide/tests/test_filter.py +96 -57
  205. rapidtide/tests/test_findmaxlag.py +50 -19
  206. rapidtide/tests/test_fullrunhappy_v1.py +15 -10
  207. rapidtide/tests/test_fullrunhappy_v2.py +19 -13
  208. rapidtide/tests/test_fullrunhappy_v3.py +28 -13
  209. rapidtide/tests/test_fullrunhappy_v4.py +30 -11
  210. rapidtide/tests/test_fullrunhappy_v5.py +62 -0
  211. rapidtide/tests/test_fullrunrapidtide_v1.py +61 -7
  212. rapidtide/tests/test_fullrunrapidtide_v2.py +26 -14
  213. rapidtide/tests/test_fullrunrapidtide_v3.py +28 -8
  214. rapidtide/tests/test_fullrunrapidtide_v4.py +16 -8
  215. rapidtide/tests/test_fullrunrapidtide_v5.py +15 -6
  216. rapidtide/tests/test_fullrunrapidtide_v6.py +142 -0
  217. rapidtide/tests/test_fullrunrapidtide_v7.py +114 -0
  218. rapidtide/tests/test_fullrunrapidtide_v8.py +66 -0
  219. rapidtide/tests/test_getparsers.py +158 -0
  220. rapidtide/tests/test_io.py +59 -18
  221. rapidtide/tests/{test_glmpass.py → test_linfitfiltpass.py} +10 -10
  222. rapidtide/tests/test_mi.py +1 -1
  223. rapidtide/tests/test_miscmath.py +1 -1
  224. rapidtide/tests/test_motionregress.py +5 -5
  225. rapidtide/tests/test_nullcorr.py +6 -9
  226. rapidtide/tests/test_padvec.py +216 -0
  227. rapidtide/tests/test_parserfuncs.py +101 -0
  228. rapidtide/tests/test_phaseanalysis.py +1 -1
  229. rapidtide/tests/test_rapidtideparser.py +59 -53
  230. rapidtide/tests/test_refinedelay.py +296 -0
  231. rapidtide/tests/test_runmisc.py +5 -5
  232. rapidtide/tests/test_sharedmem.py +60 -0
  233. rapidtide/tests/test_simroundtrip.py +132 -0
  234. rapidtide/tests/test_simulate.py +1 -1
  235. rapidtide/tests/test_stcorrelate.py +4 -2
  236. rapidtide/tests/test_timeshift.py +2 -2
  237. rapidtide/tests/test_valtoindex.py +1 -1
  238. rapidtide/tests/test_zRapidtideDataset.py +5 -3
  239. rapidtide/tests/utils.py +10 -9
  240. rapidtide/tidepoolTemplate.py +88 -70
  241. rapidtide/tidepoolTemplate.ui +60 -46
  242. rapidtide/tidepoolTemplate_alt.py +88 -53
  243. rapidtide/tidepoolTemplate_alt.ui +62 -52
  244. rapidtide/tidepoolTemplate_alt_qt6.py +921 -0
  245. rapidtide/tidepoolTemplate_big.py +1125 -0
  246. rapidtide/tidepoolTemplate_big.ui +2386 -0
  247. rapidtide/tidepoolTemplate_big_qt6.py +1129 -0
  248. rapidtide/tidepoolTemplate_qt6.py +793 -0
  249. rapidtide/util.py +1389 -148
  250. rapidtide/voxelData.py +1048 -0
  251. rapidtide/wiener.py +138 -25
  252. rapidtide/wiener2.py +114 -8
  253. rapidtide/workflows/adjustoffset.py +107 -5
  254. rapidtide/workflows/aligntcs.py +86 -3
  255. rapidtide/workflows/applydlfilter.py +231 -89
  256. rapidtide/workflows/applyppgproc.py +540 -0
  257. rapidtide/workflows/atlasaverage.py +309 -48
  258. rapidtide/workflows/atlastool.py +130 -9
  259. rapidtide/workflows/calcSimFuncMap.py +490 -0
  260. rapidtide/workflows/calctexticc.py +202 -10
  261. rapidtide/workflows/ccorrica.py +123 -15
  262. rapidtide/workflows/cleanregressor.py +415 -0
  263. rapidtide/workflows/delayvar.py +1268 -0
  264. rapidtide/workflows/diffrois.py +84 -6
  265. rapidtide/workflows/endtidalproc.py +149 -9
  266. rapidtide/workflows/fdica.py +197 -17
  267. rapidtide/workflows/filtnifti.py +71 -4
  268. rapidtide/workflows/filttc.py +76 -5
  269. rapidtide/workflows/fitSimFuncMap.py +578 -0
  270. rapidtide/workflows/fixtr.py +74 -4
  271. rapidtide/workflows/gmscalc.py +116 -6
  272. rapidtide/workflows/happy.py +1242 -480
  273. rapidtide/workflows/happy2std.py +145 -13
  274. rapidtide/workflows/happy_parser.py +277 -59
  275. rapidtide/workflows/histnifti.py +120 -4
  276. rapidtide/workflows/histtc.py +85 -4
  277. rapidtide/workflows/{glmfilt.py → linfitfilt.py} +128 -14
  278. rapidtide/workflows/localflow.py +329 -29
  279. rapidtide/workflows/mergequality.py +80 -4
  280. rapidtide/workflows/niftidecomp.py +323 -19
  281. rapidtide/workflows/niftistats.py +178 -8
  282. rapidtide/workflows/pairproc.py +99 -5
  283. rapidtide/workflows/pairwisemergenifti.py +86 -3
  284. rapidtide/workflows/parser_funcs.py +1488 -56
  285. rapidtide/workflows/physiofreq.py +139 -12
  286. rapidtide/workflows/pixelcomp.py +211 -9
  287. rapidtide/workflows/plethquality.py +105 -23
  288. rapidtide/workflows/polyfitim.py +159 -19
  289. rapidtide/workflows/proj2flow.py +76 -3
  290. rapidtide/workflows/rankimage.py +115 -8
  291. rapidtide/workflows/rapidtide.py +1785 -1858
  292. rapidtide/workflows/rapidtide2std.py +101 -3
  293. rapidtide/workflows/rapidtide_parser.py +590 -389
  294. rapidtide/workflows/refineDelayMap.py +249 -0
  295. rapidtide/workflows/refineRegressor.py +1215 -0
  296. rapidtide/workflows/regressfrommaps.py +308 -0
  297. rapidtide/workflows/resamplenifti.py +86 -4
  298. rapidtide/workflows/resampletc.py +92 -4
  299. rapidtide/workflows/retrolagtcs.py +442 -0
  300. rapidtide/workflows/retroregress.py +1501 -0
  301. rapidtide/workflows/roisummarize.py +176 -7
  302. rapidtide/workflows/runqualitycheck.py +72 -7
  303. rapidtide/workflows/showarbcorr.py +172 -16
  304. rapidtide/workflows/showhist.py +87 -3
  305. rapidtide/workflows/showstxcorr.py +161 -4
  306. rapidtide/workflows/showtc.py +172 -10
  307. rapidtide/workflows/showxcorrx.py +250 -62
  308. rapidtide/workflows/showxy.py +186 -16
  309. rapidtide/workflows/simdata.py +418 -112
  310. rapidtide/workflows/spatialfit.py +83 -8
  311. rapidtide/workflows/spatialmi.py +252 -29
  312. rapidtide/workflows/spectrogram.py +306 -33
  313. rapidtide/workflows/synthASL.py +157 -6
  314. rapidtide/workflows/tcfrom2col.py +77 -3
  315. rapidtide/workflows/tcfrom3col.py +75 -3
  316. rapidtide/workflows/tidepool.py +3829 -666
  317. rapidtide/workflows/utils.py +45 -19
  318. rapidtide/workflows/utils_doc.py +293 -0
  319. rapidtide/workflows/variabilityizer.py +118 -5
  320. {rapidtide-2.9.6.dist-info → rapidtide-3.1.3.dist-info}/METADATA +30 -223
  321. rapidtide-3.1.3.dist-info/RECORD +393 -0
  322. {rapidtide-2.9.6.dist-info → rapidtide-3.1.3.dist-info}/WHEEL +1 -1
  323. rapidtide-3.1.3.dist-info/entry_points.txt +65 -0
  324. rapidtide-3.1.3.dist-info/top_level.txt +2 -0
  325. rapidtide/calcandfitcorrpairs.py +0 -262
  326. rapidtide/data/examples/src/testoutputsize +0 -45
  327. rapidtide/data/models/model_revised/model.h5 +0 -0
  328. rapidtide/data/models/model_serdar/model.h5 +0 -0
  329. rapidtide/data/models/model_serdar2/model.h5 +0 -0
  330. rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm.nii.gz +0 -0
  331. rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm_mask.nii.gz +0 -0
  332. rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm.nii.gz +0 -0
  333. rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm_mask.nii.gz +0 -0
  334. rapidtide/data/reference/HCP1200_binmask_2mm_2009c_asym.nii.gz +0 -0
  335. rapidtide/data/reference/HCP1200_lag_2mm_2009c_asym.nii.gz +0 -0
  336. rapidtide/data/reference/HCP1200_mask_2mm_2009c_asym.nii.gz +0 -0
  337. rapidtide/data/reference/HCP1200_negmask_2mm_2009c_asym.nii.gz +0 -0
  338. rapidtide/data/reference/HCP1200_sigma_2mm_2009c_asym.nii.gz +0 -0
  339. rapidtide/data/reference/HCP1200_strength_2mm_2009c_asym.nii.gz +0 -0
  340. rapidtide/glmpass.py +0 -434
  341. rapidtide/refine_factored.py +0 -641
  342. rapidtide/scripts/retroglm +0 -23
  343. rapidtide/workflows/glmfrommaps.py +0 -202
  344. rapidtide/workflows/retroglm.py +0 -643
  345. rapidtide-2.9.6.data/scripts/adjustoffset +0 -23
  346. rapidtide-2.9.6.data/scripts/aligntcs +0 -23
  347. rapidtide-2.9.6.data/scripts/applydlfilter +0 -23
  348. rapidtide-2.9.6.data/scripts/atlasaverage +0 -23
  349. rapidtide-2.9.6.data/scripts/atlastool +0 -23
  350. rapidtide-2.9.6.data/scripts/calcicc +0 -22
  351. rapidtide-2.9.6.data/scripts/calctexticc +0 -23
  352. rapidtide-2.9.6.data/scripts/calcttest +0 -22
  353. rapidtide-2.9.6.data/scripts/ccorrica +0 -23
  354. rapidtide-2.9.6.data/scripts/diffrois +0 -23
  355. rapidtide-2.9.6.data/scripts/endtidalproc +0 -23
  356. rapidtide-2.9.6.data/scripts/filtnifti +0 -23
  357. rapidtide-2.9.6.data/scripts/filttc +0 -23
  358. rapidtide-2.9.6.data/scripts/fingerprint +0 -593
  359. rapidtide-2.9.6.data/scripts/fixtr +0 -23
  360. rapidtide-2.9.6.data/scripts/glmfilt +0 -24
  361. rapidtide-2.9.6.data/scripts/gmscalc +0 -22
  362. rapidtide-2.9.6.data/scripts/happy +0 -25
  363. rapidtide-2.9.6.data/scripts/happy2std +0 -23
  364. rapidtide-2.9.6.data/scripts/happywarp +0 -350
  365. rapidtide-2.9.6.data/scripts/histnifti +0 -23
  366. rapidtide-2.9.6.data/scripts/histtc +0 -23
  367. rapidtide-2.9.6.data/scripts/localflow +0 -23
  368. rapidtide-2.9.6.data/scripts/mergequality +0 -23
  369. rapidtide-2.9.6.data/scripts/pairproc +0 -23
  370. rapidtide-2.9.6.data/scripts/pairwisemergenifti +0 -23
  371. rapidtide-2.9.6.data/scripts/physiofreq +0 -23
  372. rapidtide-2.9.6.data/scripts/pixelcomp +0 -23
  373. rapidtide-2.9.6.data/scripts/plethquality +0 -23
  374. rapidtide-2.9.6.data/scripts/polyfitim +0 -23
  375. rapidtide-2.9.6.data/scripts/proj2flow +0 -23
  376. rapidtide-2.9.6.data/scripts/rankimage +0 -23
  377. rapidtide-2.9.6.data/scripts/rapidtide +0 -23
  378. rapidtide-2.9.6.data/scripts/rapidtide2std +0 -23
  379. rapidtide-2.9.6.data/scripts/resamplenifti +0 -23
  380. rapidtide-2.9.6.data/scripts/resampletc +0 -23
  381. rapidtide-2.9.6.data/scripts/retroglm +0 -23
  382. rapidtide-2.9.6.data/scripts/roisummarize +0 -23
  383. rapidtide-2.9.6.data/scripts/runqualitycheck +0 -23
  384. rapidtide-2.9.6.data/scripts/showarbcorr +0 -23
  385. rapidtide-2.9.6.data/scripts/showhist +0 -23
  386. rapidtide-2.9.6.data/scripts/showstxcorr +0 -23
  387. rapidtide-2.9.6.data/scripts/showtc +0 -23
  388. rapidtide-2.9.6.data/scripts/showxcorr_legacy +0 -536
  389. rapidtide-2.9.6.data/scripts/showxcorrx +0 -23
  390. rapidtide-2.9.6.data/scripts/showxy +0 -23
  391. rapidtide-2.9.6.data/scripts/simdata +0 -23
  392. rapidtide-2.9.6.data/scripts/spatialdecomp +0 -23
  393. rapidtide-2.9.6.data/scripts/spatialfit +0 -23
  394. rapidtide-2.9.6.data/scripts/spatialmi +0 -23
  395. rapidtide-2.9.6.data/scripts/spectrogram +0 -23
  396. rapidtide-2.9.6.data/scripts/synthASL +0 -23
  397. rapidtide-2.9.6.data/scripts/tcfrom2col +0 -23
  398. rapidtide-2.9.6.data/scripts/tcfrom3col +0 -23
  399. rapidtide-2.9.6.data/scripts/temporaldecomp +0 -23
  400. rapidtide-2.9.6.data/scripts/threeD +0 -236
  401. rapidtide-2.9.6.data/scripts/tidepool +0 -23
  402. rapidtide-2.9.6.data/scripts/variabilityizer +0 -23
  403. rapidtide-2.9.6.dist-info/RECORD +0 -359
  404. rapidtide-2.9.6.dist-info/top_level.txt +0 -86
  405. {rapidtide-2.9.6.dist-info → rapidtide-3.1.3.dist-info/licenses}/LICENSE +0 -0
@@ -1,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.
@@ -18,122 +18,292 @@
18
18
  #
19
19
  import gc
20
20
  import logging
21
+ from typing import Any
21
22
 
22
23
  import numpy as np
23
- from tqdm import tqdm
24
+ from numpy.typing import NDArray
24
25
 
25
- import rapidtide.multiproc as tide_multiproc
26
-
27
- LGR = logging.getLogger("GENERAL")
26
+ import rapidtide.genericmultiproc as tide_genericmultiproc
28
27
 
29
28
 
30
29
  def _procOneVoxelMakelagtc(
31
- vox,
32
- lagtcgenerator,
33
- maxlag,
34
- timeaxis,
35
- rt_floatset=np.float64,
36
- rt_floattype="float64",
37
- ):
30
+ vox: int,
31
+ voxelargs: list,
32
+ **kwargs: Any,
33
+ ) -> tuple[int, NDArray]:
34
+ """
35
+ Process a single voxel to compute lag timecourse using lag timecourse generator.
36
+
37
+ This function takes a voxel index and associated arguments to compute a lag
38
+ timecourse using the provided lag timecourse generator. The computation involves
39
+ evaluating the generator at timepoints shifted by the specified lag value.
40
+
41
+ Parameters
42
+ ----------
43
+ vox : int
44
+ Voxel index identifier used for tracking and debugging purposes.
45
+ voxelargs : list
46
+ List containing three elements:
47
+ 1. `lagtcgenerator` - Lag timecourse generator object with `yfromx` method
48
+ 2. `thelag` - Lag value to be subtracted from time axis
49
+ 3. `timeaxis` - Time axis array for evaluation
50
+ **kwargs : Any
51
+ Additional keyword arguments that can override default options:
52
+ - `rt_floattype` : float type for computations (default: np.float64)
53
+ - `debug` : boolean for debug printing (default: False)
54
+
55
+ Returns
56
+ -------
57
+ tuple[int, NDArray]
58
+ Tuple containing:
59
+ - `vox` : Input voxel index
60
+ - `thelagtc` : Computed lag timecourse array
61
+
62
+ Notes
63
+ -----
64
+ The lag value is subtracted from the time axis as of 10/18. Alternative approaches
65
+ of adding the lag value resulted in poor performance.
66
+
67
+ Examples
68
+ --------
69
+ >>> import numpy as np
70
+ >>>
71
+ >>> # Example usage with mock generator
72
+ >>> class MockGenerator:
73
+ ... def yfromx(self, x):
74
+ ... return x**2
75
+ ...
76
+ >>> generator = MockGenerator()
77
+ >>> time_axis = np.array([0, 1, 2, 3, 4])
78
+ >>> voxel_args = [generator, 1.0, time_axis]
79
+ >>> result = _procOneVoxelMakelagtc(0, voxel_args)
80
+ >>> print(result)
81
+ (0, array([0., 1., 4., 9., 16.]))
82
+ """
83
+ # unpack arguments
84
+ options = {
85
+ "rt_floattype": np.float64,
86
+ "debug": False,
87
+ }
88
+ options.update(kwargs)
89
+ rt_floattype = options["rt_floattype"]
90
+ debug = options["debug"]
91
+ (lagtcgenerator, thelag, timeaxis) = voxelargs
92
+ if debug:
93
+ print(f"{vox=}, {thelag=}, {timeaxis=}")
94
+
38
95
  # question - should maxlag be added or subtracted? As of 10/18, it is subtracted
39
96
  # potential answer - tried adding, results are terrible.
40
- thelagtc = rt_floatset(lagtcgenerator.yfromx(timeaxis - maxlag))
97
+ thelagtc = (lagtcgenerator.yfromx(timeaxis - thelag)).astype(rt_floattype)
41
98
 
42
99
  return (
43
100
  vox,
44
- thelagtc,
101
+ (thelagtc),
45
102
  )
46
103
 
47
104
 
105
+ def _packvoxeldata(voxnum: int, voxelargs: list) -> list:
106
+ """
107
+ Pack voxel data into a list format.
108
+
109
+ Parameters
110
+ ----------
111
+ voxnum : int
112
+ The index used to select an element from the second element of voxelargs.
113
+ voxelargs : list
114
+ A list containing three elements where:
115
+ - voxelargs[0] is the first element to be returned
116
+ - voxelargs[1] is a list or array from which an element is selected using voxnum
117
+ - voxelargs[2] is the third element to be returned
118
+
119
+ Returns
120
+ -------
121
+ list
122
+ A list containing three elements: [voxelargs[0], voxelargs[1][voxnum], voxelargs[2]]
123
+
124
+ Notes
125
+ -----
126
+ This function assumes that voxelargs[1] is indexable and that voxnum is a valid index
127
+ for accessing elements in voxelargs[1]. The function does not perform any validation
128
+ of the input parameters.
129
+
130
+ Examples
131
+ --------
132
+ >>> _packvoxeldata(1, [10, [20, 30, 40], 50])
133
+ [10, 30, 50]
134
+
135
+ >>> _packvoxeldata(0, ['a', ['b', 'c', 'd'], 'e'])
136
+ ['a', 'b', 'e']
137
+ """
138
+ return [voxelargs[0], (voxelargs[1])[voxnum], voxelargs[2]]
139
+
140
+
141
+ def _unpackvoxeldata(retvals: tuple, voxelproducts: list) -> None:
142
+ """
143
+ Unpack voxel data into the specified voxel products array.
144
+
145
+ This function takes return values and assigns them to a specific location
146
+ in the voxel products array. It is typically used as part of a larger
147
+ voxel processing pipeline.
148
+
149
+ Parameters
150
+ ----------
151
+ retvals : tuple
152
+ A tuple containing the data to be unpacked. The first element is used
153
+ as an index for the voxel products array, and the second element contains
154
+ the actual data to be assigned.
155
+ voxelproducts : list
156
+ A list of arrays where the voxel data will be stored. The function
157
+ modifies the first element of this list in-place.
158
+
159
+ Returns
160
+ -------
161
+ None
162
+ This function modifies the voxelproducts list in-place and does not
163
+ return any value.
164
+
165
+ Notes
166
+ -----
167
+ The function assumes that retvals[0] is a valid index for the first element
168
+ of voxelproducts and that retvals[1] has compatible dimensions for assignment.
169
+
170
+ Examples
171
+ --------
172
+ >>> retvals = (5, [1, 2, 3, 4, 5])
173
+ >>> voxelproducts = [[0] * 10]
174
+ >>> _unpackvoxeldata(retvals, voxelproducts)
175
+ >>> print(voxelproducts[0])
176
+ [0, 0, 0, 0, 0, 1, 2, 3, 4, 5]
177
+ """
178
+ (voxelproducts[0])[retvals[0], :] = retvals[1]
179
+
180
+
48
181
  def makelaggedtcs(
49
- lagtcgenerator,
50
- timeaxis,
51
- lagmask,
52
- lagtimes,
53
- lagtc,
54
- nprocs=1,
55
- alwaysmultiproc=False,
56
- showprogressbar=True,
57
- chunksize=1000,
58
- rt_floatset=np.float64,
59
- rt_floattype="float64",
60
- ):
182
+ lagtcgenerator: Any,
183
+ timeaxis: NDArray,
184
+ lagmask: NDArray,
185
+ lagtimes: NDArray,
186
+ lagtc: NDArray,
187
+ LGR: logging.Logger | None = None,
188
+ nprocs: int = 1,
189
+ alwaysmultiproc: bool = False,
190
+ showprogressbar: bool = True,
191
+ chunksize: int = 1000,
192
+ rt_floattype: np.dtype = np.dtype(np.float64),
193
+ debug: bool = False,
194
+ ) -> int:
195
+ """
196
+ Generate lagged timecourses for a set of voxels using multiprocessing.
197
+
198
+ This function computes lagged timecourses for each voxel specified in the mask,
199
+ using the provided lag timecourse generator and time axis. It supports
200
+ parallel processing for performance optimization.
201
+
202
+ Parameters
203
+ ----------
204
+ lagtcgenerator : Any
205
+ A callable or object that generates lagged timecourses for a single voxel.
206
+ timeaxis : NDArray
207
+ 1D array representing the time axis (e.g., TRs or time points).
208
+ lagmask : NDArray
209
+ 3D or 4D boolean or integer array defining the voxels to process.
210
+ Non-zero entries indicate voxels to be processed.
211
+ lagtimes : NDArray
212
+ 1D array of lag times (in seconds or time units) to be applied.
213
+ lagtc : NDArray
214
+ 4D array of shape (ntimepoints, nvoxels, nlags) to store the output lagged
215
+ timecourses. This is updated in-place.
216
+ LGR : logging.Logger, optional
217
+ Logger instance for logging messages. If None, no logging is performed.
218
+ nprocs : int, optional
219
+ Number of processes to use for multiprocessing. Default is 1.
220
+ alwaysmultiproc : bool, optional
221
+ If True, always use multiprocessing even for single voxel processing.
222
+ Default is False.
223
+ showprogressbar : bool, optional
224
+ If True, display a progress bar during processing. Default is True.
225
+ chunksize : int, optional
226
+ Size of chunks to process in each step when using multiprocessing.
227
+ Default is 1000.
228
+ rt_floattype : str, optional
229
+ String representation of the floating-point type.
230
+ Default is `np.float64`.
231
+ debug : bool, optional
232
+ If True, print debug information. Default is False.
233
+
234
+ Returns
235
+ -------
236
+ int
237
+ Total number of voxels processed.
238
+
239
+ Notes
240
+ -----
241
+ This function uses `tide_genericmultiproc.run_multiproc` internally to
242
+ distribute voxel processing across multiple processes. It is designed for
243
+ efficient batch processing of large 4D datasets.
244
+
245
+ Examples
246
+ --------
247
+ >>> import numpy as np
248
+ >>> timeaxis = np.arange(100)
249
+ >>> lagtimes = np.array([0, 1, 2])
250
+ >>> lagmask = np.ones((10, 10, 10), dtype=bool)
251
+ >>> lagtc = np.zeros((100, 1000, 3))
252
+ >>> result = makelaggedtcs(
253
+ ... lagtcgenerator=my_generator,
254
+ ... timeaxis=timeaxis,
255
+ ... lagmask=lagmask,
256
+ ... lagtimes=lagtimes,
257
+ ... lagtc=lagtc,
258
+ ... nprocs=4
259
+ ... )
260
+ >>> print(f"Processed {result} voxels")
261
+ """
262
+ if debug:
263
+ print("makelaggedtcs: Starting")
264
+ print(f"\t{lagtc.shape=}")
265
+ print(f"\t{lagtimes.shape=}")
266
+ print(f"\t{timeaxis.shape=}")
267
+
61
268
  inputshape = lagtc.shape
62
- if nprocs > 1 or alwaysmultiproc:
63
- # define the consumer function here so it inherits most of the arguments
64
- def makelagtc_consumer(inQ, outQ):
65
- while True:
66
- try:
67
- # get a new message
68
- val = inQ.get()
69
-
70
- # this is the 'TERM' signal
71
- if val is None:
72
- break
73
-
74
- # process and send the data
75
- outQ.put(
76
- _procOneVoxelMakelagtc(
77
- val,
78
- lagtcgenerator,
79
- lagtimes[val],
80
- timeaxis,
81
- rt_floatset=rt_floatset,
82
- rt_floattype=rt_floattype,
83
- )
84
- )
85
- except Exception as e:
86
- print("error!", e)
87
- break
88
-
89
- data_out = tide_multiproc.run_multiproc(
90
- makelagtc_consumer,
91
- inputshape,
92
- lagmask,
93
- nprocs=nprocs,
94
- showprogressbar=showprogressbar,
95
- chunksize=chunksize,
96
- )
97
-
98
- # unpack the data
99
- volumetotal = 0
100
- for voxel in data_out:
101
- volumetotal += 1
102
- lagtc[voxel[0], :] = voxel[1]
103
- del data_out
104
- else:
105
- volumetotal = 0
106
- for vox in tqdm(
107
- range(0, inputshape[0]),
108
- desc="Voxel",
109
- unit="voxels",
110
- disable=(not showprogressbar),
111
- ):
112
- if lagmask[vox] > 0:
113
- dothisone = True
114
- else:
115
- dothisone = False
116
- if dothisone:
117
- (
118
- dummy,
119
- lagtc[vox, :],
120
- ) = _procOneVoxelMakelagtc(
121
- vox,
122
- lagtcgenerator,
123
- lagtimes[vox],
124
- timeaxis,
125
- rt_floatset=rt_floatset,
126
- rt_floattype=rt_floattype,
127
- )
128
- volumetotal += 1
129
-
130
- LGR.info(f"\nLagged timecourses created for {volumetotal} voxels")
269
+ voxelargs = [
270
+ lagtcgenerator,
271
+ lagtimes,
272
+ timeaxis,
273
+ ]
274
+ voxelfunc = _procOneVoxelMakelagtc
275
+ packfunc = _packvoxeldata
276
+ unpackfunc = _unpackvoxeldata
277
+ voxeltargets = [lagtc]
278
+
279
+ volumetotal = tide_genericmultiproc.run_multiproc(
280
+ voxelfunc,
281
+ packfunc,
282
+ unpackfunc,
283
+ voxelargs,
284
+ voxeltargets,
285
+ inputshape,
286
+ lagmask,
287
+ LGR,
288
+ nprocs,
289
+ alwaysmultiproc,
290
+ showprogressbar,
291
+ chunksize,
292
+ rt_floattype=rt_floattype,
293
+ )
294
+ if LGR is not None:
295
+ LGR.info(f"\nLagged timecourses created for {volumetotal} voxels")
131
296
 
132
297
  # garbage collect
133
298
  uncollected = gc.collect()
134
299
  if uncollected != 0:
135
- LGR.info(f"garbage collected - unable to collect {uncollected} objects")
300
+ if LGR is not None:
301
+ LGR.info(f"garbage collected - unable to collect {uncollected} objects")
136
302
  else:
137
- LGR.info("garbage collected")
303
+ if LGR is not None:
304
+ LGR.info("garbage collected")
305
+
306
+ if debug:
307
+ print("makelaggedtcs: End\n\n")
138
308
 
139
309
  return volumetotal