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,593 +0,0 @@
1
- #!python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 Blaise Frederick
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- #
19
- import argparse
20
- import copy
21
- import os
22
- import sys
23
-
24
- import numpy as np
25
- import pandas as pd
26
-
27
- import rapidtide.fit as tide_fit
28
- import rapidtide.io as tide_io
29
- import rapidtide.maskutil as tide_mask
30
- import rapidtide.util as tide_util
31
- import rapidtide.workflows.parser_funcs as pf
32
-
33
-
34
- def _get_parser():
35
- class FullPaths(argparse.Action):
36
- """Expand user- and relative-paths"""
37
-
38
- def __call__(self, parser, namespace, values, option_string=None):
39
- if values == "":
40
- setattr(namespace, self.dest, "__EMPTY__")
41
- else:
42
- setattr(namespace, self.dest, os.path.abspath(os.path.expanduser(values)))
43
-
44
- # get the command line parameters
45
- parser = argparse.ArgumentParser(
46
- prog="fingerprint",
47
- description=(
48
- "Fit a rapidtide output map to a canonical map, by vascular territory, and calculate statistical metrics.\n"
49
- ),
50
- allow_abbrev=False,
51
- )
52
- parser.add_argument(
53
- "inputfile",
54
- help="Rapidtide output map to decompose by vascular territory. Must be in MNI152NLin6Asym coordinates, 2mm resolution",
55
- action=FullPaths,
56
- type=lambda x: pf.is_valid_file(parser, x),
57
- )
58
- parser.add_argument(
59
- "outputroot",
60
- help="name root for output files",
61
- action=FullPaths,
62
- type=str,
63
- )
64
-
65
- maskopts = parser.add_argument_group("Masking options")
66
- maskopts.add_argument(
67
- "--includemask",
68
- dest="includespec",
69
- metavar="MASK[:VALSPEC]",
70
- help=(
71
- "Only use atlas voxels that are also in file MASK in calculating the fit values "
72
- "(if VALSPEC is given, only voxels "
73
- "with integral values listed in VALSPEC are used). "
74
- ),
75
- default=None,
76
- )
77
- maskopts.add_argument(
78
- "--excludemask",
79
- dest="excludespec",
80
- metavar="MASK[:VALSPEC]",
81
- help=(
82
- "Do not use atlas voxels that are also in file MASK in calculating the fit values "
83
- "(if VALSPEC is given, voxels "
84
- "with integral values listed in VALSPEC are excluded). "
85
- ),
86
- default=None,
87
- )
88
- maskopts.add_argument(
89
- "--extramask",
90
- dest="extramaskname",
91
- metavar="MASK",
92
- type=lambda x: pf.is_valid_file(parser, x),
93
- help=(
94
- "Additional mask to apply to select voxels for fitting. Zero voxels in this mask will be excluded."
95
- ),
96
- default=None,
97
- )
98
-
99
- atlasopts = parser.add_argument_group("Atlas options")
100
- atlasopts.add_argument(
101
- "--atlas",
102
- help=(
103
- "Atlas. Options are: "
104
- "ASPECTS - ASPECTS territory atlas; "
105
- "ATT - Arterial transit time flow territories; "
106
- "JHU1 - Johns Hopkins level 1 probabalistic arterial flow territories, without ventricles (default); "
107
- "JHU2 - Johns Hopkins level 2 probabalistic arterial flow territories, without ventricles."
108
- ),
109
- choices=["ASPECTS", "ATT", "JHU1", "JHU2"],
110
- default="JHU1",
111
- )
112
- atlasopts.add_argument(
113
- "--customatlas",
114
- help=(
115
- "The name of a custom atlas file. The file must be a 3D NIFTI "
116
- "file in MNI152NLin6Asym space, 2mm isotropic resolution. The file values "
117
- "must be consecutive integers from 1 to N with no missing values. There "
118
- "must be a text file with an identical path and name (but with .txt instead of .nii.gz "
119
- "as the extension) containing the name of every region on a separate line. This argument "
120
- "overrides the --atlas argument."
121
- ),
122
- type=lambda x: pf.is_valid_file(parser, x),
123
- default=None,
124
- )
125
-
126
- fitopts = parser.add_argument_group("Fitting options")
127
- fitopts.add_argument(
128
- "--fitorder",
129
- help="order of polynomial fit to template (default is 1).",
130
- type=int,
131
- default=1,
132
- )
133
- fitopts.add_argument(
134
- "--nointercept",
135
- help="do not use the zeroth order component when fitting",
136
- action="store_true",
137
- )
138
- fitopts.add_argument(
139
- "--limittomask",
140
- help="only calculate fitdiff in masked region",
141
- action="store_true",
142
- )
143
- fitopts.add_argument(
144
- "--template",
145
- help=(
146
- "Template to fit. Default is 'lag'. Options are\n"
147
- "\tlag: time lag in seconds\n"
148
- "\tstrength: correlation coefficient\n"
149
- "\tsigma: correlation peak width in seconds\n"
150
- "\tconstant: constant value (forces fit order to 0).\n"
151
- ),
152
- choices=["lag", "strength", "sigma", "constant"],
153
- default="lag",
154
- )
155
- fitopts.add_argument(
156
- "--entropybins",
157
- help="number of bins in the entropy histogram (default is 101).",
158
- type=int,
159
- default=101,
160
- )
161
-
162
- fitopts.add_argument(
163
- "--entropyrange",
164
- dest="entropyrange",
165
- action="store",
166
- nargs=2,
167
- type=float,
168
- metavar=("LOWERLIM", "UPPERLIM"),
169
- help=(
170
- "Upper and lower limits of the range for the entropy histogram "
171
- "(default is to use data min and max)."
172
- ),
173
- default=None,
174
- )
175
-
176
- miscopts = parser.add_argument_group("Fitting options")
177
- miscopts.add_argument(
178
- "--debug",
179
- help="output additional debugging information",
180
- action="store_true",
181
- default=False,
182
- )
183
-
184
- return parser
185
-
186
-
187
- def fingerprint_main(
188
- themapname,
189
- whichtemplate,
190
- whichatlas,
191
- outputroot,
192
- fitorder,
193
- includespec=None,
194
- excludespec=None,
195
- extramaskname=None,
196
- intercept=True,
197
- entropybins=101,
198
- entropyrange=None,
199
- debug=False,
200
- ):
201
- # read the data
202
- referencedir = tide_util.findreferencedir()
203
- if debug:
204
- print(f"Reference directory is {referencedir}")
205
-
206
- if whichtemplate == "lag":
207
- thetemplatename = os.path.join(referencedir, "HCP1200_lag_2mm.nii.gz")
208
- elif whichtemplate == "strength":
209
- thetemplatename = os.path.join(referencedir, "HCP1200_strength_2mm.nii.gz")
210
- elif whichtemplate == "sigma":
211
- thetemplatename = os.path.join(referencedir, "HCP1200_sigma_2mm.nii.gz")
212
- elif whichtemplate == "constant":
213
- thetemplatename = None
214
- else:
215
- print("illegal template:", whichtemplate)
216
- sys.exit()
217
-
218
- if whichatlas == "ASPECTS":
219
- theatlasname = os.path.join(referencedir, "ASPECTS_2mm.nii.gz")
220
- theatlasregionsname = os.path.join(referencedir, "ASPECTS_regions.txt")
221
- elif whichatlas == "ATT":
222
- theatlasname = os.path.join(referencedir, "ATTbasedFlowTerritories_split_2mm.nii.gz")
223
- theatlasregionsname = os.path.join(
224
- referencedir, "ATTbasedFlowTerritories_split_regions.txt"
225
- )
226
- elif whichatlas == "JHU1":
227
- theatlasname = os.path.join(
228
- referencedir, "JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm.nii.gz"
229
- )
230
- theatlasregionsname = os.path.join(
231
- referencedir, "JHU-ArterialTerritoriesNoVent-LVL1_regions.txt"
232
- )
233
- elif whichatlas == "JHU2":
234
- theatlasname = os.path.join(
235
- referencedir, "JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm.nii.gz"
236
- )
237
- theatlasregionsname = os.path.join(
238
- referencedir, "JHU-ArterialTerritoriesNoVent-LVL2_regions.txt"
239
- )
240
- elif whichatlas[:5] == "USER_":
241
- theatlasname = whichatlas[5:]
242
- theatlasregionsname = theatlasname.replace(".nii.gz", ".txt")
243
- whichatlas = "USER"
244
- else:
245
- print("illegal atlas:", whichatlas)
246
- sys.exit()
247
-
248
- outputroot += f"_template-{whichtemplate}_atlas-{whichatlas}_O{fitorder}"
249
-
250
- # read the atlas
251
- if debug:
252
- print(f"Reading atlas {theatlasname}")
253
- atlas, atlas_data, atlas_hdr, atlasdims, atlassizes = tide_io.readfromnifti(theatlasname)
254
- atlaslabelsinput = pd.read_csv(
255
- theatlasregionsname, delimiter="\t", header=None, names=["Region"]
256
- )
257
-
258
- # read the template
259
- if thetemplatename is not None:
260
- if debug:
261
- print(f"reading atlas file {theatlasname}")
262
- (
263
- thetemplate,
264
- thetemplate_data,
265
- thetemplate_hdr,
266
- thetemplatedims,
267
- thetemplatesizes,
268
- ) = tide_io.readfromnifti(thetemplatename)
269
- else:
270
- thetemplate_data = atlas_data * 0.0
271
- thetemplate_data[np.where(atlas_data > 0)] = 1.0
272
-
273
- if debug:
274
- print(f"reading map file {themapname}")
275
- (
276
- themap,
277
- themap_data,
278
- themap_hdr,
279
- themapdims,
280
- thetemplatesizes,
281
- ) = tide_io.readfromnifti(themapname)
282
- nx, ny, nz, nummaps = tide_io.parseniftidims(themapdims)
283
-
284
- # process masks
285
- if includespec is not None:
286
- (
287
- includename,
288
- includevals,
289
- ) = tide_io.processnamespec(
290
- includespec, "Including voxels where ", "in offset calculation."
291
- )
292
- else:
293
- includename = None
294
- includevals = None
295
- if excludespec is not None:
296
- (
297
- excludename,
298
- excludevals,
299
- ) = tide_io.processnamespec(
300
- excludespec, "Excluding voxels where ", "from offset calculation."
301
- )
302
- else:
303
- excludename = None
304
- excludevals = None
305
-
306
- numspatiallocs = int(nx) * int(ny) * int(nz)
307
- includemask, excludemask, extramask = tide_mask.getmaskset(
308
- "anatomic",
309
- includename,
310
- includevals,
311
- excludename,
312
- excludevals,
313
- themap_hdr,
314
- numspatiallocs,
315
- extramask=extramaskname,
316
- )
317
-
318
- theflatmask = themap_data.reshape((numspatiallocs)) * 0 + 1
319
- if includemask is not None:
320
- theflatmask = theflatmask * includemask.reshape((numspatiallocs))
321
- if excludemask is not None:
322
- theflatmask = theflatmask * (1 - excludemask.reshape((numspatiallocs)))
323
- if extramask is not None:
324
- theflatmask = theflatmask * extramask.reshape((numspatiallocs))
325
-
326
- # generate the mask
327
- themask_data = theflatmask.reshape((nx, ny, nz))
328
- maskmap = themask_data
329
- maskmap[np.where(atlas_data < 1)] = 0.0
330
-
331
- # save the maskmap as nifti
332
- themaskmaphdr = copy.deepcopy(themap_hdr)
333
- themaskmaphdr["dim"][0] = 3
334
- themaskmaphdr["dim"][4] = 1
335
- tide_io.savetonifti(maskmap, themaskmaphdr, outputroot + "_maskmap")
336
-
337
- # get ready to do the fitting
338
- numregions = len(atlaslabelsinput)
339
- if intercept:
340
- numcoffs = fitorder + 1
341
- else:
342
- numcoffs = fitorder
343
- coff_array = np.zeros((numcoffs, numregions, nummaps), dtype="float")
344
- R_array = np.zeros((numregions, nummaps), dtype="float")
345
-
346
- # do the fit
347
- if debug:
348
- print("starting decomposition")
349
- thefitmap, thecoffs, theRs = tide_fit.territorydecomp(
350
- themap_data,
351
- thetemplate_data,
352
- atlas_data.astype(int),
353
- inputmask=themask_data,
354
- fitorder=fitorder,
355
- intercept=intercept,
356
- debug=debug,
357
- )
358
-
359
- # transfer the data into arrays
360
- for whichmap in range(nummaps):
361
- R_array[:, whichmap] = theRs[whichmap]
362
- coff_array[:, :, whichmap] = np.transpose(thecoffs[whichmap, :, :])
363
-
364
- # save the Rs as tsv
365
- newcols = pd.DataFrame(np.transpose(R_array[:, :]))
366
- newcols.columns = atlaslabelsinput["Region"]
367
- newcols.to_csv(f"{outputroot}_allRs.tsv", index=False, sep="\t")
368
-
369
- # save the fits as tsv
370
- if intercept:
371
- endpoint = fitorder + 1
372
- offset = 0
373
- else:
374
- endpoint = fitorder
375
- offset = 1
376
- for i in range(0, endpoint):
377
- newcols = pd.DataFrame(np.transpose(coff_array[i, :, :]))
378
- newcols.columns = atlaslabelsinput["Region"]
379
- newcols.to_csv(f"{outputroot}_fit_O{str(i + offset)}.tsv", index=False, sep="\t")
380
-
381
- # save the fit data as nifti
382
- if args.limittomask:
383
- if nummaps == 1:
384
- savemap = thefitmap * maskmap
385
- else:
386
- savemap = thefitmap * maskmap[:, :, :, None]
387
- else:
388
- savemap = thefitmap
389
- tide_io.savetonifti(savemap, themap_hdr, outputroot + "_fit")
390
-
391
- # save the fit error
392
- if args.limittomask:
393
- if nummaps == 1:
394
- diffmap = (themap_data - thefitmap) * maskmap
395
- else:
396
- diffmap = (themap_data - thefitmap) * maskmap[:, :, :, None]
397
- else:
398
- diffmap = themap_data - thefitmap
399
- tide_io.savetonifti(diffmap, themap_hdr, outputroot + "_fitdiff")
400
-
401
- # save the Rs as nifti
402
- thehdr = copy.deepcopy(themap_hdr)
403
- print(f"shape of R_array: {R_array.shape}")
404
- print(f"thehdr before: {thehdr['dim']}")
405
- thehdr["dim"][0] = 2
406
- thehdr["dim"][1] = R_array.shape[0]
407
- thehdr["dim"][2] = R_array.shape[1]
408
- thehdr["dim"][3] = 1
409
- thehdr["dim"][4] = 1
410
- print(f"thehdr after: {thehdr['dim']}")
411
- thehdr["pixdim"][0] = 1.0
412
- thehdr["pixdim"][1] = 1.0
413
- thehdr["pixdim"][2] = 1.0
414
- thehdr["pixdim"][3] = 1.0
415
- thehdr["pixdim"][4] = 1.0
416
- tide_io.savetonifti(R_array, thehdr, outputroot + "_allRs")
417
-
418
- # save the fit coefficients as nifti
419
- thehdr = copy.deepcopy(themap_hdr)
420
- print(f"shape of coff_array: {coff_array.shape}")
421
- print(f"thehdr before: {thehdr['dim']}")
422
- thehdr["dim"][0] = 3
423
- thehdr["dim"][1] = coff_array.shape[0]
424
- thehdr["dim"][2] = coff_array.shape[1]
425
- thehdr["dim"][3] = coff_array.shape[2]
426
- thehdr["dim"][4] = 1
427
- print(f"thehdr after: {thehdr['dim']}")
428
- thehdr["pixdim"][0] = 1.0
429
- thehdr["pixdim"][1] = 1.0
430
- thehdr["pixdim"][2] = 1.0
431
- thehdr["pixdim"][3] = 1.0
432
- thehdr["pixdim"][4] = 1.0
433
- tide_io.savetonifti(coff_array, thehdr, outputroot + "_allcoffs")
434
-
435
- # now do the stats
436
- # first on the initial map
437
- (
438
- statsmap,
439
- themeans,
440
- thestds,
441
- themedians,
442
- themads,
443
- thevariances,
444
- theskewnesses,
445
- thekurtoses,
446
- theentropies,
447
- ) = tide_fit.territorystats(
448
- themap_data,
449
- atlas_data.astype(int),
450
- inputmask=themask_data,
451
- entropybins=entropybins,
452
- entropyrange=entropyrange,
453
- debug=debug,
454
- )
455
-
456
- # then on the residuals after fitting
457
- (
458
- residualstatsmap,
459
- theresidualmeans,
460
- theresidualstds,
461
- theresidualmedians,
462
- theresidualmads,
463
- theresidualvariances,
464
- theresidualskewnesses,
465
- theresidualkurtoses,
466
- theresidualentropies,
467
- ) = tide_fit.territorystats(
468
- diffmap,
469
- atlas_data.astype(int),
470
- inputmask=themask_data,
471
- entropybins=entropybins,
472
- entropyrange=entropyrange,
473
- debug=debug,
474
- )
475
-
476
- # Organize the data
477
- mean_array = np.zeros((numregions, nummaps), dtype="float")
478
- std_array = np.zeros((numregions, nummaps), dtype="float")
479
- median_array = np.zeros((numregions, nummaps), dtype="float")
480
- variance_array = np.zeros((numregions, nummaps), dtype="float")
481
- skewness_array = np.zeros((numregions, nummaps), dtype="float")
482
- kurtosis_array = np.zeros((numregions, nummaps), dtype="float")
483
- mad_array = np.zeros((numregions, nummaps), dtype="float")
484
- entropy_array = np.zeros((numregions, nummaps), dtype="float")
485
- residual_mean_array = np.zeros((numregions, nummaps), dtype="float")
486
- residual_std_array = np.zeros((numregions, nummaps), dtype="float")
487
- residual_median_array = np.zeros((numregions, nummaps), dtype="float")
488
- residual_mad_array = np.zeros((numregions, nummaps), dtype="float")
489
- residual_variance_array = np.zeros((numregions, nummaps), dtype="float")
490
- residual_skewness_array = np.zeros((numregions, nummaps), dtype="float")
491
- residual_kurtosis_array = np.zeros((numregions, nummaps), dtype="float")
492
- residual_entropy_array = np.zeros((numregions, nummaps), dtype="float")
493
-
494
- for whichmap in range(nummaps):
495
- atlaslabels = atlaslabelsinput.copy()
496
-
497
- mean_array[:, whichmap] = themeans[whichmap]
498
- std_array[:, whichmap] = thestds[whichmap]
499
- median_array[:, whichmap] = themedians[whichmap]
500
- mad_array[:, whichmap] = themads[whichmap]
501
- variance_array[:, whichmap] = thevariances[whichmap]
502
- skewness_array[:, whichmap] = theskewnesses[whichmap]
503
- kurtosis_array[:, whichmap] = thekurtoses[whichmap]
504
- entropy_array[:, whichmap] = theentropies[whichmap]
505
-
506
- residual_mean_array[:, whichmap] = theresidualmeans[whichmap]
507
- residual_std_array[:, whichmap] = theresidualstds[whichmap]
508
- residual_median_array[:, whichmap] = theresidualmedians[whichmap]
509
- residual_mad_array[:, whichmap] = theresidualmads[whichmap]
510
- residual_variance_array[:, whichmap] = theresidualvariances[whichmap]
511
- residual_skewness_array[:, whichmap] = theresidualskewnesses[whichmap]
512
- residual_kurtosis_array[:, whichmap] = theresidualkurtoses[whichmap]
513
- residual_entropy_array[:, whichmap] = theresidualentropies[whichmap]
514
-
515
- newcols = pd.DataFrame(thecoffs[whichmap, :, :])
516
- columnnames = []
517
- if intercept:
518
- startpt = 0
519
- else:
520
- startpt = 1
521
- for i in range(startpt, fitorder + 1):
522
- columnnames += str(i)
523
- newcols.columns = columnnames
524
- atlaslabels["R"] = theRs[whichmap]
525
- atlaslabels = pd.concat([atlaslabels, newcols], axis=1)
526
- atlaslabels.to_csv(f"{outputroot}_{str(whichmap).zfill(4)}_fits.tsv", sep="\t")
527
- if debug:
528
- print(atlaslabels)
529
-
530
- # save the stats as tsv
531
- for thestat in [
532
- "mean",
533
- "std",
534
- "median",
535
- "mad",
536
- "variance",
537
- "skewness",
538
- "kurtosis",
539
- "entropy",
540
- "residual_mean",
541
- "residual_std",
542
- "residual_median",
543
- "residual_mad",
544
- "residual_variance",
545
- "residual_skewness",
546
- "residual_kurtosis",
547
- "residual_entropy",
548
- ]:
549
- newcols = pd.DataFrame(np.transpose(eval(f"{thestat}_array")[:, :]))
550
- newcols.columns = atlaslabelsinput["Region"]
551
- newcols.to_csv(f"{outputroot}_all{thestat}.tsv", index=False, sep="\t")
552
-
553
-
554
- if __name__ == "__main__":
555
- # get the command line parameters
556
- try:
557
- args = _get_parser().parse_args()
558
- except SystemExit:
559
- _get_parser().print_help()
560
- raise
561
-
562
- if args.debug:
563
- print("before preprocessing:", args)
564
-
565
- if args.customatlas is not None:
566
- theatlas = f"USER_{args.customatlas}"
567
- else:
568
- theatlas = args.atlas
569
-
570
- if args.template == "constant":
571
- args.fitorder = 0
572
- args.nointercept = False
573
-
574
- if args.debug:
575
- print("after preprocessing:", args)
576
-
577
- if args.debug:
578
- print(f"Using atlas {theatlas}")
579
-
580
- fingerprint_main(
581
- args.inputfile,
582
- args.template,
583
- theatlas,
584
- args.outputroot,
585
- args.fitorder,
586
- intercept=not (args.nointercept),
587
- includespec=args.includespec,
588
- excludespec=args.excludespec,
589
- extramaskname=args.extramaskname,
590
- entropybins=args.entropybins,
591
- entropyrange=args.entropyrange,
592
- debug=args.debug,
593
- )
@@ -1,23 +0,0 @@
1
- #!python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 Blaise Frederick
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- #
19
- import rapidtide.workflows.fixtr as theworkflow
20
- import rapidtide.workflows.parser_funcs as pf
21
-
22
- if __name__ == "__main__":
23
- pf.generic_init(theworkflow._get_parser, theworkflow.fixtr)
@@ -1,24 +0,0 @@
1
- #!python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 Blaise Frederick
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- #
19
- import sys
20
-
21
- import rapidtide.workflows.glmfilt as glmfilt_workflow
22
-
23
- if __name__ == "__main__":
24
- glmfilt_workflow.main()
@@ -1,22 +0,0 @@
1
- #!python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 Blaise Frederick
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- #
19
- import rapidtide.workflows.gmscalc
20
-
21
- if __name__ == "__main__":
22
- rapidtide.workflows.gmscalc.gmscalc_main()
@@ -1,25 +0,0 @@
1
- #!python
2
- # -*- coding: utf-8 -*-
3
- #
4
- # Copyright 2016-2024 Blaise Frederick
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- #
19
- import sys
20
-
21
- import rapidtide.workflows.happy as happy_workflow
22
- import rapidtide.workflows.happy_parser as happy_parser
23
-
24
- if __name__ == "__main__":
25
- happy_workflow.happy_main(happy_parser.process_args(inputargs=None))