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.
- 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 +94 -27
- 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 +21 -0
- 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 +178 -0
- 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 +590 -1181
- rapidtide/io.py +2569 -468
- rapidtide/linfitfiltpass.py +784 -0
- rapidtide/makelaggedtcs.py +267 -97
- rapidtide/maskutil.py +555 -25
- rapidtide/miscmath.py +867 -137
- 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.5.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 +27 -15
- 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 +1833 -1919
- rapidtide/workflows/rapidtide2std.py +101 -3
- rapidtide/workflows/rapidtide_parser.py +607 -372
- 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.5.dist-info → rapidtide-3.1.3.dist-info}/METADATA +30 -223
- rapidtide-3.1.3.dist-info/RECORD +393 -0
- {rapidtide-2.9.5.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.5.data/scripts/adjustoffset +0 -23
- rapidtide-2.9.5.data/scripts/aligntcs +0 -23
- rapidtide-2.9.5.data/scripts/applydlfilter +0 -23
- rapidtide-2.9.5.data/scripts/atlasaverage +0 -23
- rapidtide-2.9.5.data/scripts/atlastool +0 -23
- rapidtide-2.9.5.data/scripts/calcicc +0 -22
- rapidtide-2.9.5.data/scripts/calctexticc +0 -23
- rapidtide-2.9.5.data/scripts/calcttest +0 -22
- rapidtide-2.9.5.data/scripts/ccorrica +0 -23
- rapidtide-2.9.5.data/scripts/diffrois +0 -23
- rapidtide-2.9.5.data/scripts/endtidalproc +0 -23
- rapidtide-2.9.5.data/scripts/filtnifti +0 -23
- rapidtide-2.9.5.data/scripts/filttc +0 -23
- rapidtide-2.9.5.data/scripts/fingerprint +0 -593
- rapidtide-2.9.5.data/scripts/fixtr +0 -23
- rapidtide-2.9.5.data/scripts/glmfilt +0 -24
- rapidtide-2.9.5.data/scripts/gmscalc +0 -22
- rapidtide-2.9.5.data/scripts/happy +0 -25
- rapidtide-2.9.5.data/scripts/happy2std +0 -23
- rapidtide-2.9.5.data/scripts/happywarp +0 -350
- rapidtide-2.9.5.data/scripts/histnifti +0 -23
- rapidtide-2.9.5.data/scripts/histtc +0 -23
- rapidtide-2.9.5.data/scripts/localflow +0 -23
- rapidtide-2.9.5.data/scripts/mergequality +0 -23
- rapidtide-2.9.5.data/scripts/pairproc +0 -23
- rapidtide-2.9.5.data/scripts/pairwisemergenifti +0 -23
- rapidtide-2.9.5.data/scripts/physiofreq +0 -23
- rapidtide-2.9.5.data/scripts/pixelcomp +0 -23
- rapidtide-2.9.5.data/scripts/plethquality +0 -23
- rapidtide-2.9.5.data/scripts/polyfitim +0 -23
- rapidtide-2.9.5.data/scripts/proj2flow +0 -23
- rapidtide-2.9.5.data/scripts/rankimage +0 -23
- rapidtide-2.9.5.data/scripts/rapidtide +0 -23
- rapidtide-2.9.5.data/scripts/rapidtide2std +0 -23
- rapidtide-2.9.5.data/scripts/resamplenifti +0 -23
- rapidtide-2.9.5.data/scripts/resampletc +0 -23
- rapidtide-2.9.5.data/scripts/retroglm +0 -23
- rapidtide-2.9.5.data/scripts/roisummarize +0 -23
- rapidtide-2.9.5.data/scripts/runqualitycheck +0 -23
- rapidtide-2.9.5.data/scripts/showarbcorr +0 -23
- rapidtide-2.9.5.data/scripts/showhist +0 -23
- rapidtide-2.9.5.data/scripts/showstxcorr +0 -23
- rapidtide-2.9.5.data/scripts/showtc +0 -23
- rapidtide-2.9.5.data/scripts/showxcorr_legacy +0 -536
- rapidtide-2.9.5.data/scripts/showxcorrx +0 -23
- rapidtide-2.9.5.data/scripts/showxy +0 -23
- rapidtide-2.9.5.data/scripts/simdata +0 -23
- rapidtide-2.9.5.data/scripts/spatialdecomp +0 -23
- rapidtide-2.9.5.data/scripts/spatialfit +0 -23
- rapidtide-2.9.5.data/scripts/spatialmi +0 -23
- rapidtide-2.9.5.data/scripts/spectrogram +0 -23
- rapidtide-2.9.5.data/scripts/synthASL +0 -23
- rapidtide-2.9.5.data/scripts/tcfrom2col +0 -23
- rapidtide-2.9.5.data/scripts/tcfrom3col +0 -23
- rapidtide-2.9.5.data/scripts/temporaldecomp +0 -23
- rapidtide-2.9.5.data/scripts/threeD +0 -236
- rapidtide-2.9.5.data/scripts/tidepool +0 -23
- rapidtide-2.9.5.data/scripts/variabilityizer +0 -23
- rapidtide-2.9.5.dist-info/RECORD +0 -357
- rapidtide-2.9.5.dist-info/top_level.txt +0 -86
- {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info/licenses}/LICENSE +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
#
|
|
4
|
-
# Copyright 2021-
|
|
4
|
+
# Copyright 2021-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,17 +18,42 @@
|
|
|
18
18
|
#
|
|
19
19
|
import argparse
|
|
20
20
|
import sys
|
|
21
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
21
22
|
|
|
22
23
|
import numpy as np
|
|
24
|
+
from numpy.typing import NDArray
|
|
23
25
|
|
|
24
26
|
import rapidtide.io as tide_io
|
|
25
27
|
import rapidtide.miscmath as tide_math
|
|
26
28
|
import rapidtide.workflows.parser_funcs as pf
|
|
27
29
|
|
|
28
30
|
|
|
29
|
-
def _get_parser():
|
|
31
|
+
def _get_parser() -> Any:
|
|
30
32
|
"""
|
|
31
|
-
Argument parser for roisummarize
|
|
33
|
+
Argument parser for roisummarize.
|
|
34
|
+
|
|
35
|
+
This function constructs and returns an `argparse.ArgumentParser` object configured
|
|
36
|
+
for parsing command-line arguments used by the `roisummarize` tool. It defines
|
|
37
|
+
required inputs, optional arguments for sampling frequency, filtering, normalization,
|
|
38
|
+
and debugging options.
|
|
39
|
+
|
|
40
|
+
Returns
|
|
41
|
+
-------
|
|
42
|
+
argparse.ArgumentParser
|
|
43
|
+
Configured argument parser for the roisummarize tool.
|
|
44
|
+
|
|
45
|
+
Notes
|
|
46
|
+
-----
|
|
47
|
+
The parser supports two mutually exclusive ways to specify sampling frequency:
|
|
48
|
+
either via `--samplerate` or `--sampletstep`. These are equivalent and both
|
|
49
|
+
set the same internal `samplerate` parameter.
|
|
50
|
+
|
|
51
|
+
Examples
|
|
52
|
+
--------
|
|
53
|
+
>>> parser = _get_parser()
|
|
54
|
+
>>> args = parser.parse_args(['--inputfilename', 'input.txt',
|
|
55
|
+
... '--templatefile', 'template.nii',
|
|
56
|
+
... '--outputfile', 'output.txt'])
|
|
32
57
|
"""
|
|
33
58
|
parser = argparse.ArgumentParser(
|
|
34
59
|
prog="filttc",
|
|
@@ -101,7 +126,50 @@ def _get_parser():
|
|
|
101
126
|
return parser
|
|
102
127
|
|
|
103
128
|
|
|
104
|
-
def summarize4Dbylabel(
|
|
129
|
+
def summarize4Dbylabel(
|
|
130
|
+
inputvoxels: NDArray, templatevoxels: NDArray, normmethod: str = "z", debug: bool = False
|
|
131
|
+
) -> NDArray:
|
|
132
|
+
"""
|
|
133
|
+
Summarize 4D voxel data by region labels from a template.
|
|
134
|
+
|
|
135
|
+
This function extracts time series data for each region defined in a template
|
|
136
|
+
and computes normalized mean time courses for each region across time points.
|
|
137
|
+
|
|
138
|
+
Parameters
|
|
139
|
+
----------
|
|
140
|
+
inputvoxels : NDArray
|
|
141
|
+
4D array containing voxel data with shape (n_voxels, n_timepoints, n_other_dims)
|
|
142
|
+
templatevoxels : NDArray
|
|
143
|
+
3D array containing region labels with shape (n_voxels, 1, 1)
|
|
144
|
+
normmethod : str, optional
|
|
145
|
+
Normalization method to apply to time courses, default is "z"
|
|
146
|
+
Supported methods depend on tide_math.normalize function
|
|
147
|
+
debug : bool, optional
|
|
148
|
+
If True, print debugging information including voxel counts and shapes,
|
|
149
|
+
default is False
|
|
150
|
+
|
|
151
|
+
Returns
|
|
152
|
+
-------
|
|
153
|
+
timecourses : NDArray
|
|
154
|
+
2D array of shape (n_regions, n_timepoints) containing normalized mean
|
|
155
|
+
time courses for each region
|
|
156
|
+
|
|
157
|
+
Notes
|
|
158
|
+
-----
|
|
159
|
+
- Regions are assumed to be labeled starting from 1
|
|
160
|
+
- Zero-valued voxels in template are ignored
|
|
161
|
+
- NaN values are converted to zeros before computing means
|
|
162
|
+
- The function uses tide_math.normalize for normalization
|
|
163
|
+
|
|
164
|
+
Examples
|
|
165
|
+
--------
|
|
166
|
+
>>> import numpy as np
|
|
167
|
+
>>> input_data = np.random.rand(100, 50, 1)
|
|
168
|
+
>>> template = np.random.randint(1, 4, (100, 1, 1))
|
|
169
|
+
>>> result = summarize4Dbylabel(input_data, template, normmethod="z")
|
|
170
|
+
>>> print(result.shape)
|
|
171
|
+
(3, 50)
|
|
172
|
+
"""
|
|
105
173
|
numregions = np.max(templatevoxels)
|
|
106
174
|
numtimepoints = inputvoxels.shape[1]
|
|
107
175
|
timecourses = np.zeros((numregions, numtimepoints), dtype="float")
|
|
@@ -111,14 +179,58 @@ def summarize4Dbylabel(inputvoxels, templatevoxels, normmethod="z", debug=False)
|
|
|
111
179
|
if thevoxels.shape[1] > 0:
|
|
112
180
|
regiontimecourse = np.nan_to_num(np.mean(thevoxels, axis=0))
|
|
113
181
|
else:
|
|
114
|
-
regiontimecourse = timecourses[0, :]
|
|
182
|
+
regiontimecourse = np.zeros_like(timecourses[0, :])
|
|
115
183
|
if debug:
|
|
116
184
|
print("thevoxels, data shape are:", thevoxels.shape, regiontimecourse.shape)
|
|
117
185
|
timecourses[theregion - 1, :] = tide_math.normalize(regiontimecourse, method=normmethod)
|
|
118
186
|
return timecourses
|
|
119
187
|
|
|
120
188
|
|
|
121
|
-
def summarize3Dbylabel(
|
|
189
|
+
def summarize3Dbylabel(
|
|
190
|
+
inputvoxels: NDArray, templatevoxels: NDArray, debug: bool = False
|
|
191
|
+
) -> Tuple[NDArray, list]:
|
|
192
|
+
"""
|
|
193
|
+
Summarize 3D voxel data by label using mean, standard deviation, and median statistics.
|
|
194
|
+
|
|
195
|
+
This function processes 3D voxel data by grouping voxels according to labels in a template
|
|
196
|
+
and computes summary statistics for each labeled region. The input voxels are replaced
|
|
197
|
+
with the mean value of each region, and statistics are returned for further analysis.
|
|
198
|
+
|
|
199
|
+
Parameters
|
|
200
|
+
----------
|
|
201
|
+
inputvoxels : NDArray
|
|
202
|
+
3D array containing the voxel values to be summarized
|
|
203
|
+
templatevoxels : NDArray
|
|
204
|
+
3D array containing integer labels defining regions of interest
|
|
205
|
+
debug : bool, optional
|
|
206
|
+
Flag to enable debug output (default is False)
|
|
207
|
+
|
|
208
|
+
Returns
|
|
209
|
+
-------
|
|
210
|
+
tuple
|
|
211
|
+
A tuple containing:
|
|
212
|
+
- outputvoxels : NDArray
|
|
213
|
+
3D array with each labeled region replaced by its mean value
|
|
214
|
+
- regionstats : list
|
|
215
|
+
List of lists containing [mean, std, median] statistics for each region
|
|
216
|
+
|
|
217
|
+
Notes
|
|
218
|
+
-----
|
|
219
|
+
- Regions are labeled starting from 1 to max(templatevoxels)
|
|
220
|
+
- NaN values are converted to 0 during statistics calculation
|
|
221
|
+
- The function modifies the input arrays in-place during processing
|
|
222
|
+
|
|
223
|
+
Examples
|
|
224
|
+
--------
|
|
225
|
+
>>> import numpy as np
|
|
226
|
+
>>> input_data = np.random.rand(10, 10, 10)
|
|
227
|
+
>>> template = np.zeros((10, 10, 10), dtype=int)
|
|
228
|
+
>>> template[2:5, 2:5, 2:5] = 1
|
|
229
|
+
>>> template[6:8, 6:8, 6:8] = 2
|
|
230
|
+
>>> result, stats = summarize3Dbylabel(input_data, template)
|
|
231
|
+
>>> print(f"Region 1 mean: {stats[0][0]:.3f}")
|
|
232
|
+
>>> print(f"Region 2 mean: {stats[1][0]:.3f}")
|
|
233
|
+
"""
|
|
122
234
|
numregions = np.max(templatevoxels)
|
|
123
235
|
outputvoxels = 0.0 * inputvoxels
|
|
124
236
|
regionstats = []
|
|
@@ -132,7 +244,64 @@ def summarize3Dbylabel(inputvoxels, templatevoxels, debug=False):
|
|
|
132
244
|
return outputvoxels, regionstats
|
|
133
245
|
|
|
134
246
|
|
|
135
|
-
def roisummarize(args):
|
|
247
|
+
def roisummarize(args: Any) -> None:
|
|
248
|
+
"""
|
|
249
|
+
Summarize fMRI data by regions of interest (ROIs) using a template image.
|
|
250
|
+
|
|
251
|
+
This function reads input fMRI and template NIfTI files, checks spatial
|
|
252
|
+
compatibility, and computes either 3D or 4D summaries depending on the
|
|
253
|
+
number of timepoints in the input data. For 4D data, it applies a filter
|
|
254
|
+
and summarizes timecourses by ROI. For 3D data, it computes mean values and
|
|
255
|
+
region statistics.
|
|
256
|
+
|
|
257
|
+
Parameters
|
|
258
|
+
----------
|
|
259
|
+
args : Any
|
|
260
|
+
Command-line arguments parsed by `_get_parser()`. Expected attributes include:
|
|
261
|
+
- `inputfilename` : str
|
|
262
|
+
Path to the input fMRI NIfTI file.
|
|
263
|
+
- `templatefile` : str
|
|
264
|
+
Path to the template NIfTI file defining ROIs.
|
|
265
|
+
- `samplerate` : str or float
|
|
266
|
+
Sampling rate for filtering. If "auto", defaults to 1.0.
|
|
267
|
+
- `numskip` : int
|
|
268
|
+
Number of initial timepoints to skip when summarizing 4D data.
|
|
269
|
+
- `normmethod` : str
|
|
270
|
+
Normalization method for 4D summarization.
|
|
271
|
+
- `debug` : bool
|
|
272
|
+
Enable debug mode for additional output.
|
|
273
|
+
- `outputfile` : str
|
|
274
|
+
Base name for output files.
|
|
275
|
+
|
|
276
|
+
Returns
|
|
277
|
+
-------
|
|
278
|
+
None
|
|
279
|
+
The function writes output files to disk:
|
|
280
|
+
- `<outputfile>_timecourses`: Timecourses for each ROI (4D case).
|
|
281
|
+
- `<outputfile>_meanvals`: Mean values per ROI (3D case).
|
|
282
|
+
- `<outputfile>_regionstats.txt`: Statistics for each ROI (3D case).
|
|
283
|
+
|
|
284
|
+
Notes
|
|
285
|
+
-----
|
|
286
|
+
- The function assumes that the template file defines ROIs with integer labels.
|
|
287
|
+
- For 4D data, the input is filtered using `pf.postprocessfilteropts`.
|
|
288
|
+
- If the spatial dimensions of the input and template files do not match,
|
|
289
|
+
the function exits with an error message.
|
|
290
|
+
|
|
291
|
+
Examples
|
|
292
|
+
--------
|
|
293
|
+
>>> import argparse
|
|
294
|
+
>>> args = argparse.Namespace(
|
|
295
|
+
... inputfilename='fmri.nii',
|
|
296
|
+
... templatefile='roi_template.nii',
|
|
297
|
+
... samplerate='auto',
|
|
298
|
+
... numskip=5,
|
|
299
|
+
... normmethod='zscore',
|
|
300
|
+
... debug=False,
|
|
301
|
+
... outputfile='output'
|
|
302
|
+
... )
|
|
303
|
+
>>> roisummarize(args)
|
|
304
|
+
"""
|
|
136
305
|
# grab the command line arguments then pass them off.
|
|
137
306
|
try:
|
|
138
307
|
args = _get_parser().parse_args()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
#
|
|
4
|
-
# Copyright 2024-
|
|
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,17 +17,41 @@
|
|
|
17
17
|
#
|
|
18
18
|
#
|
|
19
19
|
import argparse
|
|
20
|
-
|
|
21
|
-
import
|
|
22
|
-
import numpy as np
|
|
20
|
+
from argparse import Namespace
|
|
21
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
23
22
|
|
|
24
23
|
import rapidtide.io as tide_io
|
|
25
24
|
import rapidtide.qualitycheck as tide_quality
|
|
26
25
|
|
|
27
26
|
|
|
28
|
-
def _get_parser():
|
|
27
|
+
def _get_parser() -> Any:
|
|
29
28
|
"""
|
|
30
|
-
Argument parser for runqualitycheck
|
|
29
|
+
Argument parser for runqualitycheck.
|
|
30
|
+
|
|
31
|
+
This function creates and configures an argument parser for the runqualitycheck
|
|
32
|
+
command-line tool. The parser handles both required and optional arguments needed
|
|
33
|
+
to perform quality checks on rapidtide datasets.
|
|
34
|
+
|
|
35
|
+
Returns
|
|
36
|
+
-------
|
|
37
|
+
argparse.ArgumentParser
|
|
38
|
+
Configured argument parser object with all required and optional arguments
|
|
39
|
+
for the runqualitycheck tool.
|
|
40
|
+
|
|
41
|
+
Notes
|
|
42
|
+
-----
|
|
43
|
+
The argument parser is configured with:
|
|
44
|
+
- Required input file root name
|
|
45
|
+
- Optional gray matter mask specification
|
|
46
|
+
- Optional white matter mask specification
|
|
47
|
+
- Debug flag for additional output
|
|
48
|
+
|
|
49
|
+
Examples
|
|
50
|
+
--------
|
|
51
|
+
>>> parser = _get_parser()
|
|
52
|
+
>>> args = parser.parse_args(['dataset_root'])
|
|
53
|
+
>>> print(args.inputfileroot)
|
|
54
|
+
'dataset_root'
|
|
31
55
|
"""
|
|
32
56
|
parser = argparse.ArgumentParser(
|
|
33
57
|
prog="runqualitycheck",
|
|
@@ -69,7 +93,48 @@ def _get_parser():
|
|
|
69
93
|
return parser
|
|
70
94
|
|
|
71
95
|
|
|
72
|
-
def runqualitycheck(args):
|
|
96
|
+
def runqualitycheck(args: Any) -> None:
|
|
97
|
+
"""
|
|
98
|
+
Run quality check on input data and write results to JSON file.
|
|
99
|
+
|
|
100
|
+
This function performs a quality check on the input data using the tide_quality
|
|
101
|
+
module and writes the results to a JSON file with a standardized naming convention.
|
|
102
|
+
|
|
103
|
+
Parameters
|
|
104
|
+
----------
|
|
105
|
+
args : Any
|
|
106
|
+
An object containing input arguments with the following attributes:
|
|
107
|
+
- inputfileroot : str
|
|
108
|
+
Root name of the input file(s)
|
|
109
|
+
- graymaskspec : str, optional
|
|
110
|
+
Specification for gray matter masking
|
|
111
|
+
- whitemaskspec : str, optional
|
|
112
|
+
Specification for white matter masking
|
|
113
|
+
- debug : bool, optional
|
|
114
|
+
Flag to enable debug mode
|
|
115
|
+
|
|
116
|
+
Returns
|
|
117
|
+
-------
|
|
118
|
+
None
|
|
119
|
+
This function does not return any value but writes results to a JSON file.
|
|
120
|
+
|
|
121
|
+
Notes
|
|
122
|
+
-----
|
|
123
|
+
The output JSON file will be named as '{inputfileroot}_desc-qualitymetrics_info.json'
|
|
124
|
+
where inputfileroot is the root name provided in the args object.
|
|
125
|
+
|
|
126
|
+
Examples
|
|
127
|
+
--------
|
|
128
|
+
>>> class Args:
|
|
129
|
+
... def __init__(self):
|
|
130
|
+
... self.inputfileroot = "sub-01_task-rest"
|
|
131
|
+
... self.graymaskspec = "gray_mask.nii.gz"
|
|
132
|
+
... self.whitemaskspec = "white_mask.nii.gz"
|
|
133
|
+
... self.debug = False
|
|
134
|
+
...
|
|
135
|
+
>>> args = Args()
|
|
136
|
+
>>> runqualitycheck(args)
|
|
137
|
+
"""
|
|
73
138
|
resultsdict = tide_quality.qualitycheck(
|
|
74
139
|
args.inputfileroot,
|
|
75
140
|
graymaskspec=args.graymaskspec,
|
|
@@ -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,20 +18,48 @@
|
|
|
18
18
|
#
|
|
19
19
|
import argparse
|
|
20
20
|
import sys
|
|
21
|
+
from argparse import Namespace
|
|
22
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
21
23
|
|
|
22
24
|
import numpy as np
|
|
25
|
+
from numpy.typing import NDArray
|
|
23
26
|
from scipy.stats import pearsonr
|
|
24
27
|
|
|
25
28
|
import rapidtide.correlate as tide_corr
|
|
26
|
-
import rapidtide.helper_classes as tide_classes
|
|
27
29
|
import rapidtide.io as tide_io
|
|
28
30
|
import rapidtide.miscmath as tide_math
|
|
31
|
+
import rapidtide.simFuncClasses as tide_simFuncClasses
|
|
29
32
|
import rapidtide.workflows.parser_funcs as pf
|
|
30
33
|
|
|
31
34
|
|
|
32
|
-
def _get_parser():
|
|
35
|
+
def _get_parser() -> Any:
|
|
33
36
|
"""
|
|
34
|
-
Argument parser for showarbcorr
|
|
37
|
+
Argument parser for showarbcorr.
|
|
38
|
+
|
|
39
|
+
This function constructs and returns an `argparse.ArgumentParser` object configured
|
|
40
|
+
for the `showarbcorr` command-line tool. It defines required and optional arguments
|
|
41
|
+
for calculating and displaying crosscorrelation between two time series, supporting
|
|
42
|
+
variable lengths and sampling frequencies.
|
|
43
|
+
|
|
44
|
+
Returns
|
|
45
|
+
-------
|
|
46
|
+
argparse.ArgumentParser
|
|
47
|
+
Configured argument parser for `showarbcorr`.
|
|
48
|
+
|
|
49
|
+
Notes
|
|
50
|
+
-----
|
|
51
|
+
The parser includes groups for:
|
|
52
|
+
- Required input files
|
|
53
|
+
- Optional arguments (e.g., sample rates, display control)
|
|
54
|
+
- Preprocessing options (e.g., detrending, correlation weighting)
|
|
55
|
+
- Filtering and windowing options
|
|
56
|
+
- Output configuration (e.g., files for results, plots)
|
|
57
|
+
- Miscellaneous settings (e.g., multiprocessing, progress bar)
|
|
58
|
+
|
|
59
|
+
Examples
|
|
60
|
+
--------
|
|
61
|
+
>>> parser = _get_parser()
|
|
62
|
+
>>> args = parser.parse_args()
|
|
35
63
|
"""
|
|
36
64
|
parser = argparse.ArgumentParser(
|
|
37
65
|
prog="showarbcorr",
|
|
@@ -240,13 +268,128 @@ def _get_parser():
|
|
|
240
268
|
return parser
|
|
241
269
|
|
|
242
270
|
|
|
243
|
-
def printthresholds(pcts, thepercentiles, labeltext):
|
|
271
|
+
def printthresholds(pcts: Any, thepercentiles: Any, labeltext: Any) -> None:
|
|
272
|
+
"""
|
|
273
|
+
Print thresholds with corresponding percentile labels.
|
|
274
|
+
|
|
275
|
+
This function prints a formatted list of thresholds along with their
|
|
276
|
+
corresponding percentile labels for statistical analysis output.
|
|
277
|
+
|
|
278
|
+
Parameters
|
|
279
|
+
----------
|
|
280
|
+
pcts : Any
|
|
281
|
+
Array or list of threshold values to be printed.
|
|
282
|
+
thepercentiles : Any
|
|
283
|
+
Array or list of percentile values corresponding to the thresholds.
|
|
284
|
+
labeltext : Any
|
|
285
|
+
Text label to be printed before the threshold list.
|
|
286
|
+
|
|
287
|
+
Returns
|
|
288
|
+
-------
|
|
289
|
+
None
|
|
290
|
+
This function prints to standard output and does not return any value.
|
|
291
|
+
|
|
292
|
+
Notes
|
|
293
|
+
-----
|
|
294
|
+
The function formats the percentile values as "1.0 - thepercentiles[i]"
|
|
295
|
+
to show the alpha level (significance threshold) for each percentile.
|
|
296
|
+
|
|
297
|
+
Examples
|
|
298
|
+
--------
|
|
299
|
+
>>> pcts = [0.05, 0.01, 0.001]
|
|
300
|
+
>>> thepercentiles = [0.95, 0.99, 0.999]
|
|
301
|
+
>>> labeltext = "Critical Values:"
|
|
302
|
+
>>> printthresholds(pcts, thepercentiles, labeltext)
|
|
303
|
+
Critical Values:
|
|
304
|
+
p < 0.050 : 0.05
|
|
305
|
+
p < 0.010 : 0.01
|
|
306
|
+
p < 0.001 : 0.001
|
|
307
|
+
"""
|
|
244
308
|
print(labeltext)
|
|
245
309
|
for i in range(0, len(pcts)):
|
|
246
310
|
print("\tp <", "{:.3f}".format(1.0 - thepercentiles[i]), ": ", pcts[i])
|
|
247
311
|
|
|
248
312
|
|
|
249
|
-
def showarbcorr(args):
|
|
313
|
+
def showarbcorr(args: Any) -> None:
|
|
314
|
+
"""
|
|
315
|
+
Compute and display cross-correlation between two time series with optional filtering and plotting.
|
|
316
|
+
|
|
317
|
+
This function reads two time series from text files, matches their sampling rates, applies
|
|
318
|
+
optional filtering, and computes the cross-correlation. It supports various options for
|
|
319
|
+
data trimming, inversion, and output formatting, including optional visualization and
|
|
320
|
+
correlation fitting.
|
|
321
|
+
|
|
322
|
+
Parameters
|
|
323
|
+
----------
|
|
324
|
+
args : Any
|
|
325
|
+
An object containing command-line arguments and configuration options. Expected
|
|
326
|
+
attributes include:
|
|
327
|
+
- infilename1, infilename2 : str
|
|
328
|
+
Paths to input text files containing the two time series.
|
|
329
|
+
- samplerate1, samplerate2 : float, optional
|
|
330
|
+
Sampling rates for the two time series. If not provided, they are inferred
|
|
331
|
+
from the input files.
|
|
332
|
+
- start1, start2 : float, optional
|
|
333
|
+
Start times for the two time series.
|
|
334
|
+
- trimdata : bool
|
|
335
|
+
If True, trim the data to the shorter of the two time series.
|
|
336
|
+
- invert : bool
|
|
337
|
+
If True, invert the second time series before correlation.
|
|
338
|
+
- windowfunc : str, optional
|
|
339
|
+
Window function to apply during correlation normalization.
|
|
340
|
+
- detrendorder : int, optional
|
|
341
|
+
Order of detrending to apply before correlation.
|
|
342
|
+
- display : bool
|
|
343
|
+
If True, display the cross-correlation plot.
|
|
344
|
+
- graphfile : str, optional
|
|
345
|
+
Output filename for saving the plot.
|
|
346
|
+
- label : str, optional
|
|
347
|
+
Label to use in output.
|
|
348
|
+
- lagmin, lagmax : float
|
|
349
|
+
Minimum and maximum lags (in seconds) to consider in the correlation.
|
|
350
|
+
- debug : bool
|
|
351
|
+
If True, enable debug output.
|
|
352
|
+
- bipolar : bool
|
|
353
|
+
If True, fit the peak using bipolar symmetry.
|
|
354
|
+
- summarymode : bool
|
|
355
|
+
If True, output results in a tab-separated summary format.
|
|
356
|
+
- outputfile : str, optional
|
|
357
|
+
File to write summary output.
|
|
358
|
+
- corroutputfile : str, optional
|
|
359
|
+
File to write full cross-correlation data.
|
|
360
|
+
- verbose : bool
|
|
361
|
+
If True, print verbose messages.
|
|
362
|
+
|
|
363
|
+
Returns
|
|
364
|
+
-------
|
|
365
|
+
None
|
|
366
|
+
This function does not return a value but may produce plots, print outputs,
|
|
367
|
+
and write files depending on the provided arguments.
|
|
368
|
+
|
|
369
|
+
Notes
|
|
370
|
+
-----
|
|
371
|
+
- The function uses `tide_io.readvectorsfromtextfile` to read input data.
|
|
372
|
+
- Filtering is applied via `tide_math.corrnormalize` and `theprefilter.apply`.
|
|
373
|
+
- Cross-correlation is computed using `tide_corr.arbcorr`.
|
|
374
|
+
- A peak-fitting procedure is used to refine the maximum correlation lag.
|
|
375
|
+
- If `summarymode` is True, output is written in tab-separated format to stdout or a file.
|
|
376
|
+
|
|
377
|
+
Examples
|
|
378
|
+
--------
|
|
379
|
+
>>> import argparse
|
|
380
|
+
>>> args = argparse.Namespace(
|
|
381
|
+
... infilename1="data1.txt",
|
|
382
|
+
... infilename2="data2.txt",
|
|
383
|
+
... samplerate1=10.0,
|
|
384
|
+
... samplerate2=10.0,
|
|
385
|
+
... display=True,
|
|
386
|
+
... lagmin=-5.0,
|
|
387
|
+
... lagmax=5.0,
|
|
388
|
+
... windowfunc="hanning",
|
|
389
|
+
... debug=False
|
|
390
|
+
... )
|
|
391
|
+
>>> showarbcorr(args)
|
|
392
|
+
"""
|
|
250
393
|
# set some default values
|
|
251
394
|
absmaxsigma = 1000.0
|
|
252
395
|
absminsigma = 0.25
|
|
@@ -297,6 +440,8 @@ def showarbcorr(args):
|
|
|
297
440
|
sys.exit()
|
|
298
441
|
if starttime1 == None:
|
|
299
442
|
starttime1 = 0.0
|
|
443
|
+
endtime1 = starttime1 + len(inputdata1) / Fs1
|
|
444
|
+
print(f"inputdata1 goes from {starttime1} to {endtime1}")
|
|
300
445
|
|
|
301
446
|
if args.samplerate2 is not None:
|
|
302
447
|
Fs2 = args.samplerate2
|
|
@@ -305,9 +450,19 @@ def showarbcorr(args):
|
|
|
305
450
|
sys.exit()
|
|
306
451
|
if starttime2 == None:
|
|
307
452
|
starttime2 = 0.0
|
|
453
|
+
endtime2 = starttime2 + len(inputdata2) / Fs2
|
|
454
|
+
print(f"inputdata2 goes from {starttime2} to {endtime2}")
|
|
308
455
|
|
|
309
|
-
|
|
310
|
-
|
|
456
|
+
matchedinput1, matchedinput2, commonFs = tide_corr.matchsamplerates(
|
|
457
|
+
inputdata1,
|
|
458
|
+
Fs1,
|
|
459
|
+
inputdata2,
|
|
460
|
+
Fs2,
|
|
461
|
+
method="univariate",
|
|
462
|
+
debug=args.debug,
|
|
463
|
+
)
|
|
464
|
+
trimdata1 = matchedinput1
|
|
465
|
+
trimdata2 = matchedinput2
|
|
311
466
|
|
|
312
467
|
if args.trimdata:
|
|
313
468
|
minlen = np.min([len(trimdata1), len(trimdata2)])
|
|
@@ -324,12 +479,12 @@ def showarbcorr(args):
|
|
|
324
479
|
if args.verbose:
|
|
325
480
|
print("filtering to ", theprefilter.gettype(), " band")
|
|
326
481
|
filtereddata1 = tide_math.corrnormalize(
|
|
327
|
-
theprefilter.apply(
|
|
482
|
+
theprefilter.apply(commonFs, trimdata1),
|
|
328
483
|
detrendorder=args.detrendorder,
|
|
329
484
|
windowfunc=args.windowfunc,
|
|
330
485
|
)
|
|
331
486
|
filtereddata2 = tide_math.corrnormalize(
|
|
332
|
-
theprefilter.apply(
|
|
487
|
+
theprefilter.apply(commonFs, trimdata2),
|
|
333
488
|
detrendorder=args.detrendorder,
|
|
334
489
|
windowfunc=args.windowfunc,
|
|
335
490
|
)
|
|
@@ -341,9 +496,9 @@ def showarbcorr(args):
|
|
|
341
496
|
print(f"{Fs1=}, {Fs2=}, {starttime1=}, {starttime2=}, {args.windowfunc=}")
|
|
342
497
|
xcorr_x, thexcorr, corrFs, zeroloc = tide_corr.arbcorr(
|
|
343
498
|
filtereddata1,
|
|
344
|
-
|
|
499
|
+
commonFs,
|
|
345
500
|
filtereddata2,
|
|
346
|
-
|
|
501
|
+
commonFs,
|
|
347
502
|
start1=starttime1,
|
|
348
503
|
start2=starttime2,
|
|
349
504
|
windowfunc=args.windowfunc,
|
|
@@ -375,10 +530,11 @@ def showarbcorr(args):
|
|
|
375
530
|
thexcorr_trim = thexcorr[lowerlim:upperlim]
|
|
376
531
|
print("trimmed Correlator lengths (x, y):", len(xcorr_x_trim), len(thexcorr_trim))
|
|
377
532
|
|
|
378
|
-
|
|
533
|
+
print(f"{len(filtereddata1)=}, {len(filtereddata2)=}")
|
|
534
|
+
thepxcorr = pearsonr(filtereddata1, filtereddata2).statistic
|
|
379
535
|
|
|
380
|
-
#
|
|
381
|
-
thexsimfuncfitter =
|
|
536
|
+
# initialize the correlation fitter
|
|
537
|
+
thexsimfuncfitter = tide_simFuncClasses.SimilarityFunctionFitter(
|
|
382
538
|
corrtimeaxis=xcorr_x,
|
|
383
539
|
lagmin=args.lagmin,
|
|
384
540
|
lagmax=args.lagmax,
|
|
@@ -441,7 +597,7 @@ def showarbcorr(args):
|
|
|
441
597
|
else:
|
|
442
598
|
# report the pearson correlation
|
|
443
599
|
if showpearson:
|
|
444
|
-
print("Pearson_R:\t", thepxcorr
|
|
600
|
+
print("Pearson_R:\t", thepxcorr)
|
|
445
601
|
print("")
|
|
446
602
|
if args.label is not None:
|
|
447
603
|
print(args.label, ":\t", -maxdelay)
|