rapidtide 3.0.2__tar.gz → 3.0.4__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.2 → rapidtide-3.0.4}/CHANGELOG.md +17 -1
- {rapidtide-3.0.2/rapidtide.egg-info → rapidtide-3.0.4}/PKG-INFO +1 -1
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/RapidtideDataset.py +2 -0
- rapidtide-3.0.4/rapidtide/_version.py +21 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/calcsimfunc.py +3 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/correlate.py +18 -1
- rapidtide-3.0.4/rapidtide/data/examples/src/testfmri +15 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testretro +10 -4
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/helper_classes.py +4 -4
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/io.py +8 -1
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/maskutil.py +144 -0
- rapidtide-3.0.4/rapidtide/tests/test_cleanregressor.py +185 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunrapidtide_v1.py +2 -0
- rapidtide-3.0.4/rapidtide/tests/test_fullrunrapidtide_v7.py +114 -0
- rapidtide-3.0.4/rapidtide/tests/test_getparsers.py +140 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_io.py +58 -13
- rapidtide-3.0.4/rapidtide/tests/test_parserfuncs.py +70 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_zRapidtideDataset.py +2 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/voxelData.py +1 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/cleanregressor.py +43 -6
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/rapidtide.py +247 -108
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/rapidtide2std.py +2 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/rapidtide_parser.py +115 -66
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/retroregress.py +192 -43
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/tidepool.py +6 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4/rapidtide.egg-info}/PKG-INFO +1 -1
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide.egg-info/SOURCES.txt +5 -0
- rapidtide-3.0.4/setup.py +8 -0
- rapidtide-3.0.2/rapidtide/_version.py +0 -683
- rapidtide-3.0.2/rapidtide/data/examples/src/testfmri +0 -12
- {rapidtide-3.0.2 → rapidtide-3.0.4}/CODE_OF_CONDUCT.md +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/CONTRIBUTING.md +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/INSTALL.rst +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/LICENSE +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/MANIFEST.in +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/README.rst +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/TODO.md +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/USAGE.rst +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/download-nda-data +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/downloadcmd-auther +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/gmscalc-HCPYA +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/list-rapidtide-relevant-images +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/mount-and-run +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/rapidtide-HCPYA +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/rapidtide-cloud-test +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/cloud/simple-cp-test +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/pyproject.toml +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/Colortables.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/DerivativeDelay.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/OrthoImageItem.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/RegressorRefiner.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/__init__.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/calcandfitcorrpairs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/calccoherence.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/calcnullsimfunc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/installtestdata +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/test_findmaxlag.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/test_io +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/test_mlregressallt.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/test_rapidtidecompare +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testalign +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testatlasaverage +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testboth +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testcifti +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testcomplex +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testdecomp +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testdelayvar +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testfileorfloat +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testfingerprint +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testfmridocker +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testfrozen +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testfuncs +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testglmfilt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testhappy +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testinitdelay +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testlinfit +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testlocalflow +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testmodels +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testnewrefine +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testnoiseamp +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testoscorr +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testpad +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testrefineonly +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testretrolagtcs +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/examples/src/testsimdata +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/loss.png +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/loss.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/model.keras +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_cnn_w064_l13_fn20_fl08/model_meta.json +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_revised_tf2/model.keras +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_revised_tf2/model_meta.json +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_serdar2_tf2/model.keras +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_serdar2_tf2/model_meta.json +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_serdar_tf2/model.keras +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/models/model_serdar_tf2/model_meta.json +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ASPECTS_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ASPECTS_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ASPECTS_3mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ASPECTS_3mm_mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ASPECTS_regions.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/ATTbasedFlowTerritories_split_regions.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200_lag_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200_sigma_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200_strength_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_graylaghist.json +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_laghist.json +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_whitelaghist.json +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1.xml +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_regions.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2.xml +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_regions.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/MNI152_T1_3mm.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/MNI152_T1_3mm_brain_mask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/data/reference/slicetimes/HCP-YA_slicetimes.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/dlfilter.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/externaltools.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/fMRIData_class.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/filter.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/fit.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/happy_supportfuncs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/linfitfiltpass.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/makelaggedtcs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/miscmath.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/multiproc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/patchmatch.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/peakeval.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/qualitycheck.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/refinedelay.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/refineregressor.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/resample.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/__init__.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/adjustoffset.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/aligntcs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/applydlfilter.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/atlasaverage.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/atlastool.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/calcicc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/calctexticc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/calcttest.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/ccorrica.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/delayvar.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/diffrois.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/endtidalproc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/fdica.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/filtnifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/filttc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/fingerprint.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/fixtr.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/gmscalc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/happy.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/happy2std.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/happywarp.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/histnifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/histtc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/linfitfilt.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/localflow.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/mergequality.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/pairproc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/pairwisemergenifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/physiofreq.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/pixelcomp.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/plethquality.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/polyfitim.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/proj2flow.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/rankimage.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/rapidtide.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/rapidtide2std.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/resamplenifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/resampletc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/retrolagtcs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/retroregress.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/roisummarize.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/runqualitycheck.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/showarbcorr.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/showhist.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/showstxcorr.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/showtc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/showxcorr_legacy.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/showxcorrx.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/showxy.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/simdata.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/spatialdecomp.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/spatialfit.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/spatialmi.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/spectrogram.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/stupidramtricks.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/synthASL.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/tcfrom2col.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/tcfrom3col.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/temporaldecomp.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/testhrv.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/threeD.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/tidepool.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/scripts/variabilityizer.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/simfuncfit.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/stats.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/.coveragerc +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/__init__.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/cleanposttest +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/matplotlibrc +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/resethappytargets +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/resetrapidtidetargets +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/resettargets +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/runlocaltest +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/showdirectories +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/showkernels +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_aliasedcorrelate.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_aligntcs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_calcicc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_congrid.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_correlate.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_corrpass.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_delayestimation.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_doresample.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fastresampler.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_filter.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_findmaxlag.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunhappy_v1.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunhappy_v2.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunhappy_v3.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunhappy_v4.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunhappy_v5.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunrapidtide_v2.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunrapidtide_v3.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunrapidtide_v4.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunrapidtide_v5.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_fullrunrapidtide_v6.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_linfitfiltpass.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_mi.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_miscmath.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_motionregress.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_nullcorr.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_padvec.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_phaseanalysis.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_rapidtideparser.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_refinedelay.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_runmisc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_sharedmem.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_simulate.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_stcorrelate.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_timeshift.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/test_valtoindex.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_info.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_normpleth_25.0Hz.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_pleth_25.0Hz.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/100206_REST1_LR_pleth_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/fmri_globalmean.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/happy_phase1target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/happy_phase2output_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/happy_target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/lforegressor.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/lt_rt.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/phasetest.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/rapidtide2x_phase1target_reference_fmrires.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/stcorrtest_Rvalue.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/stcorrtest_delay.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/stcorrtest_mask.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/stcorrtest_pearson.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/stcorrtest_pvalue.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/testdata/testfilt.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/tmp/.placeholder.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/usercustomize.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tests/utils.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate.ui +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate_alt.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate_alt.ui +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate_alt_qt6.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate_big.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate_big.ui +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate_big_qt6.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/tidepoolTemplate_qt6.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/transformerdlfilter.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/util.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/wiener.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/wiener2.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/__init__.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/adjustoffset.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/aligntcs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/applydlfilter.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/atlasaverage.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/atlastool.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/calctexticc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/ccorrica.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/delayestimation.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/delayvar.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/diffrois.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/endtidalproc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/fdica.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/filtnifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/filttc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/fixtr.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/gmscalc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/happy.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/happy2std.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/happy_parser.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/histnifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/histtc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/linfitfilt.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/localflow.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/mergequality.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/niftidecomp.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/niftistats.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/pairproc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/pairwisemergenifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/parser_funcs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/physiofreq.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/pixelcomp.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/plethquality.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/polyfitim.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/proj2flow.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/rankimage.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/regressfrommaps.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/resamplenifti.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/resampletc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/retrolagtcs.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/roisummarize.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/runqualitycheck.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/showarbcorr.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/showhist.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/showstxcorr.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/showtc.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/showxcorrx.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/showxy.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/simdata.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/spatialfit.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/spatialmi.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/spectrogram.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/synthASL.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/tcfrom2col.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/tcfrom3col.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/utils.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide/workflows/variabilityizer.py +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide.egg-info/dependency_links.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide.egg-info/entry_points.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide.egg-info/requires.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/rapidtide.egg-info/top_level.txt +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/setup.cfg +0 -0
- {rapidtide-3.0.2 → rapidtide-3.0.4}/versioneer.py +0 -0
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
# Release history
|
|
2
2
|
|
|
3
|
+
## Version 3.0.4 (5/5/25)
|
|
4
|
+
* (rapidtide, retrotregress, tidepool) Support for maxcorrrefined map.
|
|
5
|
+
* (retroregress) Gracefully handles missing mask names in runoptions file.
|
|
6
|
+
* (package) Version works again! Thank you Chris (https://github.com/effigies)!
|
|
7
|
+
* (package) Added a few more tests to catch edge cases that showed up in testing fmripost-rapidtide.
|
|
8
|
+
|
|
9
|
+
## Version 3.0.3 (5/4/25)
|
|
10
|
+
* (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.
|
|
11
|
+
* (rapidtide) Fixed mask logic when gray matter mask is provided.
|
|
12
|
+
* (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...).
|
|
13
|
+
* (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.
|
|
14
|
+
* (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).
|
|
15
|
+
* (rapidtide) Added back the ability to have integral powers of the motion regressors.
|
|
16
|
+
* (rapidtide) Added the ability to specify a CSF mask.
|
|
17
|
+
|
|
18
|
+
|
|
3
19
|
## Version 3.0.2 (4/28/25)
|
|
4
|
-
* (rapidtide) Leaned harder into using the voxelData class, and beefed up its capabilities.
|
|
5
20
|
* (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.
|
|
21
|
+
* (rapidtide) Leaned harder into using the voxelData class, and beefed up its capabilities.
|
|
6
22
|
* (happy) Updated to use voxelData.
|
|
7
23
|
* (happy) Moved phase projection to an external routine.
|
|
8
24
|
* (documentation) Fixed a few more typos.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rapidtide
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.4
|
|
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>
|
|
@@ -276,6 +276,7 @@ class Overlay:
|
|
|
276
276
|
label=newlabel,
|
|
277
277
|
report=self.report,
|
|
278
278
|
init_LUT=init_LUT,
|
|
279
|
+
verbose=self.verbose,
|
|
279
280
|
)
|
|
280
281
|
|
|
281
282
|
def updateStats(self):
|
|
@@ -1145,6 +1146,7 @@ class RapidtideDataset:
|
|
|
1145
1146
|
["lagtimesrefined", "desc-maxtimerefined_map"],
|
|
1146
1147
|
["timepercentile", "desc-timepercentile_map"],
|
|
1147
1148
|
["lagstrengths", "desc-maxcorr_map"],
|
|
1149
|
+
["lagstrengthsrefined", "desc-maxcorrrefined_map"],
|
|
1148
1150
|
["lagsigma", "desc-maxwidth_map"],
|
|
1149
1151
|
["MTT", "desc-MTT_map"],
|
|
1150
1152
|
["R2", "desc-lfofilterR2_map"],
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
# This file was generated by 'versioneer.py' (0.29) from
|
|
3
|
+
# revision-control system data, or from the parent directory name of an
|
|
4
|
+
# unpacked source archive. Distribution tarballs contain a pre-generated copy
|
|
5
|
+
# of this file.
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
|
|
9
|
+
version_json = '''
|
|
10
|
+
{
|
|
11
|
+
"date": "2025-05-06T11:02:28-0400",
|
|
12
|
+
"dirty": false,
|
|
13
|
+
"error": null,
|
|
14
|
+
"full-revisionid": "c5e5e2f38938a78c3439882e8ad596c483c6adcf",
|
|
15
|
+
"version": "3.0.4"
|
|
16
|
+
}
|
|
17
|
+
''' # END VERSION_JSON
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def get_versions():
|
|
21
|
+
return json.loads(version_json)
|
|
@@ -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,10 +1,16 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
3
|
rapidtide \
|
|
4
|
+
--spatialfilt -1 \
|
|
4
5
|
--nprocs -1 \
|
|
5
|
-
--
|
|
6
|
-
--
|
|
7
|
-
--
|
|
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 \
|
|
8
14
|
sub-RAPIDTIDETEST.nii.gz \
|
|
9
15
|
../dst/sub-RAPIDTIDETEST
|
|
10
16
|
|
|
@@ -15,7 +21,7 @@ retroregress \
|
|
|
15
21
|
../dst/sub-RAPIDTIDETEST \
|
|
16
22
|
--alternateoutput ../dst/specialtest \
|
|
17
23
|
--nprocs -1 \
|
|
18
|
-
--outputlevel
|
|
24
|
+
--outputlevel normal
|
|
19
25
|
|
|
20
26
|
#retroregress sub-RAPIDTIDETEST.nii.gz ../dst/sub-RAPIDTIDETEST --alternateoutput ../dst/0deriv_refined --nprocs -1 --regressderivs 0 --makepseudofile --outputlevel max --refinedelay --nofilterwithrefineddelay
|
|
21
27
|
#retroregress sub-RAPIDTIDETEST.nii.gz ../dst/sub-RAPIDTIDETEST --alternateoutput ../dst/0deriv_refinedfit --nprocs -1 --regressderivs 0 --makepseudofile --outputlevel max --refinedelay
|
|
@@ -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:
|
|
@@ -1938,7 +1938,12 @@ def parsefilespec(filespec, debug=False):
|
|
|
1938
1938
|
if debug:
|
|
1939
1939
|
print(f"PARSEFILESPEC: input string >>>{filespec}<<<")
|
|
1940
1940
|
print(f"PARSEFILESPEC: platform is {platform.system()}")
|
|
1941
|
-
|
|
1941
|
+
|
|
1942
|
+
specialcase = False
|
|
1943
|
+
if len(inputlist) > 1:
|
|
1944
|
+
if filespec[1] == ":" and platform.system() == "Windows":
|
|
1945
|
+
specialcase = True
|
|
1946
|
+
if specialcase:
|
|
1942
1947
|
thefilename = ":".join([inputlist[0], inputlist[1]])
|
|
1943
1948
|
if len(inputlist) == 3:
|
|
1944
1949
|
thecolspec = inputlist[2]
|
|
@@ -1996,12 +2001,14 @@ def colspectolist(colspec, debug=False):
|
|
|
1996
2001
|
("APARC_CORTGRAY", "1000-1035,2000-2035"),
|
|
1997
2002
|
("APARC_GRAY", "8-13,17-20,26-28,47-56,58-60,96,97,1000-1035,2000-2035"),
|
|
1998
2003
|
("APARC_WHITE", "2,7,41,46,177,219,3000-3035,4000-4035,5001,5002"),
|
|
2004
|
+
("APARC_CSF", "4,5,14,15,24,31,43,44,63,72"),
|
|
1999
2005
|
(
|
|
2000
2006
|
"APARC_ALLBUTCSF",
|
|
2001
2007
|
"2,7-13,17-20,26-28,41,46-56,58-60,96,97,177,219,1000-1035,2000-2035,3000-3035,4000-4035,5001,5002",
|
|
2002
2008
|
),
|
|
2003
2009
|
("SSEG_GRAY", "3,8,10-13,16-18,26,42,47,49-54,58"),
|
|
2004
2010
|
("SSEG_WHITE", "2,7,41,46"),
|
|
2011
|
+
("SSEG_CSF", "4,5,14,15,24,43,44"),
|
|
2005
2012
|
)
|
|
2006
2013
|
preprocessedranges = []
|
|
2007
2014
|
for thisrange in theranges:
|
|
@@ -21,8 +21,10 @@ import logging
|
|
|
21
21
|
|
|
22
22
|
import numpy as np
|
|
23
23
|
from nilearn import masking
|
|
24
|
+
from sklearn.decomposition import PCA
|
|
24
25
|
|
|
25
26
|
import rapidtide.io as tide_io
|
|
27
|
+
import rapidtide.miscmath as tide_math
|
|
26
28
|
import rapidtide.stats as tide_stats
|
|
27
29
|
|
|
28
30
|
LGR = logging.getLogger("GENERAL")
|
|
@@ -67,8 +69,16 @@ def readamask(
|
|
|
67
69
|
thresh=None,
|
|
68
70
|
maskname="the",
|
|
69
71
|
tolerance=1.0e-3,
|
|
72
|
+
debug=False,
|
|
70
73
|
):
|
|
71
74
|
LGR.debug(f"readamask called with filename: {maskfilename} vals: {valslist}")
|
|
75
|
+
if debug:
|
|
76
|
+
print("getmaskset:")
|
|
77
|
+
print(f"{maskname=}")
|
|
78
|
+
print(f"\tincludefilename={maskfilename}")
|
|
79
|
+
print(f"\tincludevals={valslist}")
|
|
80
|
+
print(f"\t{istext=}")
|
|
81
|
+
print(f"\t{tolerance=}")
|
|
72
82
|
if istext:
|
|
73
83
|
maskarray = tide_io.readvecs(maskfilename).astype("uint16")
|
|
74
84
|
theshape = np.shape(maskarray)
|
|
@@ -109,11 +119,24 @@ def getmaskset(
|
|
|
109
119
|
extramaskthresh=0.1,
|
|
110
120
|
istext=False,
|
|
111
121
|
tolerance=1.0e-3,
|
|
122
|
+
debug=False,
|
|
112
123
|
):
|
|
113
124
|
internalincludemask = None
|
|
114
125
|
internalexcludemask = None
|
|
115
126
|
internalextramask = None
|
|
116
127
|
|
|
128
|
+
if debug:
|
|
129
|
+
print("getmaskset:")
|
|
130
|
+
print(f"{maskname=}")
|
|
131
|
+
print(f"\t{includename=}")
|
|
132
|
+
print(f"\t{includevals=}")
|
|
133
|
+
print(f"\t{excludename=}")
|
|
134
|
+
print(f"\t{excludevals=}")
|
|
135
|
+
print(f"\t{istext=}")
|
|
136
|
+
print(f"\t{tolerance=}")
|
|
137
|
+
print(f"\t{extramask=}")
|
|
138
|
+
print(f"\t{extramaskthresh=}")
|
|
139
|
+
|
|
117
140
|
if includename is not None:
|
|
118
141
|
LGR.info(f"constructing {maskname} include mask")
|
|
119
142
|
theincludemask = readamask(
|
|
@@ -178,3 +201,124 @@ def getmaskset(
|
|
|
178
201
|
)
|
|
179
202
|
|
|
180
203
|
return internalincludemask, internalexcludemask, internalextramask
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def getregionsignal(
|
|
207
|
+
indata,
|
|
208
|
+
filter=None,
|
|
209
|
+
Fs=1.0,
|
|
210
|
+
includemask=None,
|
|
211
|
+
excludemask=None,
|
|
212
|
+
signalgenmethod="sum",
|
|
213
|
+
pcacomponents=0.8,
|
|
214
|
+
signame="global mean",
|
|
215
|
+
rt_floatset=np.float64,
|
|
216
|
+
debug=False,
|
|
217
|
+
):
|
|
218
|
+
# Start with all voxels
|
|
219
|
+
themask = indata[:, 0] * 0 + 1
|
|
220
|
+
|
|
221
|
+
# modify the mask if needed
|
|
222
|
+
if includemask is not None:
|
|
223
|
+
themask = themask * includemask
|
|
224
|
+
if excludemask is not None:
|
|
225
|
+
themask = themask * (1 - excludemask)
|
|
226
|
+
|
|
227
|
+
# combine all the voxels using one of the three methods
|
|
228
|
+
globalmean = rt_floatset(indata[0, :])
|
|
229
|
+
thesize = np.shape(themask)
|
|
230
|
+
numvoxelsused = int(np.sum(np.where(themask > 0.0, 1, 0)))
|
|
231
|
+
selectedvoxels = indata[np.where(themask > 0.0), :][0]
|
|
232
|
+
if debug:
|
|
233
|
+
print(f"getregionsignal: {selectedvoxels.shape=}")
|
|
234
|
+
LGR.info(f"constructing global mean signal using {signalgenmethod}")
|
|
235
|
+
if signalgenmethod == "sum":
|
|
236
|
+
globalmean = np.mean(selectedvoxels, axis=0)
|
|
237
|
+
globalmean -= np.mean(globalmean)
|
|
238
|
+
elif signalgenmethod == "meanscale":
|
|
239
|
+
themean = np.mean(indata, axis=1)
|
|
240
|
+
for vox in range(0, thesize[0]):
|
|
241
|
+
if themask[vox] > 0.0:
|
|
242
|
+
if themean[vox] != 0.0:
|
|
243
|
+
globalmean += indata[vox, :] / themean[vox] - 1.0
|
|
244
|
+
elif signalgenmethod == "pca":
|
|
245
|
+
themean = np.mean(indata, axis=1)
|
|
246
|
+
thevar = np.var(indata, axis=1)
|
|
247
|
+
scaledvoxels = selectedvoxels * 0.0
|
|
248
|
+
for vox in range(0, selectedvoxels.shape[0]):
|
|
249
|
+
scaledvoxels[vox, :] = selectedvoxels[vox, :] - themean[vox]
|
|
250
|
+
if thevar[vox] > 0.0:
|
|
251
|
+
scaledvoxels[vox, :] = selectedvoxels[vox, :] / thevar[vox]
|
|
252
|
+
try:
|
|
253
|
+
thefit = PCA(n_components=pcacomponents).fit(np.transpose(scaledvoxels))
|
|
254
|
+
except ValueError:
|
|
255
|
+
if pcacomponents == "mle":
|
|
256
|
+
LGR.warning("mle estimation failed - falling back to pcacomponents=0.8")
|
|
257
|
+
thefit = PCA(n_components=0.8).fit(np.transpose(scaledvoxels))
|
|
258
|
+
else:
|
|
259
|
+
raise ValueError("unhandled math exception in PCA refinement - exiting")
|
|
260
|
+
|
|
261
|
+
varex = 100.0 * np.cumsum(thefit.explained_variance_ratio_)[len(thefit.components_) - 1]
|
|
262
|
+
thetransform = thefit.transform(np.transpose(scaledvoxels))
|
|
263
|
+
if debug:
|
|
264
|
+
print(f"getregionsignal: {thetransform.shape=}")
|
|
265
|
+
globalmean = np.mean(thetransform, axis=0)
|
|
266
|
+
globalmean -= np.mean(globalmean)
|
|
267
|
+
if debug:
|
|
268
|
+
print(f"getregionsignal: {varex=}")
|
|
269
|
+
LGR.info(
|
|
270
|
+
f"Using {len(thefit.components_)} component(s), accounting for "
|
|
271
|
+
f"{varex:.2f}% of the variance"
|
|
272
|
+
)
|
|
273
|
+
elif signalgenmethod == "random":
|
|
274
|
+
globalmean = np.random.standard_normal(size=len(globalmean))
|
|
275
|
+
else:
|
|
276
|
+
raise ValueError(f"illegal signal generation method: {signalgenmethod}")
|
|
277
|
+
LGR.info(f"used {numvoxelsused} voxels to calculate {signame} signal")
|
|
278
|
+
if filter is not None:
|
|
279
|
+
globalmean = filter.apply(Fs, globalmean)
|
|
280
|
+
if debug:
|
|
281
|
+
print(f"getregionsignal: {globalmean=}")
|
|
282
|
+
return tide_math.stdnormalize(globalmean), themask
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
def saveregionaltimeseries(
|
|
286
|
+
tcdesc,
|
|
287
|
+
tcname,
|
|
288
|
+
fmridata,
|
|
289
|
+
includemask,
|
|
290
|
+
fmrifreq,
|
|
291
|
+
outputname,
|
|
292
|
+
filter=None,
|
|
293
|
+
initfile=False,
|
|
294
|
+
excludemask=None,
|
|
295
|
+
filedesc="regional",
|
|
296
|
+
suffix="",
|
|
297
|
+
signalgenmethod="sum",
|
|
298
|
+
pcacomponents=0.8,
|
|
299
|
+
rt_floatset=np.float64,
|
|
300
|
+
debug=False,
|
|
301
|
+
):
|
|
302
|
+
thetimecourse, themask = getregionsignal(
|
|
303
|
+
fmridata,
|
|
304
|
+
filter=filter,
|
|
305
|
+
Fs=fmrifreq,
|
|
306
|
+
includemask=includemask,
|
|
307
|
+
excludemask=excludemask,
|
|
308
|
+
signalgenmethod=signalgenmethod,
|
|
309
|
+
pcacomponents=pcacomponents,
|
|
310
|
+
signame=tcdesc,
|
|
311
|
+
rt_floatset=rt_floatset,
|
|
312
|
+
debug=debug,
|
|
313
|
+
)
|
|
314
|
+
tide_io.writebidstsv(
|
|
315
|
+
f"{outputname}_desc-{filedesc}_timeseries",
|
|
316
|
+
thetimecourse,
|
|
317
|
+
fmrifreq,
|
|
318
|
+
columns=[f"{tcname}{suffix}"],
|
|
319
|
+
extraheaderinfo={
|
|
320
|
+
"Description": "Regional timecourse averages",
|
|
321
|
+
},
|
|
322
|
+
append=(not initfile),
|
|
323
|
+
)
|
|
324
|
+
return thetimecourse, themask
|
|
@@ -0,0 +1,185 @@
|
|
|
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 os
|
|
20
|
+
|
|
21
|
+
import matplotlib as mpl
|
|
22
|
+
import numpy as np
|
|
23
|
+
|
|
24
|
+
import rapidtide.filter as tide_filt
|
|
25
|
+
import rapidtide.helper_classes as tide_classes
|
|
26
|
+
import rapidtide.miscmath as tide_math
|
|
27
|
+
import rapidtide.resample as tide_resample
|
|
28
|
+
import rapidtide.workflows.cleanregressor as tide_cleanregressor
|
|
29
|
+
from rapidtide.tests.utils import get_examples_path, get_test_temp_path, mse
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def test_cleanregressor(debug=False, local=False, displayplots=False):
|
|
33
|
+
# set input and output directories
|
|
34
|
+
if local:
|
|
35
|
+
exampleroot = "../data/examples/src"
|
|
36
|
+
testtemproot = "./tmp"
|
|
37
|
+
else:
|
|
38
|
+
exampleroot = get_examples_path()
|
|
39
|
+
testtemproot = get_test_temp_path()
|
|
40
|
+
|
|
41
|
+
outputname = os.path.join(testtemproot, "cleanregressortest")
|
|
42
|
+
thepass = 1
|
|
43
|
+
padtrs = 30
|
|
44
|
+
fmrifreq = 1.0
|
|
45
|
+
oversampfac = 2
|
|
46
|
+
oversampfreq = oversampfac * fmrifreq
|
|
47
|
+
theprefilter = tide_filt.NoncausalFilter("lfo")
|
|
48
|
+
lagmin = -30
|
|
49
|
+
lagmax = 30
|
|
50
|
+
lagmininpts = int((lagmin * oversampfreq) - 0.5)
|
|
51
|
+
lagmaxinpts = int((lagmax * oversampfreq) + 0.5)
|
|
52
|
+
lagmod = 1000.0
|
|
53
|
+
noiseamp = 0.25
|
|
54
|
+
detrendorder = 3
|
|
55
|
+
windowfunc = "hamming"
|
|
56
|
+
|
|
57
|
+
tclen = 500
|
|
58
|
+
osvalidsimcalcstart = 0
|
|
59
|
+
osvalidsimcalcend = tclen * oversampfac
|
|
60
|
+
|
|
61
|
+
theCorrelator = tide_classes.Correlator(
|
|
62
|
+
Fs=oversampfreq,
|
|
63
|
+
ncprefilter=theprefilter,
|
|
64
|
+
detrendorder=1,
|
|
65
|
+
windowfunc="hamming",
|
|
66
|
+
corrweighting="phat",
|
|
67
|
+
)
|
|
68
|
+
theFitter = tide_classes.SimilarityFunctionFitter(
|
|
69
|
+
lagmod=lagmod,
|
|
70
|
+
lagmin=lagmin,
|
|
71
|
+
lagmax=lagmax,
|
|
72
|
+
debug=debug,
|
|
73
|
+
allowhighfitamps=True,
|
|
74
|
+
enforcethresh=False,
|
|
75
|
+
zerooutbadfit=False,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# make a reference timecourse
|
|
79
|
+
rng = np.random.default_rng(seed=1234)
|
|
80
|
+
basewave = theprefilter.apply(fmrifreq, rng.normal(loc=0.0, scale=1.0, size=tclen))
|
|
81
|
+
noisewave = rng.normal(loc=0.0, scale=noiseamp, size=tclen)
|
|
82
|
+
theparamsets = [
|
|
83
|
+
[2.0, 0.0, False, 0],
|
|
84
|
+
[2.5, 0.8, True, 0],
|
|
85
|
+
[5.0, 0.5, True, 0],
|
|
86
|
+
[7.5, 0.25, True, 100],
|
|
87
|
+
[10.0, 0.1, True, 0],
|
|
88
|
+
]
|
|
89
|
+
for paramset in theparamsets:
|
|
90
|
+
echotime = paramset[0]
|
|
91
|
+
echoamp = paramset[1]
|
|
92
|
+
check_autocorrelation = paramset[2]
|
|
93
|
+
osvalidsimcalcstart = paramset[3]
|
|
94
|
+
if debug:
|
|
95
|
+
print(
|
|
96
|
+
"**********Start******************************************************************"
|
|
97
|
+
)
|
|
98
|
+
print(f"{echotime=}, {echoamp=}, {check_autocorrelation=}, {osvalidsimcalcstart=}")
|
|
99
|
+
print(
|
|
100
|
+
"*********************************************************************************"
|
|
101
|
+
)
|
|
102
|
+
theechotc, dummy, dummy, dummy = tide_resample.timeshift(
|
|
103
|
+
basewave, echotime * oversampfreq, padtrs, doplot=displayplots, debug=debug
|
|
104
|
+
)
|
|
105
|
+
resampnonosref_y = basewave + echoamp * theechotc + noisewave
|
|
106
|
+
resampref_y = tide_resample.upsample(resampnonosref_y, fmrifreq, oversampfreq)
|
|
107
|
+
theCorrelator.setreftc(resampnonosref_y)
|
|
108
|
+
referencetc = tide_math.corrnormalize(
|
|
109
|
+
resampref_y[osvalidsimcalcstart:],
|
|
110
|
+
detrendorder=detrendorder,
|
|
111
|
+
windowfunc=windowfunc,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
resampref_y = tide_resample.upsample(resampnonosref_y, fmrifreq, oversampfreq)
|
|
115
|
+
|
|
116
|
+
(
|
|
117
|
+
cleaned_resampref_y,
|
|
118
|
+
cleaned_referencetc,
|
|
119
|
+
cleaned_nonosreferencetc,
|
|
120
|
+
despeckle_thresh,
|
|
121
|
+
sidelobeamp,
|
|
122
|
+
sidelobetime,
|
|
123
|
+
lagmod,
|
|
124
|
+
acwidth,
|
|
125
|
+
absmaxsigma,
|
|
126
|
+
) = tide_cleanregressor.cleanregressor(
|
|
127
|
+
outputname,
|
|
128
|
+
thepass,
|
|
129
|
+
referencetc,
|
|
130
|
+
resampref_y,
|
|
131
|
+
resampnonosref_y,
|
|
132
|
+
fmrifreq,
|
|
133
|
+
oversampfreq,
|
|
134
|
+
osvalidsimcalcstart,
|
|
135
|
+
osvalidsimcalcend,
|
|
136
|
+
lagmininpts,
|
|
137
|
+
lagmaxinpts,
|
|
138
|
+
theFitter,
|
|
139
|
+
theCorrelator,
|
|
140
|
+
lagmin,
|
|
141
|
+
lagmax,
|
|
142
|
+
LGR=None,
|
|
143
|
+
check_autocorrelation=check_autocorrelation,
|
|
144
|
+
fix_autocorrelation=True,
|
|
145
|
+
despeckle_thresh=5.0,
|
|
146
|
+
lthreshval=0.0,
|
|
147
|
+
fixdelay=False,
|
|
148
|
+
detrendorder=detrendorder,
|
|
149
|
+
windowfunc=windowfunc,
|
|
150
|
+
respdelete=False,
|
|
151
|
+
displayplots=displayplots,
|
|
152
|
+
debug=debug,
|
|
153
|
+
rt_floattype="float64",
|
|
154
|
+
rt_floatset=np.float64,
|
|
155
|
+
)
|
|
156
|
+
print(f"\t{len(referencetc)=}")
|
|
157
|
+
print(f"\t{len(resampref_y)=}")
|
|
158
|
+
print(f"\t{len(resampnonosref_y)=}")
|
|
159
|
+
print(f"\t{len(cleaned_resampref_y)=}")
|
|
160
|
+
print(f"\t{len(cleaned_referencetc)=}")
|
|
161
|
+
print(f"\t{len(cleaned_nonosreferencetc)=}")
|
|
162
|
+
print(f"\t{check_autocorrelation=}")
|
|
163
|
+
print(f"\t{despeckle_thresh=}")
|
|
164
|
+
print(f"\t{sidelobeamp=}")
|
|
165
|
+
print(f"\t{sidelobetime=}")
|
|
166
|
+
print(f"\t{lagmod=}")
|
|
167
|
+
print(f"\t{acwidth=}")
|
|
168
|
+
print(f"\t{absmaxsigma=}")
|
|
169
|
+
assert len(referencetc) == len(cleaned_referencetc)
|
|
170
|
+
assert len(resampref_y) == len(cleaned_resampref_y)
|
|
171
|
+
assert len(resampnonosref_y) == len(cleaned_nonosreferencetc)
|
|
172
|
+
|
|
173
|
+
if debug:
|
|
174
|
+
print(
|
|
175
|
+
"*********************************************************************************"
|
|
176
|
+
)
|
|
177
|
+
print(f"{echotime=}, {echoamp=}, {check_autocorrelation=}, {osvalidsimcalcstart=}")
|
|
178
|
+
print(
|
|
179
|
+
"**************End****************************************************************"
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
if __name__ == "__main__":
|
|
184
|
+
mpl.use("TkAgg")
|
|
185
|
+
test_cleanregressor(debug=True, local=True, displayplots=True)
|
|
@@ -56,6 +56,7 @@ def test_fullrunrapidtide_v1(debug=False, local=False, displayplots=False):
|
|
|
56
56
|
rapidtide_workflow.rapidtide_main(rapidtide_parser.process_args(inputargs=inputargs))
|
|
57
57
|
rapidtide_quality.qualitycheck(os.path.join(testtemproot, "sub-RAPIDTIDETEST1"))
|
|
58
58
|
|
|
59
|
+
# test fixval
|
|
59
60
|
inputargs = [
|
|
60
61
|
os.path.join(exampleroot, "sub-RAPIDTIDETEST.nii.gz"),
|
|
61
62
|
os.path.join(testtemproot, "sub-RAPIDTIDETEST1_fixval"),
|
|
@@ -77,6 +78,7 @@ def test_fullrunrapidtide_v1(debug=False, local=False, displayplots=False):
|
|
|
77
78
|
]
|
|
78
79
|
rapidtide_workflow.rapidtide_main(rapidtide_parser.process_args(inputargs=inputargs))
|
|
79
80
|
|
|
81
|
+
# test fixmap
|
|
80
82
|
inputargs = [
|
|
81
83
|
os.path.join(exampleroot, "sub-RAPIDTIDETEST.nii.gz"),
|
|
82
84
|
os.path.join(testtemproot, "sub-RAPIDTIDETEST1_fixmap"),
|