rapidtide 3.0.7.1__tar.gz → 3.0.9__tar.gz
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.
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/CHANGELOG.md +18 -0
- {rapidtide-3.0.7.1/rapidtide.egg-info → rapidtide-3.0.9}/PKG-INFO +2 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/pyproject.toml +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/RapidtideDataset.py +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/_version.py +3 -3
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/calcnullsimfunc.py +1 -3
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/test_findmaxlag.py +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testfmri +19 -7
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testnewrefine +0 -23
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/fMRIData_class.py +29 -52
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/fit.py +4 -4
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/happy_supportfuncs.py +1 -1
- rapidtide-3.0.9/rapidtide/helper_classes.py +330 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/linfitfiltpass.py +82 -4
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/makelaggedtcs.py +10 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/refinedelay.py +11 -20
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/refineregressor.py +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/resample.py +8 -8
- rapidtide-3.0.7.1/rapidtide/helper_classes.py → rapidtide-3.0.9/rapidtide/simFuncClasses.py +13 -310
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/simfuncfit.py +30 -30
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/stats.py +5 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/.coveragerc +6 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/cleanposttest +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/runlocaltest +2 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_cleanregressor.py +3 -3
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_corrpass.py +3 -3
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_delayestimation.py +9 -8
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_findmaxlag.py +2 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunrapidtide_v3.py +2 -1
- rapidtide-3.0.9/rapidtide/tests/test_fullrunrapidtide_v8.py +66 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_getparsers.py +14 -6
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_io.py +2 -6
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_nullcorr.py +3 -3
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_refinedelay.py +20 -5
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate_alt.py +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/util.py +7 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/voxelData.py +3 -6
- rapidtide-3.0.9/rapidtide/workflows/calcSimFuncMap.py +271 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/cleanregressor.py +2 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/delayvar.py +45 -59
- rapidtide-3.0.9/rapidtide/workflows/fitSimFuncMap.py +427 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/happy.py +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/rapidtide.py +499 -877
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/rapidtide_parser.py +26 -38
- rapidtide-3.0.9/rapidtide/workflows/refineDelayMap.py +138 -0
- rapidtide-3.0.7.1/rapidtide/RegressorRefiner.py → rapidtide-3.0.9/rapidtide/workflows/refineRegressor.py +200 -28
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/regressfrommaps.py +38 -30
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/retrolagtcs.py +5 -6
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/retroregress.py +73 -191
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/showarbcorr.py +2 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/showxcorrx.py +5 -5
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/tidepool.py +5 -5
- {rapidtide-3.0.7.1 → rapidtide-3.0.9/rapidtide.egg-info}/PKG-INFO +2 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide.egg-info/SOURCES.txt +6 -2
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide.egg-info/requires.txt +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/setup.py +2 -1
- rapidtide-3.0.7.1/rapidtide/workflows/delayestimation.py +0 -483
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/CODE_OF_CONDUCT.md +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/CONTRIBUTING.md +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/INSTALL.rst +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/LICENSE +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/MANIFEST.in +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/README.rst +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/TODO.md +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/USAGE.rst +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/download-nda-data +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/downloadcmd-auther +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/gmscalc-HCPYA +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/list-rapidtide-relevant-images +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/mount-and-run +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/rapidtide-HCPYA +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/rapidtide-cloud-test +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/cloud/simple-cp-test +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/Colortables.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/OrthoImageItem.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/__init__.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/calccoherence.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/calcsimfunc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/correlate.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/installtestdata +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/test_io +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/test_mlregressallt.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/test_rapidtidecompare +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testalign +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testatlasaverage +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testboth +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testcifti +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testcomplex +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testdecomp +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testdelayvar +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testfileorfloat +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testfingerprint +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testfmridocker +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testfrozen +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testfuncs +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testglmfilt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testhappy +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testinitdelay +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testlinfit +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testlocalflow +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testmodels +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testnoiseamp +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testoscorr +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testpad +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testrefineonly +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testretro +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testretrolagtcs +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/examples/src/testsimdata +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/loss.png +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/loss.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/model.keras +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/model_meta.json +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_revised_tf2/model.keras +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_revised_tf2/model_meta.json +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_serdar2_tf2/model_meta.json +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/models/model_serdar_tf2/model_meta.json +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ASPECTS_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ASPECTS_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ASPECTS_3mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ASPECTS_3mm_mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ASPECTS_regions.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/ATTbasedFlowTerritories_split_regions.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200_lag_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200_sigma_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200_strength_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_graylaghist.json +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_laghist.json +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_whitelaghist.json +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1.xml +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_regions.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2.xml +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_regions.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/MNI152_T1_3mm.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/MNI152_T1_3mm_brain_mask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/data/reference/slicetimes/HCP-YA_slicetimes.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/dlfilter.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/externaltools.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/filter.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/genericmultiproc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/io.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/maskutil.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/miscmath.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/multiproc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/patchmatch.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/peakeval.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/qualitycheck.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/__init__.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/adjustoffset.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/aligntcs.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/applydlfilter.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/atlasaverage.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/atlastool.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/calcicc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/calctexticc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/calcttest.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/ccorrica.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/delayvar.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/diffrois.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/endtidalproc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/fdica.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/filtnifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/filttc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/fingerprint.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/fixtr.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/gmscalc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/happy.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/happy2std.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/happywarp.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/histnifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/histtc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/linfitfilt.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/localflow.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/mergequality.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/pairproc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/pairwisemergenifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/physiofreq.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/pixelcomp.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/plethquality.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/polyfitim.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/proj2flow.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/rankimage.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/rapidtide.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/rapidtide2std.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/resamplenifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/resampletc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/retrolagtcs.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/retroregress.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/roisummarize.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/runqualitycheck.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/showarbcorr.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/showhist.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/showstxcorr.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/showtc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/showxcorr_legacy.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/showxcorrx.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/showxy.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/simdata.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/spatialdecomp.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/spatialfit.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/spatialmi.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/spectrogram.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/stupidramtricks.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/synthASL.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/tcfrom2col.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/tcfrom3col.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/temporaldecomp.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/testhrv.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/threeD.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/tidepool.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/scripts/variabilityizer.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/__init__.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/matplotlibrc +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/resethappytargets +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/resetrapidtidetargets +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/resettargets +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/showdirectories +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/showkernels +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_aliasedcorrelate.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_aligntcs.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_calcicc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_congrid.py +1 -1
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_correlate.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_doresample.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_externaltools.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fastresampler.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_filter.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunhappy_v1.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunhappy_v2.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunhappy_v3.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunhappy_v4.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunhappy_v5.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunrapidtide_v1.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunrapidtide_v2.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunrapidtide_v4.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunrapidtide_v5.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunrapidtide_v6.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_fullrunrapidtide_v7.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_linfitfiltpass.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_mi.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_miscmath.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_motionregress.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_padvec.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_parserfuncs.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_phaseanalysis.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_rapidtideparser.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_runmisc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_sharedmem.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_simulate.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_stcorrelate.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_timeshift.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_valtoindex.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/test_zRapidtideDataset.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_info.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_normpleth_25.0Hz.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_pleth_25.0Hz.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/100206_REST1_LR_pleth_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/fmri_globalmean.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/happy_phase1target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/happy_phase2output_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/happy_target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/lforegressor.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/lt_rt.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/phasetest.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/rapidtide2x_phase1target_reference_fmrires.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/stcorrtest_Rvalue.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/stcorrtest_delay.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/stcorrtest_mask.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/stcorrtest_pearson.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/stcorrtest_pvalue.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/testdata/testfilt.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/tmp/.placeholder.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/usercustomize.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tests/utils.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate.ui +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate_alt.ui +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate_alt_qt6.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate_big.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate_big.ui +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate_big_qt6.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/tidepoolTemplate_qt6.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/wiener.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/wiener2.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/__init__.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/adjustoffset.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/aligntcs.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/applydlfilter.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/atlasaverage.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/atlastool.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/calctexticc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/ccorrica.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/diffrois.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/endtidalproc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/fdica.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/filtnifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/filttc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/fixtr.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/gmscalc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/happy2std.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/happy_parser.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/histnifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/histtc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/linfitfilt.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/localflow.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/mergequality.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/niftidecomp.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/niftistats.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/pairproc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/pairwisemergenifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/parser_funcs.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/physiofreq.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/pixelcomp.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/plethquality.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/polyfitim.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/proj2flow.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/rankimage.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/rapidtide2std.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/resamplenifti.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/resampletc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/roisummarize.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/runqualitycheck.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/showhist.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/showstxcorr.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/showtc.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/showxy.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/simdata.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/spatialfit.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/spatialmi.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/spectrogram.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/synthASL.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/tcfrom2col.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/tcfrom3col.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/utils.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide/workflows/variabilityizer.py +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide.egg-info/dependency_links.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide.egg-info/entry_points.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/rapidtide.egg-info/top_level.txt +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/setup.cfg +0 -0
- {rapidtide-3.0.7.1 → rapidtide-3.0.9}/versioneer.py +0 -0
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Release history
|
|
2
2
|
|
|
3
|
+
## Version 3.0.9 (7/3/25)
|
|
4
|
+
* (rapidtide) Added an alternative method for coarse delay estimation (set ``--similaritymetric riptide`` to select). This uses a fit to a set of delayed regressors (actually, this is the original RIPTiDe method from ~2010).
|
|
5
|
+
* (rapidtide) Separated coarse delay estimation and similarity function fitting into two separate workflows (they were together in v3.0.8).
|
|
6
|
+
* (rapidtide) Fixed a stupid bug in the placement of the delay refinement code block for each pass.
|
|
7
|
+
* (rapidtide) Laid most of the groundwork for dynamically switching delay estimation methods and parameters between passes.
|
|
8
|
+
* (package) Accepted several dependabot PRs.
|
|
9
|
+
|
|
10
|
+
## Version 3.0.8 (6/26/25)
|
|
11
|
+
* (rapidtide) Fix https://github.com/bbfrederick/rapidtide/issues/213 (thanks to https://github.com/tomosumi for reporting the bug).
|
|
12
|
+
* (rapidtide) Split coarse delay estimation and fitting out into a separate workflow.
|
|
13
|
+
* (rapidtide) Split delay refinement out into a separate workflow.
|
|
14
|
+
* (rapidtide) Split regressor refinement out into a separate workflow.
|
|
15
|
+
* (rapidtide) All this is in preparation for a new, modular workflow with more flexible control of the fitting process. It's not done yet, but this is getting all internal code blocks ready for it. I want to pause here to make sure I haven't broken anything (all the automated tests pass, but I want to be careful).
|
|
16
|
+
* (docs) Some improvement to the tidepool section.
|
|
17
|
+
* (package) Made a more streamlined and rational interface for allocating shared memory.
|
|
18
|
+
* (package) Resolved incompatibility of statsmodels and scipy>1.15.3.
|
|
19
|
+
* (package) Accepted several dependabot PRs.
|
|
20
|
+
|
|
3
21
|
## Version 3.0.7.1 (6/16/25)
|
|
4
22
|
* (rapidtide) Disabled sLFO filtering by default. Use ``sLFOfiltmask`` to turn it on.
|
|
5
23
|
* (retroregress) Synced with sLFO filtering changes to rapidtide.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rapidtide
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.9
|
|
4
4
|
Summary: Tools for performing correlation analysis on fMRI data.
|
|
5
5
|
Author: Taylor Salo, Daniel M. Drucker, Ph.D., Jeffrey N Stout, Yaroslav O. Halchenko, Derek Monroe
|
|
6
6
|
Author-email: "Blaise deB. Frederick" <blaise.frederick@gmail.com>
|
|
@@ -24,7 +24,7 @@ Requires-Python: >=3.9
|
|
|
24
24
|
Description-Content-Type: text/x-rst
|
|
25
25
|
License-File: LICENSE
|
|
26
26
|
Requires-Dist: numpy
|
|
27
|
-
Requires-Dist: scipy
|
|
27
|
+
Requires-Dist: scipy<=1.15.3
|
|
28
28
|
Requires-Dist: pandas
|
|
29
29
|
Requires-Dist: pyarrow
|
|
30
30
|
Requires-Dist: scikit-image
|
|
@@ -408,7 +408,7 @@ class Overlay:
|
|
|
408
408
|
|
|
409
409
|
def maskData(self):
|
|
410
410
|
self.mask = self.geommask * self.funcmask
|
|
411
|
-
maskhash = hash(self.mask.
|
|
411
|
+
maskhash = hash(self.mask.tobytes())
|
|
412
412
|
# these operations are expensive, so only do them if the mask is changed
|
|
413
413
|
if (maskhash == self.maskhash) and (self.verbose > 1):
|
|
414
414
|
print("mask has not changed")
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-
|
|
11
|
+
"date": "2025-07-03T10:21:49-0400",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "3.0.
|
|
14
|
+
"full-revisionid": "292e93bbd0a9c13e2d62a00746e14522b0783156",
|
|
15
|
+
"version": "3.0.9"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -18,13 +18,11 @@
|
|
|
18
18
|
#
|
|
19
19
|
import sys
|
|
20
20
|
|
|
21
|
-
|
|
22
21
|
import numpy as np
|
|
23
22
|
|
|
24
|
-
|
|
25
23
|
import rapidtide.filter as tide_filt
|
|
26
|
-
import rapidtide.miscmath as tide_math
|
|
27
24
|
import rapidtide.genericmultiproc as tide_genericmultiproc
|
|
25
|
+
import rapidtide.miscmath as tide_math
|
|
28
26
|
|
|
29
27
|
|
|
30
28
|
# note: rawtimecourse has been filtered, but NOT windowed
|
|
@@ -24,8 +24,8 @@ import matplotlib.pyplot as plt
|
|
|
24
24
|
import numpy as np
|
|
25
25
|
|
|
26
26
|
import rapidtide.fit as tide_fit
|
|
27
|
-
import rapidtide.helper_classes as tide_classes
|
|
28
27
|
import rapidtide.io as tide_io
|
|
28
|
+
import rapidtide.simFuncClasses as tide_classes
|
|
29
29
|
from rapidtide.tests.utils import get_examples_path
|
|
30
30
|
|
|
31
31
|
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
3
|
rapidtide \
|
|
4
|
-
--spatialfilt
|
|
4
|
+
--spatialfilt 2.5 \
|
|
5
5
|
--nprocs -1 \
|
|
6
|
-
--searchrange -5
|
|
6
|
+
--searchrange -7.5 30 \
|
|
7
7
|
--simcalcrange 50 -1 \
|
|
8
8
|
--outputlevel more \
|
|
9
|
-
--sLFOfiltmask \
|
|
10
9
|
--graymattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_GRAY \
|
|
11
10
|
--brainmask sub-RAPIDTIDETEST_brainmask.nii.gz \
|
|
12
11
|
--whitemattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_WHITE \
|
|
13
12
|
--csfmask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_CSF \
|
|
14
13
|
--cleanrefined \
|
|
14
|
+
--nofitfilt \
|
|
15
|
+
--refinedelayeachpass \
|
|
16
|
+
--similaritymetric correlation \
|
|
15
17
|
sub-RAPIDTIDETEST.nii.gz \
|
|
16
|
-
../dst/sub-
|
|
18
|
+
../dst/sub-RAPIDTIDETEST_simfunc
|
|
17
19
|
|
|
18
20
|
rapidtide \
|
|
19
|
-
--spatialfilt
|
|
21
|
+
--spatialfilt 2.5 \
|
|
20
22
|
--nprocs -1 \
|
|
21
|
-
--searchrange -5
|
|
23
|
+
--searchrange -7.5 30 \
|
|
22
24
|
--simcalcrange 50 -1 \
|
|
23
25
|
--outputlevel more \
|
|
24
26
|
--graymattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_GRAY \
|
|
@@ -26,5 +28,15 @@ rapidtide \
|
|
|
26
28
|
--whitemattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_WHITE \
|
|
27
29
|
--csfmask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_CSF \
|
|
28
30
|
--cleanrefined \
|
|
31
|
+
--nofitfilt \
|
|
32
|
+
--refinedelayeachpass \
|
|
33
|
+
--similaritymetric riptide \
|
|
34
|
+
--riptidestep 1.5 \
|
|
35
|
+
--ampthresh 0.0 \
|
|
36
|
+
--numnull 0 \
|
|
29
37
|
sub-RAPIDTIDETEST.nii.gz \
|
|
30
|
-
../dst/sub-
|
|
38
|
+
../dst/sub-RAPIDTIDETEST_riptide
|
|
39
|
+
|
|
40
|
+
tidepool --uistyle big --dataset \
|
|
41
|
+
../dst/sub-RAPIDTIDETEST_simfunc_ \
|
|
42
|
+
../dst/sub-RAPIDTIDETEST_riptide_ &
|
|
@@ -6,28 +6,15 @@ rapidtide \
|
|
|
6
6
|
--searchrange -5 20 \
|
|
7
7
|
--simcalcrange 50 -1 \
|
|
8
8
|
--outputlevel max \
|
|
9
|
-
--refineregressderivs 1 \
|
|
10
9
|
sub-RAPIDTIDETEST.nii.gz \
|
|
11
10
|
../dst/sub-RAPIDTIDETEST_1deriv
|
|
12
11
|
|
|
13
|
-
rapidtide \
|
|
14
|
-
--spatialfilt -1 \
|
|
15
|
-
--nprocs -1 \
|
|
16
|
-
--searchrange -5 20 \
|
|
17
|
-
--simcalcrange 50 -1 \
|
|
18
|
-
--outputlevel max \
|
|
19
|
-
--refineregressderivs 2 \
|
|
20
|
-
sub-RAPIDTIDETEST.nii.gz \
|
|
21
|
-
../dst/sub-RAPIDTIDETEST_2deriv
|
|
22
|
-
|
|
23
|
-
|
|
24
12
|
retroregress \
|
|
25
13
|
sub-RAPIDTIDETEST.nii.gz \
|
|
26
14
|
../dst/sub-RAPIDTIDETEST_1deriv \
|
|
27
15
|
--alternateoutput ../dst/retrotest_1to1 \
|
|
28
16
|
--nprocs -1 \
|
|
29
17
|
--regressderivs 0 \
|
|
30
|
-
--refineregressderivs 1 \
|
|
31
18
|
--outputlevel max
|
|
32
19
|
|
|
33
20
|
retroregress \
|
|
@@ -36,14 +23,4 @@ retroregress \
|
|
|
36
23
|
--alternateoutput ../dst/retrotest_2to1 \
|
|
37
24
|
--nprocs -1 \
|
|
38
25
|
--regressderivs 0 \
|
|
39
|
-
--refineregressderivs 1 \
|
|
40
|
-
--outputlevel max
|
|
41
|
-
|
|
42
|
-
retroregress \
|
|
43
|
-
sub-RAPIDTIDETEST.nii.gz \
|
|
44
|
-
../dst/sub-RAPIDTIDETEST_1deriv \
|
|
45
|
-
--alternateoutput ../dst/retrotest_1to2 \
|
|
46
|
-
--nprocs -1 \
|
|
47
|
-
--regressderivs 0 \
|
|
48
|
-
--refineregressderivs 2 \
|
|
49
26
|
--outputlevel max
|
|
@@ -16,21 +16,9 @@
|
|
|
16
16
|
# limitations under the License.
|
|
17
17
|
#
|
|
18
18
|
#
|
|
19
|
-
import sys
|
|
20
|
-
import warnings
|
|
21
|
-
|
|
22
|
-
import matplotlib.pyplot as plt
|
|
23
19
|
import numpy as np
|
|
24
|
-
import scipy as sp
|
|
25
|
-
from numpy.polynomial import Polynomial
|
|
26
|
-
from scipy.optimize import curve_fit
|
|
27
|
-
from statsmodels.robust import mad
|
|
28
20
|
|
|
29
|
-
import rapidtide.
|
|
30
|
-
import rapidtide.filter as tide_filt
|
|
31
|
-
import rapidtide.fit as tide_fit
|
|
32
|
-
import rapidtide.miscmath as tide_math
|
|
33
|
-
import rapidtide.util as tide_util
|
|
21
|
+
import rapidtide.io as tide_io
|
|
34
22
|
|
|
35
23
|
|
|
36
24
|
class fMRIData:
|
|
@@ -42,9 +30,7 @@ class fMRIData:
|
|
|
42
30
|
mask = None
|
|
43
31
|
validvoxels = None
|
|
44
32
|
filename = None
|
|
45
|
-
|
|
46
|
-
fileiscifti = False
|
|
47
|
-
fileisnifti = False
|
|
33
|
+
filetype = None
|
|
48
34
|
|
|
49
35
|
def __init__(
|
|
50
36
|
self,
|
|
@@ -110,53 +96,44 @@ class fMRIData:
|
|
|
110
96
|
####################################################
|
|
111
97
|
# Read data
|
|
112
98
|
####################################################
|
|
113
|
-
# open the fmri
|
|
99
|
+
# open the fmri datafile
|
|
114
100
|
if tide_io.checkiftext(self.filename):
|
|
115
|
-
self.
|
|
116
|
-
else:
|
|
117
|
-
self.textio = False
|
|
118
|
-
|
|
119
|
-
if self.textio:
|
|
101
|
+
self.filetype = "text"
|
|
120
102
|
self.data = tide_io.readvecs(self.filename)
|
|
121
103
|
self.header = None
|
|
122
104
|
theshape = np.shape(nim_data)
|
|
123
105
|
self.xsize = theshape[0]
|
|
124
106
|
self.ysize = 1
|
|
125
107
|
self.numslices = 1
|
|
126
|
-
self.fileiscifti = False
|
|
127
108
|
self.timepoints = theshape[1]
|
|
128
109
|
self.thesizes = [0, int(self.xsize), 1, 1, int(self.timepoints)]
|
|
129
110
|
self.numspatiallocs = int(self.xsize)
|
|
130
111
|
self.nativespaceshape = self.xsize
|
|
131
112
|
self.cifti_hdr = None
|
|
113
|
+
elif tide_io.checkifcifti(self.filename):
|
|
114
|
+
self.filetype = "cifti"
|
|
115
|
+
(
|
|
116
|
+
cifti,
|
|
117
|
+
cifti_hdr,
|
|
118
|
+
self.data,
|
|
119
|
+
self.header,
|
|
120
|
+
thedims,
|
|
121
|
+
thesizes,
|
|
122
|
+
dummy,
|
|
123
|
+
) = tide_io.readfromcifti(self.filename)
|
|
124
|
+
self.isgrayordinate = True
|
|
125
|
+
self.timepoints = nim_data.shape[1]
|
|
126
|
+
numspatiallocs = nim_data.shape[0]
|
|
127
|
+
LGR.debug(f"cifti file has {timepoints} timepoints, {numspatiallocs} numspatiallocs")
|
|
128
|
+
slicesize = numspatiallocs
|
|
129
|
+
nativespaceshape = (1, 1, 1, 1, numspatiallocs)
|
|
132
130
|
else:
|
|
133
|
-
self.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
thesizes,
|
|
142
|
-
dummy,
|
|
143
|
-
) = tide_io.readfromcifti(self.filename)
|
|
144
|
-
self.isgrayordinate = True
|
|
145
|
-
self.timepoints = nim_data.shape[1]
|
|
146
|
-
numspatiallocs = nim_data.shape[0]
|
|
147
|
-
LGR.debug(
|
|
148
|
-
f"cifti file has {timepoints} timepoints, {numspatiallocs} numspatiallocs"
|
|
149
|
-
)
|
|
150
|
-
slicesize = numspatiallocs
|
|
151
|
-
nativespaceshape = (1, 1, 1, 1, numspatiallocs)
|
|
152
|
-
else:
|
|
153
|
-
LGR.debug("input file is NIFTI")
|
|
154
|
-
nim, self.data, self.header, thedims, thesizes = tide_io.readfromnifti(
|
|
155
|
-
fmrifilename
|
|
156
|
-
)
|
|
157
|
-
optiondict["isgrayordinate"] = False
|
|
158
|
-
xsize, ysize, numslices, timepoints = tide_io.parseniftidims(thedims)
|
|
159
|
-
numspatiallocs = int(xsize) * int(ysize) * int(numslices)
|
|
160
|
-
cifti_hdr = None
|
|
161
|
-
nativespaceshape = (xsize, ysize, numslices)
|
|
131
|
+
self.filetype = "nifti"
|
|
132
|
+
LGR.debug("input file is NIFTI")
|
|
133
|
+
nim, self.data, self.header, thedims, thesizes = tide_io.readfromnifti(fmrifilename)
|
|
134
|
+
optiondict["isgrayordinate"] = False
|
|
135
|
+
xsize, ysize, numslices, timepoints = tide_io.parseniftidims(thedims)
|
|
136
|
+
numspatiallocs = int(xsize) * int(ysize) * int(numslices)
|
|
137
|
+
cifti_hdr = None
|
|
138
|
+
nativespaceshape = (xsize, ysize, numslices)
|
|
162
139
|
xdim, ydim, slicethickness, tr = tide_io.parseniftisizes(thesizes)
|
|
@@ -1469,11 +1469,11 @@ def getpeaks(xvals, yvals, xrange=None, bipolar=False, displayplots=False):
|
|
|
1469
1469
|
peaks = np.concatenate((peaks, negpeaks))
|
|
1470
1470
|
procpeaks = []
|
|
1471
1471
|
if xrange is None:
|
|
1472
|
-
lagmin = xvals[0]
|
|
1473
|
-
lagmax = xvals[-1]
|
|
1472
|
+
lagmin = xvals[0] + 0.0
|
|
1473
|
+
lagmax = xvals[-1] + 0.0
|
|
1474
1474
|
else:
|
|
1475
|
-
lagmin = xrange[0]
|
|
1476
|
-
lagmax = xrange[1]
|
|
1475
|
+
lagmin = xrange[0] + 0.0
|
|
1476
|
+
lagmax = xrange[1] + 0.0
|
|
1477
1477
|
originloc = tide_util.valtoindex(xvals, 0.0, discrete=False)
|
|
1478
1478
|
for thepeak in peaks:
|
|
1479
1479
|
if lagmin <= xvals[thepeak] <= lagmax:
|
|
@@ -0,0 +1,330 @@
|
|
|
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 sys
|
|
20
|
+
import warnings
|
|
21
|
+
|
|
22
|
+
import matplotlib.pyplot as plt
|
|
23
|
+
import numpy as np
|
|
24
|
+
import scipy as sp
|
|
25
|
+
from numpy.polynomial import Polynomial
|
|
26
|
+
from scipy.optimize import curve_fit
|
|
27
|
+
from statsmodels.robust import mad
|
|
28
|
+
|
|
29
|
+
import rapidtide.correlate as tide_corr
|
|
30
|
+
import rapidtide.filter as tide_filt
|
|
31
|
+
import rapidtide.fit as tide_fit
|
|
32
|
+
import rapidtide.miscmath as tide_math
|
|
33
|
+
import rapidtide.util as tide_util
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class fMRIDataset:
|
|
37
|
+
thedata = None
|
|
38
|
+
theshape = None
|
|
39
|
+
xsize = None
|
|
40
|
+
ysize = None
|
|
41
|
+
numslices = None
|
|
42
|
+
realtimepoints = None
|
|
43
|
+
timepoints = None
|
|
44
|
+
slicesize = None
|
|
45
|
+
numvox = None
|
|
46
|
+
numskip = 0
|
|
47
|
+
validvoxels = None
|
|
48
|
+
|
|
49
|
+
def __init__(self, thedata, zerodata=False, copydata=False, numskip=0):
|
|
50
|
+
if zerodata:
|
|
51
|
+
self.thedata = thedata * 0.0
|
|
52
|
+
else:
|
|
53
|
+
if copydata:
|
|
54
|
+
self.thedata = thedata + 0.0
|
|
55
|
+
else:
|
|
56
|
+
self.thedata = thedata
|
|
57
|
+
self.getsizes()
|
|
58
|
+
self.setnumskip(numskip)
|
|
59
|
+
|
|
60
|
+
def getsizes(self):
|
|
61
|
+
self.theshape = self.thedata.shape
|
|
62
|
+
self.xsize = self.theshape[0]
|
|
63
|
+
self.ysize = self.theshape[1]
|
|
64
|
+
self.numslices = self.theshape[2]
|
|
65
|
+
try:
|
|
66
|
+
self.realtimepoints = self.theshape[3]
|
|
67
|
+
except KeyError:
|
|
68
|
+
self.realtimepoints = 1
|
|
69
|
+
self.slicesize = self.xsize * self.ysize
|
|
70
|
+
self.numvox = self.slicesize * self.numslices
|
|
71
|
+
|
|
72
|
+
def setnumskip(self, numskip):
|
|
73
|
+
self.numskip = numskip
|
|
74
|
+
self.timepoints = self.realtimepoints - self.numskip
|
|
75
|
+
|
|
76
|
+
def setvalid(self, validvoxels):
|
|
77
|
+
self.validvoxels = validvoxels
|
|
78
|
+
|
|
79
|
+
def byslice(self):
|
|
80
|
+
return self.thedata[:, :, :, self.numskip :].reshape(
|
|
81
|
+
(self.slicesize, self.numslices, self.timepoints)
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
def byvol(self):
|
|
85
|
+
return self.thedata[:, :, :, self.numskip :].reshape((self.numvox, self.timepoints))
|
|
86
|
+
|
|
87
|
+
def byvox(self):
|
|
88
|
+
return self.thedata[:, :, :, self.numskip :]
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class ProbeRegressor:
|
|
92
|
+
inputtimeaxis = None
|
|
93
|
+
inputvec = None
|
|
94
|
+
inputfreq = None
|
|
95
|
+
inputstart = 0.0
|
|
96
|
+
inputoffset = 0.0
|
|
97
|
+
targettimeaxis = None
|
|
98
|
+
targetvec = None
|
|
99
|
+
targetfreq = None
|
|
100
|
+
targetstart = 0.0
|
|
101
|
+
targetoffset = 0.0
|
|
102
|
+
|
|
103
|
+
def __init__(
|
|
104
|
+
self,
|
|
105
|
+
inputvec,
|
|
106
|
+
inputfreq,
|
|
107
|
+
targetperiod,
|
|
108
|
+
targetpoints,
|
|
109
|
+
targetstartpoint,
|
|
110
|
+
targetoversample=1,
|
|
111
|
+
inputstart=0.0,
|
|
112
|
+
inputoffset=0.0,
|
|
113
|
+
targetstart=0.0,
|
|
114
|
+
targetoffset=0.0,
|
|
115
|
+
):
|
|
116
|
+
self.inputoffset = inputoffset
|
|
117
|
+
self.setinputvec(inputvec, inputfreq, inputstart=inputstart)
|
|
118
|
+
self.targetperiod = targetperiod
|
|
119
|
+
self.makeinputtimeaxis()
|
|
120
|
+
self.targetoversample = targetoversample
|
|
121
|
+
self.targetpoints = targetpoints
|
|
122
|
+
self.targetstartpoint = targetstartpoint
|
|
123
|
+
|
|
124
|
+
def setinputvec(self, inputvec, inputfreq, inputstart=0.0):
|
|
125
|
+
self.inputvec = inputvec
|
|
126
|
+
self.inputfreq = inputfreq
|
|
127
|
+
self.inputstart = inputstart
|
|
128
|
+
|
|
129
|
+
def makeinputtimeaxis(self):
|
|
130
|
+
self.inputtimeaxis = np.linspace(0.0, len(self.inputvec)) / self.inputfreq - (
|
|
131
|
+
self.inputstarttime + self.inputoffset
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
def maketargettimeaxis(self):
|
|
135
|
+
self.targettimeaxis = np.linspace(
|
|
136
|
+
self.targetperiod * self.targetstartpoint,
|
|
137
|
+
self.targetperiod * self.targetstartpoint + self.targetperiod * self.targetpoints,
|
|
138
|
+
num=self.targetpoints,
|
|
139
|
+
endpoint=True,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
class Coherer:
|
|
144
|
+
reftc = None
|
|
145
|
+
prepreftc = None
|
|
146
|
+
testtc = None
|
|
147
|
+
preptesttc = None
|
|
148
|
+
freqaxis = None
|
|
149
|
+
similarityfunclen = 0
|
|
150
|
+
datavalid = False
|
|
151
|
+
freqaxisvalid = False
|
|
152
|
+
similarityfuncorigin = 0
|
|
153
|
+
freqmin = None
|
|
154
|
+
freqmax = None
|
|
155
|
+
|
|
156
|
+
def __init__(
|
|
157
|
+
self,
|
|
158
|
+
Fs=0.0,
|
|
159
|
+
freqmin=None,
|
|
160
|
+
freqmax=None,
|
|
161
|
+
ncprefilter=None,
|
|
162
|
+
reftc=None,
|
|
163
|
+
detrendorder=1,
|
|
164
|
+
windowfunc="hamming",
|
|
165
|
+
debug=False,
|
|
166
|
+
):
|
|
167
|
+
self.Fs = Fs
|
|
168
|
+
self.ncprefilter = ncprefilter
|
|
169
|
+
self.reftc = reftc
|
|
170
|
+
self.windowfunc = windowfunc
|
|
171
|
+
self.detrendorder = detrendorder
|
|
172
|
+
self.debug = debug
|
|
173
|
+
if freqmin is not None:
|
|
174
|
+
self.freqmin = freqmin
|
|
175
|
+
if freqmax is not None:
|
|
176
|
+
self.freqmax = freqmax
|
|
177
|
+
if self.reftc is not None:
|
|
178
|
+
self.setreftc(self.reftc)
|
|
179
|
+
if self.debug:
|
|
180
|
+
print("Coherer init:")
|
|
181
|
+
print("\tFs:", self.Fs)
|
|
182
|
+
print("\twindowfunc:", self.windowfunc)
|
|
183
|
+
print("\tdetrendorder:", self.detrendorder)
|
|
184
|
+
print("\tfreqmin:", self.freqmin)
|
|
185
|
+
print("\tfreqmax:", self.freqmax)
|
|
186
|
+
|
|
187
|
+
def preptc(self, thetc):
|
|
188
|
+
# prepare timecourse by filtering, normalizing, detrending, and applying a window function
|
|
189
|
+
return tide_math.corrnormalize(
|
|
190
|
+
self.ncprefilter.apply(self.Fs, thetc),
|
|
191
|
+
detrendorder=self.detrendorder,
|
|
192
|
+
windowfunc="None",
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
def setlimits(self, freqmin, freqmax):
|
|
196
|
+
self.freqmin = freqmin
|
|
197
|
+
self.freqmax = freqmax
|
|
198
|
+
if self.freqaxisvalid:
|
|
199
|
+
self.freqmininpts = np.max([0, tide_util.valtoindex(self.freqaxis, self.freqmin)])
|
|
200
|
+
self.freqmaxinpts = np.min(
|
|
201
|
+
[
|
|
202
|
+
tide_util.valtoindex(self.freqaxis, self.freqmax),
|
|
203
|
+
len(self.freqaxis) - 1,
|
|
204
|
+
]
|
|
205
|
+
)
|
|
206
|
+
if self.debug:
|
|
207
|
+
print("setlimits:")
|
|
208
|
+
print("\tfreqmin,freqmax:", self.freqmin, self.freqmax)
|
|
209
|
+
print("\tfreqmininpts,freqmaxinpts:", self.freqmininpts, self.freqmaxinpts)
|
|
210
|
+
|
|
211
|
+
def getaxisinfo(self):
|
|
212
|
+
return (
|
|
213
|
+
self.freqaxis[self.freqmininpts],
|
|
214
|
+
self.freqaxis[self.freqmaxinpts],
|
|
215
|
+
self.freqaxis[1] - self.freqaxis[0],
|
|
216
|
+
self.freqmaxinpts - self.freqmininpts,
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
def setreftc(self, reftc):
|
|
220
|
+
self.reftc = reftc + 0.0
|
|
221
|
+
self.prepreftc = self.preptc(self.reftc)
|
|
222
|
+
|
|
223
|
+
# get frequency axis, etc
|
|
224
|
+
self.freqaxis, self.thecoherence = sp.signal.coherence(
|
|
225
|
+
self.prepreftc, self.prepreftc, fs=self.Fs
|
|
226
|
+
)
|
|
227
|
+
# window=self.windowfunc)'''
|
|
228
|
+
self.similarityfunclen = len(self.thecoherence)
|
|
229
|
+
self.similarityfuncorigin = 0
|
|
230
|
+
self.freqaxisvalid = True
|
|
231
|
+
self.datavalid = False
|
|
232
|
+
if self.freqmin is None or self.freqmax is None:
|
|
233
|
+
self.setlimits(self.freqaxis[0], self.freqaxis[-1])
|
|
234
|
+
self.freqmininpts = tide_util.valtoindex(
|
|
235
|
+
self.freqaxis, self.freqmin, discretization="floor", debug=self.debug
|
|
236
|
+
)
|
|
237
|
+
self.freqmaxinpts = tide_util.valtoindex(
|
|
238
|
+
self.freqaxis, self.freqmax, discretization="ceiling", debug=self.debug
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
def trim(self, vector):
|
|
242
|
+
return vector[self.freqmininpts : self.freqmaxinpts]
|
|
243
|
+
|
|
244
|
+
def run(self, thetc, trim=True, alt=False):
|
|
245
|
+
if len(thetc) != len(self.reftc):
|
|
246
|
+
print(
|
|
247
|
+
"Coherer: timecourses are of different sizes:",
|
|
248
|
+
len(thetc),
|
|
249
|
+
"!=",
|
|
250
|
+
len(self.reftc),
|
|
251
|
+
"- exiting",
|
|
252
|
+
)
|
|
253
|
+
sys.exit()
|
|
254
|
+
|
|
255
|
+
self.testtc = thetc + 0.0
|
|
256
|
+
self.preptesttc = self.preptc(self.testtc)
|
|
257
|
+
|
|
258
|
+
# now actually do the coherence
|
|
259
|
+
if self.debug:
|
|
260
|
+
fig = plt.figure()
|
|
261
|
+
ax = fig.add_subplot(111)
|
|
262
|
+
plt.plot(self.prepreftc, "r")
|
|
263
|
+
plt.plot(self.preptesttc, "b")
|
|
264
|
+
plt.legend(["reference", "test timecourse"])
|
|
265
|
+
plt.show()
|
|
266
|
+
|
|
267
|
+
if not alt:
|
|
268
|
+
self.freqaxis, self.thecoherence = sp.signal.coherence(
|
|
269
|
+
self.prepreftc, self.preptesttc, fs=self.Fs
|
|
270
|
+
)
|
|
271
|
+
else:
|
|
272
|
+
self.freqaxis, self.thecsdxy = sp.signal.csd(
|
|
273
|
+
10000.0 * self.prepreftc,
|
|
274
|
+
10000.0 * self.preptesttc,
|
|
275
|
+
fs=self.Fs,
|
|
276
|
+
scaling="spectrum",
|
|
277
|
+
)
|
|
278
|
+
self.freqaxis, self.thecsdxx = sp.signal.csd(
|
|
279
|
+
10000.0 * self.prepreftc,
|
|
280
|
+
10000.0 * self.prepreftc,
|
|
281
|
+
fs=self.Fs,
|
|
282
|
+
scaling="spectrum",
|
|
283
|
+
)
|
|
284
|
+
self.freqaxis, self.thecsdyy = sp.signal.csd(
|
|
285
|
+
10000.0 * self.preptesttc,
|
|
286
|
+
10000.0 * self.preptesttc,
|
|
287
|
+
fs=self.Fs,
|
|
288
|
+
scaling="spectrum",
|
|
289
|
+
)
|
|
290
|
+
self.thecoherence = np.nan_to_num(
|
|
291
|
+
abs(self.thecsdxy) ** 2 / (abs(self.thecsdxx) * abs(self.thecsdyy))
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
self.similarityfunclen = len(self.thecoherence)
|
|
295
|
+
self.similarityfuncorigin = 0
|
|
296
|
+
self.datavalid = True
|
|
297
|
+
|
|
298
|
+
if trim:
|
|
299
|
+
if alt:
|
|
300
|
+
self.themax = np.argmax(self.thecoherence[self.freqmininpts : self.freqmaxinpts])
|
|
301
|
+
return (
|
|
302
|
+
self.trim(self.thecoherence),
|
|
303
|
+
self.trim(self.freqaxis),
|
|
304
|
+
self.themax,
|
|
305
|
+
self.trim(self.thecsdxx),
|
|
306
|
+
self.trim(self.thecsdyy),
|
|
307
|
+
self.trim(self.thecsdxy),
|
|
308
|
+
)
|
|
309
|
+
else:
|
|
310
|
+
self.themax = np.argmax(self.thecoherence[self.freqmininpts : self.freqmaxinpts])
|
|
311
|
+
return (
|
|
312
|
+
self.trim(self.thecoherence),
|
|
313
|
+
self.trim(self.freqaxis),
|
|
314
|
+
self.themax,
|
|
315
|
+
)
|
|
316
|
+
else:
|
|
317
|
+
if alt:
|
|
318
|
+
self.themax = np.argmax(self.thecoherence)
|
|
319
|
+
return (
|
|
320
|
+
self.thecoherence,
|
|
321
|
+
self.freqaxis,
|
|
322
|
+
self.themax,
|
|
323
|
+
self.thecsdxx,
|
|
324
|
+
self.thecsdyy,
|
|
325
|
+
self.thecsdxy,
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
else:
|
|
329
|
+
self.themax = np.argmax(self.thecoherence)
|
|
330
|
+
return self.thecoherence, self.freqaxis, self.themax
|