rapidtide 3.0.1__tar.gz → 3.0.3__tar.gz

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