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
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2016-2025 Blaise Frederick
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
#
|
|
19
|
+
import copy
|
|
20
|
+
import os
|
|
21
|
+
|
|
22
|
+
import matplotlib as mpl
|
|
23
|
+
import matplotlib.pyplot as plt
|
|
24
|
+
import numpy as np
|
|
25
|
+
|
|
26
|
+
import rapidtide.io as tide_io
|
|
27
|
+
import rapidtide.miscmath as tide_math
|
|
28
|
+
import rapidtide.refinedelay as tide_refinedelay
|
|
29
|
+
import rapidtide.resample as tide_resample
|
|
30
|
+
from rapidtide.filter import NoncausalFilter
|
|
31
|
+
from rapidtide.tests.utils import get_examples_path, get_test_temp_path, mse
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def eval_refinedelay(
|
|
35
|
+
sampletime=0.72,
|
|
36
|
+
tclengthinsecs=300.0,
|
|
37
|
+
mindelay=-5.0,
|
|
38
|
+
maxdelay=5.0,
|
|
39
|
+
lagpad=0.0,
|
|
40
|
+
numpoints=501,
|
|
41
|
+
smoothpts=3,
|
|
42
|
+
nativespaceshape=(10, 10, 10),
|
|
43
|
+
displayplots=False,
|
|
44
|
+
padtime=30.0,
|
|
45
|
+
noiselevel=0.0,
|
|
46
|
+
outputsuffix="",
|
|
47
|
+
local=False,
|
|
48
|
+
debug=False,
|
|
49
|
+
):
|
|
50
|
+
# set input and output directories
|
|
51
|
+
if local:
|
|
52
|
+
exampleroot = "../data/examples/src"
|
|
53
|
+
testtemproot = "./tmp"
|
|
54
|
+
else:
|
|
55
|
+
exampleroot = get_examples_path()
|
|
56
|
+
testtemproot = get_test_temp_path()
|
|
57
|
+
|
|
58
|
+
np.random.seed(12345)
|
|
59
|
+
tclen = int(tclengthinsecs // sampletime)
|
|
60
|
+
|
|
61
|
+
Fs = 1.0 / sampletime
|
|
62
|
+
print("Testing transfer function:")
|
|
63
|
+
lowestfreq = 1.0 / (sampletime * tclen)
|
|
64
|
+
nyquist = 0.5 / sampletime
|
|
65
|
+
print(
|
|
66
|
+
" sampletime=",
|
|
67
|
+
sampletime,
|
|
68
|
+
", timecourse length=",
|
|
69
|
+
tclengthinsecs,
|
|
70
|
+
"s, possible frequency range:",
|
|
71
|
+
lowestfreq,
|
|
72
|
+
nyquist,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# make an sLFO timecourse
|
|
76
|
+
timeaxis = np.linspace(0.0, sampletime * tclen, num=tclen, endpoint=False)
|
|
77
|
+
rawgms = tide_math.stdnormalize(np.random.normal(size=tclen))
|
|
78
|
+
testfilter = NoncausalFilter(filtertype="lfo")
|
|
79
|
+
sLFO = tide_math.stdnormalize(testfilter.apply(Fs, rawgms))
|
|
80
|
+
if displayplots:
|
|
81
|
+
fig = plt.figure()
|
|
82
|
+
ax = fig.add_subplot(111)
|
|
83
|
+
ax.set_title("Initial regressor")
|
|
84
|
+
plt.plot(timeaxis, rawgms)
|
|
85
|
+
plt.plot(timeaxis, sLFO)
|
|
86
|
+
plt.show()
|
|
87
|
+
|
|
88
|
+
# now turn it into a lagtc generator
|
|
89
|
+
numpadtrs = int(padtime // sampletime)
|
|
90
|
+
padtime = sampletime * numpadtrs
|
|
91
|
+
lagtcgenerator = tide_resample.FastResampler(timeaxis, sLFO, padtime=padtime)
|
|
92
|
+
|
|
93
|
+
# find the mapping of derivative ratios to delays
|
|
94
|
+
tide_refinedelay.trainratiotooffset(
|
|
95
|
+
lagtcgenerator,
|
|
96
|
+
timeaxis,
|
|
97
|
+
os.path.join(testtemproot, "refinedelaytest" + outputsuffix),
|
|
98
|
+
"norm",
|
|
99
|
+
mindelay=mindelay,
|
|
100
|
+
maxdelay=maxdelay,
|
|
101
|
+
numpoints=numpoints,
|
|
102
|
+
smoothpts=smoothpts,
|
|
103
|
+
debug=debug,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
# make a delay map
|
|
107
|
+
numlags = nativespaceshape[0] * nativespaceshape[1] * nativespaceshape[2]
|
|
108
|
+
lagtimes = np.linspace(mindelay - lagpad, maxdelay + lagpad, numlags, endpoint=True)
|
|
109
|
+
if debug:
|
|
110
|
+
print(" lagtimes=", lagtimes)
|
|
111
|
+
|
|
112
|
+
# now make synthetic fMRI data
|
|
113
|
+
internalvalidfmrishape = (numlags, tclen)
|
|
114
|
+
fmridata = np.zeros(internalvalidfmrishape, dtype=float)
|
|
115
|
+
fmrimask = np.ones(numlags, dtype=float)
|
|
116
|
+
validvoxels = np.where(fmrimask > 0)[0]
|
|
117
|
+
for i in range(numlags):
|
|
118
|
+
noisevec = tide_math.stdnormalize(
|
|
119
|
+
testfilter.apply(Fs, tide_math.stdnormalize(np.random.normal(size=tclen)))
|
|
120
|
+
)
|
|
121
|
+
fmridata[i, :] = lagtcgenerator.yfromx(timeaxis - lagtimes[i]) + noiselevel * noisevec
|
|
122
|
+
|
|
123
|
+
"""if displayplots:
|
|
124
|
+
fig = plt.figure()
|
|
125
|
+
ax = fig.add_subplot(111)
|
|
126
|
+
ax.set_title("Timecourses")
|
|
127
|
+
for i in range(0, numlags, 200):
|
|
128
|
+
plt.plot(timeaxis, fmridata[i, :])
|
|
129
|
+
plt.show()"""
|
|
130
|
+
|
|
131
|
+
# make a fake header
|
|
132
|
+
nim, nim_data, nim_hdr, thedims, thesizes = tide_io.readfromnifti(
|
|
133
|
+
os.path.join(exampleroot, "sub-RAPIDTIDETEST_brainmask.nii.gz")
|
|
134
|
+
)
|
|
135
|
+
xdim, ydim, slicedim, fmritr = tide_io.parseniftisizes(thesizes)
|
|
136
|
+
theheader = copy.copy(nim_hdr)
|
|
137
|
+
theheader["dim"][0] = 3
|
|
138
|
+
theheader["dim"][1] = nativespaceshape[0]
|
|
139
|
+
theheader["dim"][2] = nativespaceshape[1]
|
|
140
|
+
theheader["dim"][3] = nativespaceshape[2]
|
|
141
|
+
theheader["pixdim"][1] = 1.0
|
|
142
|
+
theheader["pixdim"][2] = 1.0
|
|
143
|
+
theheader["pixdim"][3] = 1.0
|
|
144
|
+
theheader["pixdim"][4] = 1.0
|
|
145
|
+
|
|
146
|
+
rt_floattype = "float64"
|
|
147
|
+
sLFOfitmean = np.zeros(numlags, dtype=rt_floattype)
|
|
148
|
+
rvalue = np.zeros(numlags, dtype=rt_floattype)
|
|
149
|
+
r2value = np.zeros(numlags, dtype=rt_floattype)
|
|
150
|
+
fitNorm = np.zeros((numlags, 2), dtype=rt_floattype)
|
|
151
|
+
fitcoeff = np.zeros((numlags, 2), dtype=rt_floattype)
|
|
152
|
+
movingsignal = np.zeros(internalvalidfmrishape, dtype=rt_floattype)
|
|
153
|
+
lagtc = np.zeros(internalvalidfmrishape, dtype=rt_floattype)
|
|
154
|
+
filtereddata = np.zeros(internalvalidfmrishape, dtype=rt_floattype)
|
|
155
|
+
optiondict = {
|
|
156
|
+
"regressfiltthreshval": 0.0,
|
|
157
|
+
"saveminimumsLFOfiltfiles": False,
|
|
158
|
+
"nprocs_makelaggedtcs": 1,
|
|
159
|
+
"nprocs_regressionfilt": 1,
|
|
160
|
+
"mp_chunksize": 1000,
|
|
161
|
+
"showprogressbar": False,
|
|
162
|
+
"alwaysmultiproc": False,
|
|
163
|
+
"focaldebug": debug,
|
|
164
|
+
"fmrifreq": Fs,
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
regressderivratios, regressrvalues = tide_refinedelay.getderivratios(
|
|
168
|
+
fmridata,
|
|
169
|
+
validvoxels,
|
|
170
|
+
timeaxis,
|
|
171
|
+
0.0 * lagtimes,
|
|
172
|
+
fmrimask,
|
|
173
|
+
lagtcgenerator,
|
|
174
|
+
"glm",
|
|
175
|
+
"refinedelaytest",
|
|
176
|
+
sampletime,
|
|
177
|
+
sLFOfitmean,
|
|
178
|
+
rvalue,
|
|
179
|
+
r2value,
|
|
180
|
+
fitNorm[:, :2],
|
|
181
|
+
fitcoeff[:, :2],
|
|
182
|
+
movingsignal,
|
|
183
|
+
lagtc,
|
|
184
|
+
filtereddata,
|
|
185
|
+
None,
|
|
186
|
+
None,
|
|
187
|
+
optiondict,
|
|
188
|
+
debug=debug,
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
medfilt, filteredregressderivratios, themad = tide_refinedelay.filterderivratios(
|
|
192
|
+
regressderivratios,
|
|
193
|
+
nativespaceshape,
|
|
194
|
+
validvoxels,
|
|
195
|
+
(xdim, ydim, slicedim),
|
|
196
|
+
patchthresh=3.0,
|
|
197
|
+
rt_floattype="float64",
|
|
198
|
+
debug=debug,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
delayoffset = np.zeros_like(filteredregressderivratios)
|
|
202
|
+
for i in range(filteredregressderivratios.shape[0]):
|
|
203
|
+
delayoffset[i], closestoffset = tide_refinedelay.ratiotodelay(
|
|
204
|
+
filteredregressderivratios[i]
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
# do the tests
|
|
208
|
+
msethresh = 0.1
|
|
209
|
+
aethresh = 2
|
|
210
|
+
print(f"{mse(lagtimes, delayoffset)=}")
|
|
211
|
+
assert mse(lagtimes, delayoffset) < msethresh
|
|
212
|
+
# np.testing.assert_almost_equal(lagtimes, delayoffset, aethresh)
|
|
213
|
+
|
|
214
|
+
if displayplots:
|
|
215
|
+
fig = plt.figure()
|
|
216
|
+
ax = fig.add_subplot(111)
|
|
217
|
+
ax.set_title("Lagtimes")
|
|
218
|
+
plt.plot(lagtimes)
|
|
219
|
+
plt.plot(delayoffset)
|
|
220
|
+
plt.legend(["Target", "Fit"])
|
|
221
|
+
plt.show()
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def test_refinedelay(displayplots=False, local=False, debug=False):
|
|
225
|
+
for noiselevel in np.linspace(0.0, 0.5, num=5, endpoint=True):
|
|
226
|
+
eval_refinedelay(
|
|
227
|
+
sampletime=0.72,
|
|
228
|
+
tclengthinsecs=300.0,
|
|
229
|
+
mindelay=-3.0,
|
|
230
|
+
maxdelay=3.0,
|
|
231
|
+
numpoints=501,
|
|
232
|
+
smoothpts=9,
|
|
233
|
+
nativespaceshape=(10, 10, 10),
|
|
234
|
+
displayplots=displayplots,
|
|
235
|
+
outputsuffix="_1",
|
|
236
|
+
noiselevel=noiselevel,
|
|
237
|
+
local=local,
|
|
238
|
+
debug=debug,
|
|
239
|
+
)
|
|
240
|
+
eval_refinedelay(
|
|
241
|
+
sampletime=0.72,
|
|
242
|
+
tclengthinsecs=300.0,
|
|
243
|
+
mindelay=-3.0,
|
|
244
|
+
maxdelay=3.0,
|
|
245
|
+
numpoints=501,
|
|
246
|
+
smoothpts=9,
|
|
247
|
+
nativespaceshape=(10, 10, 10),
|
|
248
|
+
displayplots=displayplots,
|
|
249
|
+
outputsuffix="_2",
|
|
250
|
+
local=local,
|
|
251
|
+
debug=debug,
|
|
252
|
+
)
|
|
253
|
+
eval_refinedelay(
|
|
254
|
+
sampletime=0.72,
|
|
255
|
+
tclengthinsecs=300.0,
|
|
256
|
+
mindelay=-3.0,
|
|
257
|
+
maxdelay=3.0,
|
|
258
|
+
numpoints=501,
|
|
259
|
+
smoothpts=5,
|
|
260
|
+
nativespaceshape=(10, 10, 10),
|
|
261
|
+
displayplots=displayplots,
|
|
262
|
+
outputsuffix="_3",
|
|
263
|
+
local=local,
|
|
264
|
+
debug=debug,
|
|
265
|
+
)
|
|
266
|
+
eval_refinedelay(
|
|
267
|
+
sampletime=1.5,
|
|
268
|
+
tclengthinsecs=300.0,
|
|
269
|
+
mindelay=-3.0,
|
|
270
|
+
maxdelay=3.0,
|
|
271
|
+
numpoints=501,
|
|
272
|
+
smoothpts=3,
|
|
273
|
+
nativespaceshape=(10, 10, 10),
|
|
274
|
+
displayplots=displayplots,
|
|
275
|
+
outputsuffix="_1p5_501_3",
|
|
276
|
+
local=local,
|
|
277
|
+
debug=debug,
|
|
278
|
+
)
|
|
279
|
+
eval_refinedelay(
|
|
280
|
+
sampletime=3.0,
|
|
281
|
+
tclengthinsecs=300.0,
|
|
282
|
+
mindelay=-3.0,
|
|
283
|
+
maxdelay=3.0,
|
|
284
|
+
numpoints=501,
|
|
285
|
+
smoothpts=3,
|
|
286
|
+
nativespaceshape=(10, 10, 10),
|
|
287
|
+
displayplots=displayplots,
|
|
288
|
+
outputsuffix="_3p0_501_3",
|
|
289
|
+
local=local,
|
|
290
|
+
debug=debug,
|
|
291
|
+
)
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
if __name__ == "__main__":
|
|
295
|
+
mpl.use("TkAgg")
|
|
296
|
+
test_refinedelay(displayplots=True, local=True, debug=True)
|
rapidtide/tests/test_runmisc.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.
|
|
@@ -22,7 +22,7 @@ import matplotlib as mpl
|
|
|
22
22
|
|
|
23
23
|
import rapidtide.workflows.parser_funcs as pf
|
|
24
24
|
import rapidtide.workflows.showtc as showtc
|
|
25
|
-
from rapidtide.tests.utils import get_examples_path
|
|
25
|
+
from rapidtide.tests.utils import get_examples_path, get_test_temp_path
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def test_runmisc(debug=False, displayplots=False):
|
|
@@ -35,7 +35,7 @@ def test_runmisc(debug=False, displayplots=False):
|
|
|
35
35
|
"--sampletime",
|
|
36
36
|
"12.5",
|
|
37
37
|
"--tofile",
|
|
38
|
-
"showtcout1.jpg",
|
|
38
|
+
os.path.join(get_test_temp_path(), "showtcout1.jpg"),
|
|
39
39
|
"--starttime",
|
|
40
40
|
"100",
|
|
41
41
|
"--endtime",
|
|
@@ -55,7 +55,7 @@ def test_runmisc(debug=False, displayplots=False):
|
|
|
55
55
|
"--displaytype",
|
|
56
56
|
"power",
|
|
57
57
|
"--tofile",
|
|
58
|
-
"showtcout2.jpg",
|
|
58
|
+
os.path.join(get_test_temp_path(), "showtcout2.jpg"),
|
|
59
59
|
"--noxax",
|
|
60
60
|
"--noyax",
|
|
61
61
|
"--nolegend",
|
|
@@ -90,7 +90,7 @@ def test_runmisc(debug=False, displayplots=False):
|
|
|
90
90
|
"--displaytype",
|
|
91
91
|
"phase",
|
|
92
92
|
"--tofile",
|
|
93
|
-
"showtcout3.jpg",
|
|
93
|
+
os.path.join(get_test_temp_path(), "showtcout3.jpg"),
|
|
94
94
|
]
|
|
95
95
|
pf.generic_init(showtc._get_parser, showtc.showtc, inputargs=inputargs)
|
|
96
96
|
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2016-2025 Blaise Frederick
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
import rapidtide.util as tide_util
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_numpy2shared(debug=False):
|
|
23
|
+
vectorlen = 1000
|
|
24
|
+
for intype in [np.float32, np.float64]:
|
|
25
|
+
sourcevector = np.random.normal(size=vectorlen).astype(intype)
|
|
26
|
+
if debug:
|
|
27
|
+
print(f"{intype=}, {sourcevector.size=}, {sourcevector.dtype=}")
|
|
28
|
+
for outtype in [np.float32, np.float64]:
|
|
29
|
+
|
|
30
|
+
destvector, shm = tide_util.numpy2shared(sourcevector, outtype)
|
|
31
|
+
if debug:
|
|
32
|
+
print(f"\t{outtype=}, {destvector.size=}, {destvector.dtype=}")
|
|
33
|
+
|
|
34
|
+
# check everything
|
|
35
|
+
assert destvector.dtype == outtype
|
|
36
|
+
assert destvector.size == sourcevector.size
|
|
37
|
+
np.testing.assert_almost_equal(sourcevector, destvector, 3)
|
|
38
|
+
|
|
39
|
+
# clean up
|
|
40
|
+
tide_util.cleanup_shm(shm)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_allocshared(debug=False):
|
|
44
|
+
datashape = (10, 10, 10)
|
|
45
|
+
for outtype in [np.float32, np.float64]:
|
|
46
|
+
destarray, shm = tide_util.allocshared(datashape, outtype)
|
|
47
|
+
if debug:
|
|
48
|
+
print(f"{outtype=}, {destarray.size=}, {destarray.dtype=}")
|
|
49
|
+
|
|
50
|
+
# check everything
|
|
51
|
+
assert destarray.dtype == outtype
|
|
52
|
+
assert destarray.size == np.prod(datashape)
|
|
53
|
+
|
|
54
|
+
# clean up if needed
|
|
55
|
+
tide_util.cleanup_shm(shm)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
if __name__ == "__main__":
|
|
59
|
+
test_numpy2shared(debug=True)
|
|
60
|
+
test_allocshared(debug=True)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2016-2025 Blaise Frederick
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
#
|
|
19
|
+
import os
|
|
20
|
+
|
|
21
|
+
import matplotlib as mpl
|
|
22
|
+
|
|
23
|
+
import rapidtide.io as tide_io
|
|
24
|
+
import rapidtide.workflows.parser_funcs as pf
|
|
25
|
+
import rapidtide.workflows.rapidtide as rapidtide_workflow
|
|
26
|
+
import rapidtide.workflows.rapidtide_parser as rapidtide_parser
|
|
27
|
+
import rapidtide.workflows.simdata as rapidtide_simdata
|
|
28
|
+
from rapidtide.tests.utils import get_examples_path, get_test_temp_path
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def test_simroundtrip(debug=False, local=False, displayplots=False):
|
|
32
|
+
# set input and output directories
|
|
33
|
+
if local:
|
|
34
|
+
exampleroot = "../data/examples/src"
|
|
35
|
+
testtemproot = "./tmp"
|
|
36
|
+
else:
|
|
37
|
+
exampleroot = get_examples_path()
|
|
38
|
+
testtemproot = get_test_temp_path()
|
|
39
|
+
|
|
40
|
+
# run initial rapidtide
|
|
41
|
+
inputargs = [
|
|
42
|
+
os.path.join(exampleroot, "sub-RAPIDTIDETEST.nii.gz"),
|
|
43
|
+
os.path.join(testtemproot, "sub-RAPIDTIDETESTSIM"),
|
|
44
|
+
"--corrmask",
|
|
45
|
+
os.path.join(exampleroot, "sub-RAPIDTIDETEST_restrictedmask.nii.gz"),
|
|
46
|
+
"--globalmeaninclude",
|
|
47
|
+
os.path.join(exampleroot, "sub-RAPIDTIDETEST_brainmask.nii.gz"),
|
|
48
|
+
"--spatialfilt",
|
|
49
|
+
"2",
|
|
50
|
+
"--simcalcrange",
|
|
51
|
+
"4",
|
|
52
|
+
"-1",
|
|
53
|
+
"--nprocs",
|
|
54
|
+
"-1",
|
|
55
|
+
"--passes",
|
|
56
|
+
"2",
|
|
57
|
+
"--despecklepasses",
|
|
58
|
+
"3",
|
|
59
|
+
"--delaypatchthresh",
|
|
60
|
+
"4.0",
|
|
61
|
+
]
|
|
62
|
+
rapidtide_workflow.rapidtide_main(rapidtide_parser.process_args(inputargs=inputargs))
|
|
63
|
+
|
|
64
|
+
print("initial rapidtide run complete")
|
|
65
|
+
|
|
66
|
+
# now simulate data from maps
|
|
67
|
+
print(testtemproot)
|
|
68
|
+
inputargs = [
|
|
69
|
+
"1.5",
|
|
70
|
+
"260",
|
|
71
|
+
os.path.join(testtemproot, "sub-RAPIDTIDETESTSIM_desc-unfiltmean_map.nii.gz"),
|
|
72
|
+
os.path.join(testtemproot, "simulatedfmri_vn05"),
|
|
73
|
+
"--lfopctfile",
|
|
74
|
+
os.path.join(testtemproot, "sub-RAPIDTIDETESTSIM_desc-maxcorr_map.nii.gz"),
|
|
75
|
+
"--lfolagfile",
|
|
76
|
+
os.path.join(testtemproot, "sub-RAPIDTIDETESTSIM_desc-maxtimerefined_map.nii.gz"),
|
|
77
|
+
"--lforegressor",
|
|
78
|
+
os.path.join(
|
|
79
|
+
testtemproot, "sub-RAPIDTIDETESTSIM_desc-movingregressor_timeseries.json:pass2"
|
|
80
|
+
),
|
|
81
|
+
"--voxelnoiselevel",
|
|
82
|
+
"5.0",
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
pf.generic_init(rapidtide_simdata._get_parser, rapidtide_simdata.simdata, inputargs=inputargs)
|
|
86
|
+
print("simulated dataset generated")
|
|
87
|
+
|
|
88
|
+
# run repeat rapidtide
|
|
89
|
+
inputargs = [
|
|
90
|
+
os.path.join(testtemproot, "simulatedfmri_vn05.nii.gz"),
|
|
91
|
+
os.path.join(testtemproot, "sub-RAPIDTIDETESTSIMRERUN"),
|
|
92
|
+
"--spatialfilt",
|
|
93
|
+
"2",
|
|
94
|
+
"--simcalcrange",
|
|
95
|
+
"4",
|
|
96
|
+
"-1",
|
|
97
|
+
"--nprocs",
|
|
98
|
+
"-1",
|
|
99
|
+
"--passes",
|
|
100
|
+
"2",
|
|
101
|
+
"--despecklepasses",
|
|
102
|
+
"3",
|
|
103
|
+
"--delaypatchthresh",
|
|
104
|
+
"4.0",
|
|
105
|
+
]
|
|
106
|
+
rapidtide_workflow.rapidtide_main(rapidtide_parser.process_args(inputargs=inputargs))
|
|
107
|
+
print("repeat rapidtide completed")
|
|
108
|
+
|
|
109
|
+
absthresh = 1e-10
|
|
110
|
+
msethresh = 1e-12
|
|
111
|
+
spacetolerance = 1e-3
|
|
112
|
+
"""for map in [
|
|
113
|
+
"maxtime",
|
|
114
|
+
"maxtimerefined",
|
|
115
|
+
"lfofilterCoeff",
|
|
116
|
+
]:
|
|
117
|
+
print(f"Testing map={map}")
|
|
118
|
+
filename1 = os.path.join(testtemproot, f"sub-RAPIDTIDETESTSIM_desc-{map}_map.nii.gz")
|
|
119
|
+
filename2 = os.path.join(testtemproot, f"sub-RAPIDTIDETESTSIMRERUN_desc-{map}_map.nii.gz")
|
|
120
|
+
assert tide_io.checkniftifilematch(
|
|
121
|
+
filename1,
|
|
122
|
+
filename2,
|
|
123
|
+
absthresh=absthresh,
|
|
124
|
+
msethresh=msethresh,
|
|
125
|
+
spacetolerance=spacetolerance,
|
|
126
|
+
debug=debug,
|
|
127
|
+
)"""
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
if __name__ == "__main__":
|
|
131
|
+
mpl.use("TkAgg")
|
|
132
|
+
test_simroundtrip(debug=True, local=True, displayplots=True)
|
rapidtide/tests/test_simulate.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
#
|
|
4
|
-
# Copyright 2017-
|
|
4
|
+
# Copyright 2017-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.
|
|
@@ -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.
|
|
@@ -58,6 +58,7 @@ def test_stcorrelate(debug=False):
|
|
|
58
58
|
times, corrpertime, ppertime = shorttermcorr_1D(
|
|
59
59
|
sig1, sig2, tr, windowtime, samplestep=int(stepsize // tr), detrendorder=0
|
|
60
60
|
)
|
|
61
|
+
print(f"1D correlation: {corrpertime=}, {ppertime=}")
|
|
61
62
|
# plength = len(times)
|
|
62
63
|
times, xcorrpertime, Rvals, delayvals, valid = shorttermcorr_2D(
|
|
63
64
|
sig1,
|
|
@@ -67,8 +68,9 @@ def test_stcorrelate(debug=False):
|
|
|
67
68
|
samplestep=int(stepsize // tr),
|
|
68
69
|
weighting=corrweighting,
|
|
69
70
|
detrendorder=0,
|
|
70
|
-
displayplots=
|
|
71
|
+
displayplots=debug,
|
|
71
72
|
)
|
|
73
|
+
print(f"2D correlation: {Rvals=}, {delayvals=}, {valid=}")
|
|
72
74
|
# xlength = len(times)
|
|
73
75
|
writenpvecs(corrpertime, outfilename + "_pearson.txt")
|
|
74
76
|
writenpvecs(ppertime, outfilename + "_pvalue.txt")
|
|
@@ -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.
|
|
@@ -32,7 +32,7 @@ def test_timeshift(debug=False):
|
|
|
32
32
|
shiftdist = 30
|
|
33
33
|
timeaxis = np.arange(0.0, 1.0 * testlen) * tr
|
|
34
34
|
# timecoursein = np.zeros((testlen), dtype='float64')
|
|
35
|
-
timecoursein = np.
|
|
35
|
+
timecoursein = np.zeros_like(timeaxis, np.float64)
|
|
36
36
|
midpoint = int(testlen // 2) + 1
|
|
37
37
|
timecoursein[midpoint - 1] = np.float64(1.0)
|
|
38
38
|
timecoursein[midpoint] = np.float64(1.0)
|
|
@@ -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.
|
|
@@ -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.
|
|
@@ -26,7 +26,7 @@ from rapidtide.RapidtideDataset import RapidtideDataset
|
|
|
26
26
|
from rapidtide.tests.utils import get_examples_path, get_test_temp_path
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def main(runninglocally=False):
|
|
29
|
+
def main(runninglocally=False, debug=False):
|
|
30
30
|
# initialize default values
|
|
31
31
|
if runninglocally:
|
|
32
32
|
datafileroot = "../data/examples/dst/sub-RAPIDTIDETEST_"
|
|
@@ -59,7 +59,9 @@ def main(runninglocally=False):
|
|
|
59
59
|
verbose=verbose,
|
|
60
60
|
)
|
|
61
61
|
|
|
62
|
+
print("getting overlays")
|
|
62
63
|
theoverlays = thesubject.getoverlays()
|
|
64
|
+
print("getting regressors")
|
|
63
65
|
theregressors = thesubject.getregressors()
|
|
64
66
|
|
|
65
67
|
assert thesubject.focusregressor == "prefilt"
|
|
@@ -72,4 +74,4 @@ def main(runninglocally=False):
|
|
|
72
74
|
|
|
73
75
|
|
|
74
76
|
if __name__ == "__main__":
|
|
75
|
-
main(runninglocally=True)
|
|
77
|
+
main(runninglocally=True, debug=True)
|