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