rapidtide 3.0a11__tar.gz → 3.0a12__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.0a11 → rapidtide-3.0a12}/CHANGELOG.md +9 -1
- {rapidtide-3.0a11/rapidtide.egg-info → rapidtide-3.0a12}/PKG-INFO +1 -1
- rapidtide-3.0a12/TODO.md +17 -0
- rapidtide-3.0a12/rapidtide/Refiner.py +464 -0
- rapidtide-3.0a12/rapidtide/data/examples/src/testfmri +10 -0
- rapidtide-3.0a12/rapidtide/data/examples/src/testinitdelay +19 -0
- rapidtide-3.0a12/rapidtide/data/examples/src/testnewrefine +49 -0
- rapidtide-3.0a12/rapidtide/data/examples/src/testrefineonly +22 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/glmpass.py +8 -1
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/refinedelay.py +72 -32
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/refineregressor.py +38 -24
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate.py +1 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate.ui +1 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate_alt.py +5 -4
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate_alt.ui +3 -2
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate_alt_qt6.py +5 -4
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate_big.py +1 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate_big.ui +1 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate_big_qt6.py +1 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tidepoolTemplate_qt6.py +1 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/parser_funcs.py +10 -2
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/rapidtide.py +197 -325
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/rapidtide_parser.py +35 -13
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/retroglm.py +145 -60
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/tidepool.py +2 -2
- {rapidtide-3.0a11 → rapidtide-3.0a12/rapidtide.egg-info}/PKG-INFO +1 -1
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide.egg-info/SOURCES.txt +4 -0
- rapidtide-3.0a11/TODO.md +0 -35
- rapidtide-3.0a11/rapidtide/data/examples/src/testfmri +0 -132
- {rapidtide-3.0a11 → rapidtide-3.0a12}/CODE_OF_CONDUCT.md +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/CONTRIBUTING.md +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/INSTALL.rst +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/LICENSE +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/MANIFEST.in +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/README.rst +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/USAGE.rst +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/download-nda-data +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/downloadcmd-auther +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/gmscalc-HCPYA +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/list-rapidtide-relevant-images +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/mount-and-run +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/rapidtide-HCPYA +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/rapidtide-cloud-test +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/cloud/simple-cp-test +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/pyproject.toml +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/Colortables.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/OrthoImageItem.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/RapidtideDataset.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/__init__.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/_version.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/calcandfitcorrpairs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/calccoherence.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/calcnullsimfunc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/calcsimfunc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/correlate.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/installtestdata +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/test_findmaxlag.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/test_io +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/test_mlregressallt.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/test_rapidtidecompare +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testalign +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testatlasaverage +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testboth +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testcomplex +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testdecomp +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testfileorfloat +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testfingerprint +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testfmridocker +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testfrozen +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testfuncs +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testglmfilt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testhappy +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testlinfit +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testlocalflow +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testnoiseamp +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testoscorr +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testoutputsize +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testpad +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testretro +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testretrolagtcs +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/examples/src/testsimdata +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/models/model_revised/model.h5 +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/models/model_revised/model_meta.json +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/models/model_serdar/model.h5 +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/models/model_serdar/model_meta.json +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/models/model_serdar2/model.h5 +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/models/model_serdar2/model_meta.json +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ASPECTS_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ASPECTS_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ASPECTS_3mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ASPECTS_3mm_mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ASPECTS_regions.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ATTbasedFlowTerritories_split_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/ATTbasedFlowTerritories_split_regions.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200_lag_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200_sigma_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200_strength_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_MTT_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_binmask_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_csf_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_gray_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_graylaghist.json +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_graylaghist.tsv.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_laghist.json +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_laghist.tsv.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_mask_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_maxcorr_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_maxtime_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_maxwidth_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_negmask_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_timepercentile_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_white_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_whitelaghist.json +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/HCP1200v2_whitelaghist.tsv.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2.xml +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_regions.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1-seg2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1.xml +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_regions.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2.xml +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_regions.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL2_space-MNI152NLin6Asym_2mm_mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/MNI152_T1_1mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/MNI152_T1_1mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/MNI152_T1_2mm_Brain_FAST_seg.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/MNI152_T1_2mm_Brain_Mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/MNI152_T1_3mm.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/MNI152_T1_3mm_brain_mask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/data/reference/slicetimes/HCP-YA_slicetimes.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/dlfilter.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/externaltools.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/fMRIData_class.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/filter.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/fit.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/happy_supportfuncs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/helper_classes.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/io.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/makelaggedtcs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/maskutil.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/miscmath.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/multiproc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/patchmatch.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/peakeval.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/qualitycheck.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/resample.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/__init__.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/adjustoffset.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/aligntcs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/applydlfilter.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/atlasaverage.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/atlastool.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/calcicc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/calctexticc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/calcttest.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/ccorrica.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/diffrois.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/endtidalproc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/fdica.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/filtnifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/filttc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/fingerprint.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/fixtr.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/glmfilt.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/gmscalc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/happy.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/happy2std.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/happywarp.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/histnifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/histtc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/localflow.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/mergequality.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/pairproc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/pairwisemergenifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/physiofreq.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/pixelcomp.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/plethquality.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/polyfitim.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/proj2flow.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/rankimage.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/rapidtide.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/rapidtide2std.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/resamplenifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/resampletc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/retroglm.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/retrolagtcs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/roisummarize.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/runqualitycheck.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/showarbcorr.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/showhist.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/showstxcorr.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/showtc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/showxcorr_legacy.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/showxcorrx.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/showxy.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/simdata.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/spatialdecomp.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/spatialfit.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/spatialmi.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/spectrogram.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/stupidramtricks.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/synthASL.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/tcfrom2col.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/tcfrom3col.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/temporaldecomp.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/testhrv.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/threeD.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/tidepool.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/scripts/variabilityizer.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/simfuncfit.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/stats.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/.coveragerc +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/__init__.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/matplotlibrc +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/resethappytargets +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/resetrapidtidetargets +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/resettargets +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/runlocaltest +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/showdirectories +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/showkernels +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_aliasedcorrelate.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_aligntcs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_calcicc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_congrid.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_correlate.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_corrpass.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_delayestimation.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_doresample.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fastresampler.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_filter.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_findmaxlag.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunhappy_v1.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunhappy_v2.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunhappy_v3.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunhappy_v4.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunhappy_v5.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunrapidtide_v1.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunrapidtide_v2.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunrapidtide_v3.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunrapidtide_v4.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunrapidtide_v5.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_fullrunrapidtide_v6.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_glmpass.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_io.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_mi.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_miscmath.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_motionregress.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_nullcorr.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_padvec.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_phaseanalysis.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_rapidtideparser.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_refinedelay.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_runmisc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_sharedmem.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_simulate.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_stcorrelate.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_timeshift.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_valtoindex.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/test_zRapidtideDataset.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_cardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_info.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_25.0Hz.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_normcardfromfmri_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_normpleth_25.0Hz.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_pleth_25.0Hz.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/100206_REST1_LR_pleth_dlfiltered_25.0Hz.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/fmri_globalmean.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/happy_phase1target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/happy_phase2output_vesselmask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/happy_target_vesselmask.nii.gz +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/lforegressor.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/lt_rt.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/phasetest.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/rapidtide2x_phase1target_reference_fmrires.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/stcorrtest_Rvalue.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/stcorrtest_delay.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/stcorrtest_mask.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/stcorrtest_pearson.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/stcorrtest_pvalue.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/testdata/testfilt.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/tmp/.placeholder.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/usercustomize.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/tests/utils.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/transformerdlfilter.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/util.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/wiener.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/wiener2.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/__init__.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/adjustoffset.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/aligntcs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/applydlfilter.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/atlasaverage.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/atlastool.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/calctexticc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/ccorrica.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/diffrois.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/endtidalproc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/fdica.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/filtnifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/filttc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/fixtr.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/glmfilt.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/glmfrommaps.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/gmscalc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/happy.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/happy2std.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/happy_parser.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/histnifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/histtc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/localflow.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/mergequality.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/niftidecomp.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/niftistats.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/pairproc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/pairwisemergenifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/physiofreq.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/pixelcomp.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/plethquality.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/polyfitim.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/proj2flow.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/rankimage.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/rapidtide2std.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/resamplenifti.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/resampletc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/retrolagtcs.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/roisummarize.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/runqualitycheck.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/showarbcorr.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/showhist.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/showstxcorr.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/showtc.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/showxcorrx.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/showxy.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/simdata.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/spatialfit.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/spatialmi.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/spectrogram.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/synthASL.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/tcfrom2col.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/tcfrom3col.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/utils.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide/workflows/variabilityizer.py +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide.egg-info/dependency_links.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide.egg-info/entry_points.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide.egg-info/requires.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/rapidtide.egg-info/top_level.txt +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/setup.cfg +0 -0
- {rapidtide-3.0a11 → rapidtide-3.0a12}/versioneer.py +0 -0
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
# Release history
|
|
2
2
|
|
|
3
|
+
## Version 3.0alpha12 (3/19/25)
|
|
4
|
+
* (rapidtide) Added option to perform refine on last pass.
|
|
5
|
+
* (rapidtide) Moved refinement out into its own class to make things more modular.
|
|
6
|
+
* (refinedelay) Put in some experimental code to do multiderivative delay fits. Currently doesn't work very well.
|
|
7
|
+
* (tidepool) Changed default colormaps for similarity widty, MTT.
|
|
8
|
+
* (package) Made a script to compile qt templates.
|
|
9
|
+
* (package) Added the ability to set value limits to some parser functions.
|
|
10
|
+
|
|
3
11
|
## Version 3.0alpha11 (3/5/25)
|
|
4
12
|
* (tidepool) Substantial speed improvement switching datasets.
|
|
5
13
|
* (tidepool) Colormap radio button is now set correctly.
|
|
6
14
|
* (tidepool) Mask menu label is now set correctly when restoring a loaded dataset.
|
|
7
15
|
* (versioneer) Updated to 0.29.
|
|
8
|
-
* (docs)
|
|
16
|
+
* (docs) tidepool's documentation has been updated to reflect the current state of the program.
|
|
9
17
|
|
|
10
18
|
## Version 3.0alpha10 (2/28/25)
|
|
11
19
|
* (tidepool) Full support for multiple concurrent datasets. Dataset loading and selection is now done through the File menu.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: rapidtide
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.0a12
|
|
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>
|
rapidtide-3.0a12/TODO.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
To do list
|
|
2
|
+
----------
|
|
3
|
+
|
|
4
|
+
1. (package) Expand automated testing
|
|
5
|
+
4. (tidepool) Implement ASPECTS/JHU averaging
|
|
6
|
+
7. (rapidtide) Implement a dispersive delay model
|
|
7
|
+
8. (rapidtide) Add a sinc peak fit
|
|
8
|
+
9. (tidepool) Fix the weird limit resetting bug when some panes are activated.
|
|
9
|
+
10. (tidepool)
|
|
10
|
+
|
|
11
|
+
Implement new argument parsing:
|
|
12
|
+
vi \
|
|
13
|
+
rapidtide/scripts/showxcorr_legacy.py \
|
|
14
|
+
rapidtide/scripts/threeD.py \
|
|
15
|
+
rapidtide/experimental/highresmotion \
|
|
16
|
+
rapidtide/experimental/harmonogram \
|
|
17
|
+
rapidtide/workflows/rapidtide2x_parser.py
|
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
#
|
|
4
|
+
# Copyright 2016-2024 Blaise Frederick
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
#
|
|
19
|
+
"""
|
|
20
|
+
A class to impmement regressor refinement
|
|
21
|
+
"""
|
|
22
|
+
import copy
|
|
23
|
+
|
|
24
|
+
import numpy as np
|
|
25
|
+
|
|
26
|
+
import rapidtide.fit as tide_fit
|
|
27
|
+
import rapidtide.io as tide_io
|
|
28
|
+
import rapidtide.miscmath as tide_math
|
|
29
|
+
import rapidtide.refineregressor as tide_refineregressor
|
|
30
|
+
import rapidtide.resample as tide_resample
|
|
31
|
+
import rapidtide.stats as tide_stats
|
|
32
|
+
import rapidtide.util as tide_util
|
|
33
|
+
from rapidtide.tests.utils import mse
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class Refiner:
|
|
37
|
+
|
|
38
|
+
refinemaskvoxels = None
|
|
39
|
+
|
|
40
|
+
def __init__(
|
|
41
|
+
self,
|
|
42
|
+
internalvalidfmrishape,
|
|
43
|
+
internalvalidpaddedfmrishape,
|
|
44
|
+
pid,
|
|
45
|
+
outputname,
|
|
46
|
+
initial_fmri_x,
|
|
47
|
+
paddedinitial_fmri_x,
|
|
48
|
+
os_fmri_x,
|
|
49
|
+
sharedmem=False,
|
|
50
|
+
offsettime=0.0,
|
|
51
|
+
ampthresh=0.3,
|
|
52
|
+
lagminthresh=0.25,
|
|
53
|
+
lagmaxthresh=3.0,
|
|
54
|
+
sigmathresh=1000.0,
|
|
55
|
+
cleanrefined=False,
|
|
56
|
+
bipolar=False,
|
|
57
|
+
fixdelay=False,
|
|
58
|
+
includemask=None,
|
|
59
|
+
excludemask=None,
|
|
60
|
+
LGR=None,
|
|
61
|
+
nprocs=1,
|
|
62
|
+
detrendorder=1,
|
|
63
|
+
alwaysmultiproc=False,
|
|
64
|
+
showprogressbar=True,
|
|
65
|
+
chunksize=50000,
|
|
66
|
+
padtrs=10,
|
|
67
|
+
refineprenorm="var",
|
|
68
|
+
refineweighting=None,
|
|
69
|
+
refinetype="pca",
|
|
70
|
+
pcacomponents=0.8,
|
|
71
|
+
dodispersioncalc=False,
|
|
72
|
+
dispersioncalc_lower=-5.0,
|
|
73
|
+
dispersioncalc_upper=5.0,
|
|
74
|
+
dispersioncalc_step=0.5,
|
|
75
|
+
windowfunc="hamming",
|
|
76
|
+
passes=3,
|
|
77
|
+
maxpasses=15,
|
|
78
|
+
convergencethresh=None,
|
|
79
|
+
interptype="univariate",
|
|
80
|
+
usetmask=False,
|
|
81
|
+
tmask_y=None,
|
|
82
|
+
tmaskos_y=None,
|
|
83
|
+
fastresamplerpadtime=45.0,
|
|
84
|
+
debug=False,
|
|
85
|
+
rt_floattype="float64",
|
|
86
|
+
rt_floatset=np.float64,
|
|
87
|
+
):
|
|
88
|
+
self.internalvalidfmrishape = internalvalidfmrishape
|
|
89
|
+
self.internalvalidpaddedfmrishape = internalvalidpaddedfmrishape
|
|
90
|
+
self.sharedmem = sharedmem
|
|
91
|
+
self.outputname = outputname
|
|
92
|
+
self.initial_fmri_x = initial_fmri_x
|
|
93
|
+
self.paddedinitial_fmri_x = paddedinitial_fmri_x
|
|
94
|
+
self.os_fmri_x = os_fmri_x
|
|
95
|
+
|
|
96
|
+
self.offsettime = offsettime
|
|
97
|
+
self.ampthresh = ampthresh
|
|
98
|
+
self.lagminthresh = lagminthresh
|
|
99
|
+
self.lagmaxthresh = lagmaxthresh
|
|
100
|
+
self.sigmathresh = sigmathresh
|
|
101
|
+
self.cleanrefined = cleanrefined
|
|
102
|
+
self.bipolar = bipolar
|
|
103
|
+
self.fixdelay = fixdelay
|
|
104
|
+
self.LGR = LGR
|
|
105
|
+
self.nprocs = nprocs
|
|
106
|
+
self.detrendorder = detrendorder
|
|
107
|
+
self.alwaysmultiproc = alwaysmultiproc
|
|
108
|
+
self.showprogressbar = showprogressbar
|
|
109
|
+
self.chunksize = chunksize
|
|
110
|
+
self.padtrs = padtrs
|
|
111
|
+
self.refineprenorm = refineprenorm
|
|
112
|
+
self.refineweighting = refineweighting
|
|
113
|
+
self.refinetype = refinetype
|
|
114
|
+
self.pcacomponents = pcacomponents
|
|
115
|
+
self.dodispersioncalc = dodispersioncalc
|
|
116
|
+
self.dispersioncalc_lower = dispersioncalc_lower
|
|
117
|
+
self.dispersioncalc_upper = dispersioncalc_upper
|
|
118
|
+
self.dispersioncalc_step = dispersioncalc_step
|
|
119
|
+
self.windowfunc = windowfunc
|
|
120
|
+
self.passes = passes
|
|
121
|
+
self.maxpasses = maxpasses
|
|
122
|
+
self.convergencethresh = convergencethresh
|
|
123
|
+
self.interptype = interptype
|
|
124
|
+
self.usetmask = usetmask
|
|
125
|
+
self.tmask_y = tmask_y
|
|
126
|
+
self.tmaskos_y = tmaskos_y
|
|
127
|
+
self.fastresamplerpadtime = fastresamplerpadtime
|
|
128
|
+
self.debug = debug
|
|
129
|
+
self.rt_floattype = rt_floattype
|
|
130
|
+
self.rt_floatset = rt_floatset
|
|
131
|
+
|
|
132
|
+
self.setmasks(includemask, excludemask)
|
|
133
|
+
self.totalrefinementbytes = self._allocatemem(pid)
|
|
134
|
+
|
|
135
|
+
def setmasks(self, includemask, excludemask):
|
|
136
|
+
self.includemask = includemask
|
|
137
|
+
self.excludemask = excludemask
|
|
138
|
+
|
|
139
|
+
def _allocatemem(self, pid):
|
|
140
|
+
if self.sharedmem:
|
|
141
|
+
self.shiftedtcs, self.shiftedtcs_shm = tide_util.allocshared(
|
|
142
|
+
self.internalvalidfmrishape, self.rt_floatset, name=f"shiftedtcs_{pid}"
|
|
143
|
+
)
|
|
144
|
+
self.weights, self.weights_shm = tide_util.allocshared(
|
|
145
|
+
self.internalvalidfmrishape, self.rt_floatset, name=f"weights_{pid}"
|
|
146
|
+
)
|
|
147
|
+
self.paddedshiftedtcs, self.paddedshiftedtcs_shm = tide_util.allocshared(
|
|
148
|
+
self.internalvalidpaddedfmrishape,
|
|
149
|
+
self.rt_floatset,
|
|
150
|
+
name=f"paddedshiftedtcs_{pid}",
|
|
151
|
+
)
|
|
152
|
+
self.paddedweights, self.paddedweights_shm = tide_util.allocshared(
|
|
153
|
+
self.internalvalidpaddedfmrishape,
|
|
154
|
+
self.rt_floatset,
|
|
155
|
+
name=f"paddedweights_{pid}",
|
|
156
|
+
)
|
|
157
|
+
ramlocation = "in shared memory"
|
|
158
|
+
else:
|
|
159
|
+
self.shiftedtcs = np.zeros(self.internalvalidfmrishape, dtype=self.rt_floattype)
|
|
160
|
+
self.weights = np.zeros(self.internalvalidfmrishape, dtype=self.rt_floattype)
|
|
161
|
+
self.paddedshiftedtcs = np.zeros(
|
|
162
|
+
self.internalvalidpaddedfmrishape, dtype=self.rt_floattype
|
|
163
|
+
)
|
|
164
|
+
self.paddedweights = np.zeros(
|
|
165
|
+
self.internalvalidpaddedfmrishape, dtype=self.rt_floattype
|
|
166
|
+
)
|
|
167
|
+
ramlocation = "locally"
|
|
168
|
+
totalrefinementbytes = (
|
|
169
|
+
self.shiftedtcs.nbytes
|
|
170
|
+
+ self.weights.nbytes
|
|
171
|
+
+ self.paddedshiftedtcs.nbytes
|
|
172
|
+
+ self.paddedweights.nbytes
|
|
173
|
+
)
|
|
174
|
+
thesize, theunit = tide_util.format_bytes(totalrefinementbytes)
|
|
175
|
+
print(f"allocated {thesize:.3f} {theunit} {ramlocation} for refinement")
|
|
176
|
+
tide_util.logmem("after refinement array allocation")
|
|
177
|
+
return totalrefinementbytes
|
|
178
|
+
|
|
179
|
+
def cleanup(self):
|
|
180
|
+
del self.paddedshiftedtcs
|
|
181
|
+
del self.paddedweights
|
|
182
|
+
del self.shiftedtcs
|
|
183
|
+
del self.weights
|
|
184
|
+
if self.sharedmem:
|
|
185
|
+
tide_util.cleanup_shm(self.paddedshiftedtcs_shm)
|
|
186
|
+
tide_util.cleanup_shm(self.paddedweights_shm)
|
|
187
|
+
tide_util.cleanup_shm(self.shiftedtcs_shm)
|
|
188
|
+
tide_util.cleanup_shm(self.weights_shm)
|
|
189
|
+
|
|
190
|
+
def makemask(self, lagstrengths, lagtimes, lagsigma, fitmask):
|
|
191
|
+
# create the refinement mask
|
|
192
|
+
(
|
|
193
|
+
self.refinemaskvoxels,
|
|
194
|
+
self.refinemask,
|
|
195
|
+
self.locationfails,
|
|
196
|
+
self.ampfails,
|
|
197
|
+
self.lagfails,
|
|
198
|
+
self.sigmafails,
|
|
199
|
+
self.numinmask,
|
|
200
|
+
) = tide_refineregressor.makerefinemask(
|
|
201
|
+
lagstrengths,
|
|
202
|
+
lagtimes,
|
|
203
|
+
lagsigma,
|
|
204
|
+
fitmask,
|
|
205
|
+
offsettime=self.offsettime,
|
|
206
|
+
ampthresh=self.ampthresh,
|
|
207
|
+
lagminthresh=self.lagminthresh,
|
|
208
|
+
lagmaxthresh=self.lagmaxthresh,
|
|
209
|
+
sigmathresh=self.sigmathresh,
|
|
210
|
+
cleanrefined=self.cleanrefined,
|
|
211
|
+
bipolar=self.bipolar,
|
|
212
|
+
includemask=self.includemask,
|
|
213
|
+
excludemask=self.excludemask,
|
|
214
|
+
fixdelay=self.fixdelay,
|
|
215
|
+
debug=self.debug,
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
if self.numinmask == 0:
|
|
219
|
+
self.LGR.critical("No voxels in refine mask - adjust thresholds or external masks")
|
|
220
|
+
return False
|
|
221
|
+
else:
|
|
222
|
+
return True
|
|
223
|
+
|
|
224
|
+
def getrefinemask(self):
|
|
225
|
+
return self.refinemask
|
|
226
|
+
|
|
227
|
+
def getpaddedshiftedtcs(self):
|
|
228
|
+
return self.paddedshiftedtcs
|
|
229
|
+
|
|
230
|
+
def alignvoxels(self, fmri_data_valid, fmritr, lagtimes):
|
|
231
|
+
# align timecourses to prepare for refinement
|
|
232
|
+
self.LGR.info("aligning timecourses")
|
|
233
|
+
voxelsprocessed_rra = tide_refineregressor.alignvoxels(
|
|
234
|
+
fmri_data_valid,
|
|
235
|
+
fmritr,
|
|
236
|
+
self.shiftedtcs,
|
|
237
|
+
self.weights,
|
|
238
|
+
self.paddedshiftedtcs,
|
|
239
|
+
self.paddedweights,
|
|
240
|
+
lagtimes,
|
|
241
|
+
self.refinemask,
|
|
242
|
+
nprocs=self.nprocs,
|
|
243
|
+
detrendorder=self.detrendorder,
|
|
244
|
+
offsettime=self.offsettime,
|
|
245
|
+
alwaysmultiproc=self.alwaysmultiproc,
|
|
246
|
+
showprogressbar=self.showprogressbar,
|
|
247
|
+
chunksize=self.chunksize,
|
|
248
|
+
padtrs=self.padtrs,
|
|
249
|
+
debug=self.debug,
|
|
250
|
+
rt_floatset=self.rt_floatset,
|
|
251
|
+
rt_floattype=self.rt_floattype,
|
|
252
|
+
)
|
|
253
|
+
return voxelsprocessed_rra
|
|
254
|
+
# self.LGR.info(f"align complete: {voxelsprocessed_rra=}")
|
|
255
|
+
|
|
256
|
+
def prenormalize(self, lagtimes, lagstrengths, R2):
|
|
257
|
+
tide_refineregressor.prenorm(
|
|
258
|
+
self.paddedshiftedtcs,
|
|
259
|
+
self.refinemask,
|
|
260
|
+
lagtimes,
|
|
261
|
+
self.lagmaxthresh,
|
|
262
|
+
lagstrengths,
|
|
263
|
+
R2,
|
|
264
|
+
self.refineprenorm,
|
|
265
|
+
self.refineweighting,
|
|
266
|
+
)
|
|
267
|
+
|
|
268
|
+
def refine(
|
|
269
|
+
self,
|
|
270
|
+
theprefilter,
|
|
271
|
+
fmritr,
|
|
272
|
+
thepass,
|
|
273
|
+
lagstrengths,
|
|
274
|
+
lagtimes,
|
|
275
|
+
previousnormoutputdata,
|
|
276
|
+
corrmasksize,
|
|
277
|
+
):
|
|
278
|
+
(
|
|
279
|
+
voxelsprocessed_rr,
|
|
280
|
+
self.paddedoutputdata,
|
|
281
|
+
) = tide_refineregressor.dorefine(
|
|
282
|
+
self.paddedshiftedtcs,
|
|
283
|
+
self.refinemask,
|
|
284
|
+
self.weights,
|
|
285
|
+
theprefilter,
|
|
286
|
+
fmritr,
|
|
287
|
+
thepass,
|
|
288
|
+
lagstrengths,
|
|
289
|
+
lagtimes,
|
|
290
|
+
self.refinetype,
|
|
291
|
+
1.0 / fmritr,
|
|
292
|
+
self.outputname,
|
|
293
|
+
detrendorder=self.detrendorder,
|
|
294
|
+
pcacomponents=self.pcacomponents,
|
|
295
|
+
dodispersioncalc=self.dodispersioncalc,
|
|
296
|
+
dispersioncalc_lower=self.dispersioncalc_lower,
|
|
297
|
+
dispersioncalc_upper=self.dispersioncalc_upper,
|
|
298
|
+
dispersioncalc_step=self.dispersioncalc_step,
|
|
299
|
+
windowfunc=self.windowfunc,
|
|
300
|
+
cleanrefined=self.cleanrefined,
|
|
301
|
+
bipolar=self.bipolar,
|
|
302
|
+
debug=self.debug,
|
|
303
|
+
rt_floatset=self.rt_floatset,
|
|
304
|
+
rt_floattype=self.rt_floattype,
|
|
305
|
+
)
|
|
306
|
+
outputdict = {}
|
|
307
|
+
outputdict["refinemasksize_pass" + str(thepass)] = voxelsprocessed_rr
|
|
308
|
+
outputdict["refinemaskpct_pass" + str(thepass)] = 100.0 * voxelsprocessed_rr / corrmasksize
|
|
309
|
+
outputdict["refinelocationfails_pass" + str(thepass)] = self.locationfails
|
|
310
|
+
outputdict["refineampfails_pass" + str(thepass)] = self.ampfails
|
|
311
|
+
outputdict["refinelagfails_pass" + str(thepass)] = self.lagfails
|
|
312
|
+
outputdict["refinesigmafails_pass" + str(thepass)] = self.sigmafails
|
|
313
|
+
|
|
314
|
+
fmrifreq = 1.0 / fmritr
|
|
315
|
+
if voxelsprocessed_rr > 0:
|
|
316
|
+
paddednormoutputdata = tide_math.stdnormalize(
|
|
317
|
+
theprefilter.apply(fmrifreq, self.paddedoutputdata)
|
|
318
|
+
)
|
|
319
|
+
outputdata = self.paddedoutputdata[self.padtrs : -self.padtrs]
|
|
320
|
+
normoutputdata = tide_math.stdnormalize(theprefilter.apply(fmrifreq, outputdata))
|
|
321
|
+
normunfilteredoutputdata = tide_math.stdnormalize(outputdata)
|
|
322
|
+
tide_io.writebidstsv(
|
|
323
|
+
f"{self.outputname}_desc-refinedmovingregressor_timeseries",
|
|
324
|
+
normunfilteredoutputdata,
|
|
325
|
+
fmrifreq,
|
|
326
|
+
columns=["unfiltered_pass" + str(thepass)],
|
|
327
|
+
extraheaderinfo={
|
|
328
|
+
"Description": "The raw and filtered probe regressor produced by the refinement procedure, at the time resolution of the data"
|
|
329
|
+
},
|
|
330
|
+
append=(thepass > 1),
|
|
331
|
+
)
|
|
332
|
+
tide_io.writebidstsv(
|
|
333
|
+
f"{self.outputname}_desc-refinedmovingregressor_timeseries",
|
|
334
|
+
normoutputdata,
|
|
335
|
+
fmrifreq,
|
|
336
|
+
columns=["filtered_pass" + str(thepass)],
|
|
337
|
+
extraheaderinfo={
|
|
338
|
+
"Description": "The raw and filtered probe regressor produced by the refinement procedure, at the time resolution of the data"
|
|
339
|
+
},
|
|
340
|
+
append=True,
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
# check for convergence
|
|
344
|
+
regressormse = mse(normoutputdata, previousnormoutputdata)
|
|
345
|
+
outputdict["regressormse_pass" + str(thepass).zfill(2)] = regressormse
|
|
346
|
+
self.LGR.info(f"regressor difference at end of pass {thepass:d} is {regressormse:.6f}")
|
|
347
|
+
if self.convergencethresh is not None:
|
|
348
|
+
if thepass >= self.maxpasses:
|
|
349
|
+
self.LGR.info("refinement ended (maxpasses reached)")
|
|
350
|
+
stoprefining = True
|
|
351
|
+
refinestopreason = "maxpassesreached"
|
|
352
|
+
elif regressormse < self.convergencethresh:
|
|
353
|
+
self.LGR.info("refinement ended (refinement has converged")
|
|
354
|
+
stoprefining = True
|
|
355
|
+
refinestopreason = "convergence"
|
|
356
|
+
else:
|
|
357
|
+
stoprefining = False
|
|
358
|
+
elif thepass >= self.passes:
|
|
359
|
+
stoprefining = True
|
|
360
|
+
refinestopreason = "passesreached"
|
|
361
|
+
else:
|
|
362
|
+
stoprefining = False
|
|
363
|
+
refinestopreason = None
|
|
364
|
+
outputdict["refinestopreason"] = refinestopreason
|
|
365
|
+
|
|
366
|
+
if self.detrendorder > 0:
|
|
367
|
+
resampnonosref_y = tide_fit.detrend(
|
|
368
|
+
tide_resample.doresample(
|
|
369
|
+
self.paddedinitial_fmri_x,
|
|
370
|
+
paddednormoutputdata,
|
|
371
|
+
self.initial_fmri_x,
|
|
372
|
+
method=self.interptype,
|
|
373
|
+
),
|
|
374
|
+
order=self.detrendorder,
|
|
375
|
+
demean=True,
|
|
376
|
+
)
|
|
377
|
+
resampref_y = tide_fit.detrend(
|
|
378
|
+
tide_resample.doresample(
|
|
379
|
+
self.paddedinitial_fmri_x,
|
|
380
|
+
paddednormoutputdata,
|
|
381
|
+
self.os_fmri_x,
|
|
382
|
+
method=self.interptype,
|
|
383
|
+
),
|
|
384
|
+
order=self.detrendorder,
|
|
385
|
+
demean=True,
|
|
386
|
+
)
|
|
387
|
+
else:
|
|
388
|
+
resampnonosref_y = tide_resample.doresample(
|
|
389
|
+
self.paddedinitial_fmri_x,
|
|
390
|
+
paddednormoutputdata,
|
|
391
|
+
self.initial_fmri_x,
|
|
392
|
+
method=self.interptype,
|
|
393
|
+
)
|
|
394
|
+
resampref_y = tide_resample.doresample(
|
|
395
|
+
self.paddedinitial_fmri_x,
|
|
396
|
+
paddednormoutputdata,
|
|
397
|
+
self.os_fmri_x,
|
|
398
|
+
method=self.interptype,
|
|
399
|
+
)
|
|
400
|
+
if self.usetmask:
|
|
401
|
+
resampnonosref_y *= self.tmask_y
|
|
402
|
+
thefit, R2val = tide_fit.mlregress(self.tmask_y, resampnonosref_y)
|
|
403
|
+
resampnonosref_y -= thefit[0, 1] * self.tmask_y
|
|
404
|
+
resampref_y *= self.tmaskos_y
|
|
405
|
+
thefit, R2val = tide_fit.mlregress(self.tmaskos_y, resampref_y)
|
|
406
|
+
resampref_y -= thefit[0, 1] * self.tmaskos_y
|
|
407
|
+
|
|
408
|
+
# reinitialize genlagtc for resampling
|
|
409
|
+
previousnormoutputdata = np.zeros_like(normoutputdata)
|
|
410
|
+
genlagtc = tide_resample.FastResampler(
|
|
411
|
+
self.paddedinitial_fmri_x,
|
|
412
|
+
paddednormoutputdata,
|
|
413
|
+
padtime=self.fastresamplerpadtime,
|
|
414
|
+
)
|
|
415
|
+
genlagtc.save(f"{self.outputname}_desc-lagtcgenerator_timeseries")
|
|
416
|
+
if self.debug:
|
|
417
|
+
genlagtc.info()
|
|
418
|
+
(
|
|
419
|
+
outputdict[f"kurtosis_reference_pass{thepass + 1}"],
|
|
420
|
+
outputdict[f"kurtosisz_reference_pass{thepass + 1}"],
|
|
421
|
+
outputdict[f"kurtosisp_reference_pass{thepass + 1}"],
|
|
422
|
+
) = tide_stats.kurtosisstats(resampref_y)
|
|
423
|
+
(
|
|
424
|
+
outputdict[f"skewness_reference_pass{thepass + 1}"],
|
|
425
|
+
outputdict[f"skewnessz_reference_pass{thepass + 1}"],
|
|
426
|
+
outputdict[f"skewnessp_reference_pass{thepass + 1}"],
|
|
427
|
+
) = tide_stats.skewnessstats(resampref_y)
|
|
428
|
+
if not stoprefining:
|
|
429
|
+
tide_io.writebidstsv(
|
|
430
|
+
f"{self.outputname}_desc-movingregressor_timeseries",
|
|
431
|
+
tide_math.stdnormalize(resampnonosref_y),
|
|
432
|
+
1.0 / fmritr,
|
|
433
|
+
columns=["pass" + str(thepass + 1)],
|
|
434
|
+
extraheaderinfo={
|
|
435
|
+
"Description": "The probe regressor used in each pass, at the time resolution of the data"
|
|
436
|
+
},
|
|
437
|
+
append=True,
|
|
438
|
+
)
|
|
439
|
+
oversampfreq = 1.0 / (self.os_fmri_x[1] - self.os_fmri_x[0])
|
|
440
|
+
tide_io.writebidstsv(
|
|
441
|
+
f"{self.outputname}_desc-oversampledmovingregressor_timeseries",
|
|
442
|
+
tide_math.stdnormalize(resampref_y),
|
|
443
|
+
oversampfreq,
|
|
444
|
+
columns=["pass" + str(thepass + 1)],
|
|
445
|
+
extraheaderinfo={
|
|
446
|
+
"Description": "The probe regressor used in each pass, at the time resolution used for calculating the similarity function"
|
|
447
|
+
},
|
|
448
|
+
append=True,
|
|
449
|
+
)
|
|
450
|
+
else:
|
|
451
|
+
self.LGR.warning(f"refinement failed - terminating at end of pass {thepass}")
|
|
452
|
+
stoprefining = True
|
|
453
|
+
refinestopreason = "emptymask"
|
|
454
|
+
|
|
455
|
+
return (
|
|
456
|
+
voxelsprocessed_rr,
|
|
457
|
+
outputdict,
|
|
458
|
+
previousnormoutputdata,
|
|
459
|
+
resampref_y,
|
|
460
|
+
resampnonosref_y,
|
|
461
|
+
stoprefining,
|
|
462
|
+
refinestopreason,
|
|
463
|
+
genlagtc,
|
|
464
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
rapidtide \
|
|
4
|
+
--spatialfilt -1 \
|
|
5
|
+
--nprocs -1 \
|
|
6
|
+
--searchrange -5 20 \
|
|
7
|
+
--simcalcrange 50 -1 \
|
|
8
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
9
|
+
../dst/sub-RAPIDTIDETEST_defaultfilt
|
|
10
|
+
|
|
11
|
+
rapidtide \
|
|
12
|
+
--spatialfilt -1 \
|
|
13
|
+
--nprocs -1 \
|
|
14
|
+
--searchrange -5 20 \
|
|
15
|
+
--simcalcrange 50 -1 \
|
|
16
|
+
--regressor ../dst/sub-RAPIDTIDETEST_defaultfilt_desc-movingregressor_timeseries.json:pass3 \
|
|
17
|
+
--initialdelay ../dst/sub-RAPIDTIDETEST_defaultfilt_desc-maxtimerefined_map.nii.gz \
|
|
18
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
19
|
+
../dst/sub-RAPIDTIDETEST_startfromlast
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
rapidtide \
|
|
4
|
+
--spatialfilt -1 \
|
|
5
|
+
--nprocs -1 \
|
|
6
|
+
--searchrange -5 20 \
|
|
7
|
+
--simcalcrange 50 -1 \
|
|
8
|
+
--outputlevel max \
|
|
9
|
+
--refineglmderivs 1 \
|
|
10
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
11
|
+
../dst/sub-RAPIDTIDETEST_1deriv
|
|
12
|
+
|
|
13
|
+
rapidtide \
|
|
14
|
+
--spatialfilt -1 \
|
|
15
|
+
--nprocs -1 \
|
|
16
|
+
--searchrange -5 20 \
|
|
17
|
+
--simcalcrange 50 -1 \
|
|
18
|
+
--outputlevel max \
|
|
19
|
+
--refineglmderivs 2 \
|
|
20
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
21
|
+
../dst/sub-RAPIDTIDETEST_2deriv
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
retroglm \
|
|
25
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
26
|
+
../dst/sub-RAPIDTIDETEST_1deriv \
|
|
27
|
+
--alternateoutput ../dst/retrotest_1to1 \
|
|
28
|
+
--nprocs -1 \
|
|
29
|
+
--glmderivs 0 \
|
|
30
|
+
--refineglmderivs 1 \
|
|
31
|
+
--outputlevel max
|
|
32
|
+
|
|
33
|
+
retroglm \
|
|
34
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
35
|
+
../dst/sub-RAPIDTIDETEST_2deriv \
|
|
36
|
+
--alternateoutput ../dst/retrotest_2to1 \
|
|
37
|
+
--nprocs -1 \
|
|
38
|
+
--glmderivs 0 \
|
|
39
|
+
--refineglmderivs 1 \
|
|
40
|
+
--outputlevel max
|
|
41
|
+
|
|
42
|
+
retroglm \
|
|
43
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
44
|
+
../dst/sub-RAPIDTIDETEST_1deriv \
|
|
45
|
+
--alternateoutput ../dst/retrotest_1to2 \
|
|
46
|
+
--nprocs -1 \
|
|
47
|
+
--glmderivs 0 \
|
|
48
|
+
--refineglmderivs 2 \
|
|
49
|
+
--outputlevel max
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
rapidtide \
|
|
4
|
+
--spatialfilt -1 \
|
|
5
|
+
--nprocs -1 \
|
|
6
|
+
--passes 1 \
|
|
7
|
+
--nodelayfit \
|
|
8
|
+
--focaldebug \
|
|
9
|
+
--dofinalrefine \
|
|
10
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
11
|
+
../dst/sub-RAPIDTIDETEST_firstpass
|
|
12
|
+
|
|
13
|
+
rapidtide \
|
|
14
|
+
--spatialfilt -1 \
|
|
15
|
+
--nprocs -1 \
|
|
16
|
+
--nodelayfit \
|
|
17
|
+
--regressor ../dst/sub-RAPIDTIDETEST_firstpass_desc-refinedmovingregressor_timeseries.json:filtered_pass1 \
|
|
18
|
+
--initialdelay ../dst/sub-RAPIDTIDETEST_firstpass_desc-maxtimerefined_map.nii.gz \
|
|
19
|
+
--dofinalrefine \
|
|
20
|
+
--passes 1 \
|
|
21
|
+
sub-RAPIDTIDETEST.nii.gz \
|
|
22
|
+
../dst/sub-RAPIDTIDETEST_secondpass
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#
|
|
18
18
|
#
|
|
19
19
|
import numpy as np
|
|
20
|
+
from scipy.special import factorial
|
|
20
21
|
from tqdm import tqdm
|
|
21
22
|
|
|
22
23
|
import rapidtide.filter as tide_filt
|
|
@@ -350,11 +351,17 @@ def makevoxelspecificderivs(theevs, nderivs=1, debug=False):
|
|
|
350
351
|
if nderivs == 0:
|
|
351
352
|
thenewevs = theevs
|
|
352
353
|
else:
|
|
354
|
+
taylorcoffs = np.zeros((nderivs + 1), dtype=np.float64)
|
|
355
|
+
taylorcoffs[0] = 1.0
|
|
353
356
|
thenewevs = np.zeros((theevs.shape[0], theevs.shape[1], nderivs + 1), dtype=float)
|
|
357
|
+
for i in range(1, nderivs + 1):
|
|
358
|
+
taylorcoffs[i] = 1.0 / factorial(i)
|
|
354
359
|
for thevoxel in range(0, theevs.shape[0]):
|
|
355
360
|
thenewevs[thevoxel, :, 0] = theevs[thevoxel, :] * 1.0
|
|
356
361
|
for i in range(1, nderivs + 1):
|
|
357
|
-
thenewevs[thevoxel, :, i] = np.gradient(
|
|
362
|
+
thenewevs[thevoxel, :, i] = taylorcoffs[i] * np.gradient(
|
|
363
|
+
thenewevs[thevoxel, :, i - 1]
|
|
364
|
+
)
|
|
358
365
|
if debug:
|
|
359
366
|
print(f"{nderivs=}")
|
|
360
367
|
print(f"{thenewevs.shape=}")
|