rapidtide 3.0.1__tar.gz → 3.0.3__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.1 → rapidtide-3.0.3}/CHANGELOG.md +17 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/INSTALL.rst +1 -1
- {rapidtide-3.0.1/rapidtide.egg-info → rapidtide-3.0.3}/PKG-INFO +1 -1
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/DerivativeDelay.py +0 -4
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/calcsimfunc.py +3 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/correlate.py +18 -1
- rapidtide-3.0.3/rapidtide/data/examples/src/testfmri +15 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testretro +15 -13
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/happy_supportfuncs.py +70 -234
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/helper_classes.py +4 -4
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/io.py +21 -23
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/maskutil.py +144 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/refinedelay.py +4 -7
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/cleanposttest +0 -1
- rapidtide-3.0.3/rapidtide/tests/test_cleanregressor.py +185 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunrapidtide_v1.py +4 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunrapidtide_v3.py +10 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunrapidtide_v6.py +0 -1
- rapidtide-3.0.3/rapidtide/tests/test_fullrunrapidtide_v7.py +114 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_io.py +58 -13
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_refinedelay.py +0 -3
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/voxelData.py +126 -14
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/cleanregressor.py +43 -6
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/delayestimation.py +8 -13
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/delayvar.py +11 -13
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/happy.py +72 -179
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/rapidtide.py +335 -329
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/rapidtide_parser.py +115 -66
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/regressfrommaps.py +12 -7
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/retroregress.py +533 -337
- {rapidtide-3.0.1 → rapidtide-3.0.3/rapidtide.egg-info}/PKG-INFO +1 -1
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide.egg-info/SOURCES.txt +2 -0
- rapidtide-3.0.1/rapidtide/data/examples/src/testfmri +0 -12
- {rapidtide-3.0.1 → rapidtide-3.0.3}/CODE_OF_CONDUCT.md +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/CONTRIBUTING.md +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/LICENSE +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/MANIFEST.in +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/README.rst +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/TODO.md +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/USAGE.rst +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/download-nda-data +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/downloadcmd-auther +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/gmscalc-HCPYA +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/list-rapidtide-relevant-images +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/mount-and-run +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/rapidtide-HCPYA +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/rapidtide-cloud-test +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/cloud/simple-cp-test +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/pyproject.toml +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/Colortables.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/OrthoImageItem.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/RapidtideDataset.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/RegressorRefiner.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/__init__.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/_version.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/calcandfitcorrpairs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/calccoherence.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/calcnullsimfunc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/installtestdata +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/test_findmaxlag.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/test_io +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/test_mlregressallt.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/test_rapidtidecompare +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testalign +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testatlasaverage +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testboth +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testcifti +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testcomplex +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testdecomp +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testdelayvar +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testfileorfloat +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testfingerprint +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testfmridocker +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testfrozen +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testfuncs +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testglmfilt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testhappy +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testinitdelay +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testlinfit +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testlocalflow +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testmodels +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testnewrefine +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testnoiseamp +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testoscorr +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testpad +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testrefineonly +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testretrolagtcs +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/examples/src/testsimdata +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/loss.png +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/loss.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/model.keras +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/model_meta.json +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_revised_tf2/model.keras +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_revised_tf2/model_meta.json +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_serdar2_tf2/model_meta.json +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/models/model_serdar_tf2/model_meta.json +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ASPECTS_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ASPECTS_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ASPECTS_3mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ASPECTS_3mm_mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ASPECTS_regions.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/ATTbasedFlowTerritories_split_regions.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200_lag_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200_sigma_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200_strength_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_graylaghist.json +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_laghist.json +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_whitelaghist.json +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1.xml +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_regions.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2.xml +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_regions.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/MNI152_T1_3mm.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/MNI152_T1_3mm_brain_mask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/data/reference/slicetimes/HCP-YA_slicetimes.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/dlfilter.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/externaltools.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/fMRIData_class.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/filter.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/fit.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/linfitfiltpass.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/makelaggedtcs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/miscmath.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/multiproc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/patchmatch.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/peakeval.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/qualitycheck.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/refineregressor.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/resample.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/__init__.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/adjustoffset.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/aligntcs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/applydlfilter.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/atlasaverage.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/atlastool.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/calcicc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/calctexticc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/calcttest.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/ccorrica.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/delayvar.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/diffrois.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/endtidalproc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/fdica.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/filtnifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/filttc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/fingerprint.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/fixtr.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/gmscalc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/happy.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/happy2std.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/happywarp.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/histnifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/histtc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/linfitfilt.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/localflow.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/mergequality.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/pairproc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/pairwisemergenifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/physiofreq.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/pixelcomp.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/plethquality.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/polyfitim.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/proj2flow.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/rankimage.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/rapidtide.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/rapidtide2std.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/resamplenifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/resampletc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/retrolagtcs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/retroregress.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/roisummarize.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/runqualitycheck.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/showarbcorr.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/showhist.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/showstxcorr.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/showtc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/showxcorr_legacy.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/showxcorrx.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/showxy.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/simdata.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/spatialdecomp.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/spatialfit.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/spatialmi.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/spectrogram.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/stupidramtricks.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/synthASL.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/tcfrom2col.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/tcfrom3col.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/temporaldecomp.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/testhrv.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/threeD.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/tidepool.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/scripts/variabilityizer.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/simfuncfit.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/stats.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/.coveragerc +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/__init__.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/matplotlibrc +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/resethappytargets +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/resetrapidtidetargets +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/resettargets +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/runlocaltest +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/showdirectories +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/showkernels +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_aliasedcorrelate.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_aligntcs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_calcicc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_congrid.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_correlate.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_corrpass.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_delayestimation.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_doresample.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fastresampler.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_filter.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_findmaxlag.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunhappy_v1.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunhappy_v2.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunhappy_v3.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunhappy_v4.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunhappy_v5.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunrapidtide_v2.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunrapidtide_v4.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_fullrunrapidtide_v5.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_linfitfiltpass.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_mi.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_miscmath.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_motionregress.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_nullcorr.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_padvec.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_phaseanalysis.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_rapidtideparser.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_runmisc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_sharedmem.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_simulate.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_stcorrelate.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_timeshift.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_valtoindex.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/test_zRapidtideDataset.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_info.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_normpleth_25.0Hz.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_pleth_25.0Hz.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/100206_REST1_LR_pleth_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/fmri_globalmean.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/happy_phase1target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/happy_phase2output_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/happy_target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/lforegressor.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/lt_rt.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/phasetest.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/rapidtide2x_phase1target_reference_fmrires.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/stcorrtest_Rvalue.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/stcorrtest_delay.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/stcorrtest_mask.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/stcorrtest_pearson.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/stcorrtest_pvalue.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/testdata/testfilt.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/tmp/.placeholder.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/usercustomize.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tests/utils.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate.ui +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate_alt.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate_alt.ui +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate_alt_qt6.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate_big.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate_big.ui +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate_big_qt6.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/tidepoolTemplate_qt6.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/transformerdlfilter.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/util.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/wiener.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/wiener2.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/__init__.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/adjustoffset.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/aligntcs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/applydlfilter.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/atlasaverage.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/atlastool.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/calctexticc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/ccorrica.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/diffrois.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/endtidalproc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/fdica.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/filtnifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/filttc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/fixtr.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/gmscalc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/happy2std.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/happy_parser.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/histnifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/histtc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/linfitfilt.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/localflow.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/mergequality.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/niftidecomp.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/niftistats.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/pairproc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/pairwisemergenifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/parser_funcs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/physiofreq.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/pixelcomp.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/plethquality.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/polyfitim.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/proj2flow.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/rankimage.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/rapidtide2std.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/resamplenifti.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/resampletc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/retrolagtcs.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/roisummarize.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/runqualitycheck.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/showarbcorr.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/showhist.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/showstxcorr.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/showtc.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/showxcorrx.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/showxy.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/simdata.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/spatialfit.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/spatialmi.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/spectrogram.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/synthASL.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/tcfrom2col.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/tcfrom3col.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/tidepool.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/utils.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide/workflows/variabilityizer.py +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide.egg-info/dependency_links.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide.egg-info/entry_points.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide.egg-info/requires.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/rapidtide.egg-info/top_level.txt +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/setup.cfg +0 -0
- {rapidtide-3.0.1 → rapidtide-3.0.3}/versioneer.py +0 -0
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Release history
|
|
2
2
|
|
|
3
|
+
## Version 3.0.3 (5/4/25)
|
|
4
|
+
* (rapidtide, retroregress) If you supply a brain, GM, WM, or CSF mask, rapidtide extracts the matching timecourse from the mask at startup, and after filtering, if it's done. retroregress extracts the timecourses after filtering.
|
|
5
|
+
* (rapidtide) Fixed mask logic when gray matter mask is provided.
|
|
6
|
+
* (rapidtide) Fixed a crash when ``--acfix`` is selected and a bad sidelobe is encountered if the similarity calculation range is not the entire timecourse (THAT was hard to pin down...).
|
|
7
|
+
* (rapidtide, tidepool) Fixed a serious cosmetic bug in corrout files introduced in v3.0.2 - teoffset was not being set properly by rapidtide, so the tidepool similarity function display was very wrong.
|
|
8
|
+
* (rapidtide) shiftedtcs file is now written during each pass if ``--saveintermediatemaps`` is set and ``--outputlevel`` is ``more`` or ``max`` (in response to a feature request).
|
|
9
|
+
* (rapidtide) Added back the ability to have integral powers of the motion regressors.
|
|
10
|
+
* (rapidtide) Added the ability to specify a CSF mask.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Version 3.0.2 (4/28/25)
|
|
14
|
+
* (retroregress) Added a new argument to ``--outputlevel``, ``onlyregressors``. When selected, retroregress generates the voxel specific sLFO regressor(s), saves them, and exits. This option exists so that you can use the rapidtide voxel specific sLFO regressors in an external processing routine such as XCP-D without extraneous data storage or processing time.
|
|
15
|
+
* (rapidtide) Leaned harder into using the voxelData class, and beefed up its capabilities.
|
|
16
|
+
* (happy) Updated to use voxelData.
|
|
17
|
+
* (happy) Moved phase projection to an external routine.
|
|
18
|
+
* (documentation) Fixed a few more typos.
|
|
19
|
+
|
|
3
20
|
## Version 3.0.1 (4/23/25)
|
|
4
21
|
* (documentation) I missed a bunch of weird errors in the "Theory of Operation" section. Are you surprised? I'm not surprised. You shouldn't be either. These are now fixed. This doesn't change any code - mostly affects online documentation.
|
|
5
22
|
|
|
@@ -115,7 +115,7 @@ This will use the most recent version on dockerhub, which is built automatically
|
|
|
115
115
|
NOTE: I don't advise doing this unless you're helping debug something -
|
|
116
116
|
there's no guarantee that "latest" is functional at any given time.
|
|
117
117
|
|
|
118
|
-
Now that the file is downloaded, you can run
|
|
118
|
+
Now that the file is downloaded, you can run any rapidtide command in the Docker container. For example, to run a simple
|
|
119
119
|
rapidtide analysis, you would use the following command (you can do this all in one step - it will just integrate the
|
|
120
120
|
first pull into the run time if the version you request hasn't already been downloaded).
|
|
121
121
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rapidtide
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.3
|
|
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>
|
|
@@ -135,8 +135,6 @@ class DerivativeDelay:
|
|
|
135
135
|
(xdim, ydim, slicedim),
|
|
136
136
|
gausssigma=args.delayoffsetgausssigma,
|
|
137
137
|
patchthresh=args.delaypatchthresh,
|
|
138
|
-
fileiscifti=False,
|
|
139
|
-
textio=False,
|
|
140
138
|
rt_floattype=rt_floattype,
|
|
141
139
|
debug=args.debug,
|
|
142
140
|
)
|
|
@@ -181,8 +179,6 @@ class DerivativeDelay:
|
|
|
181
179
|
(xdim, ydim, slicedim),
|
|
182
180
|
gausssigma=args.delayoffsetgausssigma,
|
|
183
181
|
patchthresh=args.delaypatchthresh,
|
|
184
|
-
fileiscifti=False,
|
|
185
|
-
textio=False,
|
|
186
182
|
rt_floattype=rt_floattype,
|
|
187
183
|
debug=args.debug,
|
|
188
184
|
)
|
|
@@ -69,6 +69,7 @@ def correlationpass(
|
|
|
69
69
|
chunksize=1000,
|
|
70
70
|
rt_floatset=np.float64,
|
|
71
71
|
rt_floattype="float64",
|
|
72
|
+
debug=False,
|
|
72
73
|
):
|
|
73
74
|
"""
|
|
74
75
|
|
|
@@ -96,6 +97,8 @@ def correlationpass(
|
|
|
96
97
|
-------
|
|
97
98
|
|
|
98
99
|
"""
|
|
100
|
+
if debug:
|
|
101
|
+
print(f"calling setreftc in calcsimfunc with length {len(referencetc)}")
|
|
99
102
|
theCorrelator.setreftc(referencetc)
|
|
100
103
|
theCorrelator.setlimits(lagmininpts, lagmaxinpts)
|
|
101
104
|
|
|
@@ -86,11 +86,12 @@ def disablenumba():
|
|
|
86
86
|
def check_autocorrelation(
|
|
87
87
|
corrscale,
|
|
88
88
|
thexcorr,
|
|
89
|
-
delta=0.
|
|
89
|
+
delta=0.05,
|
|
90
90
|
acampthresh=0.1,
|
|
91
91
|
aclagthresh=10.0,
|
|
92
92
|
displayplots=False,
|
|
93
93
|
detrendorder=1,
|
|
94
|
+
debug=False,
|
|
94
95
|
):
|
|
95
96
|
"""Check for autocorrelation in an array.
|
|
96
97
|
|
|
@@ -110,10 +111,23 @@ def check_autocorrelation(
|
|
|
110
111
|
sidelobetime
|
|
111
112
|
sidelobeamp
|
|
112
113
|
"""
|
|
114
|
+
if debug:
|
|
115
|
+
print("check_autocorrelation:")
|
|
116
|
+
print(f"delta: {delta}")
|
|
117
|
+
print(f"acampthresh: {acampthresh}")
|
|
118
|
+
print(f"aclagthresh: {aclagthresh}")
|
|
119
|
+
print(f"displayplots: {displayplots}")
|
|
113
120
|
lookahead = 2
|
|
121
|
+
if displayplots:
|
|
122
|
+
print(f"check_autocorrelation: {displayplots=}")
|
|
123
|
+
plt.plot(corrscale, thexcorr)
|
|
124
|
+
plt.show()
|
|
114
125
|
peaks = tide_fit.peakdetect(thexcorr, x_axis=corrscale, delta=delta, lookahead=lookahead)
|
|
115
126
|
maxpeaks = np.asarray(peaks[0], dtype="float64")
|
|
116
127
|
if len(peaks[0]) > 0:
|
|
128
|
+
if debug:
|
|
129
|
+
print(f"found {len(peaks[0])} peaks")
|
|
130
|
+
print(peaks)
|
|
117
131
|
LGR.debug(peaks)
|
|
118
132
|
zeropkindex = np.argmin(abs(maxpeaks[:, 0]))
|
|
119
133
|
for i in range(zeropkindex + 1, maxpeaks.shape[0]):
|
|
@@ -155,6 +169,9 @@ def check_autocorrelation(
|
|
|
155
169
|
)
|
|
156
170
|
plt.show()
|
|
157
171
|
return sidelobetime, sidelobeamp
|
|
172
|
+
else:
|
|
173
|
+
if debug:
|
|
174
|
+
print("no peaks found")
|
|
158
175
|
return None, None
|
|
159
176
|
|
|
160
177
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
rapidtide \
|
|
4
|
+
--spatialfilt -1 \
|
|
5
|
+
--nprocs -1 \
|
|
6
|
+
--searchrange -5 20 \
|
|
7
|
+
--simcalcrange 50 -1 \
|
|
8
|
+
--outputlevel more \
|
|
9
|
+
--dofinalrefine \
|
|
10
|
+
--graymattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_GRAY \
|
|
11
|
+
--brainmask sub-RAPIDTIDETEST_brainmask.nii.gz \
|
|
12
|
+
--whitemattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_WHITE \
|
|
13
|
+
--csfmask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_CSF \
|
|
14
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
15
|
+
../dst/sub-RAPIDTIDETEST
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
rapidtide \
|
|
4
|
+
--spatialfilt -1 \
|
|
5
|
+
--nprocs -1 \
|
|
6
|
+
--searchrange -5 20 \
|
|
7
|
+
--simcalcrange 50 -1 \
|
|
8
|
+
--outputlevel more \
|
|
9
|
+
--dofinalrefine \
|
|
10
|
+
--graymattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_GRAY \
|
|
11
|
+
--brainmask sub-RAPIDTIDETEST_brainmask.nii.gz \
|
|
12
|
+
--whitemattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_WHITE \
|
|
13
|
+
--csfmask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_CSF \
|
|
14
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
15
|
+
../dst/sub-RAPIDTIDETEST
|
|
12
16
|
|
|
13
17
|
##retroregress sub-RAPIDTIDETEST.nii.gz ../dst/sub-RAPIDTIDETEST --alternateoutput ../dst/0deriv --nprocs -1
|
|
14
18
|
|
|
15
19
|
retroregress \
|
|
16
20
|
sub-RAPIDTIDETEST.nii.gz \
|
|
17
21
|
../dst/sub-RAPIDTIDETEST \
|
|
18
|
-
--alternateoutput ../dst/
|
|
22
|
+
--alternateoutput ../dst/specialtest \
|
|
19
23
|
--nprocs -1 \
|
|
20
|
-
--outputlevel
|
|
21
|
-
--focaldebug \
|
|
22
|
-
--delayoffsetspatialfilt -1
|
|
24
|
+
--outputlevel normal
|
|
23
25
|
|
|
24
26
|
#retroregress sub-RAPIDTIDETEST.nii.gz ../dst/sub-RAPIDTIDETEST --alternateoutput ../dst/0deriv_refined --nprocs -1 --regressderivs 0 --makepseudofile --outputlevel max --refinedelay --nofilterwithrefineddelay
|
|
25
27
|
#retroregress sub-RAPIDTIDETEST.nii.gz ../dst/sub-RAPIDTIDETEST --alternateoutput ../dst/0deriv_refinedfit --nprocs -1 --regressderivs 0 --makepseudofile --outputlevel max --refinedelay
|
|
@@ -999,211 +999,42 @@ def circularderivs(timecourse):
|
|
|
999
999
|
|
|
1000
1000
|
|
|
1001
1001
|
def phaseproject(
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1002
|
+
input_data,
|
|
1003
|
+
demeandata_byslice,
|
|
1004
|
+
means_byslice,
|
|
1005
|
+
rawapp_byslice,
|
|
1006
|
+
app_byslice,
|
|
1007
|
+
normapp_byslice,
|
|
1008
|
+
weights_byslice,
|
|
1009
|
+
cine_byslice,
|
|
1010
|
+
projmask_byslice,
|
|
1011
|
+
derivatives_byslice,
|
|
1012
|
+
proctrs,
|
|
1009
1013
|
thispass,
|
|
1010
|
-
numpasses,
|
|
1011
1014
|
args,
|
|
1012
|
-
|
|
1013
|
-
slicesamplerate,
|
|
1014
|
-
pleth_sliceres,
|
|
1015
|
-
mrsamplerate,
|
|
1016
|
-
projmask_byslice,
|
|
1015
|
+
sliceoffsets,
|
|
1017
1016
|
cardphasevals,
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1017
|
+
outphases,
|
|
1018
|
+
appsmoothingfilter,
|
|
1019
|
+
phaseFs,
|
|
1020
|
+
thecorrfunc_byslice,
|
|
1021
|
+
waveamp_byslice,
|
|
1022
|
+
wavedelay_byslice,
|
|
1023
|
+
wavedelayCOM_byslice,
|
|
1024
|
+
corrected_rawapp_byslice,
|
|
1025
|
+
corrstartloc,
|
|
1026
|
+
correndloc,
|
|
1027
|
+
thealiasedcorrx,
|
|
1028
|
+
theAliasedCorrelator,
|
|
1024
1029
|
):
|
|
1025
|
-
xsize, ysize, numslices, timepoints =
|
|
1026
|
-
|
|
1027
|
-
tide_util.logmem("before making destination arrays")
|
|
1028
|
-
app = np.zeros((xsize, ysize, numslices, destpoints), dtype=np.float64)
|
|
1029
|
-
app_byslice = app.reshape((xsize * ysize, numslices, destpoints))
|
|
1030
|
-
cine = np.zeros((xsize, ysize, numslices, destpoints), dtype=np.float64)
|
|
1031
|
-
cine_byslice = cine.reshape((xsize * ysize, numslices, destpoints))
|
|
1032
|
-
rawapp = np.zeros((xsize, ysize, numslices, destpoints), dtype=np.float64)
|
|
1033
|
-
rawapp_byslice = rawapp.reshape((xsize * ysize, numslices, destpoints))
|
|
1034
|
-
corrected_rawapp = np.zeros((xsize, ysize, numslices, destpoints), dtype=np.float64)
|
|
1035
|
-
corrected_rawapp_byslice = rawapp.reshape((xsize * ysize, numslices, destpoints))
|
|
1036
|
-
normapp = np.zeros((xsize, ysize, numslices, destpoints), dtype=np.float64)
|
|
1037
|
-
normapp_byslice = normapp.reshape((xsize * ysize, numslices, destpoints))
|
|
1038
|
-
weights = np.zeros((xsize, ysize, numslices, destpoints), dtype=np.float64)
|
|
1039
|
-
weight_byslice = weights.reshape((xsize * ysize, numslices, destpoints))
|
|
1040
|
-
derivatives = np.zeros((xsize, ysize, numslices, 4), dtype=np.float64)
|
|
1041
|
-
derivatives_byslice = derivatives.reshape((xsize * ysize, numslices, 4))
|
|
1042
|
-
|
|
1043
|
-
timings.append(["Output arrays allocated" + passstring, time.time(), None, None])
|
|
1044
|
-
|
|
1045
|
-
if centric:
|
|
1046
|
-
outphases = np.linspace(-np.pi, np.pi, num=destpoints, endpoint=False)
|
|
1047
|
-
else:
|
|
1048
|
-
outphases = np.linspace(0.0, 2.0 * np.pi, num=destpoints, endpoint=False)
|
|
1049
|
-
phasestep = outphases[1] - outphases[0]
|
|
1050
|
-
|
|
1051
|
-
#######################################################################################################
|
|
1052
|
-
#
|
|
1053
|
-
# now do the phase projection
|
|
1054
|
-
#
|
|
1055
|
-
#
|
|
1056
|
-
datatoproject_byslice = datatoproject.reshape((xsize * ysize, numslices, timepoints))
|
|
1057
|
-
means_byslice = means.reshape((xsize * ysize, numslices))
|
|
1058
|
-
|
|
1059
|
-
timings.append(["Phase projection to image started" + passstring, time.time(), None, None])
|
|
1060
|
-
print("Starting phase projection")
|
|
1061
|
-
proctrs = range(timepoints) # proctrs is the list of all fmri trs to be projected
|
|
1062
|
-
procpoints = range(
|
|
1063
|
-
timepoints * numsteps
|
|
1064
|
-
) # procpoints is the list of all sliceres datapoints to be projected
|
|
1065
|
-
if badpointlist is not None:
|
|
1066
|
-
censortrs = np.zeros(timepoints, dtype="int")
|
|
1067
|
-
censorpoints = np.zeros(timepoints * numsteps, dtype="int")
|
|
1068
|
-
censortrs[np.where(badpointlist > 0.0)[0] // numsteps] = 1
|
|
1069
|
-
censorpoints[np.where(badpointlist > 0.0)[0]] = 1
|
|
1070
|
-
proctrs = np.where(censortrs < 1)[0]
|
|
1071
|
-
procpoints = np.where(censorpoints < 1)[0]
|
|
1072
|
-
|
|
1073
|
-
# do phase averaging
|
|
1074
|
-
app_bypoint = cardiaccycleaverage(
|
|
1075
|
-
instantaneous_cardiacphase,
|
|
1076
|
-
outphases,
|
|
1077
|
-
cardfromfmri_sliceres,
|
|
1078
|
-
procpoints,
|
|
1079
|
-
congridbins,
|
|
1080
|
-
gridkernel,
|
|
1081
|
-
centric,
|
|
1082
|
-
cyclic=True,
|
|
1083
|
-
)
|
|
1084
|
-
if thispass == numpasses - 1:
|
|
1085
|
-
tide_io.writebidstsv(
|
|
1086
|
-
outputroot + "_desc-cardiaccyclefromfmri_timeseries",
|
|
1087
|
-
app_bypoint,
|
|
1088
|
-
1.0 / (outphases[1] - outphases[0]),
|
|
1089
|
-
starttime=outphases[0],
|
|
1090
|
-
columns=["cardiaccyclefromfmri"],
|
|
1091
|
-
append=False,
|
|
1092
|
-
debug=args.debug,
|
|
1093
|
-
)
|
|
1094
|
-
|
|
1095
|
-
# now do time averaging
|
|
1096
|
-
lookaheadval = int(slicesamplerate / 4.0)
|
|
1097
|
-
print("lookaheadval = ", lookaheadval)
|
|
1098
|
-
wrappedcardiacphase = tide_math.phasemod(instantaneous_cardiacphase, centric=centric)
|
|
1099
|
-
max_peaks, min_peaks = tide_fit.peakdetect(wrappedcardiacphase, lookahead=lookaheadval)
|
|
1100
|
-
# start on a maximum
|
|
1101
|
-
if max_peaks[0][0] > min_peaks[0][0]:
|
|
1102
|
-
min_peaks = min_peaks[1:]
|
|
1103
|
-
# work only with pairs
|
|
1104
|
-
if len(max_peaks) > len(min_peaks):
|
|
1105
|
-
max_peaks = max_peaks[:-1]
|
|
1106
|
-
|
|
1107
|
-
zerophaselocs = []
|
|
1108
|
-
for idx, peak in enumerate(max_peaks):
|
|
1109
|
-
minloc = min_peaks[idx][0]
|
|
1110
|
-
maxloc = max_peaks[idx][0]
|
|
1111
|
-
minval = min_peaks[idx][1]
|
|
1112
|
-
maxval = max_peaks[idx][1]
|
|
1113
|
-
if minloc > 0:
|
|
1114
|
-
if wrappedcardiacphase[minloc - 1] < wrappedcardiacphase[minloc]:
|
|
1115
|
-
minloc -= 1
|
|
1116
|
-
minval = wrappedcardiacphase[minloc]
|
|
1117
|
-
phasediff = minval - (maxval - 2.0 * np.pi)
|
|
1118
|
-
timediff = minloc - maxloc
|
|
1119
|
-
zerophaselocs.append(1.0 * minloc - (minval - outphases[0]) * timediff / phasediff)
|
|
1120
|
-
# print(idx, [maxloc, maxval], [minloc, minval], phasediff, timediff, zerophaselocs[-1])
|
|
1121
|
-
instantaneous_cardiactime = instantaneous_cardiacphase * 0.0
|
|
1122
|
-
|
|
1123
|
-
whichpeak = 0
|
|
1124
|
-
for t in procpoints:
|
|
1125
|
-
if whichpeak < len(zerophaselocs) - 1:
|
|
1126
|
-
if t > zerophaselocs[whichpeak + 1]:
|
|
1127
|
-
whichpeak += 1
|
|
1128
|
-
if t > zerophaselocs[whichpeak]:
|
|
1129
|
-
instantaneous_cardiactime[t] = (t - zerophaselocs[whichpeak]) / slicesamplerate
|
|
1130
|
-
# print(t, whichpeak, zerophaselocs[whichpeak], instantaneous_cardiactime[t])
|
|
1131
|
-
maxtime = (
|
|
1132
|
-
np.ceil(
|
|
1133
|
-
int(
|
|
1134
|
-
1.02
|
|
1135
|
-
* tide_stats.getfracval(instantaneous_cardiactime, 0.98)
|
|
1136
|
-
// args.pulsereconstepsize
|
|
1137
|
-
)
|
|
1138
|
-
)
|
|
1139
|
-
* args.pulsereconstepsize
|
|
1140
|
-
)
|
|
1141
|
-
outtimes = np.linspace(
|
|
1142
|
-
0.0, maxtime, num=int(maxtime / args.pulsereconstepsize), endpoint=False
|
|
1143
|
-
)
|
|
1144
|
-
atp_bypoint = cardiaccycleaverage(
|
|
1145
|
-
instantaneous_cardiactime,
|
|
1146
|
-
outtimes,
|
|
1147
|
-
cardfromfmri_sliceres,
|
|
1148
|
-
procpoints,
|
|
1149
|
-
congridbins,
|
|
1150
|
-
gridkernel,
|
|
1151
|
-
False,
|
|
1152
|
-
cyclic=True,
|
|
1153
|
-
)
|
|
1154
|
-
if thispass == numpasses - 1:
|
|
1155
|
-
tide_io.writebidstsv(
|
|
1156
|
-
outputroot + "_desc-cardpulsefromfmri_timeseries",
|
|
1157
|
-
atp_bypoint,
|
|
1158
|
-
1.0 / (outtimes[1] - outtimes[0]),
|
|
1159
|
-
starttime=outtimes[0],
|
|
1160
|
-
columns=["pulsefromfmri"],
|
|
1161
|
-
append=False,
|
|
1162
|
-
debug=args.debug,
|
|
1163
|
-
)
|
|
1164
|
-
|
|
1165
|
-
if not args.verbose:
|
|
1166
|
-
print("Phase projecting...")
|
|
1167
|
-
|
|
1168
|
-
# make a lowpass filter for the projected data. Limit frequency to 3 cycles per 2pi (1/6th Fs)
|
|
1169
|
-
phaseFs = 1.0 / phasestep
|
|
1170
|
-
phaseFc = phaseFs / 6.0
|
|
1171
|
-
appsmoothingfilter = tide_filt.NoncausalFilter("arb", cyclic=True, padtime=0.0)
|
|
1172
|
-
appsmoothingfilter.setfreqs(0.0, 0.0, phaseFc, phaseFc)
|
|
1173
|
-
|
|
1174
|
-
# setup for aliased correlation if we're going to do it
|
|
1175
|
-
if args.doaliasedcorrelation and (thispass == numpasses - 1):
|
|
1176
|
-
if args.cardiacfilename:
|
|
1177
|
-
signal_sliceres = pleth_sliceres
|
|
1178
|
-
# signal_stdres = pleth_stdres
|
|
1179
|
-
else:
|
|
1180
|
-
signal_sliceres = cardfromfmri_sliceres
|
|
1181
|
-
# signal_stdres = dlfilteredcard_stdres
|
|
1182
|
-
corrsearchvals = (
|
|
1183
|
-
np.linspace(0.0, args.aliasedcorrelationwidth, num=args.aliasedcorrelationpts)
|
|
1184
|
-
- args.aliasedcorrelationwidth / 2.0
|
|
1185
|
-
)
|
|
1186
|
-
theAliasedCorrelator = tide_corr.AliasedCorrelator(
|
|
1187
|
-
signal_sliceres,
|
|
1188
|
-
slicesamplerate,
|
|
1189
|
-
numsteps,
|
|
1190
|
-
)
|
|
1191
|
-
thecorrfunc = np.zeros(
|
|
1192
|
-
(xsize, ysize, numslices, args.aliasedcorrelationpts), dtype=np.float64
|
|
1193
|
-
)
|
|
1194
|
-
thecorrfunc_byslice = thecorrfunc.reshape(
|
|
1195
|
-
(xsize * ysize, numslices, args.aliasedcorrelationpts)
|
|
1196
|
-
)
|
|
1197
|
-
wavedelay = np.zeros((xsize, ysize, numslices), dtype=np.float64)
|
|
1198
|
-
wavedelay_byslice = wavedelay.reshape((xsize * ysize, numslices))
|
|
1199
|
-
waveamp = np.zeros((xsize, ysize, numslices), dtype=np.float64)
|
|
1200
|
-
waveamp_byslice = waveamp.reshape((xsize * ysize, numslices))
|
|
1030
|
+
xsize, ysize, numslices, timepoints = input_data.getdims()
|
|
1031
|
+
fmri_data_byslice = input_data.byslice()
|
|
1201
1032
|
|
|
1202
|
-
# now project the data
|
|
1203
1033
|
for theslice in tqdm(
|
|
1204
1034
|
range(numslices),
|
|
1205
1035
|
desc="Slice",
|
|
1206
1036
|
unit="slices",
|
|
1037
|
+
disable=(not args.showprogressbar),
|
|
1207
1038
|
):
|
|
1208
1039
|
if args.verbose:
|
|
1209
1040
|
print("Phase projecting for slice", theslice)
|
|
@@ -1211,33 +1042,31 @@ def phaseproject(
|
|
|
1211
1042
|
# indexlist = range(0, len(cardphasevals[theslice, :]))
|
|
1212
1043
|
if len(validlocs) > 0:
|
|
1213
1044
|
for t in proctrs:
|
|
1214
|
-
filteredmr = -
|
|
1215
|
-
cinemr =
|
|
1216
|
-
datatoproject_byslice[validlocs, theslice, t]
|
|
1217
|
-
+ means_byslice[validlocs, theslice, t]
|
|
1218
|
-
)
|
|
1045
|
+
filteredmr = -demeandata_byslice[validlocs, theslice, t]
|
|
1046
|
+
cinemr = fmri_data_byslice[validlocs, theslice, t]
|
|
1219
1047
|
thevals, theweights, theindices = tide_resample.congrid(
|
|
1220
1048
|
outphases,
|
|
1221
1049
|
cardphasevals[theslice, t],
|
|
1222
1050
|
1.0,
|
|
1223
|
-
congridbins,
|
|
1224
|
-
kernel=gridkernel,
|
|
1051
|
+
args.congridbins,
|
|
1052
|
+
kernel=args.gridkernel,
|
|
1225
1053
|
cyclic=True,
|
|
1226
1054
|
)
|
|
1227
1055
|
for i in range(len(theindices)):
|
|
1228
|
-
|
|
1229
|
-
rawapp_byslice[validlocs, theslice, theindices[i]] += (
|
|
1230
|
-
|
|
1231
|
-
)
|
|
1056
|
+
weights_byslice[validlocs, theslice, theindices[i]] += theweights[i]
|
|
1057
|
+
# rawapp_byslice[validlocs, theslice, theindices[i]] += (
|
|
1058
|
+
# theweights[i] * filteredmr
|
|
1059
|
+
# )
|
|
1060
|
+
rawapp_byslice[validlocs, theslice, theindices[i]] += filteredmr
|
|
1232
1061
|
cine_byslice[validlocs, theslice, theindices[i]] += theweights[i] * cinemr
|
|
1233
|
-
for d in range(destpoints):
|
|
1234
|
-
if
|
|
1235
|
-
|
|
1062
|
+
for d in range(args.destpoints):
|
|
1063
|
+
if weights_byslice[validlocs[0], theslice, d] == 0.0:
|
|
1064
|
+
weights_byslice[validlocs, theslice, d] = 1.0
|
|
1236
1065
|
rawapp_byslice[validlocs, theslice, :] = np.nan_to_num(
|
|
1237
|
-
rawapp_byslice[validlocs, theslice, :] /
|
|
1066
|
+
rawapp_byslice[validlocs, theslice, :] / weights_byslice[validlocs, theslice, :]
|
|
1238
1067
|
)
|
|
1239
1068
|
cine_byslice[validlocs, theslice, :] = np.nan_to_num(
|
|
1240
|
-
cine_byslice[validlocs, theslice, :] /
|
|
1069
|
+
cine_byslice[validlocs, theslice, :] / weights_byslice[validlocs, theslice, :]
|
|
1241
1070
|
)
|
|
1242
1071
|
else:
|
|
1243
1072
|
rawapp_byslice[:, theslice, :] = 0.0
|
|
@@ -1260,33 +1089,41 @@ def phaseproject(
|
|
|
1260
1089
|
corrected_rawapp_byslice[validlocs, theslice, :] = (
|
|
1261
1090
|
rawapp_byslice[validlocs, theslice, :] - timecoursemean
|
|
1262
1091
|
) * appflips_byslice[validlocs, theslice, None] + timecoursemean
|
|
1263
|
-
if args.doaliasedcorrelation and (thispass
|
|
1092
|
+
if args.doaliasedcorrelation and (thispass > 0):
|
|
1264
1093
|
for theloc in validlocs:
|
|
1265
1094
|
thecorrfunc_byslice[theloc, theslice, :] = theAliasedCorrelator.apply(
|
|
1266
1095
|
-appflips_byslice[theloc, theslice]
|
|
1267
|
-
*
|
|
1268
|
-
|
|
1269
|
-
)
|
|
1096
|
+
* demeandata_byslice[theloc, theslice, :],
|
|
1097
|
+
int(sliceoffsets[theslice]),
|
|
1098
|
+
)[corrstartloc : correndloc + 1]
|
|
1270
1099
|
maxloc = np.argmax(thecorrfunc_byslice[theloc, theslice, :])
|
|
1271
|
-
wavedelay_byslice[theloc, theslice] =
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
]
|
|
1100
|
+
wavedelay_byslice[theloc, theslice] = (
|
|
1101
|
+
thealiasedcorrx[corrstartloc : correndloc + 1]
|
|
1102
|
+
)[maxloc]
|
|
1103
|
+
waveamp_byslice[theloc, theslice] = np.fabs(
|
|
1104
|
+
thecorrfunc_byslice[theloc, theslice, maxloc]
|
|
1105
|
+
)
|
|
1106
|
+
wavedelayCOM_byslice[theloc, theslice] = theCOM(
|
|
1107
|
+
thealiasedcorrx[corrstartloc : correndloc + 1],
|
|
1108
|
+
np.fabs(thecorrfunc_byslice[theloc, theslice, :]),
|
|
1109
|
+
)
|
|
1275
1110
|
else:
|
|
1276
1111
|
corrected_rawapp_byslice[validlocs, theslice, :] = rawapp_byslice[
|
|
1277
1112
|
validlocs, theslice, :
|
|
1278
1113
|
]
|
|
1279
|
-
if args.doaliasedcorrelation and (thispass
|
|
1114
|
+
if args.doaliasedcorrelation and (thispass > 0):
|
|
1280
1115
|
for theloc in validlocs:
|
|
1281
1116
|
thecorrfunc_byslice[theloc, theslice, :] = theAliasedCorrelator.apply(
|
|
1282
|
-
-
|
|
1283
|
-
|
|
1284
|
-
)
|
|
1117
|
+
-demeandata_byslice[theloc, theslice, :],
|
|
1118
|
+
int(sliceoffsets[theslice]),
|
|
1119
|
+
)[corrstartloc : correndloc + 1]
|
|
1285
1120
|
maxloc = np.argmax(np.abs(thecorrfunc_byslice[theloc, theslice, :]))
|
|
1286
|
-
wavedelay_byslice[theloc, theslice] =
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
]
|
|
1121
|
+
wavedelay_byslice[theloc, theslice] = (
|
|
1122
|
+
thealiasedcorrx[corrstartloc : correndloc + 1]
|
|
1123
|
+
)[maxloc]
|
|
1124
|
+
waveamp_byslice[theloc, theslice] = np.fabs(
|
|
1125
|
+
thecorrfunc_byslice[theloc, theslice, maxloc]
|
|
1126
|
+
)
|
|
1290
1127
|
timecoursemin = np.min(corrected_rawapp_byslice[validlocs, theslice, :], axis=1).reshape(
|
|
1291
1128
|
(-1, 1)
|
|
1292
1129
|
)
|
|
@@ -1296,10 +1133,10 @@ def phaseproject(
|
|
|
1296
1133
|
normapp_byslice[validlocs, theslice, :] = np.nan_to_num(
|
|
1297
1134
|
app_byslice[validlocs, theslice, :] / means_byslice[validlocs, theslice, None]
|
|
1298
1135
|
)
|
|
1299
|
-
return
|
|
1136
|
+
return appflips_byslice
|
|
1300
1137
|
|
|
1301
1138
|
|
|
1302
|
-
def upsampleimage(input_data,
|
|
1139
|
+
def upsampleimage(input_data, numsteps, sliceoffsets, slicesamplerate, outputroot):
|
|
1303
1140
|
fmri_data = input_data.byvol()
|
|
1304
1141
|
timepoints = input_data.timepoints
|
|
1305
1142
|
xsize = input_data.xsize
|
|
@@ -1309,7 +1146,6 @@ def upsampleimage(input_data, input_hdr, numsteps, sliceoffsets, slicesamplerate
|
|
|
1309
1146
|
# allocate the image
|
|
1310
1147
|
print(f"upsampling fmri data by a factor of {numsteps}")
|
|
1311
1148
|
upsampleimage = np.zeros((xsize, ysize, numslices, numsteps * timepoints), dtype=float)
|
|
1312
|
-
upsampleimage_byslice = upsampleimage.reshape(xsize * ysize, numslices, numsteps * timepoints)
|
|
1313
1149
|
|
|
1314
1150
|
# demean the raw data
|
|
1315
1151
|
meanfmri = fmri_data.mean(axis=1)
|
|
@@ -1339,8 +1175,8 @@ def upsampleimage(input_data, input_hdr, numsteps, sliceoffsets, slicesamplerate
|
|
|
1339
1175
|
)
|
|
1340
1176
|
upsampleimage_byslice[thexyvoxel, :, thetimepoint] = 1.0 * theinterps
|
|
1341
1177
|
|
|
1342
|
-
theheader =
|
|
1343
|
-
|
|
1344
|
-
|
|
1178
|
+
theheader = input_data.copyheader(
|
|
1179
|
+
numtimepoints=(timepoints * numsteps), tr=(1.0 / slicesamplerate)
|
|
1180
|
+
)
|
|
1345
1181
|
tide_io.savetonifti(upsampleimage, theheader, outputroot + "_upsampled")
|
|
1346
1182
|
print("upsampling complete")
|
|
@@ -310,7 +310,7 @@ class MutualInformationator(SimilarityFunctionator):
|
|
|
310
310
|
def run(self, thetc, locs=None, trim=True, gettimeaxis=True):
|
|
311
311
|
if len(thetc) != len(self.reftc):
|
|
312
312
|
print(
|
|
313
|
-
"timecourses are of different sizes:",
|
|
313
|
+
"MutualInformationator: timecourses are of different sizes:",
|
|
314
314
|
len(thetc),
|
|
315
315
|
"!=",
|
|
316
316
|
len(self.reftc),
|
|
@@ -434,7 +434,7 @@ class Correlator(SimilarityFunctionator):
|
|
|
434
434
|
def run(self, thetc, trim=True):
|
|
435
435
|
if len(thetc) != len(self.reftc):
|
|
436
436
|
print(
|
|
437
|
-
"timecourses are of different sizes:",
|
|
437
|
+
"Correlator: timecourses are of different sizes:",
|
|
438
438
|
len(thetc),
|
|
439
439
|
"!=",
|
|
440
440
|
len(self.reftc),
|
|
@@ -580,7 +580,7 @@ class Coherer:
|
|
|
580
580
|
def run(self, thetc, trim=True, alt=False):
|
|
581
581
|
if len(thetc) != len(self.reftc):
|
|
582
582
|
print(
|
|
583
|
-
"timecourses are of different sizes:",
|
|
583
|
+
"Coherer: timecourses are of different sizes:",
|
|
584
584
|
len(thetc),
|
|
585
585
|
"!=",
|
|
586
586
|
len(self.reftc),
|
|
@@ -1076,7 +1076,7 @@ class SimilarityFunctionFitter:
|
|
|
1076
1076
|
maxval_init = 0.0
|
|
1077
1077
|
if self.debug:
|
|
1078
1078
|
print("bad initial amp:", maxval_init, "is less than 0.0")
|
|
1079
|
-
if maxval_init > 1.0:
|
|
1079
|
+
if (maxval_init > 1.0) and self.enforcethresh:
|
|
1080
1080
|
failreason |= self.FML_INITAMPHIGH
|
|
1081
1081
|
maxval_init = 1.0
|
|
1082
1082
|
if self.debug:
|