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