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.
@@ -16,34 +16,95 @@
16
16
  # limitations under the License.
17
17
  #
18
18
  #
19
- import os
19
+ import logging
20
20
  import sys
21
- import time
21
+ from typing import Any
22
22
 
23
23
  import numpy as np
24
- from tqdm import tqdm
24
+ from numpy.typing import NDArray
25
25
 
26
26
  import rapidtide.filter as tide_filt
27
+ import rapidtide.genericmultiproc as tide_genericmultiproc
27
28
  import rapidtide.miscmath as tide_math
28
- import rapidtide.multiproc as tide_multiproc
29
29
 
30
30
 
31
31
  # note: rawtimecourse has been filtered, but NOT windowed
32
32
  def _procOneNullCorrelationx(
33
- normalizedreftc,
34
- rawtcfft_r,
35
- rawtcfft_ang,
36
- Fs,
37
- theCorrelator,
38
- thefitter,
39
- despeckle_thresh=5.0,
40
- fixdelay=False,
41
- fixeddelayvalue=0.0,
42
- permutationmethod="shuffle",
43
- disablethresholds=False,
44
- rt_floatset=np.float64,
45
- rt_floattype="float64",
46
- ):
33
+ vox: int,
34
+ voxelargs: list,
35
+ **kwargs: Any,
36
+ ) -> tuple[int, float]:
37
+ """
38
+ Process a single voxel to compute the maximum correlation value from a null correlation test.
39
+
40
+ This function performs a permutation-based null correlation test for a given voxel. It shuffles
41
+ the reference time course according to the specified method and computes the cross-correlation
42
+ with the original time course. The maximum correlation value is returned along with the voxel index.
43
+
44
+ Parameters
45
+ ----------
46
+ vox : int
47
+ The voxel index to process.
48
+ voxelargs : list
49
+ A list containing the following elements in order:
50
+ - `normalizedreftc`: Normalized reference time course.
51
+ - `rawtcfft_r`: Raw FFT magnitude of the reference time course.
52
+ - `rawtcfft_ang`: Raw FFT phase of the reference time course.
53
+ - `theCorrelator`: Correlator object used for cross-correlation.
54
+ - `thefitter`: Fitter object used for fitting the correlation peak.
55
+ **kwargs : Any
56
+ Additional keyword arguments that can override default options:
57
+ - permutationmethod : str, optional
58
+ The method used for shuffling the reference time course.
59
+ Options are 'shuffle' (default) or 'phaserandom'.
60
+ - debug : bool, optional
61
+ If True, prints debug information including the permutation method used.
62
+
63
+ Returns
64
+ -------
65
+ tuple[int, float]
66
+ A tuple containing:
67
+ - vox : int
68
+ The voxel index passed as input.
69
+ - maxval : float
70
+ The maximum correlation value obtained from the fitted correlation.
71
+
72
+ Notes
73
+ -----
74
+ This function supports two permutation methods:
75
+ - 'shuffle': Randomly shuffles the reference time course.
76
+ - 'phaserandom': Shuffles the phase of the FFT of the reference time course while preserving
77
+ the magnitude.
78
+
79
+ Examples
80
+ --------
81
+ >>> result = _procOneNullCorrelationx(
82
+ ... vox=10,
83
+ ... voxelargs=[ref_tc, fft_r, fft_ang, correlator, fitter],
84
+ ... permutationmethod='shuffle',
85
+ ... debug=True
86
+ ... )
87
+ >>> print(result)
88
+ (10, 0.85)
89
+ """
90
+
91
+ options = {
92
+ "permutationmethod": "shuffle",
93
+ "debug": False,
94
+ }
95
+ options.update(kwargs)
96
+ permutationmethod = options["permutationmethod"]
97
+ debug = options["debug"]
98
+ if debug:
99
+ print(f"{permutationmethod=}")
100
+ (
101
+ normalizedreftc,
102
+ rawtcfft_r,
103
+ rawtcfft_ang,
104
+ theCorrelator,
105
+ thefitter,
106
+ ) = voxelargs
107
+
47
108
  # make a shuffled copy of the regressors
48
109
  if permutationmethod == "shuffle":
49
110
  permutedtc = np.random.permutation(normalizedreftc)
@@ -71,53 +132,151 @@ def _procOneNullCorrelationx(
71
132
  peakend,
72
133
  ) = thefitter.fit(thexcorr_y)
73
134
 
74
- return maxval
75
-
76
-
77
- def getNullDistributionDatax(
78
- rawtimecourse,
79
- Fs,
80
- theCorrelator,
81
- thefitter,
82
- despeckle_thresh=5.0,
83
- fixdelay=False,
84
- fixeddelayvalue=0.0,
85
- numestreps=0,
86
- nprocs=1,
87
- alwaysmultiproc=False,
88
- showprogressbar=True,
89
- chunksize=1000,
90
- permutationmethod="shuffle",
91
- rt_floatset=np.float64,
92
- rt_floattype="float64",
93
- ):
94
- r"""Calculate a set of null correlations to determine the distribution of correlation values. This can
95
- be used to find the spurious correlation threshold
135
+ return vox, maxval
136
+
137
+
138
+ def _packvoxeldata(voxnum: int, voxelargs: list) -> list:
139
+ """
140
+ Pack voxel data into a list format.
141
+
142
+ Parameters
143
+ ----------
144
+ voxnum : int
145
+ The voxel number identifier.
146
+ voxelargs : list
147
+ List containing voxel arguments to be packed. Expected to contain at least 5 elements.
148
+
149
+ Returns
150
+ -------
151
+ list
152
+ A list containing the first 5 elements from voxelargs in order:
153
+ [voxelargs[0], voxelargs[1], voxelargs[2], voxelargs[3], voxelargs[4]]
154
+
155
+ Notes
156
+ -----
157
+ This function currently returns a fixed subset of the input list. For proper functionality,
158
+ the voxnum parameter is not utilized in the current implementation.
159
+
160
+ Examples
161
+ --------
162
+ >>> _packvoxeldata(1, [10, 20, 30, 40, 50, 60])
163
+ [10, 20, 30, 40, 50]
164
+ """
165
+ return [voxelargs[0], voxelargs[1], voxelargs[2], voxelargs[3], voxelargs[4]]
166
+
167
+
168
+ def _unpackvoxeldata(retvals: tuple, voxelproducts: list) -> None:
169
+ """
170
+ Unpack voxel data by assigning values to specified indices.
171
+
172
+ This function takes return values and assigns them to a specific location
173
+ within a voxel product structure based on the provided indices.
96
174
 
97
175
  Parameters
98
176
  ----------
99
- rawtimecourse : 1D numpy array
100
- The test regressor. This should be filtered to the desired bandwidth, but NOT windowed.
101
- :param rawtimecourse:
177
+ retvals : tuple
178
+ A tuple containing two elements: the first element is the index
179
+ used to access the voxel product, and the second element is the
180
+ value to be assigned.
181
+ voxelproducts : list
182
+ A list of voxel product structures where the assignment will occur.
183
+ The function modifies the first element of this list in-place.
184
+
185
+ Returns
186
+ -------
187
+ None
188
+ This function modifies the voxelproducts list in-place and does not
189
+ return any value.
102
190
 
103
- corrscale: 1D numpy array
104
- The time axis of the cross correlation function.
191
+ Notes
192
+ -----
193
+ The function assumes that voxelproducts[0] is a mutable structure (like
194
+ a list or array) that supports item assignment. The first element of
195
+ retvals is used as an index to access voxelproducts[0], and the second
196
+ element of retvals is assigned to that location.
197
+
198
+ Examples
199
+ --------
200
+ >>> voxel_data = [[0, 0, 0]]
201
+ >>> _unpackvoxeldata((1, 42), voxel_data)
202
+ >>> voxel_data
203
+ [[0, 42, 0]]
204
+ """
205
+ (voxelproducts[0])[retvals[0]] = retvals[1]
105
206
 
106
- filterfunc: function
107
- This is a preconfigured NoncausalFilter function which is used to filter data to the desired bandwidth
108
207
 
109
- Fs: float
110
- The sample frequency of rawtimecourse, in Hz
208
+ def getNullDistributionData(
209
+ Fs: float,
210
+ theCorrelator: Any,
211
+ thefitter: Any,
212
+ LGR: logging.Logger,
213
+ numestreps: int = 0,
214
+ nprocs: int = 1,
215
+ alwaysmultiproc: bool = False,
216
+ showprogressbar: bool = True,
217
+ chunksize: int = 1000,
218
+ permutationmethod: str = "shuffle",
219
+ rt_floattype: np.dtype = np.float64,
220
+ debug: bool = False,
221
+ ) -> NDArray:
222
+ """
223
+ Calculate a set of null correlations to determine the distribution of correlation values.
111
224
 
112
- corrorigin: int
113
- The bin number in the correlation timescale corresponding to 0.0 seconds delay
225
+ This function generates a distribution of correlation values by performing permutations
226
+ on the reference time course. The resulting distribution can be used to identify
227
+ spurious correlation thresholds.
114
228
 
115
- negbins: int
116
- The lower edge of the search range for correlation peaks, in number of bins below corrorigin
229
+ Parameters
230
+ ----------
231
+ Fs : float
232
+ The sample frequency of the raw time course, in Hz.
233
+ theCorrelator : Any
234
+ An object containing the reference time course and related filtering parameters.
235
+ thefitter : Any
236
+ An object used for fitting the correlation data.
237
+ LGR : logging.Logger
238
+ Logger instance for logging messages during execution.
239
+ numestreps : int, optional
240
+ Number of null correlation estimates to compute. Default is 0.
241
+ nprocs : int, optional
242
+ Number of processes to use for multiprocessing. Default is 1.
243
+ alwaysmultiproc : bool, optional
244
+ If True, always use multiprocessing even for small datasets. Default is False.
245
+ showprogressbar : bool, optional
246
+ If True, display a progress bar during computation. Default is True.
247
+ chunksize : int, optional
248
+ Size of chunks for multiprocessing. Default is 1000.
249
+ permutationmethod : str, optional
250
+ Permutation method to use ('shuffle' or other supported methods). Default is 'shuffle'.
251
+ rt_floattype : str, optional
252
+ String representation of the floating-point type. Default is np.float64.
253
+ debug : bool, optional
254
+ If True, enable debug output. Default is False.
117
255
 
118
- posbins: int
119
- The upper edge of the search range for correlation peaks, in number of bins above corrorigin
256
+ Returns
257
+ -------
258
+ NDArray
259
+ Array of correlation values representing the null distribution.
120
260
 
261
+ Notes
262
+ -----
263
+ This function applies normalization and filtering to the reference time course before
264
+ computing correlations. It supports parallel processing via multiprocessing for
265
+ improved performance when `numestreps` is large.
266
+
267
+ Examples
268
+ --------
269
+ >>> import numpy as np
270
+ >>> from some_module import getNullDistributionData
271
+ >>> result = getNullDistributionData(
272
+ ... Fs=100.0,
273
+ ... theCorrelator=correlator_obj,
274
+ ... thefitter=fitter_obj,
275
+ ... LGR=logging.getLogger(__name__),
276
+ ... numestreps=1000,
277
+ ... nprocs=4
278
+ ... )
279
+ >>> print(f"Null correlation distribution shape: {result.shape}")
121
280
  """
122
281
  inputshape = np.asarray([numestreps])
123
282
  normalizedreftc = theCorrelator.ncprefilter.apply(
@@ -129,91 +288,32 @@ def getNullDistributionDatax(
129
288
  ),
130
289
  )
131
290
  rawtcfft_r, rawtcfft_ang = tide_filt.polarfft(normalizedreftc)
132
- if nprocs > 1 or alwaysmultiproc:
133
- # define the consumer function here so it inherits most of the arguments
134
- def nullCorrelation_consumer(inQ, outQ):
135
- np.random.seed((os.getpid() * int(time.time())) % 123456789)
136
- while True:
137
- try:
138
- # get a new message
139
- val = inQ.get()
140
-
141
- # this is the 'TERM' signal
142
- if val is None:
143
- break
144
-
145
- # process and send the data
146
- outQ.put(
147
- _procOneNullCorrelationx(
148
- normalizedreftc,
149
- rawtcfft_r,
150
- rawtcfft_ang,
151
- Fs,
152
- theCorrelator,
153
- thefitter,
154
- despeckle_thresh=despeckle_thresh,
155
- fixdelay=fixdelay,
156
- fixeddelayvalue=fixeddelayvalue,
157
- permutationmethod=permutationmethod,
158
- rt_floatset=rt_floatset,
159
- rt_floattype=rt_floattype,
160
- )
161
- )
162
-
163
- except Exception as e:
164
- print("error!", e)
165
- break
166
-
167
- data_out = tide_multiproc.run_multiproc(
168
- nullCorrelation_consumer,
169
- inputshape,
170
- None,
171
- nprocs=nprocs,
172
- showprogressbar=showprogressbar,
173
- chunksize=chunksize,
174
- )
291
+ corrlist = np.zeros((numestreps), dtype=rt_floattype)
292
+ voxelmask = np.ones((numestreps), dtype=rt_floattype)
293
+ voxelargs = [normalizedreftc, rawtcfft_r, rawtcfft_ang, theCorrelator, thefitter]
294
+ voxelfunc = _procOneNullCorrelationx
295
+ packfunc = _packvoxeldata
296
+ unpackfunc = _unpackvoxeldata
297
+ voxeltargets = [
298
+ corrlist,
299
+ ]
175
300
 
176
- # unpack the data
177
- corrlist = np.asarray(data_out, dtype=rt_floattype)
178
- else:
179
- corrlist = np.zeros((numestreps), dtype=rt_floattype)
180
-
181
- for i in tqdm(
182
- range(0, numestreps),
183
- desc="Sham correlation",
184
- unit="correlations",
185
- disable=(not showprogressbar),
186
- ):
187
- # make a shuffled copy of the regressors
188
- if permutationmethod == "shuffle":
189
- permutedtc = np.random.permutation(normalizedreftc)
190
- elif permutationmethod == "phaserandom":
191
- permutedtc = tide_filt.ifftfrompolar(
192
- rawtcfft_r, np.random.permutation(rawtcfft_ang)
193
- )
194
- else:
195
- print("illegal shuffling method")
196
- sys.exit()
197
-
198
- # crosscorrelate with original, fit, and return the maximum value, and add it to the list
199
- thexcorr = _procOneNullCorrelationx(
200
- normalizedreftc,
201
- rawtcfft_r,
202
- rawtcfft_ang,
203
- Fs,
204
- theCorrelator,
205
- thefitter,
206
- despeckle_thresh=despeckle_thresh,
207
- fixdelay=fixdelay,
208
- fixeddelayvalue=fixeddelayvalue,
209
- permutationmethod=permutationmethod,
210
- rt_floatset=rt_floatset,
211
- rt_floattype=rt_floattype,
212
- )
213
- corrlist[i] = thexcorr
214
-
215
- # jump to line after progress bar
216
- print()
301
+ volumetotal = tide_genericmultiproc.run_multiproc(
302
+ voxelfunc,
303
+ packfunc,
304
+ unpackfunc,
305
+ voxelargs,
306
+ voxeltargets,
307
+ inputshape,
308
+ voxelmask,
309
+ LGR,
310
+ nprocs,
311
+ alwaysmultiproc,
312
+ showprogressbar,
313
+ chunksize,
314
+ permutationmethod=permutationmethod,
315
+ debug=debug,
316
+ )
217
317
 
218
318
  # return the distribution data
219
319
  numnonzero = len(np.where(corrlist != 0.0)[0])