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.
@@ -19,8 +19,11 @@
19
19
  import argparse
20
20
  import copy
21
21
  import time
22
+ from argparse import Namespace
23
+ from typing import Any, Callable, Dict, List, Optional, Tuple, Union
22
24
 
23
25
  import numpy as np
26
+ from numpy.typing import NDArray
24
27
  from tqdm import tqdm
25
28
 
26
29
  import rapidtide.correlate as tide_corr
@@ -41,7 +44,36 @@ DEFAULT_AMPTHRESH = 0.3
41
44
  DEFAULT_MINLAGDIFF = 0.0
42
45
 
43
46
 
44
- def _get_parser():
47
+ def _get_parser() -> Any:
48
+ """
49
+ Create and configure an argument parser for the localflow command-line tool.
50
+
51
+ This function sets up an `argparse.ArgumentParser` with a set of predefined
52
+ command-line arguments used to control the behavior of the local flow analysis
53
+ pipeline. It includes options for input/output file handling, reconstruction
54
+ parameters, filtering, windowing, and debugging.
55
+
56
+ Returns
57
+ -------
58
+ argparse.ArgumentParser
59
+ Configured argument parser with all required and optional arguments.
60
+
61
+ Notes
62
+ -----
63
+ The parser includes the following argument groups:
64
+ - Required positional arguments: `inputfilename` and `outputroot`
65
+ - Optional arguments for reconstruction parameters such as `npasses`, `radius`,
66
+ `minlagdiff`, `ampthresh`, `gausssigma`, `oversampfac`, `dofit`, `detrendorder`,
67
+ and `nosphere`
68
+ - Miscellaneous options including `noprogressbar` and `debug`
69
+
70
+ Examples
71
+ --------
72
+ >>> parser = _get_parser()
73
+ >>> args = parser.parse_args()
74
+ >>> print(args.inputfilename)
75
+ 'input.nii.gz'
76
+ """
45
77
  # get the command line parameters
46
78
  parser = argparse.ArgumentParser(
47
79
  prog="localflow",
@@ -149,17 +181,79 @@ def _get_parser():
149
181
 
150
182
 
151
183
  def preprocdata(
152
- fmridata,
153
- themask,
154
- theprefilter,
155
- oversamplefactor,
156
- Fs,
157
- tr,
158
- detrendorder=3,
159
- windowfunc="hamming",
160
- padseconds=0,
161
- showprogressbar=True,
162
- ):
184
+ fmridata: Any,
185
+ themask: Any,
186
+ theprefilter: Any,
187
+ oversamplefactor: Any,
188
+ Fs: Any,
189
+ tr: Any,
190
+ detrendorder: int = 3,
191
+ windowfunc: str = "hamming",
192
+ padseconds: int = 0,
193
+ showprogressbar: bool = True,
194
+ ) -> None:
195
+ """
196
+ Preprocess fMRI data by resampling, filtering, and normalizing voxel time series.
197
+
198
+ This function applies a series of preprocessing steps to fMRI data including:
199
+ resampling to a higher temporal resolution, applying a filter, and detrending
200
+ with correlation normalization. It processes each voxel individually based on
201
+ a provided mask.
202
+
203
+ Parameters
204
+ ----------
205
+ fmridata : array-like
206
+ 4D fMRI data array with shape (nx, ny, nz, nt), where nx, ny, nz are spatial
207
+ dimensions and nt is the number of time points.
208
+ themask : array-like
209
+ 3D binary mask array with the same spatial dimensions as `fmridata`. Voxels
210
+ with values > 0 are processed.
211
+ theprefilter : object
212
+ A filter object with an `apply` method that applies a temporal filter to the data.
213
+ oversamplefactor : float
214
+ Factor by which to oversample the data. Must be a positive number.
215
+ Fs : float
216
+ Sampling frequency of the original fMRI data in Hz.
217
+ tr : float
218
+ Repetition time (TR) of the fMRI acquisition in seconds.
219
+ detrendorder : int, optional
220
+ Order of the polynomial used for detrending. Default is 3.
221
+ windowfunc : str, optional
222
+ Window function used for correlation normalization. Default is "hamming".
223
+ padseconds : int, optional
224
+ Number of seconds to pad the resampled signal. Default is 0.
225
+ showprogressbar : bool, optional
226
+ Whether to display a progress bar during voxel processing. Default is True.
227
+
228
+ Returns
229
+ -------
230
+ tuple
231
+ A tuple containing:
232
+ - osfmridata_byvox : ndarray
233
+ Resampled and filtered fMRI data for processed voxels, shape (numvoxels, ostimepoints).
234
+ - ostimepoints : int
235
+ Number of time points in the oversampled data.
236
+ - oversamptr : float
237
+ Oversampled repetition time.
238
+ - numvoxelsprocessed : int
239
+ Total number of voxels processed.
240
+
241
+ Notes
242
+ -----
243
+ This function modifies the input data in-place during processing. The output includes
244
+ only the voxels that are marked as active in `themask`.
245
+
246
+ Examples
247
+ --------
248
+ >>> import numpy as np
249
+ >>> from some_module import preprocdata
250
+ >>> fmri_data = np.random.rand(64, 64, 32, 100)
251
+ >>> mask = np.ones((64, 64, 32))
252
+ >>> filter_obj = SomeFilter()
253
+ >>> result = preprocdata(
254
+ ... fmri_data, mask, filter_obj, oversamplefactor=2.0, Fs=2.0, tr=2.0
255
+ ... )
256
+ """
163
257
  numspatiallocs = fmridata.shape[0] * fmridata.shape[1] * fmridata.shape[2]
164
258
  timepoints = fmridata.shape[3]
165
259
 
@@ -203,19 +297,75 @@ def preprocdata(
203
297
 
204
298
 
205
299
  def getcorrloc(
206
- thedata,
207
- idx1,
208
- idx2,
209
- Fs,
210
- dofit=False,
211
- lagmin=-12.5,
212
- lagmax=12.5,
213
- widthmax=100.0,
214
- negsearch=15.0,
215
- possearch=15.0,
216
- padding=0,
217
- debug=False,
218
- ):
300
+ thedata: Any,
301
+ idx1: Any,
302
+ idx2: Any,
303
+ Fs: Any,
304
+ dofit: bool = False,
305
+ lagmin: float = -12.5,
306
+ lagmax: float = 12.5,
307
+ widthmax: float = 100.0,
308
+ negsearch: float = 15.0,
309
+ possearch: float = 15.0,
310
+ padding: int = 0,
311
+ debug: bool = False,
312
+ ) -> None:
313
+ """
314
+ Compute the cross-correlation peak between two time series and optionally fit it.
315
+
316
+ This function computes the cross-correlation between two time series selected
317
+ from `thedata` using indices `idx1` and `idx2`. It returns the maximum correlation
318
+ value, the corresponding time lag, a mask indicating success, and a failure reason.
319
+
320
+ Parameters
321
+ ----------
322
+ thedata : array_like
323
+ Input data array of shape (n_channels, n_samples).
324
+ idx1 : int or array_like
325
+ Index or indices of the first time series in `thedata`.
326
+ idx2 : int or array_like
327
+ Index or indices of the second time series in `thedata`.
328
+ Fs : float
329
+ Sampling frequency of the data.
330
+ dofit : bool, optional
331
+ If True, perform a peak fit on the cross-correlation function. Default is False.
332
+ lagmin : float, optional
333
+ Minimum lag to consider in seconds. Default is -12.5.
334
+ lagmax : float, optional
335
+ Maximum lag to consider in seconds. Default is 12.5.
336
+ widthmax : float, optional
337
+ Maximum width for fitting. Default is 100.0.
338
+ negsearch : float, optional
339
+ Search range for negative lags in seconds. Default is 15.0.
340
+ possearch : float, optional
341
+ Search range for positive lags in seconds. Default is 15.0.
342
+ padding : int, optional
343
+ Zero-padding for FFT-based correlation. Default is 0.
344
+ debug : bool, optional
345
+ If True, print debug information. Default is False.
346
+
347
+ Returns
348
+ -------
349
+ tuple
350
+ A tuple of (maxcorr, maxtime, maskval, failreason) where:
351
+ - maxcorr: Maximum correlation value.
352
+ - maxtime: Time lag corresponding to maxcorr in seconds.
353
+ - maskval: Mask indicating fit success (1 = success, 0 = failure).
354
+ - failreason: Numeric code indicating reason for fit failure (0 = no failure).
355
+
356
+ Notes
357
+ -----
358
+ - If either time series contains all zeros, the function returns (0.0, 0.0, 0, 0).
359
+ - The function uses `tide_corr.fastcorrelate` for correlation and `tide_fit.simfuncpeakfit`
360
+ for fitting when `dofit=True`.
361
+
362
+ Examples
363
+ --------
364
+ >>> import numpy as np
365
+ >>> data = np.random.rand(10, 1000)
366
+ >>> corr, time, mask, reason = getcorrloc(data, 0, 1, Fs=100, dofit=True)
367
+ >>> print(f"Correlation: {corr}, Lag: {time}s")
368
+ """
219
369
  tc1 = thedata[idx1, :]
220
370
  tc2 = thedata[idx2, :]
221
371
  if np.any(tc1) != 0.0 and np.any(tc2) != 0.0:
@@ -299,14 +449,90 @@ def getcorrloc(
299
449
  return 0.0, 0.0, 0, 0
300
450
 
301
451
 
302
- def xyz2index(x, y, z, xsize, ysize, zsize):
452
+ def xyz2index(x: Any, y: Any, z: Any, xsize: Any, ysize: Any, zsize: Any) -> None:
453
+ """
454
+ Convert 3D coordinates to a linear index for a 3D array.
455
+
456
+ This function maps 3D coordinates (x, y, z) to a linear index assuming
457
+ row-major order storage of a 3D array with dimensions (xsize, ysize, zsize).
458
+
459
+ Parameters
460
+ ----------
461
+ x : Any
462
+ X-coordinate, should be between 0 and xsize-1 inclusive
463
+ y : Any
464
+ Y-coordinate, should be between 0 and ysize-1 inclusive
465
+ z : Any
466
+ Z-coordinate, should be between 0 and zsize-1 inclusive
467
+ xsize : Any
468
+ Size of the array along the x-axis
469
+ ysize : Any
470
+ Size of the array along the y-axis
471
+ zsize : Any
472
+ Size of the array along the z-axis
473
+
474
+ Returns
475
+ -------
476
+ int
477
+ Linear index if coordinates are valid (within bounds), -1 otherwise
478
+
479
+ Notes
480
+ -----
481
+ The function uses row-major order indexing: index = z + y * zsize + x * zsize * ysize
482
+
483
+ Examples
484
+ --------
485
+ >>> xyz2index(1, 2, 3, 10, 10, 10)
486
+ 321
487
+ >>> xyz2index(15, 2, 3, 10, 10, 10)
488
+ -1
489
+ """
303
490
  if (0 <= x < xsize) and (0 <= y < ysize) and (0 <= z < zsize):
304
491
  return int(z) + int(y) * int(zsize) + int(x) * int(zsize * ysize)
305
492
  else:
306
493
  return -1
307
494
 
308
495
 
309
- def index2xyz(theindex, ysize, zsize):
496
+ def index2xyz(theindex: Any, ysize: Any, zsize: Any) -> None:
497
+ """
498
+ Convert a linear index to 3D coordinates (x, y, z).
499
+
500
+ This function maps a 1D index to 3D coordinates within a 3D grid
501
+ with dimensions determined by ysize and zsize. The conversion assumes
502
+ row-major ordering where the index is distributed across the three
503
+ dimensions based on the product of the grid dimensions.
504
+
505
+ Parameters
506
+ ----------
507
+ theindex : Any
508
+ The linear index to be converted to 3D coordinates
509
+ ysize : Any
510
+ The size of the grid in the y dimension
511
+ zsize : Any
512
+ The size of the grid in the z dimension
513
+
514
+ Returns
515
+ -------
516
+ tuple
517
+ A tuple containing (x, y, z) coordinates corresponding to the input index
518
+
519
+ Notes
520
+ -----
521
+ The function assumes that the grid dimensions are such that the total
522
+ number of elements is sufficient to accommodate the given index.
523
+ The conversion follows the formula:
524
+ - x = index // (ysize * zsize)
525
+ - y = (index - x * ysize * zsize) // zsize
526
+ - z = index - x * ysize * zsize - y * zsize
527
+
528
+ Examples
529
+ --------
530
+ >>> index2xyz(10, 3, 4)
531
+ (0, 0, 10)
532
+
533
+ >>> index2xyz(25, 3, 4)
534
+ (2, 0, 1)
535
+ """
310
536
  x = theindex // int(zsize * ysize)
311
537
  theindex -= int(x) * int(zsize * ysize)
312
538
  y = theindex // int(zsize)
@@ -315,7 +541,81 @@ def index2xyz(theindex, ysize, zsize):
315
541
  return x, y, z
316
542
 
317
543
 
318
- def localflow(args):
544
+ def localflow(args: Any) -> None:
545
+ """
546
+ Perform local flow analysis on fMRI data.
547
+
548
+ This function processes fMRI data to compute local correlation and delay information
549
+ across spatial neighbors, followed by a reconstruction step to estimate time delays
550
+ in the signal propagation.
551
+
552
+ Parameters
553
+ ----------
554
+ args : Any
555
+ An object containing various arguments for processing, including:
556
+ - inputfilename : str
557
+ Path to the input NIfTI file.
558
+ - outputroot : str
559
+ Root name for output files.
560
+ - gausssigma : float
561
+ Sigma for Gaussian spatial smoothing. If less than 0, automatically computed.
562
+ - oversampfactor : int
563
+ Oversampling factor for preprocessing. If -1, computed automatically.
564
+ - detrendorder : int
565
+ Order of detrending to apply.
566
+ - windowfunc : str
567
+ Window function to use for preprocessing.
568
+ - padseconds : float
569
+ Padding in seconds for preprocessing.
570
+ - showprogressbar : bool
571
+ Whether to show progress bars.
572
+ - dofit : bool
573
+ Whether to fit the correlation.
574
+ - debug : bool
575
+ Whether to enable debug mode.
576
+ - radius : float
577
+ Neighborhood radius in mm.
578
+ - npasses : int
579
+ Number of reconstruction passes.
580
+ - ampthresh : float
581
+ Amplitude threshold for valid correlations.
582
+
583
+ Returns
584
+ -------
585
+ None
586
+ This function does not return a value but saves multiple NIfTI files and timing logs.
587
+
588
+ Notes
589
+ -----
590
+ The function performs the following steps:
591
+ 1. Reads and preprocesses input fMRI data.
592
+ 2. Applies spatial filtering if specified.
593
+ 3. Prepares data for correlation analysis.
594
+ 4. Identifies spatial neighbors within a specified radius.
595
+ 5. Computes local correlations and delays.
596
+ 6. Reconstructs time delays using iterative averaging.
597
+ 7. Saves results as NIfTI files.
598
+
599
+ Examples
600
+ --------
601
+ >>> import argparse
602
+ >>> args = argparse.Namespace(
603
+ ... inputfilename="fmri.nii.gz",
604
+ ... outputroot="output",
605
+ ... gausssigma=-1.0,
606
+ ... oversampfactor=-1,
607
+ ... detrendorder=1,
608
+ ... windowfunc="hann",
609
+ ... padseconds=10.0,
610
+ ... showprogressbar=True,
611
+ ... dofit=True,
612
+ ... debug=False,
613
+ ... radius=5.0,
614
+ ... npasses=5,
615
+ ... ampthresh=0.1
616
+ ... )
617
+ >>> localflow(args)
618
+ """
319
619
  # set default variable values
320
620
  displayplots = False
321
621
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
  #
4
- # Copyright 2024-2024 Blaise Frederick
4
+ # Copyright 2024-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.
@@ -17,6 +17,8 @@
17
17
  #
18
18
  #
19
19
  import argparse
20
+ from argparse import Namespace
21
+ from typing import Any, Callable, Dict, List, Optional, Tuple, Union
20
22
 
21
23
  import pandas as pd
22
24
 
@@ -24,9 +26,29 @@ import rapidtide.io as tide_io
24
26
  import rapidtide.stats as tide_stats
25
27
 
26
28
 
27
- def _get_parser():
29
+ def _get_parser() -> Any:
28
30
  """
29
- Argument parser for mergequality
31
+ Argument parser for mergequality.
32
+
33
+ Creates and configures an argument parser for the mergequality tool that merges
34
+ rapidtide quality check data from multiple runs.
35
+
36
+ Returns
37
+ -------
38
+ argparse.ArgumentParser
39
+ Configured argument parser object with all required and optional arguments
40
+ for the mergequality tool.
41
+
42
+ Notes
43
+ -----
44
+ The returned parser is configured with:
45
+ - Required arguments: --input and --outputroot
46
+ - Optional arguments: --keyfile, --showhists, --addgraymetrics, --addwhitemetrics, --debug
47
+
48
+ Examples
49
+ --------
50
+ >>> parser = _get_parser()
51
+ >>> args = parser.parse_args(['--input', 'run1.csv', 'run2.csv', '--outputroot', 'merged'])
30
52
  """
31
53
  parser = argparse.ArgumentParser(
32
54
  prog="mergequality",
@@ -68,7 +90,61 @@ def _get_parser():
68
90
  return parser
69
91
 
70
92
 
71
- def mergequality(args):
93
+ def mergequality(args: Any) -> None:
94
+ """
95
+ Merge quality metrics from multiple input JSON files into a single CSV file.
96
+
97
+ This function reads quality metrics from input JSON files and combines them
98
+ into a structured DataFrame. It supports optional inclusion of gray and white
99
+ matter specific metrics based on command-line arguments. Histograms for each
100
+ metric are also generated and saved.
101
+
102
+ Parameters
103
+ ----------
104
+ args : Any
105
+ An object containing the following attributes:
106
+ - input : list of str
107
+ List of input JSON file paths to process.
108
+ - outputroot : str
109
+ Base name for output CSV and histogram files.
110
+ - keyfile : str, optional
111
+ Path to a JSON file containing key metrics definitions. If None,
112
+ default metrics are used.
113
+ - addgraymetrics : bool
114
+ Whether to include gray matter specific metrics.
115
+ - addwhitemetrics : bool
116
+ Whether to include white matter specific metrics.
117
+ - showhists : bool
118
+ Whether to display histograms.
119
+ - debug : bool
120
+ Whether to print debug information.
121
+
122
+ Returns
123
+ -------
124
+ None
125
+ This function does not return a value but saves a CSV file and histogram
126
+ plots to disk.
127
+
128
+ Notes
129
+ -----
130
+ The function uses `tide_io.readdictfromjson` to read input JSON files and
131
+ `tide_stats.makeandsavehistogram` to generate histograms. Default metrics
132
+ are included for mask, regressor, lag, laggrad, strength, and MTT.
133
+ Gray and white matter metrics are conditionally added based on `args`.
134
+
135
+ Examples
136
+ --------
137
+ >>> args = type('Args', (), {
138
+ ... 'input': ['file1.json', 'file2.json'],
139
+ ... 'outputroot': 'output',
140
+ ... 'keyfile': None,
141
+ ... 'addgraymetrics': True,
142
+ ... 'addwhitemetrics': False,
143
+ ... 'showhists': True,
144
+ ... 'debug': False
145
+ ... })()
146
+ >>> mergequality(args)
147
+ """
72
148
  if args.debug:
73
149
  print(f"{args.input=}")
74
150
  print(f"{args.outputroot=}")