rapidtide 2.9.5__py3-none-any.whl → 3.1.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cloud/gmscalc-HCPYA +1 -1
- cloud/mount-and-run +2 -0
- cloud/rapidtide-HCPYA +3 -3
- rapidtide/Colortables.py +538 -38
- rapidtide/OrthoImageItem.py +1094 -51
- rapidtide/RapidtideDataset.py +1709 -114
- rapidtide/__init__.py +0 -8
- rapidtide/_version.py +4 -4
- rapidtide/calccoherence.py +242 -97
- rapidtide/calcnullsimfunc.py +240 -140
- rapidtide/calcsimfunc.py +314 -129
- rapidtide/correlate.py +1211 -389
- rapidtide/data/examples/src/testLD +56 -0
- rapidtide/data/examples/src/test_findmaxlag.py +2 -2
- rapidtide/data/examples/src/test_mlregressallt.py +32 -17
- rapidtide/data/examples/src/testalign +1 -1
- rapidtide/data/examples/src/testatlasaverage +35 -7
- rapidtide/data/examples/src/testboth +21 -0
- rapidtide/data/examples/src/testcifti +11 -0
- rapidtide/data/examples/src/testdelayvar +13 -0
- rapidtide/data/examples/src/testdlfilt +25 -0
- rapidtide/data/examples/src/testfft +35 -0
- rapidtide/data/examples/src/testfileorfloat +37 -0
- rapidtide/data/examples/src/testfmri +94 -27
- rapidtide/data/examples/src/testfuncs +3 -3
- rapidtide/data/examples/src/testglmfilt +8 -6
- rapidtide/data/examples/src/testhappy +84 -51
- rapidtide/data/examples/src/testinitdelay +19 -0
- rapidtide/data/examples/src/testmodels +33 -0
- rapidtide/data/examples/src/testnewrefine +26 -0
- rapidtide/data/examples/src/testnoiseamp +21 -0
- rapidtide/data/examples/src/testppgproc +17 -0
- rapidtide/data/examples/src/testrefineonly +22 -0
- rapidtide/data/examples/src/testretro +26 -13
- rapidtide/data/examples/src/testretrolagtcs +16 -0
- rapidtide/data/examples/src/testrolloff +11 -0
- rapidtide/data/examples/src/testsimdata +45 -28
- rapidtide/data/models/model_cnn_pytorch/loss.png +0 -0
- rapidtide/data/models/model_cnn_pytorch/loss.txt +1 -0
- rapidtide/data/models/model_cnn_pytorch/model.pth +0 -0
- rapidtide/data/models/model_cnn_pytorch/model_meta.json +68 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/loss.png +0 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/loss.txt +1 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/model.pth +0 -0
- rapidtide/data/models/model_cnn_pytorch_fulldata/model_meta.json +80 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.png +0 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/loss.txt +1 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/model.pth +0 -0
- rapidtide/data/models/model_cnnbp_pytorch_fullldata/model_meta.json +138 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.png +0 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/loss.txt +1 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/model.pth +0 -0
- rapidtide/data/models/model_cnnfft_pytorch_fulldata/model_meta.json +128 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.png +0 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/loss.txt +1 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model.pth +0 -0
- rapidtide/data/models/model_ppgattention_pytorch_w128_fulldata/model_meta.json +49 -0
- rapidtide/data/models/model_revised_tf2/model.keras +0 -0
- rapidtide/data/models/{model_serdar → model_revised_tf2}/model_meta.json +1 -1
- rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
- rapidtide/data/models/{model_serdar2 → model_serdar2_tf2}/model_meta.json +1 -1
- rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
- rapidtide/data/models/{model_revised → model_serdar_tf2}/model_meta.json +1 -1
- rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_graylaghist.json +7 -0
- rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
- rapidtide/data/reference/HCP1200v2_laghist.json +7 -0
- rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
- rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
- rapidtide/data/reference/HCP1200v2_whitelaghist.json +7 -0
- rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +131 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +60 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
- rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
- rapidtide/decorators.py +91 -0
- rapidtide/dlfilter.py +2553 -414
- rapidtide/dlfiltertorch.py +5201 -0
- rapidtide/externaltools.py +328 -13
- rapidtide/fMRIData_class.py +178 -0
- rapidtide/ffttools.py +168 -0
- rapidtide/filter.py +2704 -1462
- rapidtide/fit.py +2361 -579
- rapidtide/genericmultiproc.py +197 -0
- rapidtide/happy_supportfuncs.py +3255 -548
- rapidtide/helper_classes.py +590 -1181
- rapidtide/io.py +2569 -468
- rapidtide/linfitfiltpass.py +784 -0
- rapidtide/makelaggedtcs.py +267 -97
- rapidtide/maskutil.py +555 -25
- rapidtide/miscmath.py +867 -137
- rapidtide/multiproc.py +217 -44
- rapidtide/patchmatch.py +752 -0
- rapidtide/peakeval.py +32 -32
- rapidtide/ppgproc.py +2205 -0
- rapidtide/qualitycheck.py +353 -40
- rapidtide/refinedelay.py +854 -0
- rapidtide/refineregressor.py +939 -0
- rapidtide/resample.py +725 -204
- rapidtide/scripts/__init__.py +1 -0
- rapidtide/scripts/{adjustoffset → adjustoffset.py} +7 -2
- rapidtide/scripts/{aligntcs → aligntcs.py} +7 -2
- rapidtide/scripts/{applydlfilter → applydlfilter.py} +7 -2
- rapidtide/scripts/applyppgproc.py +28 -0
- rapidtide/scripts/{atlasaverage → atlasaverage.py} +7 -2
- rapidtide/scripts/{atlastool → atlastool.py} +7 -2
- rapidtide/scripts/{calcicc → calcicc.py} +7 -2
- rapidtide/scripts/{calctexticc → calctexticc.py} +7 -2
- rapidtide/scripts/{calcttest → calcttest.py} +7 -2
- rapidtide/scripts/{ccorrica → ccorrica.py} +7 -2
- rapidtide/scripts/delayvar.py +28 -0
- rapidtide/scripts/{diffrois → diffrois.py} +7 -2
- rapidtide/scripts/{endtidalproc → endtidalproc.py} +7 -2
- rapidtide/scripts/{fdica → fdica.py} +7 -2
- rapidtide/scripts/{filtnifti → filtnifti.py} +7 -2
- rapidtide/scripts/{filttc → filttc.py} +7 -2
- rapidtide/scripts/{fingerprint → fingerprint.py} +20 -16
- rapidtide/scripts/{fixtr → fixtr.py} +7 -2
- rapidtide/scripts/{gmscalc → gmscalc.py} +7 -2
- rapidtide/scripts/{happy → happy.py} +7 -2
- rapidtide/scripts/{happy2std → happy2std.py} +7 -2
- rapidtide/scripts/{happywarp → happywarp.py} +8 -4
- rapidtide/scripts/{histnifti → histnifti.py} +7 -2
- rapidtide/scripts/{histtc → histtc.py} +7 -2
- rapidtide/scripts/{glmfilt → linfitfilt.py} +7 -4
- rapidtide/scripts/{localflow → localflow.py} +7 -2
- rapidtide/scripts/{mergequality → mergequality.py} +7 -2
- rapidtide/scripts/{pairproc → pairproc.py} +7 -2
- rapidtide/scripts/{pairwisemergenifti → pairwisemergenifti.py} +7 -2
- rapidtide/scripts/{physiofreq → physiofreq.py} +7 -2
- rapidtide/scripts/{pixelcomp → pixelcomp.py} +7 -2
- rapidtide/scripts/{plethquality → plethquality.py} +7 -2
- rapidtide/scripts/{polyfitim → polyfitim.py} +7 -2
- rapidtide/scripts/{proj2flow → proj2flow.py} +7 -2
- rapidtide/scripts/{rankimage → rankimage.py} +7 -2
- rapidtide/scripts/{rapidtide → rapidtide.py} +7 -2
- rapidtide/scripts/{rapidtide2std → rapidtide2std.py} +7 -2
- rapidtide/scripts/{resamplenifti → resamplenifti.py} +7 -2
- rapidtide/scripts/{resampletc → resampletc.py} +7 -2
- rapidtide/scripts/retrolagtcs.py +28 -0
- rapidtide/scripts/retroregress.py +28 -0
- rapidtide/scripts/{roisummarize → roisummarize.py} +7 -2
- rapidtide/scripts/{runqualitycheck → runqualitycheck.py} +7 -2
- rapidtide/scripts/{showarbcorr → showarbcorr.py} +7 -2
- rapidtide/scripts/{showhist → showhist.py} +7 -2
- rapidtide/scripts/{showstxcorr → showstxcorr.py} +7 -2
- rapidtide/scripts/{showtc → showtc.py} +7 -2
- rapidtide/scripts/{showxcorr_legacy → showxcorr_legacy.py} +8 -8
- rapidtide/scripts/{showxcorrx → showxcorrx.py} +7 -2
- rapidtide/scripts/{showxy → showxy.py} +7 -2
- rapidtide/scripts/{simdata → simdata.py} +7 -2
- rapidtide/scripts/{spatialdecomp → spatialdecomp.py} +7 -2
- rapidtide/scripts/{spatialfit → spatialfit.py} +7 -2
- rapidtide/scripts/{spatialmi → spatialmi.py} +7 -2
- rapidtide/scripts/{spectrogram → spectrogram.py} +7 -2
- rapidtide/scripts/stupidramtricks.py +238 -0
- rapidtide/scripts/{synthASL → synthASL.py} +7 -2
- rapidtide/scripts/{tcfrom2col → tcfrom2col.py} +7 -2
- rapidtide/scripts/{tcfrom3col → tcfrom3col.py} +7 -2
- rapidtide/scripts/{temporaldecomp → temporaldecomp.py} +7 -2
- rapidtide/scripts/{testhrv → testhrv.py} +1 -1
- rapidtide/scripts/{threeD → threeD.py} +7 -2
- rapidtide/scripts/{tidepool → tidepool.py} +7 -2
- rapidtide/scripts/{variabilityizer → variabilityizer.py} +7 -2
- rapidtide/simFuncClasses.py +2113 -0
- rapidtide/simfuncfit.py +312 -108
- rapidtide/stats.py +579 -247
- rapidtide/tests/.coveragerc +27 -6
- rapidtide-2.9.5.data/scripts/fdica → rapidtide/tests/cleanposttest +4 -6
- rapidtide/tests/happycomp +9 -0
- rapidtide/tests/resethappytargets +1 -1
- rapidtide/tests/resetrapidtidetargets +1 -1
- rapidtide/tests/resettargets +1 -1
- rapidtide/tests/runlocaltest +3 -3
- rapidtide/tests/showkernels +1 -1
- rapidtide/tests/test_aliasedcorrelate.py +4 -4
- rapidtide/tests/test_aligntcs.py +1 -1
- rapidtide/tests/test_calcicc.py +1 -1
- rapidtide/tests/test_cleanregressor.py +184 -0
- rapidtide/tests/test_congrid.py +70 -81
- rapidtide/tests/test_correlate.py +1 -1
- rapidtide/tests/test_corrpass.py +4 -4
- rapidtide/tests/test_delayestimation.py +54 -59
- rapidtide/tests/test_dlfiltertorch.py +437 -0
- rapidtide/tests/test_doresample.py +2 -2
- rapidtide/tests/test_externaltools.py +69 -0
- rapidtide/tests/test_fastresampler.py +9 -5
- rapidtide/tests/test_filter.py +96 -57
- rapidtide/tests/test_findmaxlag.py +50 -19
- rapidtide/tests/test_fullrunhappy_v1.py +15 -10
- rapidtide/tests/test_fullrunhappy_v2.py +19 -13
- rapidtide/tests/test_fullrunhappy_v3.py +28 -13
- rapidtide/tests/test_fullrunhappy_v4.py +30 -11
- rapidtide/tests/test_fullrunhappy_v5.py +62 -0
- rapidtide/tests/test_fullrunrapidtide_v1.py +61 -7
- rapidtide/tests/test_fullrunrapidtide_v2.py +27 -15
- rapidtide/tests/test_fullrunrapidtide_v3.py +28 -8
- rapidtide/tests/test_fullrunrapidtide_v4.py +16 -8
- rapidtide/tests/test_fullrunrapidtide_v5.py +15 -6
- rapidtide/tests/test_fullrunrapidtide_v6.py +142 -0
- rapidtide/tests/test_fullrunrapidtide_v7.py +114 -0
- rapidtide/tests/test_fullrunrapidtide_v8.py +66 -0
- rapidtide/tests/test_getparsers.py +158 -0
- rapidtide/tests/test_io.py +59 -18
- rapidtide/tests/{test_glmpass.py → test_linfitfiltpass.py} +10 -10
- rapidtide/tests/test_mi.py +1 -1
- rapidtide/tests/test_miscmath.py +1 -1
- rapidtide/tests/test_motionregress.py +5 -5
- rapidtide/tests/test_nullcorr.py +6 -9
- rapidtide/tests/test_padvec.py +216 -0
- rapidtide/tests/test_parserfuncs.py +101 -0
- rapidtide/tests/test_phaseanalysis.py +1 -1
- rapidtide/tests/test_rapidtideparser.py +59 -53
- rapidtide/tests/test_refinedelay.py +296 -0
- rapidtide/tests/test_runmisc.py +5 -5
- rapidtide/tests/test_sharedmem.py +60 -0
- rapidtide/tests/test_simroundtrip.py +132 -0
- rapidtide/tests/test_simulate.py +1 -1
- rapidtide/tests/test_stcorrelate.py +4 -2
- rapidtide/tests/test_timeshift.py +2 -2
- rapidtide/tests/test_valtoindex.py +1 -1
- rapidtide/tests/test_zRapidtideDataset.py +5 -3
- rapidtide/tests/utils.py +10 -9
- rapidtide/tidepoolTemplate.py +88 -70
- rapidtide/tidepoolTemplate.ui +60 -46
- rapidtide/tidepoolTemplate_alt.py +88 -53
- rapidtide/tidepoolTemplate_alt.ui +62 -52
- rapidtide/tidepoolTemplate_alt_qt6.py +921 -0
- rapidtide/tidepoolTemplate_big.py +1125 -0
- rapidtide/tidepoolTemplate_big.ui +2386 -0
- rapidtide/tidepoolTemplate_big_qt6.py +1129 -0
- rapidtide/tidepoolTemplate_qt6.py +793 -0
- rapidtide/util.py +1389 -148
- rapidtide/voxelData.py +1048 -0
- rapidtide/wiener.py +138 -25
- rapidtide/wiener2.py +114 -8
- rapidtide/workflows/adjustoffset.py +107 -5
- rapidtide/workflows/aligntcs.py +86 -3
- rapidtide/workflows/applydlfilter.py +231 -89
- rapidtide/workflows/applyppgproc.py +540 -0
- rapidtide/workflows/atlasaverage.py +309 -48
- rapidtide/workflows/atlastool.py +130 -9
- rapidtide/workflows/calcSimFuncMap.py +490 -0
- rapidtide/workflows/calctexticc.py +202 -10
- rapidtide/workflows/ccorrica.py +123 -15
- rapidtide/workflows/cleanregressor.py +415 -0
- rapidtide/workflows/delayvar.py +1268 -0
- rapidtide/workflows/diffrois.py +84 -6
- rapidtide/workflows/endtidalproc.py +149 -9
- rapidtide/workflows/fdica.py +197 -17
- rapidtide/workflows/filtnifti.py +71 -4
- rapidtide/workflows/filttc.py +76 -5
- rapidtide/workflows/fitSimFuncMap.py +578 -0
- rapidtide/workflows/fixtr.py +74 -4
- rapidtide/workflows/gmscalc.py +116 -6
- rapidtide/workflows/happy.py +1242 -480
- rapidtide/workflows/happy2std.py +145 -13
- rapidtide/workflows/happy_parser.py +277 -59
- rapidtide/workflows/histnifti.py +120 -4
- rapidtide/workflows/histtc.py +85 -4
- rapidtide/workflows/{glmfilt.py → linfitfilt.py} +128 -14
- rapidtide/workflows/localflow.py +329 -29
- rapidtide/workflows/mergequality.py +80 -4
- rapidtide/workflows/niftidecomp.py +323 -19
- rapidtide/workflows/niftistats.py +178 -8
- rapidtide/workflows/pairproc.py +99 -5
- rapidtide/workflows/pairwisemergenifti.py +86 -3
- rapidtide/workflows/parser_funcs.py +1488 -56
- rapidtide/workflows/physiofreq.py +139 -12
- rapidtide/workflows/pixelcomp.py +211 -9
- rapidtide/workflows/plethquality.py +105 -23
- rapidtide/workflows/polyfitim.py +159 -19
- rapidtide/workflows/proj2flow.py +76 -3
- rapidtide/workflows/rankimage.py +115 -8
- rapidtide/workflows/rapidtide.py +1833 -1919
- rapidtide/workflows/rapidtide2std.py +101 -3
- rapidtide/workflows/rapidtide_parser.py +607 -372
- rapidtide/workflows/refineDelayMap.py +249 -0
- rapidtide/workflows/refineRegressor.py +1215 -0
- rapidtide/workflows/regressfrommaps.py +308 -0
- rapidtide/workflows/resamplenifti.py +86 -4
- rapidtide/workflows/resampletc.py +92 -4
- rapidtide/workflows/retrolagtcs.py +442 -0
- rapidtide/workflows/retroregress.py +1501 -0
- rapidtide/workflows/roisummarize.py +176 -7
- rapidtide/workflows/runqualitycheck.py +72 -7
- rapidtide/workflows/showarbcorr.py +172 -16
- rapidtide/workflows/showhist.py +87 -3
- rapidtide/workflows/showstxcorr.py +161 -4
- rapidtide/workflows/showtc.py +172 -10
- rapidtide/workflows/showxcorrx.py +250 -62
- rapidtide/workflows/showxy.py +186 -16
- rapidtide/workflows/simdata.py +418 -112
- rapidtide/workflows/spatialfit.py +83 -8
- rapidtide/workflows/spatialmi.py +252 -29
- rapidtide/workflows/spectrogram.py +306 -33
- rapidtide/workflows/synthASL.py +157 -6
- rapidtide/workflows/tcfrom2col.py +77 -3
- rapidtide/workflows/tcfrom3col.py +75 -3
- rapidtide/workflows/tidepool.py +3829 -666
- rapidtide/workflows/utils.py +45 -19
- rapidtide/workflows/utils_doc.py +293 -0
- rapidtide/workflows/variabilityizer.py +118 -5
- {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info}/METADATA +30 -223
- rapidtide-3.1.3.dist-info/RECORD +393 -0
- {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info}/WHEEL +1 -1
- rapidtide-3.1.3.dist-info/entry_points.txt +65 -0
- rapidtide-3.1.3.dist-info/top_level.txt +2 -0
- rapidtide/calcandfitcorrpairs.py +0 -262
- rapidtide/data/examples/src/testoutputsize +0 -45
- rapidtide/data/models/model_revised/model.h5 +0 -0
- rapidtide/data/models/model_serdar/model.h5 +0 -0
- rapidtide/data/models/model_serdar2/model.h5 +0 -0
- rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm.nii.gz +0 -0
- rapidtide/data/reference/ASPECTS_nlin_asym_09c_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm.nii.gz +0 -0
- rapidtide/data/reference/ATTbasedFlowTerritories_split_nlin_asym_09c_2mm_mask.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_binmask_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_lag_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_mask_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_negmask_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_sigma_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/data/reference/HCP1200_strength_2mm_2009c_asym.nii.gz +0 -0
- rapidtide/glmpass.py +0 -434
- rapidtide/refine_factored.py +0 -641
- rapidtide/scripts/retroglm +0 -23
- rapidtide/workflows/glmfrommaps.py +0 -202
- rapidtide/workflows/retroglm.py +0 -643
- rapidtide-2.9.5.data/scripts/adjustoffset +0 -23
- rapidtide-2.9.5.data/scripts/aligntcs +0 -23
- rapidtide-2.9.5.data/scripts/applydlfilter +0 -23
- rapidtide-2.9.5.data/scripts/atlasaverage +0 -23
- rapidtide-2.9.5.data/scripts/atlastool +0 -23
- rapidtide-2.9.5.data/scripts/calcicc +0 -22
- rapidtide-2.9.5.data/scripts/calctexticc +0 -23
- rapidtide-2.9.5.data/scripts/calcttest +0 -22
- rapidtide-2.9.5.data/scripts/ccorrica +0 -23
- rapidtide-2.9.5.data/scripts/diffrois +0 -23
- rapidtide-2.9.5.data/scripts/endtidalproc +0 -23
- rapidtide-2.9.5.data/scripts/filtnifti +0 -23
- rapidtide-2.9.5.data/scripts/filttc +0 -23
- rapidtide-2.9.5.data/scripts/fingerprint +0 -593
- rapidtide-2.9.5.data/scripts/fixtr +0 -23
- rapidtide-2.9.5.data/scripts/glmfilt +0 -24
- rapidtide-2.9.5.data/scripts/gmscalc +0 -22
- rapidtide-2.9.5.data/scripts/happy +0 -25
- rapidtide-2.9.5.data/scripts/happy2std +0 -23
- rapidtide-2.9.5.data/scripts/happywarp +0 -350
- rapidtide-2.9.5.data/scripts/histnifti +0 -23
- rapidtide-2.9.5.data/scripts/histtc +0 -23
- rapidtide-2.9.5.data/scripts/localflow +0 -23
- rapidtide-2.9.5.data/scripts/mergequality +0 -23
- rapidtide-2.9.5.data/scripts/pairproc +0 -23
- rapidtide-2.9.5.data/scripts/pairwisemergenifti +0 -23
- rapidtide-2.9.5.data/scripts/physiofreq +0 -23
- rapidtide-2.9.5.data/scripts/pixelcomp +0 -23
- rapidtide-2.9.5.data/scripts/plethquality +0 -23
- rapidtide-2.9.5.data/scripts/polyfitim +0 -23
- rapidtide-2.9.5.data/scripts/proj2flow +0 -23
- rapidtide-2.9.5.data/scripts/rankimage +0 -23
- rapidtide-2.9.5.data/scripts/rapidtide +0 -23
- rapidtide-2.9.5.data/scripts/rapidtide2std +0 -23
- rapidtide-2.9.5.data/scripts/resamplenifti +0 -23
- rapidtide-2.9.5.data/scripts/resampletc +0 -23
- rapidtide-2.9.5.data/scripts/retroglm +0 -23
- rapidtide-2.9.5.data/scripts/roisummarize +0 -23
- rapidtide-2.9.5.data/scripts/runqualitycheck +0 -23
- rapidtide-2.9.5.data/scripts/showarbcorr +0 -23
- rapidtide-2.9.5.data/scripts/showhist +0 -23
- rapidtide-2.9.5.data/scripts/showstxcorr +0 -23
- rapidtide-2.9.5.data/scripts/showtc +0 -23
- rapidtide-2.9.5.data/scripts/showxcorr_legacy +0 -536
- rapidtide-2.9.5.data/scripts/showxcorrx +0 -23
- rapidtide-2.9.5.data/scripts/showxy +0 -23
- rapidtide-2.9.5.data/scripts/simdata +0 -23
- rapidtide-2.9.5.data/scripts/spatialdecomp +0 -23
- rapidtide-2.9.5.data/scripts/spatialfit +0 -23
- rapidtide-2.9.5.data/scripts/spatialmi +0 -23
- rapidtide-2.9.5.data/scripts/spectrogram +0 -23
- rapidtide-2.9.5.data/scripts/synthASL +0 -23
- rapidtide-2.9.5.data/scripts/tcfrom2col +0 -23
- rapidtide-2.9.5.data/scripts/tcfrom3col +0 -23
- rapidtide-2.9.5.data/scripts/temporaldecomp +0 -23
- rapidtide-2.9.5.data/scripts/threeD +0 -236
- rapidtide-2.9.5.data/scripts/tidepool +0 -23
- rapidtide-2.9.5.data/scripts/variabilityizer +0 -23
- rapidtide-2.9.5.dist-info/RECORD +0 -357
- rapidtide-2.9.5.dist-info/top_level.txt +0 -86
- {rapidtide-2.9.5.dist-info → rapidtide-3.1.3.dist-info/licenses}/LICENSE +0 -0
|
@@ -1,593 +0,0 @@
|
|
|
1
|
-
#!python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
# Copyright 2016-2024 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 os
|
|
22
|
-
import sys
|
|
23
|
-
|
|
24
|
-
import numpy as np
|
|
25
|
-
import pandas as pd
|
|
26
|
-
|
|
27
|
-
import rapidtide.fit as tide_fit
|
|
28
|
-
import rapidtide.io as tide_io
|
|
29
|
-
import rapidtide.maskutil as tide_mask
|
|
30
|
-
import rapidtide.util as tide_util
|
|
31
|
-
import rapidtide.workflows.parser_funcs as pf
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def _get_parser():
|
|
35
|
-
class FullPaths(argparse.Action):
|
|
36
|
-
"""Expand user- and relative-paths"""
|
|
37
|
-
|
|
38
|
-
def __call__(self, parser, namespace, values, option_string=None):
|
|
39
|
-
if values == "":
|
|
40
|
-
setattr(namespace, self.dest, "__EMPTY__")
|
|
41
|
-
else:
|
|
42
|
-
setattr(namespace, self.dest, os.path.abspath(os.path.expanduser(values)))
|
|
43
|
-
|
|
44
|
-
# get the command line parameters
|
|
45
|
-
parser = argparse.ArgumentParser(
|
|
46
|
-
prog="fingerprint",
|
|
47
|
-
description=(
|
|
48
|
-
"Fit a rapidtide output map to a canonical map, by vascular territory, and calculate statistical metrics.\n"
|
|
49
|
-
),
|
|
50
|
-
allow_abbrev=False,
|
|
51
|
-
)
|
|
52
|
-
parser.add_argument(
|
|
53
|
-
"inputfile",
|
|
54
|
-
help="Rapidtide output map to decompose by vascular territory. Must be in MNI152NLin6Asym coordinates, 2mm resolution",
|
|
55
|
-
action=FullPaths,
|
|
56
|
-
type=lambda x: pf.is_valid_file(parser, x),
|
|
57
|
-
)
|
|
58
|
-
parser.add_argument(
|
|
59
|
-
"outputroot",
|
|
60
|
-
help="name root for output files",
|
|
61
|
-
action=FullPaths,
|
|
62
|
-
type=str,
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
maskopts = parser.add_argument_group("Masking options")
|
|
66
|
-
maskopts.add_argument(
|
|
67
|
-
"--includemask",
|
|
68
|
-
dest="includespec",
|
|
69
|
-
metavar="MASK[:VALSPEC]",
|
|
70
|
-
help=(
|
|
71
|
-
"Only use atlas voxels that are also in file MASK in calculating the fit values "
|
|
72
|
-
"(if VALSPEC is given, only voxels "
|
|
73
|
-
"with integral values listed in VALSPEC are used). "
|
|
74
|
-
),
|
|
75
|
-
default=None,
|
|
76
|
-
)
|
|
77
|
-
maskopts.add_argument(
|
|
78
|
-
"--excludemask",
|
|
79
|
-
dest="excludespec",
|
|
80
|
-
metavar="MASK[:VALSPEC]",
|
|
81
|
-
help=(
|
|
82
|
-
"Do not use atlas voxels that are also in file MASK in calculating the fit values "
|
|
83
|
-
"(if VALSPEC is given, voxels "
|
|
84
|
-
"with integral values listed in VALSPEC are excluded). "
|
|
85
|
-
),
|
|
86
|
-
default=None,
|
|
87
|
-
)
|
|
88
|
-
maskopts.add_argument(
|
|
89
|
-
"--extramask",
|
|
90
|
-
dest="extramaskname",
|
|
91
|
-
metavar="MASK",
|
|
92
|
-
type=lambda x: pf.is_valid_file(parser, x),
|
|
93
|
-
help=(
|
|
94
|
-
"Additional mask to apply to select voxels for fitting. Zero voxels in this mask will be excluded."
|
|
95
|
-
),
|
|
96
|
-
default=None,
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
atlasopts = parser.add_argument_group("Atlas options")
|
|
100
|
-
atlasopts.add_argument(
|
|
101
|
-
"--atlas",
|
|
102
|
-
help=(
|
|
103
|
-
"Atlas. Options are: "
|
|
104
|
-
"ASPECTS - ASPECTS territory atlas; "
|
|
105
|
-
"ATT - Arterial transit time flow territories; "
|
|
106
|
-
"JHU1 - Johns Hopkins level 1 probabalistic arterial flow territories, without ventricles (default); "
|
|
107
|
-
"JHU2 - Johns Hopkins level 2 probabalistic arterial flow territories, without ventricles."
|
|
108
|
-
),
|
|
109
|
-
choices=["ASPECTS", "ATT", "JHU1", "JHU2"],
|
|
110
|
-
default="JHU1",
|
|
111
|
-
)
|
|
112
|
-
atlasopts.add_argument(
|
|
113
|
-
"--customatlas",
|
|
114
|
-
help=(
|
|
115
|
-
"The name of a custom atlas file. The file must be a 3D NIFTI "
|
|
116
|
-
"file in MNI152NLin6Asym space, 2mm isotropic resolution. The file values "
|
|
117
|
-
"must be consecutive integers from 1 to N with no missing values. There "
|
|
118
|
-
"must be a text file with an identical path and name (but with .txt instead of .nii.gz "
|
|
119
|
-
"as the extension) containing the name of every region on a separate line. This argument "
|
|
120
|
-
"overrides the --atlas argument."
|
|
121
|
-
),
|
|
122
|
-
type=lambda x: pf.is_valid_file(parser, x),
|
|
123
|
-
default=None,
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
fitopts = parser.add_argument_group("Fitting options")
|
|
127
|
-
fitopts.add_argument(
|
|
128
|
-
"--fitorder",
|
|
129
|
-
help="order of polynomial fit to template (default is 1).",
|
|
130
|
-
type=int,
|
|
131
|
-
default=1,
|
|
132
|
-
)
|
|
133
|
-
fitopts.add_argument(
|
|
134
|
-
"--nointercept",
|
|
135
|
-
help="do not use the zeroth order component when fitting",
|
|
136
|
-
action="store_true",
|
|
137
|
-
)
|
|
138
|
-
fitopts.add_argument(
|
|
139
|
-
"--limittomask",
|
|
140
|
-
help="only calculate fitdiff in masked region",
|
|
141
|
-
action="store_true",
|
|
142
|
-
)
|
|
143
|
-
fitopts.add_argument(
|
|
144
|
-
"--template",
|
|
145
|
-
help=(
|
|
146
|
-
"Template to fit. Default is 'lag'. Options are\n"
|
|
147
|
-
"\tlag: time lag in seconds\n"
|
|
148
|
-
"\tstrength: correlation coefficient\n"
|
|
149
|
-
"\tsigma: correlation peak width in seconds\n"
|
|
150
|
-
"\tconstant: constant value (forces fit order to 0).\n"
|
|
151
|
-
),
|
|
152
|
-
choices=["lag", "strength", "sigma", "constant"],
|
|
153
|
-
default="lag",
|
|
154
|
-
)
|
|
155
|
-
fitopts.add_argument(
|
|
156
|
-
"--entropybins",
|
|
157
|
-
help="number of bins in the entropy histogram (default is 101).",
|
|
158
|
-
type=int,
|
|
159
|
-
default=101,
|
|
160
|
-
)
|
|
161
|
-
|
|
162
|
-
fitopts.add_argument(
|
|
163
|
-
"--entropyrange",
|
|
164
|
-
dest="entropyrange",
|
|
165
|
-
action="store",
|
|
166
|
-
nargs=2,
|
|
167
|
-
type=float,
|
|
168
|
-
metavar=("LOWERLIM", "UPPERLIM"),
|
|
169
|
-
help=(
|
|
170
|
-
"Upper and lower limits of the range for the entropy histogram "
|
|
171
|
-
"(default is to use data min and max)."
|
|
172
|
-
),
|
|
173
|
-
default=None,
|
|
174
|
-
)
|
|
175
|
-
|
|
176
|
-
miscopts = parser.add_argument_group("Fitting options")
|
|
177
|
-
miscopts.add_argument(
|
|
178
|
-
"--debug",
|
|
179
|
-
help="output additional debugging information",
|
|
180
|
-
action="store_true",
|
|
181
|
-
default=False,
|
|
182
|
-
)
|
|
183
|
-
|
|
184
|
-
return parser
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
def fingerprint_main(
|
|
188
|
-
themapname,
|
|
189
|
-
whichtemplate,
|
|
190
|
-
whichatlas,
|
|
191
|
-
outputroot,
|
|
192
|
-
fitorder,
|
|
193
|
-
includespec=None,
|
|
194
|
-
excludespec=None,
|
|
195
|
-
extramaskname=None,
|
|
196
|
-
intercept=True,
|
|
197
|
-
entropybins=101,
|
|
198
|
-
entropyrange=None,
|
|
199
|
-
debug=False,
|
|
200
|
-
):
|
|
201
|
-
# read the data
|
|
202
|
-
referencedir = tide_util.findreferencedir()
|
|
203
|
-
if debug:
|
|
204
|
-
print(f"Reference directory is {referencedir}")
|
|
205
|
-
|
|
206
|
-
if whichtemplate == "lag":
|
|
207
|
-
thetemplatename = os.path.join(referencedir, "HCP1200_lag_2mm.nii.gz")
|
|
208
|
-
elif whichtemplate == "strength":
|
|
209
|
-
thetemplatename = os.path.join(referencedir, "HCP1200_strength_2mm.nii.gz")
|
|
210
|
-
elif whichtemplate == "sigma":
|
|
211
|
-
thetemplatename = os.path.join(referencedir, "HCP1200_sigma_2mm.nii.gz")
|
|
212
|
-
elif whichtemplate == "constant":
|
|
213
|
-
thetemplatename = None
|
|
214
|
-
else:
|
|
215
|
-
print("illegal template:", whichtemplate)
|
|
216
|
-
sys.exit()
|
|
217
|
-
|
|
218
|
-
if whichatlas == "ASPECTS":
|
|
219
|
-
theatlasname = os.path.join(referencedir, "ASPECTS_2mm.nii.gz")
|
|
220
|
-
theatlasregionsname = os.path.join(referencedir, "ASPECTS_regions.txt")
|
|
221
|
-
elif whichatlas == "ATT":
|
|
222
|
-
theatlasname = os.path.join(referencedir, "ATTbasedFlowTerritories_split_2mm.nii.gz")
|
|
223
|
-
theatlasregionsname = os.path.join(
|
|
224
|
-
referencedir, "ATTbasedFlowTerritories_split_regions.txt"
|
|
225
|
-
)
|
|
226
|
-
elif whichatlas == "JHU1":
|
|
227
|
-
theatlasname = os.path.join(
|
|
228
|
-
referencedir, "JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm.nii.gz"
|
|
229
|
-
)
|
|
230
|
-
theatlasregionsname = os.path.join(
|
|
231
|
-
referencedir, "JHU-ArterialTerritoriesNoVent-LVL1_regions.txt"
|
|
232
|
-
)
|
|
233
|
-
elif whichatlas == "JHU2":
|
|
234
|
-
theatlasname = os.path.join(
|
|
235
|
-
referencedir, "JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm.nii.gz"
|
|
236
|
-
)
|
|
237
|
-
theatlasregionsname = os.path.join(
|
|
238
|
-
referencedir, "JHU-ArterialTerritoriesNoVent-LVL2_regions.txt"
|
|
239
|
-
)
|
|
240
|
-
elif whichatlas[:5] == "USER_":
|
|
241
|
-
theatlasname = whichatlas[5:]
|
|
242
|
-
theatlasregionsname = theatlasname.replace(".nii.gz", ".txt")
|
|
243
|
-
whichatlas = "USER"
|
|
244
|
-
else:
|
|
245
|
-
print("illegal atlas:", whichatlas)
|
|
246
|
-
sys.exit()
|
|
247
|
-
|
|
248
|
-
outputroot += f"_template-{whichtemplate}_atlas-{whichatlas}_O{fitorder}"
|
|
249
|
-
|
|
250
|
-
# read the atlas
|
|
251
|
-
if debug:
|
|
252
|
-
print(f"Reading atlas {theatlasname}")
|
|
253
|
-
atlas, atlas_data, atlas_hdr, atlasdims, atlassizes = tide_io.readfromnifti(theatlasname)
|
|
254
|
-
atlaslabelsinput = pd.read_csv(
|
|
255
|
-
theatlasregionsname, delimiter="\t", header=None, names=["Region"]
|
|
256
|
-
)
|
|
257
|
-
|
|
258
|
-
# read the template
|
|
259
|
-
if thetemplatename is not None:
|
|
260
|
-
if debug:
|
|
261
|
-
print(f"reading atlas file {theatlasname}")
|
|
262
|
-
(
|
|
263
|
-
thetemplate,
|
|
264
|
-
thetemplate_data,
|
|
265
|
-
thetemplate_hdr,
|
|
266
|
-
thetemplatedims,
|
|
267
|
-
thetemplatesizes,
|
|
268
|
-
) = tide_io.readfromnifti(thetemplatename)
|
|
269
|
-
else:
|
|
270
|
-
thetemplate_data = atlas_data * 0.0
|
|
271
|
-
thetemplate_data[np.where(atlas_data > 0)] = 1.0
|
|
272
|
-
|
|
273
|
-
if debug:
|
|
274
|
-
print(f"reading map file {themapname}")
|
|
275
|
-
(
|
|
276
|
-
themap,
|
|
277
|
-
themap_data,
|
|
278
|
-
themap_hdr,
|
|
279
|
-
themapdims,
|
|
280
|
-
thetemplatesizes,
|
|
281
|
-
) = tide_io.readfromnifti(themapname)
|
|
282
|
-
nx, ny, nz, nummaps = tide_io.parseniftidims(themapdims)
|
|
283
|
-
|
|
284
|
-
# process masks
|
|
285
|
-
if includespec is not None:
|
|
286
|
-
(
|
|
287
|
-
includename,
|
|
288
|
-
includevals,
|
|
289
|
-
) = tide_io.processnamespec(
|
|
290
|
-
includespec, "Including voxels where ", "in offset calculation."
|
|
291
|
-
)
|
|
292
|
-
else:
|
|
293
|
-
includename = None
|
|
294
|
-
includevals = None
|
|
295
|
-
if excludespec is not None:
|
|
296
|
-
(
|
|
297
|
-
excludename,
|
|
298
|
-
excludevals,
|
|
299
|
-
) = tide_io.processnamespec(
|
|
300
|
-
excludespec, "Excluding voxels where ", "from offset calculation."
|
|
301
|
-
)
|
|
302
|
-
else:
|
|
303
|
-
excludename = None
|
|
304
|
-
excludevals = None
|
|
305
|
-
|
|
306
|
-
numspatiallocs = int(nx) * int(ny) * int(nz)
|
|
307
|
-
includemask, excludemask, extramask = tide_mask.getmaskset(
|
|
308
|
-
"anatomic",
|
|
309
|
-
includename,
|
|
310
|
-
includevals,
|
|
311
|
-
excludename,
|
|
312
|
-
excludevals,
|
|
313
|
-
themap_hdr,
|
|
314
|
-
numspatiallocs,
|
|
315
|
-
extramask=extramaskname,
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
theflatmask = themap_data.reshape((numspatiallocs)) * 0 + 1
|
|
319
|
-
if includemask is not None:
|
|
320
|
-
theflatmask = theflatmask * includemask.reshape((numspatiallocs))
|
|
321
|
-
if excludemask is not None:
|
|
322
|
-
theflatmask = theflatmask * (1 - excludemask.reshape((numspatiallocs)))
|
|
323
|
-
if extramask is not None:
|
|
324
|
-
theflatmask = theflatmask * extramask.reshape((numspatiallocs))
|
|
325
|
-
|
|
326
|
-
# generate the mask
|
|
327
|
-
themask_data = theflatmask.reshape((nx, ny, nz))
|
|
328
|
-
maskmap = themask_data
|
|
329
|
-
maskmap[np.where(atlas_data < 1)] = 0.0
|
|
330
|
-
|
|
331
|
-
# save the maskmap as nifti
|
|
332
|
-
themaskmaphdr = copy.deepcopy(themap_hdr)
|
|
333
|
-
themaskmaphdr["dim"][0] = 3
|
|
334
|
-
themaskmaphdr["dim"][4] = 1
|
|
335
|
-
tide_io.savetonifti(maskmap, themaskmaphdr, outputroot + "_maskmap")
|
|
336
|
-
|
|
337
|
-
# get ready to do the fitting
|
|
338
|
-
numregions = len(atlaslabelsinput)
|
|
339
|
-
if intercept:
|
|
340
|
-
numcoffs = fitorder + 1
|
|
341
|
-
else:
|
|
342
|
-
numcoffs = fitorder
|
|
343
|
-
coff_array = np.zeros((numcoffs, numregions, nummaps), dtype="float")
|
|
344
|
-
R_array = np.zeros((numregions, nummaps), dtype="float")
|
|
345
|
-
|
|
346
|
-
# do the fit
|
|
347
|
-
if debug:
|
|
348
|
-
print("starting decomposition")
|
|
349
|
-
thefitmap, thecoffs, theRs = tide_fit.territorydecomp(
|
|
350
|
-
themap_data,
|
|
351
|
-
thetemplate_data,
|
|
352
|
-
atlas_data.astype(int),
|
|
353
|
-
inputmask=themask_data,
|
|
354
|
-
fitorder=fitorder,
|
|
355
|
-
intercept=intercept,
|
|
356
|
-
debug=debug,
|
|
357
|
-
)
|
|
358
|
-
|
|
359
|
-
# transfer the data into arrays
|
|
360
|
-
for whichmap in range(nummaps):
|
|
361
|
-
R_array[:, whichmap] = theRs[whichmap]
|
|
362
|
-
coff_array[:, :, whichmap] = np.transpose(thecoffs[whichmap, :, :])
|
|
363
|
-
|
|
364
|
-
# save the Rs as tsv
|
|
365
|
-
newcols = pd.DataFrame(np.transpose(R_array[:, :]))
|
|
366
|
-
newcols.columns = atlaslabelsinput["Region"]
|
|
367
|
-
newcols.to_csv(f"{outputroot}_allRs.tsv", index=False, sep="\t")
|
|
368
|
-
|
|
369
|
-
# save the fits as tsv
|
|
370
|
-
if intercept:
|
|
371
|
-
endpoint = fitorder + 1
|
|
372
|
-
offset = 0
|
|
373
|
-
else:
|
|
374
|
-
endpoint = fitorder
|
|
375
|
-
offset = 1
|
|
376
|
-
for i in range(0, endpoint):
|
|
377
|
-
newcols = pd.DataFrame(np.transpose(coff_array[i, :, :]))
|
|
378
|
-
newcols.columns = atlaslabelsinput["Region"]
|
|
379
|
-
newcols.to_csv(f"{outputroot}_fit_O{str(i + offset)}.tsv", index=False, sep="\t")
|
|
380
|
-
|
|
381
|
-
# save the fit data as nifti
|
|
382
|
-
if args.limittomask:
|
|
383
|
-
if nummaps == 1:
|
|
384
|
-
savemap = thefitmap * maskmap
|
|
385
|
-
else:
|
|
386
|
-
savemap = thefitmap * maskmap[:, :, :, None]
|
|
387
|
-
else:
|
|
388
|
-
savemap = thefitmap
|
|
389
|
-
tide_io.savetonifti(savemap, themap_hdr, outputroot + "_fit")
|
|
390
|
-
|
|
391
|
-
# save the fit error
|
|
392
|
-
if args.limittomask:
|
|
393
|
-
if nummaps == 1:
|
|
394
|
-
diffmap = (themap_data - thefitmap) * maskmap
|
|
395
|
-
else:
|
|
396
|
-
diffmap = (themap_data - thefitmap) * maskmap[:, :, :, None]
|
|
397
|
-
else:
|
|
398
|
-
diffmap = themap_data - thefitmap
|
|
399
|
-
tide_io.savetonifti(diffmap, themap_hdr, outputroot + "_fitdiff")
|
|
400
|
-
|
|
401
|
-
# save the Rs as nifti
|
|
402
|
-
thehdr = copy.deepcopy(themap_hdr)
|
|
403
|
-
print(f"shape of R_array: {R_array.shape}")
|
|
404
|
-
print(f"thehdr before: {thehdr['dim']}")
|
|
405
|
-
thehdr["dim"][0] = 2
|
|
406
|
-
thehdr["dim"][1] = R_array.shape[0]
|
|
407
|
-
thehdr["dim"][2] = R_array.shape[1]
|
|
408
|
-
thehdr["dim"][3] = 1
|
|
409
|
-
thehdr["dim"][4] = 1
|
|
410
|
-
print(f"thehdr after: {thehdr['dim']}")
|
|
411
|
-
thehdr["pixdim"][0] = 1.0
|
|
412
|
-
thehdr["pixdim"][1] = 1.0
|
|
413
|
-
thehdr["pixdim"][2] = 1.0
|
|
414
|
-
thehdr["pixdim"][3] = 1.0
|
|
415
|
-
thehdr["pixdim"][4] = 1.0
|
|
416
|
-
tide_io.savetonifti(R_array, thehdr, outputroot + "_allRs")
|
|
417
|
-
|
|
418
|
-
# save the fit coefficients as nifti
|
|
419
|
-
thehdr = copy.deepcopy(themap_hdr)
|
|
420
|
-
print(f"shape of coff_array: {coff_array.shape}")
|
|
421
|
-
print(f"thehdr before: {thehdr['dim']}")
|
|
422
|
-
thehdr["dim"][0] = 3
|
|
423
|
-
thehdr["dim"][1] = coff_array.shape[0]
|
|
424
|
-
thehdr["dim"][2] = coff_array.shape[1]
|
|
425
|
-
thehdr["dim"][3] = coff_array.shape[2]
|
|
426
|
-
thehdr["dim"][4] = 1
|
|
427
|
-
print(f"thehdr after: {thehdr['dim']}")
|
|
428
|
-
thehdr["pixdim"][0] = 1.0
|
|
429
|
-
thehdr["pixdim"][1] = 1.0
|
|
430
|
-
thehdr["pixdim"][2] = 1.0
|
|
431
|
-
thehdr["pixdim"][3] = 1.0
|
|
432
|
-
thehdr["pixdim"][4] = 1.0
|
|
433
|
-
tide_io.savetonifti(coff_array, thehdr, outputroot + "_allcoffs")
|
|
434
|
-
|
|
435
|
-
# now do the stats
|
|
436
|
-
# first on the initial map
|
|
437
|
-
(
|
|
438
|
-
statsmap,
|
|
439
|
-
themeans,
|
|
440
|
-
thestds,
|
|
441
|
-
themedians,
|
|
442
|
-
themads,
|
|
443
|
-
thevariances,
|
|
444
|
-
theskewnesses,
|
|
445
|
-
thekurtoses,
|
|
446
|
-
theentropies,
|
|
447
|
-
) = tide_fit.territorystats(
|
|
448
|
-
themap_data,
|
|
449
|
-
atlas_data.astype(int),
|
|
450
|
-
inputmask=themask_data,
|
|
451
|
-
entropybins=entropybins,
|
|
452
|
-
entropyrange=entropyrange,
|
|
453
|
-
debug=debug,
|
|
454
|
-
)
|
|
455
|
-
|
|
456
|
-
# then on the residuals after fitting
|
|
457
|
-
(
|
|
458
|
-
residualstatsmap,
|
|
459
|
-
theresidualmeans,
|
|
460
|
-
theresidualstds,
|
|
461
|
-
theresidualmedians,
|
|
462
|
-
theresidualmads,
|
|
463
|
-
theresidualvariances,
|
|
464
|
-
theresidualskewnesses,
|
|
465
|
-
theresidualkurtoses,
|
|
466
|
-
theresidualentropies,
|
|
467
|
-
) = tide_fit.territorystats(
|
|
468
|
-
diffmap,
|
|
469
|
-
atlas_data.astype(int),
|
|
470
|
-
inputmask=themask_data,
|
|
471
|
-
entropybins=entropybins,
|
|
472
|
-
entropyrange=entropyrange,
|
|
473
|
-
debug=debug,
|
|
474
|
-
)
|
|
475
|
-
|
|
476
|
-
# Organize the data
|
|
477
|
-
mean_array = np.zeros((numregions, nummaps), dtype="float")
|
|
478
|
-
std_array = np.zeros((numregions, nummaps), dtype="float")
|
|
479
|
-
median_array = np.zeros((numregions, nummaps), dtype="float")
|
|
480
|
-
variance_array = np.zeros((numregions, nummaps), dtype="float")
|
|
481
|
-
skewness_array = np.zeros((numregions, nummaps), dtype="float")
|
|
482
|
-
kurtosis_array = np.zeros((numregions, nummaps), dtype="float")
|
|
483
|
-
mad_array = np.zeros((numregions, nummaps), dtype="float")
|
|
484
|
-
entropy_array = np.zeros((numregions, nummaps), dtype="float")
|
|
485
|
-
residual_mean_array = np.zeros((numregions, nummaps), dtype="float")
|
|
486
|
-
residual_std_array = np.zeros((numregions, nummaps), dtype="float")
|
|
487
|
-
residual_median_array = np.zeros((numregions, nummaps), dtype="float")
|
|
488
|
-
residual_mad_array = np.zeros((numregions, nummaps), dtype="float")
|
|
489
|
-
residual_variance_array = np.zeros((numregions, nummaps), dtype="float")
|
|
490
|
-
residual_skewness_array = np.zeros((numregions, nummaps), dtype="float")
|
|
491
|
-
residual_kurtosis_array = np.zeros((numregions, nummaps), dtype="float")
|
|
492
|
-
residual_entropy_array = np.zeros((numregions, nummaps), dtype="float")
|
|
493
|
-
|
|
494
|
-
for whichmap in range(nummaps):
|
|
495
|
-
atlaslabels = atlaslabelsinput.copy()
|
|
496
|
-
|
|
497
|
-
mean_array[:, whichmap] = themeans[whichmap]
|
|
498
|
-
std_array[:, whichmap] = thestds[whichmap]
|
|
499
|
-
median_array[:, whichmap] = themedians[whichmap]
|
|
500
|
-
mad_array[:, whichmap] = themads[whichmap]
|
|
501
|
-
variance_array[:, whichmap] = thevariances[whichmap]
|
|
502
|
-
skewness_array[:, whichmap] = theskewnesses[whichmap]
|
|
503
|
-
kurtosis_array[:, whichmap] = thekurtoses[whichmap]
|
|
504
|
-
entropy_array[:, whichmap] = theentropies[whichmap]
|
|
505
|
-
|
|
506
|
-
residual_mean_array[:, whichmap] = theresidualmeans[whichmap]
|
|
507
|
-
residual_std_array[:, whichmap] = theresidualstds[whichmap]
|
|
508
|
-
residual_median_array[:, whichmap] = theresidualmedians[whichmap]
|
|
509
|
-
residual_mad_array[:, whichmap] = theresidualmads[whichmap]
|
|
510
|
-
residual_variance_array[:, whichmap] = theresidualvariances[whichmap]
|
|
511
|
-
residual_skewness_array[:, whichmap] = theresidualskewnesses[whichmap]
|
|
512
|
-
residual_kurtosis_array[:, whichmap] = theresidualkurtoses[whichmap]
|
|
513
|
-
residual_entropy_array[:, whichmap] = theresidualentropies[whichmap]
|
|
514
|
-
|
|
515
|
-
newcols = pd.DataFrame(thecoffs[whichmap, :, :])
|
|
516
|
-
columnnames = []
|
|
517
|
-
if intercept:
|
|
518
|
-
startpt = 0
|
|
519
|
-
else:
|
|
520
|
-
startpt = 1
|
|
521
|
-
for i in range(startpt, fitorder + 1):
|
|
522
|
-
columnnames += str(i)
|
|
523
|
-
newcols.columns = columnnames
|
|
524
|
-
atlaslabels["R"] = theRs[whichmap]
|
|
525
|
-
atlaslabels = pd.concat([atlaslabels, newcols], axis=1)
|
|
526
|
-
atlaslabels.to_csv(f"{outputroot}_{str(whichmap).zfill(4)}_fits.tsv", sep="\t")
|
|
527
|
-
if debug:
|
|
528
|
-
print(atlaslabels)
|
|
529
|
-
|
|
530
|
-
# save the stats as tsv
|
|
531
|
-
for thestat in [
|
|
532
|
-
"mean",
|
|
533
|
-
"std",
|
|
534
|
-
"median",
|
|
535
|
-
"mad",
|
|
536
|
-
"variance",
|
|
537
|
-
"skewness",
|
|
538
|
-
"kurtosis",
|
|
539
|
-
"entropy",
|
|
540
|
-
"residual_mean",
|
|
541
|
-
"residual_std",
|
|
542
|
-
"residual_median",
|
|
543
|
-
"residual_mad",
|
|
544
|
-
"residual_variance",
|
|
545
|
-
"residual_skewness",
|
|
546
|
-
"residual_kurtosis",
|
|
547
|
-
"residual_entropy",
|
|
548
|
-
]:
|
|
549
|
-
newcols = pd.DataFrame(np.transpose(eval(f"{thestat}_array")[:, :]))
|
|
550
|
-
newcols.columns = atlaslabelsinput["Region"]
|
|
551
|
-
newcols.to_csv(f"{outputroot}_all{thestat}.tsv", index=False, sep="\t")
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
if __name__ == "__main__":
|
|
555
|
-
# get the command line parameters
|
|
556
|
-
try:
|
|
557
|
-
args = _get_parser().parse_args()
|
|
558
|
-
except SystemExit:
|
|
559
|
-
_get_parser().print_help()
|
|
560
|
-
raise
|
|
561
|
-
|
|
562
|
-
if args.debug:
|
|
563
|
-
print("before preprocessing:", args)
|
|
564
|
-
|
|
565
|
-
if args.customatlas is not None:
|
|
566
|
-
theatlas = f"USER_{args.customatlas}"
|
|
567
|
-
else:
|
|
568
|
-
theatlas = args.atlas
|
|
569
|
-
|
|
570
|
-
if args.template == "constant":
|
|
571
|
-
args.fitorder = 0
|
|
572
|
-
args.nointercept = False
|
|
573
|
-
|
|
574
|
-
if args.debug:
|
|
575
|
-
print("after preprocessing:", args)
|
|
576
|
-
|
|
577
|
-
if args.debug:
|
|
578
|
-
print(f"Using atlas {theatlas}")
|
|
579
|
-
|
|
580
|
-
fingerprint_main(
|
|
581
|
-
args.inputfile,
|
|
582
|
-
args.template,
|
|
583
|
-
theatlas,
|
|
584
|
-
args.outputroot,
|
|
585
|
-
args.fitorder,
|
|
586
|
-
intercept=not (args.nointercept),
|
|
587
|
-
includespec=args.includespec,
|
|
588
|
-
excludespec=args.excludespec,
|
|
589
|
-
extramaskname=args.extramaskname,
|
|
590
|
-
entropybins=args.entropybins,
|
|
591
|
-
entropyrange=args.entropyrange,
|
|
592
|
-
debug=args.debug,
|
|
593
|
-
)
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
# Copyright 2016-2024 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 rapidtide.workflows.fixtr as theworkflow
|
|
20
|
-
import rapidtide.workflows.parser_funcs as pf
|
|
21
|
-
|
|
22
|
-
if __name__ == "__main__":
|
|
23
|
-
pf.generic_init(theworkflow._get_parser, theworkflow.fixtr)
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#!python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
# Copyright 2016-2024 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 sys
|
|
20
|
-
|
|
21
|
-
import rapidtide.workflows.glmfilt as glmfilt_workflow
|
|
22
|
-
|
|
23
|
-
if __name__ == "__main__":
|
|
24
|
-
glmfilt_workflow.main()
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#!python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
# Copyright 2016-2024 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 rapidtide.workflows.gmscalc
|
|
20
|
-
|
|
21
|
-
if __name__ == "__main__":
|
|
22
|
-
rapidtide.workflows.gmscalc.gmscalc_main()
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#!python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
#
|
|
4
|
-
# Copyright 2016-2024 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 sys
|
|
20
|
-
|
|
21
|
-
import rapidtide.workflows.happy as happy_workflow
|
|
22
|
-
import rapidtide.workflows.happy_parser as happy_parser
|
|
23
|
-
|
|
24
|
-
if __name__ == "__main__":
|
|
25
|
-
happy_workflow.happy_main(happy_parser.process_args(inputargs=None))
|