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,442 @@
|
|
|
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 argparse
|
|
20
|
+
import copy
|
|
21
|
+
import logging
|
|
22
|
+
import os
|
|
23
|
+
import sys
|
|
24
|
+
from argparse import Namespace
|
|
25
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
26
|
+
|
|
27
|
+
import numpy as np
|
|
28
|
+
from numpy.typing import NDArray
|
|
29
|
+
|
|
30
|
+
import rapidtide.io as tide_io
|
|
31
|
+
import rapidtide.linfitfiltpass as tide_linfitfiltpass
|
|
32
|
+
import rapidtide.makelaggedtcs as tide_makelagged
|
|
33
|
+
import rapidtide.multiproc as tide_multiproc
|
|
34
|
+
import rapidtide.resample as tide_resample
|
|
35
|
+
import rapidtide.util as tide_util
|
|
36
|
+
import rapidtide.workflows.parser_funcs as pf
|
|
37
|
+
|
|
38
|
+
LGR = logging.getLogger("GENERAL")
|
|
39
|
+
ErrorLGR = logging.getLogger("ERROR")
|
|
40
|
+
TimingLGR = logging.getLogger("TIMING")
|
|
41
|
+
|
|
42
|
+
DEFAULT_REGRESSIONFILTDERIVS = 0
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _get_parser() -> Any:
|
|
46
|
+
"""
|
|
47
|
+
Argument parser for retrolagtcs.
|
|
48
|
+
|
|
49
|
+
This function constructs and returns an `argparse.ArgumentParser` object configured
|
|
50
|
+
for the `retrolagtcs` command-line tool. It defines all required and optional
|
|
51
|
+
arguments needed to generate voxel-specific lagged timecourses from rapidtide
|
|
52
|
+
analysis maps.
|
|
53
|
+
|
|
54
|
+
Returns
|
|
55
|
+
-------
|
|
56
|
+
argparse.ArgumentParser
|
|
57
|
+
Configured argument parser for retrolagtcs.
|
|
58
|
+
|
|
59
|
+
Notes
|
|
60
|
+
-----
|
|
61
|
+
The parser expects several input files and parameters to define the processing
|
|
62
|
+
pipeline. The function uses `pf.is_valid_file` to validate the existence of
|
|
63
|
+
the input 4D NIfTI file.
|
|
64
|
+
|
|
65
|
+
Examples
|
|
66
|
+
--------
|
|
67
|
+
>>> parser = _get_parser()
|
|
68
|
+
>>> args = parser.parse_args()
|
|
69
|
+
>>> print(args.fmrifile)
|
|
70
|
+
'sub-01_task-rest_bold.nii.gz'
|
|
71
|
+
"""
|
|
72
|
+
parser = argparse.ArgumentParser(
|
|
73
|
+
prog="retrolagtcs",
|
|
74
|
+
description="Generate voxel specific lagged timecourses using the maps generated from a previous rapidtide analysis.",
|
|
75
|
+
allow_abbrev=False,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# Required arguments
|
|
79
|
+
parser.add_argument(
|
|
80
|
+
"fmrifile",
|
|
81
|
+
type=lambda x: pf.is_valid_file(parser, x),
|
|
82
|
+
help="The name of 4D nifti fmri target file.",
|
|
83
|
+
)
|
|
84
|
+
parser.add_argument(
|
|
85
|
+
"maskfile",
|
|
86
|
+
type=str,
|
|
87
|
+
help="The mask file to use (usually called XXX_desc-corrfit_mask.nii.gz)",
|
|
88
|
+
)
|
|
89
|
+
parser.add_argument(
|
|
90
|
+
"lagtimesfile",
|
|
91
|
+
type=str,
|
|
92
|
+
help="The name of the lag times file (usually called XXX_desc-maxtime_map.nii.gz)",
|
|
93
|
+
)
|
|
94
|
+
parser.add_argument(
|
|
95
|
+
"lagtcgeneratorfile",
|
|
96
|
+
type=str,
|
|
97
|
+
help="The root name of the lagtc generator file (usually called XXX_desc-lagtcgenerator_timeseries)",
|
|
98
|
+
)
|
|
99
|
+
parser.add_argument(
|
|
100
|
+
"outputroot",
|
|
101
|
+
type=str,
|
|
102
|
+
help="Output root.",
|
|
103
|
+
)
|
|
104
|
+
parser.add_argument(
|
|
105
|
+
"--regressderivs",
|
|
106
|
+
dest="regressderivs",
|
|
107
|
+
action="store",
|
|
108
|
+
type=int,
|
|
109
|
+
metavar="NDERIVS",
|
|
110
|
+
help=(
|
|
111
|
+
f"When doing final GLM, include derivatives up to NDERIVS order. Default is {DEFAULT_REGRESSIONFILTDERIVS}"
|
|
112
|
+
),
|
|
113
|
+
default=DEFAULT_REGRESSIONFILTDERIVS,
|
|
114
|
+
)
|
|
115
|
+
parser.add_argument(
|
|
116
|
+
"--nprocs",
|
|
117
|
+
dest="nprocs",
|
|
118
|
+
action="store",
|
|
119
|
+
type=int,
|
|
120
|
+
metavar="NPROCS",
|
|
121
|
+
help=(
|
|
122
|
+
"Use NPROCS worker processes for multiprocessing. "
|
|
123
|
+
"Setting NPROCS to less than 1 sets the number of "
|
|
124
|
+
"worker processes to n_cpus."
|
|
125
|
+
),
|
|
126
|
+
default=1,
|
|
127
|
+
)
|
|
128
|
+
parser.add_argument(
|
|
129
|
+
"--numskip",
|
|
130
|
+
dest="numskip",
|
|
131
|
+
action="store",
|
|
132
|
+
type=int,
|
|
133
|
+
metavar="NUMSKIP",
|
|
134
|
+
help=("Skip NUMSKIP points at the beginning of the fmri file."),
|
|
135
|
+
default=0,
|
|
136
|
+
)
|
|
137
|
+
parser.add_argument(
|
|
138
|
+
"--noprogressbar",
|
|
139
|
+
dest="showprogressbar",
|
|
140
|
+
action="store_false",
|
|
141
|
+
help=("Will disable showing progress bars (helpful if stdout is going to a file)."),
|
|
142
|
+
default=True,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
parser.add_argument(
|
|
146
|
+
"--debug",
|
|
147
|
+
dest="debug",
|
|
148
|
+
action="store_true",
|
|
149
|
+
help=("Output lots of helpful information."),
|
|
150
|
+
default=False,
|
|
151
|
+
)
|
|
152
|
+
return parser
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def retrolagtcs(args: Any) -> None:
|
|
156
|
+
"""
|
|
157
|
+
Generate lagged time series regressors from fMRI data using a lag-time map and a generator file.
|
|
158
|
+
|
|
159
|
+
This function reads fMRI data, a mask, and a lag-time map to compute lagged time series
|
|
160
|
+
regressors for each voxel in the mask. It supports both single-process and multi-process
|
|
161
|
+
execution using shared memory. The computed regressors are saved as NIfTI files.
|
|
162
|
+
|
|
163
|
+
Parameters
|
|
164
|
+
----------
|
|
165
|
+
args : Any
|
|
166
|
+
An object containing the following attributes:
|
|
167
|
+
- fmrifile : str
|
|
168
|
+
Path to the input fMRI NIfTI file.
|
|
169
|
+
- maskfile : str
|
|
170
|
+
Path to the processing mask NIfTI file.
|
|
171
|
+
- lagtimesfile : str
|
|
172
|
+
Path to the lag times NIfTI file.
|
|
173
|
+
- lagtcgeneratorfile : str
|
|
174
|
+
Path to the lagtc generator file (used for resampling).
|
|
175
|
+
- outputroot : str
|
|
176
|
+
Root path for output files.
|
|
177
|
+
- nprocs : int
|
|
178
|
+
Number of processes to use for parallel execution. If less than 1, defaults to max CPU count.
|
|
179
|
+
- numskip : int
|
|
180
|
+
Number of initial time points to skip.
|
|
181
|
+
- regressderivs : int
|
|
182
|
+
Number of time derivatives to include in the regressor set.
|
|
183
|
+
- showprogressbar : bool
|
|
184
|
+
Whether to display a progress bar during processing.
|
|
185
|
+
- debug : bool
|
|
186
|
+
Whether to enable debug mode for additional logging.
|
|
187
|
+
|
|
188
|
+
Returns
|
|
189
|
+
-------
|
|
190
|
+
None
|
|
191
|
+
This function does not return a value but writes output files to disk.
|
|
192
|
+
|
|
193
|
+
Notes
|
|
194
|
+
-----
|
|
195
|
+
- The function requires the input files to have matching spatial dimensions.
|
|
196
|
+
- Shared memory is used for multi-process execution to improve performance.
|
|
197
|
+
- Output files include:
|
|
198
|
+
- Regressor time series (4D NIfTI)
|
|
199
|
+
- Optional mask and lag time maps (3D NIfTI)
|
|
200
|
+
|
|
201
|
+
Examples
|
|
202
|
+
--------
|
|
203
|
+
>>> import argparse
|
|
204
|
+
>>> args = argparse.Namespace(
|
|
205
|
+
... fmrifile='fmri.nii.gz',
|
|
206
|
+
... maskfile='mask.nii.gz',
|
|
207
|
+
... lagtimesfile='lagtimes.nii.gz',
|
|
208
|
+
... lagtcgeneratorfile='generator.txt',
|
|
209
|
+
... outputroot='output',
|
|
210
|
+
... nprocs=4,
|
|
211
|
+
... numskip=5,
|
|
212
|
+
... regressderivs=2,
|
|
213
|
+
... showprogressbar=True,
|
|
214
|
+
... debug=False
|
|
215
|
+
... )
|
|
216
|
+
>>> retrolagtcs(args)
|
|
217
|
+
"""
|
|
218
|
+
rt_floattype = np.float64
|
|
219
|
+
rt_outfloattype = np.float64
|
|
220
|
+
|
|
221
|
+
# get the pid of the parent process
|
|
222
|
+
args.pid = os.getpid()
|
|
223
|
+
|
|
224
|
+
thecommandline = " ".join(sys.argv[1:])
|
|
225
|
+
|
|
226
|
+
if args.nprocs < 1:
|
|
227
|
+
args.nprocs = tide_multiproc.maxcpus()
|
|
228
|
+
# don't use shared memory if there is only one process
|
|
229
|
+
if args.nprocs == 1:
|
|
230
|
+
usesharedmem = False
|
|
231
|
+
else:
|
|
232
|
+
usesharedmem = True
|
|
233
|
+
|
|
234
|
+
# read the fmri input files
|
|
235
|
+
print("reading fmrifile header")
|
|
236
|
+
fmri_input, dummy, fmri_header, fmri_dims, fmri_sizes = tide_io.readfromnifti(
|
|
237
|
+
args.fmrifile,
|
|
238
|
+
headeronly=True,
|
|
239
|
+
)
|
|
240
|
+
xdim, ydim, slicedim, fmritr = tide_io.parseniftisizes(fmri_sizes)
|
|
241
|
+
xsize, ysize, numslices, timepoints = tide_io.parseniftidims(fmri_dims)
|
|
242
|
+
numspatiallocs = int(xsize) * int(ysize) * int(numslices)
|
|
243
|
+
|
|
244
|
+
# read the processed mask
|
|
245
|
+
print("reading procfit maskfile")
|
|
246
|
+
(
|
|
247
|
+
procmask_input,
|
|
248
|
+
procmask,
|
|
249
|
+
procmask_header,
|
|
250
|
+
procmask_dims,
|
|
251
|
+
procmask_sizes,
|
|
252
|
+
) = tide_io.readfromnifti(args.maskfile)
|
|
253
|
+
if not tide_io.checkspacematch(fmri_header, procmask_header):
|
|
254
|
+
raise ValueError("procmask dimensions do not match fmri dimensions")
|
|
255
|
+
procmask_spacebytime = procmask.reshape((numspatiallocs))
|
|
256
|
+
if args.debug:
|
|
257
|
+
print(f"{procmask_spacebytime.shape=}")
|
|
258
|
+
|
|
259
|
+
print("reading lagtimes")
|
|
260
|
+
(
|
|
261
|
+
lagtimes_input,
|
|
262
|
+
lagtimes,
|
|
263
|
+
lagtimes_header,
|
|
264
|
+
lagtimes_dims,
|
|
265
|
+
lagtimes_sizes,
|
|
266
|
+
) = tide_io.readfromnifti(args.lagtimesfile)
|
|
267
|
+
if not tide_io.checkspacematch(fmri_header, lagtimes_header):
|
|
268
|
+
raise ValueError("lagtimes dimensions do not match fmri dimensions")
|
|
269
|
+
if args.debug:
|
|
270
|
+
print(f"{lagtimes.shape=}")
|
|
271
|
+
lagtimes_spacebytime = lagtimes.reshape((numspatiallocs))
|
|
272
|
+
if args.debug:
|
|
273
|
+
print(f"{lagtimes_spacebytime.shape=}")
|
|
274
|
+
|
|
275
|
+
startpt = args.numskip
|
|
276
|
+
endpt = timepoints - 1
|
|
277
|
+
validtimepoints = endpt - startpt + 1
|
|
278
|
+
skiptime = startpt * fmritr
|
|
279
|
+
initial_fmri_x = (
|
|
280
|
+
np.linspace(0.0, validtimepoints * fmritr, num=validtimepoints, endpoint=False) + skiptime
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
# read the lagtc generator file
|
|
284
|
+
print("reading lagtc generator")
|
|
285
|
+
genlagtc = tide_resample.FastResamplerFromFile(args.lagtcgeneratorfile)
|
|
286
|
+
|
|
287
|
+
# select the voxels in the mask
|
|
288
|
+
print("figuring out valid voxels")
|
|
289
|
+
validvoxels = np.where(procmask_spacebytime > 0)[0]
|
|
290
|
+
if args.debug:
|
|
291
|
+
print(f"{validvoxels.shape=}")
|
|
292
|
+
numvalidspatiallocs = np.shape(validvoxels)[0]
|
|
293
|
+
if args.debug:
|
|
294
|
+
print(f"{numvalidspatiallocs=}")
|
|
295
|
+
internalvalidspaceshape = numvalidspatiallocs
|
|
296
|
+
internalvalidspaceshapederivs = (
|
|
297
|
+
internalvalidspaceshape,
|
|
298
|
+
args.regressderivs + 1,
|
|
299
|
+
)
|
|
300
|
+
internalvalidfmrishape = (numvalidspatiallocs, np.shape(initial_fmri_x)[0])
|
|
301
|
+
if args.debug:
|
|
302
|
+
print(f"validvoxels shape = {numvalidspatiallocs}")
|
|
303
|
+
print(f"internalvalidfmrishape shape = {internalvalidfmrishape}")
|
|
304
|
+
|
|
305
|
+
# slicing to valid voxels
|
|
306
|
+
print("selecting valid voxels")
|
|
307
|
+
lagtimes_valid = lagtimes_spacebytime[validvoxels]
|
|
308
|
+
procmask_valid = procmask_spacebytime[validvoxels]
|
|
309
|
+
if args.debug:
|
|
310
|
+
print(f"{lagtimes_valid.shape=}")
|
|
311
|
+
|
|
312
|
+
if usesharedmem:
|
|
313
|
+
if args.debug:
|
|
314
|
+
print("allocating shared memory")
|
|
315
|
+
else:
|
|
316
|
+
if args.debug:
|
|
317
|
+
print("allocating memory")
|
|
318
|
+
fitNorm, fitNorm_shm = tide_util.allocarray(
|
|
319
|
+
internalvalidspaceshapederivs, rt_outfloattype, shared=usesharedmem
|
|
320
|
+
)
|
|
321
|
+
fitcoeff, fitcoeff_shm = tide_util.allocarray(
|
|
322
|
+
internalvalidspaceshapederivs, rt_outfloattype, shared=usesharedmem
|
|
323
|
+
)
|
|
324
|
+
lagtc, lagtc_shm = tide_util.allocarray(
|
|
325
|
+
internalvalidfmrishape, rt_floattype, shared=usesharedmem
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
outputpath = os.path.dirname(args.outputroot)
|
|
329
|
+
rawsources = [
|
|
330
|
+
os.path.relpath(args.fmrifile, start=outputpath),
|
|
331
|
+
os.path.relpath(args.lagtimesfile, start=outputpath),
|
|
332
|
+
os.path.relpath(args.maskfile, start=outputpath),
|
|
333
|
+
os.path.relpath(args.lagtcgeneratorfile, start=outputpath),
|
|
334
|
+
]
|
|
335
|
+
|
|
336
|
+
bidsbasedict = {
|
|
337
|
+
"RawSources": rawsources,
|
|
338
|
+
"Units": "arbitrary",
|
|
339
|
+
"CommandLineArgs": thecommandline,
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
print("calling makelaggedtcs")
|
|
343
|
+
voxelsprocessed_makelagged = tide_makelagged.makelaggedtcs(
|
|
344
|
+
genlagtc,
|
|
345
|
+
initial_fmri_x,
|
|
346
|
+
procmask_valid,
|
|
347
|
+
lagtimes_valid,
|
|
348
|
+
lagtc,
|
|
349
|
+
LGR=LGR,
|
|
350
|
+
nprocs=args.nprocs,
|
|
351
|
+
showprogressbar=args.showprogressbar,
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
print(f"generated regressors for {voxelsprocessed_makelagged} voxels")
|
|
355
|
+
|
|
356
|
+
theheader = copy.deepcopy(lagtimes_header)
|
|
357
|
+
bidsdict = bidsbasedict.copy()
|
|
358
|
+
|
|
359
|
+
if args.debug:
|
|
360
|
+
maplist = [
|
|
361
|
+
(
|
|
362
|
+
lagtimes_valid,
|
|
363
|
+
"maxtimeREAD",
|
|
364
|
+
"map",
|
|
365
|
+
"second",
|
|
366
|
+
"Lag time in seconds used for calculation",
|
|
367
|
+
),
|
|
368
|
+
(procmask_valid, "maskREAD", "mask", None, "Mask used for calculation"),
|
|
369
|
+
]
|
|
370
|
+
|
|
371
|
+
# write the 3D maps
|
|
372
|
+
tide_io.savemaplist(
|
|
373
|
+
args.outputroot,
|
|
374
|
+
maplist,
|
|
375
|
+
validvoxels,
|
|
376
|
+
(xsize, ysize, numslices),
|
|
377
|
+
theheader,
|
|
378
|
+
bidsdict,
|
|
379
|
+
debug=args.debug,
|
|
380
|
+
)
|
|
381
|
+
|
|
382
|
+
# write the 4D maps
|
|
383
|
+
theheader = copy.deepcopy(fmri_header)
|
|
384
|
+
maplist = []
|
|
385
|
+
|
|
386
|
+
if args.regressderivs > 0:
|
|
387
|
+
if args.debug:
|
|
388
|
+
print(f"adding derivatives up to order {args.regressderivs} prior to regression")
|
|
389
|
+
regressorset = tide_linfitfiltpass.makevoxelspecificderivs(lagtc, args.regressderivs)
|
|
390
|
+
|
|
391
|
+
if args.debug:
|
|
392
|
+
print("going down the multiple EV path")
|
|
393
|
+
print(f"{regressorset[:, :, 0].shape=}")
|
|
394
|
+
maplist += [
|
|
395
|
+
(
|
|
396
|
+
regressorset[:, :, 0],
|
|
397
|
+
"lfofilterEV",
|
|
398
|
+
"bold",
|
|
399
|
+
None,
|
|
400
|
+
"Shifted sLFO regressor to filter",
|
|
401
|
+
),
|
|
402
|
+
]
|
|
403
|
+
for thederiv in range(1, args.regressderivs + 1):
|
|
404
|
+
if args.debug:
|
|
405
|
+
print(f"{regressorset[:, :, thederiv].shape=}")
|
|
406
|
+
maplist += [
|
|
407
|
+
(
|
|
408
|
+
regressorset[:, :, thederiv],
|
|
409
|
+
f"lfofilterEVDeriv{thederiv}",
|
|
410
|
+
"bold",
|
|
411
|
+
None,
|
|
412
|
+
f"Time derivative {thederiv} of shifted sLFO regressor",
|
|
413
|
+
),
|
|
414
|
+
]
|
|
415
|
+
else:
|
|
416
|
+
regressorset = lagtc
|
|
417
|
+
if args.debug:
|
|
418
|
+
print("going down the single EV path")
|
|
419
|
+
maplist += [
|
|
420
|
+
(
|
|
421
|
+
regressorset,
|
|
422
|
+
"lfofilterEV",
|
|
423
|
+
"bold",
|
|
424
|
+
None,
|
|
425
|
+
"Shifted sLFO regressor to filter",
|
|
426
|
+
),
|
|
427
|
+
]
|
|
428
|
+
tide_io.savemaplist(
|
|
429
|
+
args.outputroot,
|
|
430
|
+
maplist,
|
|
431
|
+
validvoxels,
|
|
432
|
+
(xsize, ysize, numslices, validtimepoints),
|
|
433
|
+
theheader,
|
|
434
|
+
bidsdict,
|
|
435
|
+
debug=args.debug,
|
|
436
|
+
)
|
|
437
|
+
|
|
438
|
+
# clean up shared memory
|
|
439
|
+
if usesharedmem:
|
|
440
|
+
tide_util.cleanup_shm(fitNorm_shm)
|
|
441
|
+
tide_util.cleanup_shm(fitcoeff_shm)
|
|
442
|
+
tide_util.cleanup_shm(lagtc_shm)
|