rapidtide 2.9.6__py3-none-any.whl → 3.1.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cloud/gmscalc-HCPYA +1 -1
- cloud/mount-and-run +2 -0
- cloud/rapidtide-HCPYA +3 -3
- rapidtide/Colortables.py +538 -38
- rapidtide/OrthoImageItem.py +1094 -51
- rapidtide/RapidtideDataset.py +1709 -114
- rapidtide/__init__.py +0 -8
- rapidtide/_version.py +4 -4
- rapidtide/calccoherence.py +242 -97
- rapidtide/calcnullsimfunc.py +240 -140
- rapidtide/calcsimfunc.py +314 -129
- rapidtide/correlate.py +1211 -389
- rapidtide/data/examples/src/testLD +56 -0
- rapidtide/data/examples/src/test_findmaxlag.py +2 -2
- rapidtide/data/examples/src/test_mlregressallt.py +32 -17
- rapidtide/data/examples/src/testalign +1 -1
- rapidtide/data/examples/src/testatlasaverage +35 -7
- rapidtide/data/examples/src/testboth +21 -0
- rapidtide/data/examples/src/testcifti +11 -0
- rapidtide/data/examples/src/testdelayvar +13 -0
- rapidtide/data/examples/src/testdlfilt +25 -0
- rapidtide/data/examples/src/testfft +35 -0
- rapidtide/data/examples/src/testfileorfloat +37 -0
- rapidtide/data/examples/src/testfmri +92 -42
- rapidtide/data/examples/src/testfuncs +3 -3
- rapidtide/data/examples/src/testglmfilt +8 -6
- rapidtide/data/examples/src/testhappy +84 -51
- rapidtide/data/examples/src/testinitdelay +19 -0
- rapidtide/data/examples/src/testmodels +33 -0
- rapidtide/data/examples/src/testnewrefine +26 -0
- rapidtide/data/examples/src/testnoiseamp +2 -2
- rapidtide/data/examples/src/testppgproc +17 -0
- rapidtide/data/examples/src/testrefineonly +22 -0
- rapidtide/data/examples/src/testretro +26 -13
- rapidtide/data/examples/src/testretrolagtcs +16 -0
- rapidtide/data/examples/src/testrolloff +11 -0
- rapidtide/data/examples/src/testsimdata +45 -28
- rapidtide/data/models/model_cnn_pytorch/loss.png +0 -0
- rapidtide/data/models/model_cnn_pytorch/loss.txt +1 -0
- rapidtide/data/models/model_cnn_pytorch/model.pth +0 -0
- rapidtide/data/models/model_cnn_pytorch/model_meta.json +68 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/loss.png +0 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/loss.txt +1 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/model.pth +0 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/model_meta.json +80 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.png +0 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.txt +1 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/model.pth +0 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/model_meta.json +138 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.png +0 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.txt +1 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/model.pth +0 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/model_meta.json +128 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.png +0 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.txt +1 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model.pth +0 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model_meta.json +49 -0
- rapidtide/data/models/model_revised_tf2/model.keras +0 -0
- rapidtide/data/models/{model_serdar → model_revised_tf2}/model_meta.json +1 -1
- rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
- rapidtide/data/models/{model_serdar2 → model_serdar2_tf2}/model_meta.json +1 -1
- rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
- rapidtide/data/models/{model_revised → model_serdar_tf2}/model_meta.json +1 -1
- rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_graylaghist.json +7 -0
- rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
- rapidtide/data/reference/HCP1200v2_laghist.json +7 -0
- rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
- rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_whitelaghist.json +7 -0
- rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +131 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +60 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
- rapidtide/decorators.py +91 -0
- rapidtide/dlfilter.py +2553 -414
- rapidtide/dlfiltertorch.py +5201 -0
- rapidtide/externaltools.py +328 -13
- rapidtide/fMRIData_class.py +108 -92
- rapidtide/ffttools.py +168 -0
- rapidtide/filter.py +2704 -1462
- rapidtide/fit.py +2361 -579
- rapidtide/genericmultiproc.py +197 -0
- rapidtide/happy_supportfuncs.py +3255 -548
- rapidtide/helper_classes.py +587 -1116
- rapidtide/io.py +2569 -468
- rapidtide/linfitfiltpass.py +784 -0
- rapidtide/makelaggedtcs.py +267 -97
- rapidtide/maskutil.py +555 -25
- rapidtide/miscmath.py +835 -144
- rapidtide/multiproc.py +217 -44
- rapidtide/patchmatch.py +752 -0
- rapidtide/peakeval.py +32 -32
- rapidtide/ppgproc.py +2205 -0
- rapidtide/qualitycheck.py +353 -40
- rapidtide/refinedelay.py +854 -0
- rapidtide/refineregressor.py +939 -0
- rapidtide/resample.py +725 -204
- rapidtide/scripts/__init__.py +1 -0
- rapidtide/scripts/{adjustoffset → adjustoffset.py} +7 -2
- rapidtide/scripts/{aligntcs → aligntcs.py} +7 -2
- rapidtide/scripts/{applydlfilter → applydlfilter.py} +7 -2
- rapidtide/scripts/applyppgproc.py +28 -0
- rapidtide/scripts/{atlasaverage → atlasaverage.py} +7 -2
- rapidtide/scripts/{atlastool → atlastool.py} +7 -2
- rapidtide/scripts/{calcicc → calcicc.py} +7 -2
- rapidtide/scripts/{calctexticc → calctexticc.py} +7 -2
- rapidtide/scripts/{calcttest → calcttest.py} +7 -2
- rapidtide/scripts/{ccorrica → ccorrica.py} +7 -2
- rapidtide/scripts/delayvar.py +28 -0
- rapidtide/scripts/{diffrois → diffrois.py} +7 -2
- rapidtide/scripts/{endtidalproc → endtidalproc.py} +7 -2
- rapidtide/scripts/{fdica → fdica.py} +7 -2
- rapidtide/scripts/{filtnifti → filtnifti.py} +7 -2
- rapidtide/scripts/{filttc → filttc.py} +7 -2
- rapidtide/scripts/{fingerprint → fingerprint.py} +20 -16
- rapidtide/scripts/{fixtr → fixtr.py} +7 -2
- rapidtide/scripts/{gmscalc → gmscalc.py} +7 -2
- rapidtide/scripts/{happy → happy.py} +7 -2
- rapidtide/scripts/{happy2std → happy2std.py} +7 -2
- rapidtide/scripts/{happywarp → happywarp.py} +8 -4
- rapidtide/scripts/{histnifti → histnifti.py} +7 -2
- rapidtide/scripts/{histtc → histtc.py} +7 -2
- rapidtide/scripts/{glmfilt → linfitfilt.py} +7 -4
- rapidtide/scripts/{localflow → localflow.py} +7 -2
- rapidtide/scripts/{mergequality → mergequality.py} +7 -2
- rapidtide/scripts/{pairproc → pairproc.py} +7 -2
- rapidtide/scripts/{pairwisemergenifti → pairwisemergenifti.py} +7 -2
- rapidtide/scripts/{physiofreq → physiofreq.py} +7 -2
- rapidtide/scripts/{pixelcomp → pixelcomp.py} +7 -2
- rapidtide/scripts/{plethquality → plethquality.py} +7 -2
- rapidtide/scripts/{polyfitim → polyfitim.py} +7 -2
- rapidtide/scripts/{proj2flow → proj2flow.py} +7 -2
- rapidtide/scripts/{rankimage → rankimage.py} +7 -2
- rapidtide/scripts/{rapidtide → rapidtide.py} +7 -2
- rapidtide/scripts/{rapidtide2std → rapidtide2std.py} +7 -2
- rapidtide/scripts/{resamplenifti → resamplenifti.py} +7 -2
- rapidtide/scripts/{resampletc → resampletc.py} +7 -2
- rapidtide/scripts/retrolagtcs.py +28 -0
- rapidtide/scripts/retroregress.py +28 -0
- rapidtide/scripts/{roisummarize → roisummarize.py} +7 -2
- rapidtide/scripts/{runqualitycheck → runqualitycheck.py} +7 -2
- rapidtide/scripts/{showarbcorr → showarbcorr.py} +7 -2
- rapidtide/scripts/{showhist → showhist.py} +7 -2
- rapidtide/scripts/{showstxcorr → showstxcorr.py} +7 -2
- rapidtide/scripts/{showtc → showtc.py} +7 -2
- rapidtide/scripts/{showxcorr_legacy → showxcorr_legacy.py} +8 -8
- rapidtide/scripts/{showxcorrx → showxcorrx.py} +7 -2
- rapidtide/scripts/{showxy → showxy.py} +7 -2
- rapidtide/scripts/{simdata → simdata.py} +7 -2
- rapidtide/scripts/{spatialdecomp → spatialdecomp.py} +7 -2
- rapidtide/scripts/{spatialfit → spatialfit.py} +7 -2
- rapidtide/scripts/{spatialmi → spatialmi.py} +7 -2
- rapidtide/scripts/{spectrogram → spectrogram.py} +7 -2
- rapidtide/scripts/stupidramtricks.py +238 -0
- rapidtide/scripts/{synthASL → synthASL.py} +7 -2
- rapidtide/scripts/{tcfrom2col → tcfrom2col.py} +7 -2
- rapidtide/scripts/{tcfrom3col → tcfrom3col.py} +7 -2
- rapidtide/scripts/{temporaldecomp → temporaldecomp.py} +7 -2
- rapidtide/scripts/{testhrv → testhrv.py} +1 -1
- rapidtide/scripts/{threeD → threeD.py} +7 -2
- rapidtide/scripts/{tidepool → tidepool.py} +7 -2
- rapidtide/scripts/{variabilityizer → variabilityizer.py} +7 -2
- rapidtide/simFuncClasses.py +2113 -0
- rapidtide/simfuncfit.py +312 -108
- rapidtide/stats.py +579 -247
- rapidtide/tests/.coveragerc +27 -6
- rapidtide-2.9.6.data/scripts/fdica → rapidtide/tests/cleanposttest +4 -6
- rapidtide/tests/happycomp +9 -0
- rapidtide/tests/resethappytargets +1 -1
- rapidtide/tests/resetrapidtidetargets +1 -1
- rapidtide/tests/resettargets +1 -1
- rapidtide/tests/runlocaltest +3 -3
- rapidtide/tests/showkernels +1 -1
- rapidtide/tests/test_aliasedcorrelate.py +4 -4
- rapidtide/tests/test_aligntcs.py +1 -1
- rapidtide/tests/test_calcicc.py +1 -1
- rapidtide/tests/test_cleanregressor.py +184 -0
- rapidtide/tests/test_congrid.py +70 -81
- rapidtide/tests/test_correlate.py +1 -1
- rapidtide/tests/test_corrpass.py +4 -4
- rapidtide/tests/test_delayestimation.py +54 -59
- rapidtide/tests/test_dlfiltertorch.py +437 -0
- rapidtide/tests/test_doresample.py +2 -2
- rapidtide/tests/test_externaltools.py +69 -0
- rapidtide/tests/test_fastresampler.py +9 -5
- rapidtide/tests/test_filter.py +96 -57
- rapidtide/tests/test_findmaxlag.py +50 -19
- rapidtide/tests/test_fullrunhappy_v1.py +15 -10
- rapidtide/tests/test_fullrunhappy_v2.py +19 -13
- rapidtide/tests/test_fullrunhappy_v3.py +28 -13
- rapidtide/tests/test_fullrunhappy_v4.py +30 -11
- rapidtide/tests/test_fullrunhappy_v5.py +62 -0
- rapidtide/tests/test_fullrunrapidtide_v1.py +61 -7
- rapidtide/tests/test_fullrunrapidtide_v2.py +26 -14
- rapidtide/tests/test_fullrunrapidtide_v3.py +28 -8
- rapidtide/tests/test_fullrunrapidtide_v4.py +16 -8
- rapidtide/tests/test_fullrunrapidtide_v5.py +15 -6
- rapidtide/tests/test_fullrunrapidtide_v6.py +142 -0
- rapidtide/tests/test_fullrunrapidtide_v7.py +114 -0
- rapidtide/tests/test_fullrunrapidtide_v8.py +66 -0
- rapidtide/tests/test_getparsers.py +158 -0
- rapidtide/tests/test_io.py +59 -18
- rapidtide/tests/{test_glmpass.py → test_linfitfiltpass.py} +10 -10
- rapidtide/tests/test_mi.py +1 -1
- rapidtide/tests/test_miscmath.py +1 -1
- rapidtide/tests/test_motionregress.py +5 -5
- rapidtide/tests/test_nullcorr.py +6 -9
- rapidtide/tests/test_padvec.py +216 -0
- rapidtide/tests/test_parserfuncs.py +101 -0
- rapidtide/tests/test_phaseanalysis.py +1 -1
- rapidtide/tests/test_rapidtideparser.py +59 -53
- rapidtide/tests/test_refinedelay.py +296 -0
- rapidtide/tests/test_runmisc.py +5 -5
- rapidtide/tests/test_sharedmem.py +60 -0
- rapidtide/tests/test_simroundtrip.py +132 -0
- rapidtide/tests/test_simulate.py +1 -1
- rapidtide/tests/test_stcorrelate.py +4 -2
- rapidtide/tests/test_timeshift.py +2 -2
- rapidtide/tests/test_valtoindex.py +1 -1
- rapidtide/tests/test_zRapidtideDataset.py +5 -3
- rapidtide/tests/utils.py +10 -9
- rapidtide/tidepoolTemplate.py +88 -70
- rapidtide/tidepoolTemplate.ui +60 -46
- rapidtide/tidepoolTemplate_alt.py +88 -53
- rapidtide/tidepoolTemplate_alt.ui +62 -52
- rapidtide/tidepoolTemplate_alt_qt6.py +921 -0
- rapidtide/tidepoolTemplate_big.py +1125 -0
- rapidtide/tidepoolTemplate_big.ui +2386 -0
- rapidtide/tidepoolTemplate_big_qt6.py +1129 -0
- rapidtide/tidepoolTemplate_qt6.py +793 -0
- rapidtide/util.py +1389 -148
- rapidtide/voxelData.py +1048 -0
- rapidtide/wiener.py +138 -25
- rapidtide/wiener2.py +114 -8
- rapidtide/workflows/adjustoffset.py +107 -5
- rapidtide/workflows/aligntcs.py +86 -3
- rapidtide/workflows/applydlfilter.py +231 -89
- rapidtide/workflows/applyppgproc.py +540 -0
- rapidtide/workflows/atlasaverage.py +309 -48
- rapidtide/workflows/atlastool.py +130 -9
- rapidtide/workflows/calcSimFuncMap.py +490 -0
- rapidtide/workflows/calctexticc.py +202 -10
- rapidtide/workflows/ccorrica.py +123 -15
- rapidtide/workflows/cleanregressor.py +415 -0
- rapidtide/workflows/delayvar.py +1268 -0
- rapidtide/workflows/diffrois.py +84 -6
- rapidtide/workflows/endtidalproc.py +149 -9
- rapidtide/workflows/fdica.py +197 -17
- rapidtide/workflows/filtnifti.py +71 -4
- rapidtide/workflows/filttc.py +76 -5
- rapidtide/workflows/fitSimFuncMap.py +578 -0
- rapidtide/workflows/fixtr.py +74 -4
- rapidtide/workflows/gmscalc.py +116 -6
- rapidtide/workflows/happy.py +1242 -480
- rapidtide/workflows/happy2std.py +145 -13
- rapidtide/workflows/happy_parser.py +277 -59
- rapidtide/workflows/histnifti.py +120 -4
- rapidtide/workflows/histtc.py +85 -4
- rapidtide/workflows/{glmfilt.py → linfitfilt.py} +128 -14
- rapidtide/workflows/localflow.py +329 -29
- rapidtide/workflows/mergequality.py +80 -4
- rapidtide/workflows/niftidecomp.py +323 -19
- rapidtide/workflows/niftistats.py +178 -8
- rapidtide/workflows/pairproc.py +99 -5
- rapidtide/workflows/pairwisemergenifti.py +86 -3
- rapidtide/workflows/parser_funcs.py +1488 -56
- rapidtide/workflows/physiofreq.py +139 -12
- rapidtide/workflows/pixelcomp.py +211 -9
- rapidtide/workflows/plethquality.py +105 -23
- rapidtide/workflows/polyfitim.py +159 -19
- rapidtide/workflows/proj2flow.py +76 -3
- rapidtide/workflows/rankimage.py +115 -8
- rapidtide/workflows/rapidtide.py +1785 -1858
- rapidtide/workflows/rapidtide2std.py +101 -3
- rapidtide/workflows/rapidtide_parser.py +590 -389
- rapidtide/workflows/refineDelayMap.py +249 -0
- rapidtide/workflows/refineRegressor.py +1215 -0
- rapidtide/workflows/regressfrommaps.py +308 -0
- rapidtide/workflows/resamplenifti.py +86 -4
- rapidtide/workflows/resampletc.py +92 -4
- rapidtide/workflows/retrolagtcs.py +442 -0
- rapidtide/workflows/retroregress.py +1501 -0
- rapidtide/workflows/roisummarize.py +176 -7
- rapidtide/workflows/runqualitycheck.py +72 -7
- rapidtide/workflows/showarbcorr.py +172 -16
- rapidtide/workflows/showhist.py +87 -3
- rapidtide/workflows/showstxcorr.py +161 -4
- rapidtide/workflows/showtc.py +172 -10
- rapidtide/workflows/showxcorrx.py +250 -62
- rapidtide/workflows/showxy.py +186 -16
- rapidtide/workflows/simdata.py +418 -112
- rapidtide/workflows/spatialfit.py +83 -8
- rapidtide/workflows/spatialmi.py +252 -29
- rapidtide/workflows/spectrogram.py +306 -33
- rapidtide/workflows/synthASL.py +157 -6
- rapidtide/workflows/tcfrom2col.py +77 -3
- rapidtide/workflows/tcfrom3col.py +75 -3
- rapidtide/workflows/tidepool.py +3829 -666
- rapidtide/workflows/utils.py +45 -19
- rapidtide/workflows/utils_doc.py +293 -0
- rapidtide/workflows/variabilityizer.py +118 -5
- {rapidtide-2.9.6.dist-info → rapidtide-3.1.3.dist-info}/METADATA +30 -223
- rapidtide-3.1.3.dist-info/RECORD +393 -0
- {rapidtide-2.9.6.dist-info → rapidtide-3.1.3.dist-info}/WHEEL +1 -1
- rapidtide-3.1.3.dist-info/entry_points.txt +65 -0
- rapidtide-3.1.3.dist-info/top_level.txt +2 -0
- rapidtide/calcandfitcorrpairs.py +0 -262
- rapidtide/data/examples/src/testoutputsize +0 -45
- rapidtide/data/models/model_revised/model.h5 +0 -0
- rapidtide/data/models/model_serdar/model.h5 +0 -0
- rapidtide/data/models/model_serdar2/model.h5 +0 -0
- rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm.nii.gz +0 -0
- rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm.nii.gz +0 -0
- rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_binmask_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_lag_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_mask_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_negmask_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_sigma_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_strength_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/glmpass.py +0 -434
- rapidtide/refine_factored.py +0 -641
- rapidtide/scripts/retroglm +0 -23
- rapidtide/workflows/glmfrommaps.py +0 -202
- rapidtide/workflows/retroglm.py +0 -643
- rapidtide-2.9.6.data/scripts/adjustoffset +0 -23
- rapidtide-2.9.6.data/scripts/aligntcs +0 -23
- rapidtide-2.9.6.data/scripts/applydlfilter +0 -23
- rapidtide-2.9.6.data/scripts/atlasaverage +0 -23
- rapidtide-2.9.6.data/scripts/atlastool +0 -23
- rapidtide-2.9.6.data/scripts/calcicc +0 -22
- rapidtide-2.9.6.data/scripts/calctexticc +0 -23
- rapidtide-2.9.6.data/scripts/calcttest +0 -22
- rapidtide-2.9.6.data/scripts/ccorrica +0 -23
- rapidtide-2.9.6.data/scripts/diffrois +0 -23
- rapidtide-2.9.6.data/scripts/endtidalproc +0 -23
- rapidtide-2.9.6.data/scripts/filtnifti +0 -23
- rapidtide-2.9.6.data/scripts/filttc +0 -23
- rapidtide-2.9.6.data/scripts/fingerprint +0 -593
- rapidtide-2.9.6.data/scripts/fixtr +0 -23
- rapidtide-2.9.6.data/scripts/glmfilt +0 -24
- rapidtide-2.9.6.data/scripts/gmscalc +0 -22
- rapidtide-2.9.6.data/scripts/happy +0 -25
- rapidtide-2.9.6.data/scripts/happy2std +0 -23
- rapidtide-2.9.6.data/scripts/happywarp +0 -350
- rapidtide-2.9.6.data/scripts/histnifti +0 -23
- rapidtide-2.9.6.data/scripts/histtc +0 -23
- rapidtide-2.9.6.data/scripts/localflow +0 -23
- rapidtide-2.9.6.data/scripts/mergequality +0 -23
- rapidtide-2.9.6.data/scripts/pairproc +0 -23
- rapidtide-2.9.6.data/scripts/pairwisemergenifti +0 -23
- rapidtide-2.9.6.data/scripts/physiofreq +0 -23
- rapidtide-2.9.6.data/scripts/pixelcomp +0 -23
- rapidtide-2.9.6.data/scripts/plethquality +0 -23
- rapidtide-2.9.6.data/scripts/polyfitim +0 -23
- rapidtide-2.9.6.data/scripts/proj2flow +0 -23
- rapidtide-2.9.6.data/scripts/rankimage +0 -23
- rapidtide-2.9.6.data/scripts/rapidtide +0 -23
- rapidtide-2.9.6.data/scripts/rapidtide2std +0 -23
- rapidtide-2.9.6.data/scripts/resamplenifti +0 -23
- rapidtide-2.9.6.data/scripts/resampletc +0 -23
- rapidtide-2.9.6.data/scripts/retroglm +0 -23
- rapidtide-2.9.6.data/scripts/roisummarize +0 -23
- rapidtide-2.9.6.data/scripts/runqualitycheck +0 -23
- rapidtide-2.9.6.data/scripts/showarbcorr +0 -23
- rapidtide-2.9.6.data/scripts/showhist +0 -23
- rapidtide-2.9.6.data/scripts/showstxcorr +0 -23
- rapidtide-2.9.6.data/scripts/showtc +0 -23
- rapidtide-2.9.6.data/scripts/showxcorr_legacy +0 -536
- rapidtide-2.9.6.data/scripts/showxcorrx +0 -23
- rapidtide-2.9.6.data/scripts/showxy +0 -23
- rapidtide-2.9.6.data/scripts/simdata +0 -23
- rapidtide-2.9.6.data/scripts/spatialdecomp +0 -23
- rapidtide-2.9.6.data/scripts/spatialfit +0 -23
- rapidtide-2.9.6.data/scripts/spatialmi +0 -23
- rapidtide-2.9.6.data/scripts/spectrogram +0 -23
- rapidtide-2.9.6.data/scripts/synthASL +0 -23
- rapidtide-2.9.6.data/scripts/tcfrom2col +0 -23
- rapidtide-2.9.6.data/scripts/tcfrom3col +0 -23
- rapidtide-2.9.6.data/scripts/temporaldecomp +0 -23
- rapidtide-2.9.6.data/scripts/threeD +0 -236
- rapidtide-2.9.6.data/scripts/tidepool +0 -23
- rapidtide-2.9.6.data/scripts/variabilityizer +0 -23
- rapidtide-2.9.6.dist-info/RECORD +0 -359
- rapidtide-2.9.6.dist-info/top_level.txt +0 -86
- {rapidtide-2.9.6.dist-info → rapidtide-3.1.3.dist-info/licenses}/LICENSE +0 -0
rapidtide/workflows/histnifti.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.
|
|
@@ -19,8 +19,11 @@
|
|
|
19
19
|
import argparse
|
|
20
20
|
import copy
|
|
21
21
|
import sys
|
|
22
|
+
from argparse import Namespace
|
|
23
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
22
24
|
|
|
23
25
|
import numpy as np
|
|
26
|
+
from numpy.typing import NDArray
|
|
24
27
|
from tqdm import tqdm
|
|
25
28
|
|
|
26
29
|
import rapidtide.io as tide_io
|
|
@@ -29,7 +32,47 @@ import rapidtide.util as tide_util
|
|
|
29
32
|
import rapidtide.workflows.parser_funcs as pf
|
|
30
33
|
|
|
31
34
|
|
|
32
|
-
def _get_parser():
|
|
35
|
+
def _get_parser() -> Any:
|
|
36
|
+
"""
|
|
37
|
+
Generate and return an argument parser for the histnifti command-line tool.
|
|
38
|
+
|
|
39
|
+
This function constructs an `argparse.ArgumentParser` object configured with
|
|
40
|
+
all necessary arguments for processing NIFTI files and generating histograms
|
|
41
|
+
of their voxel values. It supports various options for controlling binning,
|
|
42
|
+
masking, normalization, and display behavior.
|
|
43
|
+
|
|
44
|
+
Returns
|
|
45
|
+
-------
|
|
46
|
+
argparse.ArgumentParser
|
|
47
|
+
Configured argument parser object ready to parse command-line arguments.
|
|
48
|
+
|
|
49
|
+
Notes
|
|
50
|
+
-----
|
|
51
|
+
The parser includes the following positional and optional arguments:
|
|
52
|
+
|
|
53
|
+
- Positional arguments:
|
|
54
|
+
- inputfile: Path to the input NIFTI file.
|
|
55
|
+
- outputroot: Root name for output files.
|
|
56
|
+
|
|
57
|
+
- Optional arguments:
|
|
58
|
+
- --histlen: Set histogram length to LEN (default: auto).
|
|
59
|
+
- --minval: Minimum bin value in histogram.
|
|
60
|
+
- --maxval: Maximum bin value in histogram.
|
|
61
|
+
- --robustrange: Use robust range (2nd to 98th percentile) for histogram limits.
|
|
62
|
+
- --transform: Replace data values with their percentile scores.
|
|
63
|
+
- --nozero: Exclude zero values from histogram.
|
|
64
|
+
- --nozerothresh: Threshold for considering values as zero (default: 0.01).
|
|
65
|
+
- --normhist: Return probability density instead of raw counts.
|
|
66
|
+
- --maskfile: Only process voxels within a 3D mask.
|
|
67
|
+
- --nodisplay: Do not display histogram.
|
|
68
|
+
|
|
69
|
+
Examples
|
|
70
|
+
--------
|
|
71
|
+
>>> parser = _get_parser()
|
|
72
|
+
>>> args = parser.parse_args(['input.nii', 'output_root'])
|
|
73
|
+
>>> print(args.inputfile)
|
|
74
|
+
'input.nii'
|
|
75
|
+
"""
|
|
33
76
|
# get the command line parameters
|
|
34
77
|
parser = argparse.ArgumentParser(
|
|
35
78
|
prog="histnifti",
|
|
@@ -119,7 +162,80 @@ def _get_parser():
|
|
|
119
162
|
return parser
|
|
120
163
|
|
|
121
164
|
|
|
122
|
-
def histnifti(args):
|
|
165
|
+
def histnifti(args: Any) -> None:
|
|
166
|
+
"""
|
|
167
|
+
Compute and save histograms, sorted data, and percentiles from NIfTI image data.
|
|
168
|
+
|
|
169
|
+
This function reads input NIfTI data and optionally a mask, computes histograms
|
|
170
|
+
for each voxel (or across all voxels if 3D), and saves sorted data, percentiles,
|
|
171
|
+
and histogram results as NIfTI files. It supports both 3D and 4D data processing.
|
|
172
|
+
|
|
173
|
+
Parameters
|
|
174
|
+
----------
|
|
175
|
+
args : argparse.Namespace
|
|
176
|
+
Command-line arguments containing:
|
|
177
|
+
- inputfile : str
|
|
178
|
+
Path to the input NIfTI file.
|
|
179
|
+
- maskfile : str, optional
|
|
180
|
+
Path to the mask NIfTI file. If None, a full mask is generated.
|
|
181
|
+
- outputroot : str
|
|
182
|
+
Root name for output files.
|
|
183
|
+
- robustrange : bool
|
|
184
|
+
If True, use 2nd and 98th percentiles for histogram range.
|
|
185
|
+
- minval : float, optional
|
|
186
|
+
Minimum value for histogram range.
|
|
187
|
+
- maxval : float, optional
|
|
188
|
+
Maximum value for histogram range.
|
|
189
|
+
- histlen : int, optional
|
|
190
|
+
Number of histogram bins. If None, computed based on data size.
|
|
191
|
+
- nozero : bool
|
|
192
|
+
If True, exclude zero values from histogram calculation.
|
|
193
|
+
- nozerothresh : float
|
|
194
|
+
Threshold for excluding zero-like values when `nozero` is True.
|
|
195
|
+
- transform : bool
|
|
196
|
+
If True, apply a transformation to the data.
|
|
197
|
+
- display : bool
|
|
198
|
+
If True, display histogram plots.
|
|
199
|
+
- normhist : bool
|
|
200
|
+
If True, normalize histogram values.
|
|
201
|
+
|
|
202
|
+
Returns
|
|
203
|
+
-------
|
|
204
|
+
None
|
|
205
|
+
This function does not return a value but saves multiple NIfTI files:
|
|
206
|
+
- `<outputroot>_sorted.nii.gz`: Sorted time series data.
|
|
207
|
+
- `<outputroot>_pcts.nii.gz`: Percentile values.
|
|
208
|
+
- `<outputroot>_hists.nii.gz`: Histogram data per voxel.
|
|
209
|
+
- `<outputroot>_transformed.nii.gz`: Transformed data (if `transform` is True).
|
|
210
|
+
- `<outputroot>_hist.txt`: Histogram plot (if `display` is True).
|
|
211
|
+
|
|
212
|
+
Notes
|
|
213
|
+
-----
|
|
214
|
+
- For 4D data, the function computes histograms, sorted arrays, and percentiles
|
|
215
|
+
for each voxel.
|
|
216
|
+
- For 3D data, the function can compute a global histogram or apply a transformation.
|
|
217
|
+
- The function uses `tide_io` for reading/writing NIfTI files and `tide_stats` for
|
|
218
|
+
statistical operations.
|
|
219
|
+
|
|
220
|
+
Examples
|
|
221
|
+
--------
|
|
222
|
+
>>> import argparse
|
|
223
|
+
>>> args = argparse.Namespace(
|
|
224
|
+
... inputfile='data.nii.gz',
|
|
225
|
+
... maskfile=None,
|
|
226
|
+
... outputroot='output',
|
|
227
|
+
... robustrange=False,
|
|
228
|
+
... minval=None,
|
|
229
|
+
... maxval=None,
|
|
230
|
+
... histlen=None,
|
|
231
|
+
... nozero=False,
|
|
232
|
+
... nozerothresh=0.0,
|
|
233
|
+
... transform=False,
|
|
234
|
+
... display=False,
|
|
235
|
+
... normhist=False
|
|
236
|
+
... )
|
|
237
|
+
>>> histnifti(args)
|
|
238
|
+
"""
|
|
123
239
|
# set default variable values
|
|
124
240
|
thepercentiles = [0.2, 0.25, 0.5, 0.75, 0.98]
|
|
125
241
|
thepvalnames = []
|
|
@@ -294,7 +410,7 @@ def histnifti(args):
|
|
|
294
410
|
if args.transform:
|
|
295
411
|
thehist, bins = np.histogram(validdata, bins=thehistlen, range=(histmin, histmax))
|
|
296
412
|
npbins = np.asarray(bins[:-1], dtype=float) + (bins[1] - bins[0]) / 2.0
|
|
297
|
-
transformeddataasmatrix = dataasmatrix
|
|
413
|
+
transformeddataasmatrix = np.zeros_like(dataasmatrix)
|
|
298
414
|
for thevoxel in validvoxels:
|
|
299
415
|
transformeddataasmatrix[thevoxel] = (
|
|
300
416
|
100.0 * tide_util.valtoindex(npbins, dataasmatrix[thevoxel]) / len(npbins)
|
rapidtide/workflows/histtc.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.
|
|
@@ -17,17 +17,39 @@
|
|
|
17
17
|
#
|
|
18
18
|
#
|
|
19
19
|
import argparse
|
|
20
|
+
from argparse import Namespace
|
|
21
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
20
22
|
|
|
21
23
|
import numpy as np
|
|
24
|
+
from numpy.typing import NDArray
|
|
22
25
|
|
|
23
26
|
import rapidtide.io as tide_io
|
|
24
27
|
import rapidtide.stats as tide_stats
|
|
25
28
|
import rapidtide.workflows.parser_funcs as pf
|
|
26
29
|
|
|
27
30
|
|
|
28
|
-
def _get_parser():
|
|
31
|
+
def _get_parser() -> Any:
|
|
29
32
|
"""
|
|
30
|
-
Argument parser for histtc
|
|
33
|
+
Argument parser for histtc.
|
|
34
|
+
|
|
35
|
+
This function constructs and returns an `argparse.ArgumentParser` object configured
|
|
36
|
+
for parsing command-line arguments for the `histtc` tool, which generates histograms
|
|
37
|
+
from timecourse data.
|
|
38
|
+
|
|
39
|
+
Returns
|
|
40
|
+
-------
|
|
41
|
+
argparse.ArgumentParser
|
|
42
|
+
Configured argument parser for histtc.
|
|
43
|
+
|
|
44
|
+
Notes
|
|
45
|
+
-----
|
|
46
|
+
The parser includes both required and optional arguments for specifying input/output
|
|
47
|
+
files, histogram bin settings, and various data filtering options.
|
|
48
|
+
|
|
49
|
+
Examples
|
|
50
|
+
--------
|
|
51
|
+
>>> parser = _get_parser()
|
|
52
|
+
>>> args = parser.parse_args(['--inputfilename', 'data.txt', '--outputroot', 'output'])
|
|
31
53
|
"""
|
|
32
54
|
parser = argparse.ArgumentParser(
|
|
33
55
|
prog="histtc",
|
|
@@ -108,7 +130,66 @@ def _get_parser():
|
|
|
108
130
|
return parser
|
|
109
131
|
|
|
110
132
|
|
|
111
|
-
def histtc(args):
|
|
133
|
+
def histtc(args: Any) -> None:
|
|
134
|
+
"""
|
|
135
|
+
Compute and save a histogram of input data, optionally filtered and normalized.
|
|
136
|
+
|
|
137
|
+
This function reads input data from a text file, computes specified percentiles,
|
|
138
|
+
and generates a histogram with optional normalization and range settings.
|
|
139
|
+
|
|
140
|
+
Parameters
|
|
141
|
+
----------
|
|
142
|
+
args : argparse.Namespace
|
|
143
|
+
An object containing the following attributes:
|
|
144
|
+
- inputfilename : str
|
|
145
|
+
Path to the input text file containing the data.
|
|
146
|
+
- debug : bool
|
|
147
|
+
If True, print debug information during execution.
|
|
148
|
+
- nozero : bool
|
|
149
|
+
If True, exclude values with absolute magnitude less than or equal to `nozerothresh`.
|
|
150
|
+
- nozerothresh : float
|
|
151
|
+
Threshold for excluding zero-like values when `nozero` is True.
|
|
152
|
+
- histlen : int
|
|
153
|
+
Number of bins for the histogram.
|
|
154
|
+
- outputroot : str
|
|
155
|
+
Root name for output files.
|
|
156
|
+
- robustrange : bool
|
|
157
|
+
If True, use robust range (2nd and 98th percentiles) for histogram.
|
|
158
|
+
- minval : float, optional
|
|
159
|
+
Minimum value for histogram range. If None, use data minimum.
|
|
160
|
+
- maxval : float, optional
|
|
161
|
+
Maximum value for histogram range. If None, use data maximum.
|
|
162
|
+
- normhist : bool
|
|
163
|
+
If True, normalize the histogram.
|
|
164
|
+
|
|
165
|
+
Returns
|
|
166
|
+
-------
|
|
167
|
+
None
|
|
168
|
+
This function does not return a value but saves a histogram to disk.
|
|
169
|
+
|
|
170
|
+
Notes
|
|
171
|
+
-----
|
|
172
|
+
The function uses `tide_io.readvectorsfromtextfile` to read input data and
|
|
173
|
+
`tide_stats.getfracvals` to compute percentiles. It then calls
|
|
174
|
+
`tide_stats.makeandsavehistogram` to generate and save the histogram.
|
|
175
|
+
|
|
176
|
+
Examples
|
|
177
|
+
--------
|
|
178
|
+
>>> import argparse
|
|
179
|
+
>>> args = argparse.Namespace(
|
|
180
|
+
... inputfilename='data.txt',
|
|
181
|
+
... debug=False,
|
|
182
|
+
... nozero=True,
|
|
183
|
+
... nozerothresh=1e-6,
|
|
184
|
+
... histlen=50,
|
|
185
|
+
... outputroot='output',
|
|
186
|
+
... robustrange=False,
|
|
187
|
+
... minval=None,
|
|
188
|
+
... maxval=None,
|
|
189
|
+
... normhist=True
|
|
190
|
+
... )
|
|
191
|
+
>>> histtc(args)
|
|
192
|
+
"""
|
|
112
193
|
# set default variable values
|
|
113
194
|
thepercentiles = [0.2, 0.25, 0.5, 0.75, 0.98]
|
|
114
195
|
thepvalnames = []
|
|
@@ -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.
|
|
@@ -17,20 +17,47 @@
|
|
|
17
17
|
#
|
|
18
18
|
#
|
|
19
19
|
import argparse
|
|
20
|
+
import sys
|
|
21
|
+
from argparse import Namespace
|
|
22
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
20
23
|
|
|
21
24
|
import numpy as np
|
|
25
|
+
from numpy.typing import NDArray
|
|
22
26
|
|
|
23
27
|
import rapidtide.fit as tide_fit
|
|
24
28
|
import rapidtide.io as tide_io
|
|
25
29
|
from rapidtide.workflows.parser_funcs import is_valid_file
|
|
26
30
|
|
|
27
31
|
|
|
28
|
-
def _get_parser():
|
|
32
|
+
def _get_parser() -> Any:
|
|
29
33
|
"""
|
|
30
|
-
Argument parser for
|
|
34
|
+
Argument parser for linfitfilt.
|
|
35
|
+
|
|
36
|
+
This function constructs and returns an `argparse.ArgumentParser` object configured
|
|
37
|
+
for the `linfitfilt` command-line tool. It defines all required and optional arguments
|
|
38
|
+
needed to specify input files, regression parameters, and output options.
|
|
39
|
+
|
|
40
|
+
Returns
|
|
41
|
+
-------
|
|
42
|
+
argparse.ArgumentParser
|
|
43
|
+
Configured argument parser for the linfitfilt tool.
|
|
44
|
+
|
|
45
|
+
Notes
|
|
46
|
+
-----
|
|
47
|
+
The parser is designed to handle:
|
|
48
|
+
- Input NIfTI files (3D or 4D)
|
|
49
|
+
- EV (event-related) files for regression
|
|
50
|
+
- Data masking options
|
|
51
|
+
- Timecourse skipping for fitting
|
|
52
|
+
- Output filtering and saving options
|
|
53
|
+
|
|
54
|
+
Examples
|
|
55
|
+
--------
|
|
56
|
+
>>> parser = _get_parser()
|
|
57
|
+
>>> args = parser.parse_args()
|
|
31
58
|
"""
|
|
32
59
|
parser = argparse.ArgumentParser(
|
|
33
|
-
prog="
|
|
60
|
+
prog="linfitfilt",
|
|
34
61
|
description="Fits and removes the effect of voxel specific and/or global regressors.",
|
|
35
62
|
allow_abbrev=False,
|
|
36
63
|
)
|
|
@@ -75,7 +102,67 @@ def _get_parser():
|
|
|
75
102
|
return parser
|
|
76
103
|
|
|
77
104
|
|
|
78
|
-
def
|
|
105
|
+
def linfitfilt(
|
|
106
|
+
inputfile: Any,
|
|
107
|
+
numskip: Any,
|
|
108
|
+
outputroot: Any,
|
|
109
|
+
evfilename: Any,
|
|
110
|
+
datamaskname: Any,
|
|
111
|
+
saveall: bool = True,
|
|
112
|
+
) -> None:
|
|
113
|
+
"""
|
|
114
|
+
Perform linear regression fitting on 4D NIfTI data using specified regressors.
|
|
115
|
+
|
|
116
|
+
This function fits a linear model to each voxel's time series using the provided
|
|
117
|
+
regressors and saves the resulting fit coefficients, R-squared values, and filtered
|
|
118
|
+
data. It supports both NIfTI and text-based regressor files, as well as FSL par files
|
|
119
|
+
for global regressors.
|
|
120
|
+
|
|
121
|
+
Parameters
|
|
122
|
+
----------
|
|
123
|
+
inputfile : str or pathlib.Path
|
|
124
|
+
Path to the input 4D NIfTI file containing the time series data.
|
|
125
|
+
numskip : int
|
|
126
|
+
Number of initial time points to skip when fitting the model.
|
|
127
|
+
outputroot : str
|
|
128
|
+
Root name for output NIfTI files (e.g., '_mean', '_fit0', '_R2', etc.).
|
|
129
|
+
evfilename : list of str or pathlib.Path
|
|
130
|
+
List of paths to files containing regressor time series. Can be NIfTI files,
|
|
131
|
+
text files, or FSL par files.
|
|
132
|
+
datamaskname : str or pathlib.Path, optional
|
|
133
|
+
Path to a NIfTI file defining the mask for data analysis. If None, a full mask
|
|
134
|
+
is assumed.
|
|
135
|
+
saveall : bool, optional
|
|
136
|
+
If True, save all intermediate and final output files. Default is True.
|
|
137
|
+
|
|
138
|
+
Returns
|
|
139
|
+
-------
|
|
140
|
+
None
|
|
141
|
+
This function does not return a value but saves multiple NIfTI files to disk.
|
|
142
|
+
|
|
143
|
+
Notes
|
|
144
|
+
-----
|
|
145
|
+
- The function performs ordinary least squares (OLS) regression for each voxel.
|
|
146
|
+
- The regressors are applied to the data after skipping the first `numskip` time points.
|
|
147
|
+
- Output files include:
|
|
148
|
+
- `<outputroot>_mean.nii.gz`: Mean of the data.
|
|
149
|
+
- `<outputroot>_fit{j}.nii.gz`: Fitted coefficients for regressor j.
|
|
150
|
+
- `<outputroot>_R2.nii.gz`: R-squared values for the model.
|
|
151
|
+
- `<outputroot>_totaltoremove.nii.gz`: Regressor contributions to be removed.
|
|
152
|
+
- `<outputroot>_trimmed.nii.gz`: Trimmed input data.
|
|
153
|
+
- `<outputroot>_filtered.nii.gz`: Final filtered data.
|
|
154
|
+
|
|
155
|
+
Examples
|
|
156
|
+
--------
|
|
157
|
+
>>> linfitfilt(
|
|
158
|
+
... inputfile='data.nii.gz',
|
|
159
|
+
... numskip=5,
|
|
160
|
+
... outputroot='output',
|
|
161
|
+
... evfilename=['regressor1.txt', 'regressor2.nii.gz'],
|
|
162
|
+
... datamaskname='mask.nii.gz',
|
|
163
|
+
... saveall=True
|
|
164
|
+
... )
|
|
165
|
+
"""
|
|
79
166
|
# initialize some variables
|
|
80
167
|
evdata = []
|
|
81
168
|
evisnifti = []
|
|
@@ -104,7 +191,7 @@ def glmfilt(inputfile, numskip, outputroot, evfilename, datamaskname, saveall=Tr
|
|
|
104
191
|
sys.exit()
|
|
105
192
|
print("done reading in mask array")
|
|
106
193
|
else:
|
|
107
|
-
datamask_data = nim_data[:, :, :, 0]
|
|
194
|
+
datamask_data = np.ones_like(nim_data[:, :, :, 0])
|
|
108
195
|
|
|
109
196
|
numregressors = 0
|
|
110
197
|
for i in range(0, len(evfilename)):
|
|
@@ -167,7 +254,7 @@ def glmfilt(inputfile, numskip, outputroot, evfilename, datamaskname, saveall=Tr
|
|
|
167
254
|
print("will perform GLM with ", numregressors, " regressors")
|
|
168
255
|
meandata = np.zeros((xsize, ysize, numslices), dtype="float")
|
|
169
256
|
fitdata = np.zeros((xsize, ysize, numslices, numregressors), dtype="float")
|
|
170
|
-
|
|
257
|
+
R2data = np.zeros((xsize, ysize, numslices), dtype="float")
|
|
171
258
|
trimmeddata = 1.0 * nim_data[:, :, :, numskip:]
|
|
172
259
|
|
|
173
260
|
for z in range(0, numslices):
|
|
@@ -182,15 +269,15 @@ def glmfilt(inputfile, numskip, outputroot, evfilename, datamaskname, saveall=Tr
|
|
|
182
269
|
else:
|
|
183
270
|
regressorvec.append(evdata[j])
|
|
184
271
|
if np.max(trimmeddata[x, y, z, :]) - np.min(trimmeddata[x, y, z, :]) > 0.0:
|
|
185
|
-
thefit,
|
|
272
|
+
thefit, R2 = tide_fit.mlregress(regressorvec, trimmeddata[x, y, z, :])
|
|
186
273
|
meandata[x, y, z] = thefit[0, 0]
|
|
187
|
-
|
|
274
|
+
R2data[x, y, z] = R2
|
|
188
275
|
for j in range(0, numregressors):
|
|
189
276
|
fitdata[x, y, z, j] = thefit[0, j + 1]
|
|
190
277
|
# datatoremove[x, y, z, :, j] = thefit[0, j + 1] * regressorvec[j]
|
|
191
278
|
else:
|
|
192
279
|
meandata[x, y, z] = 0.0
|
|
193
|
-
|
|
280
|
+
R2data[x, y, z] = 0.0
|
|
194
281
|
for j in range(0, numregressors):
|
|
195
282
|
fitdata[x, y, z, j] = 0.0
|
|
196
283
|
# datatoremove[x, y, z, :, j] = 0.0 * regressorvec[j]
|
|
@@ -205,8 +292,8 @@ def glmfilt(inputfile, numskip, outputroot, evfilename, datamaskname, saveall=Tr
|
|
|
205
292
|
tide_io.savetonifti(meandata, theheader, outputroot + "_mean")
|
|
206
293
|
for j in range(0, numregressors):
|
|
207
294
|
tide_io.savetonifti(fitdata[:, :, :, j], theheader, outputroot + "_fit" + str(j))
|
|
208
|
-
tide_io.savetonifti(
|
|
209
|
-
|
|
295
|
+
tide_io.savetonifti(R2data, theheader, outputroot + "_R2")
|
|
296
|
+
R2data = None
|
|
210
297
|
|
|
211
298
|
print()
|
|
212
299
|
print("Now constructing the array of data to remove")
|
|
@@ -237,14 +324,41 @@ def glmfilt(inputfile, numskip, outputroot, evfilename, datamaskname, saveall=Tr
|
|
|
237
324
|
tide_io.savetonifti(filtereddata, theheader, outputroot + "_filtered")
|
|
238
325
|
|
|
239
326
|
|
|
240
|
-
def main():
|
|
327
|
+
def main() -> None:
|
|
328
|
+
"""
|
|
329
|
+
Main function to execute the linear fit and filter pipeline.
|
|
330
|
+
|
|
331
|
+
This function parses command line arguments and executes the linear fit and
|
|
332
|
+
filter process on the input data file. It handles argument parsing exceptions
|
|
333
|
+
and provides help output when needed.
|
|
334
|
+
|
|
335
|
+
Parameters
|
|
336
|
+
----------
|
|
337
|
+
None
|
|
338
|
+
|
|
339
|
+
Returns
|
|
340
|
+
-------
|
|
341
|
+
None
|
|
342
|
+
This function does not return any value.
|
|
343
|
+
|
|
344
|
+
Notes
|
|
345
|
+
-----
|
|
346
|
+
The function relies on `_get_parser()` to create and return an argument parser
|
|
347
|
+
with the necessary command line options. The parsed arguments are then passed
|
|
348
|
+
to the `linfitfilt` function for processing.
|
|
349
|
+
|
|
350
|
+
Examples
|
|
351
|
+
--------
|
|
352
|
+
>>> main()
|
|
353
|
+
# Executes the linear fit and filter pipeline with arguments from command line
|
|
354
|
+
"""
|
|
241
355
|
try:
|
|
242
356
|
args = vars(_get_parser().parse_args())
|
|
243
357
|
except SystemExit:
|
|
244
358
|
_get_parser().print_help()
|
|
245
359
|
raise
|
|
246
360
|
|
|
247
|
-
|
|
361
|
+
linfitfilt(
|
|
248
362
|
args["inputfile"],
|
|
249
363
|
args["numskip"],
|
|
250
364
|
args["outputroot"],
|