rapidtide 3.0.9__py3-none-any.whl → 3.0.11__py3-none-any.whl
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/OrthoImageItem.py +18 -6
- rapidtide/RapidtideDataset.py +21 -6
- rapidtide/_version.py +3 -3
- rapidtide/data/examples/src/testfmri +24 -24
- rapidtide/data/examples/src/testhappy +8 -2
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm.nii.gz +0 -0
- rapidtide/data/reference/JHU-ArterialTerritoriesNoVent-LVL1_space-MNI152NLin2009cAsym_2mm_mask.nii.gz +0 -0
- rapidtide/filter.py +60 -111
- rapidtide/fit.py +501 -108
- rapidtide/io.py +19 -8
- rapidtide/simFuncClasses.py +13 -7
- rapidtide/tests/.coveragerc +17 -11
- rapidtide/tests/test_findmaxlag.py +31 -16
- rapidtide/tests/test_padvec.py +19 -1
- rapidtide/tests/test_simroundtrip.py +124 -0
- rapidtide/tidepoolTemplate.py +37 -37
- rapidtide/tidepoolTemplate_alt.py +40 -40
- rapidtide/tidepoolTemplate_big.py +56 -56
- rapidtide/workflows/happy.py +13 -3
- rapidtide/workflows/happy_parser.py +12 -0
- rapidtide/workflows/parser_funcs.py +1 -1
- rapidtide/workflows/rapidtide.py +27 -10
- rapidtide/workflows/tidepool.py +54 -18
- {rapidtide-3.0.9.dist-info → rapidtide-3.0.11.dist-info}/METADATA +10 -10
- {rapidtide-3.0.9.dist-info → rapidtide-3.0.11.dist-info}/RECORD +29 -26
- {rapidtide-3.0.9.dist-info → rapidtide-3.0.11.dist-info}/WHEEL +0 -0
- {rapidtide-3.0.9.dist-info → rapidtide-3.0.11.dist-info}/entry_points.txt +0 -0
- {rapidtide-3.0.9.dist-info → rapidtide-3.0.11.dist-info}/licenses/LICENSE +0 -0
- {rapidtide-3.0.9.dist-info → rapidtide-3.0.11.dist-info}/top_level.txt +0 -0
rapidtide/OrthoImageItem.py
CHANGED
|
@@ -33,12 +33,17 @@ except ImportError:
|
|
|
33
33
|
PILexists = False
|
|
34
34
|
|
|
35
35
|
try:
|
|
36
|
-
from
|
|
36
|
+
from PySide6.QtCore import __version__
|
|
37
37
|
except ImportError:
|
|
38
|
-
|
|
38
|
+
try:
|
|
39
|
+
from PyQt6.QtCore import QT_VERSION_STR
|
|
40
|
+
except ImportError:
|
|
41
|
+
pyqtbinding = "pyqt5"
|
|
42
|
+
else:
|
|
43
|
+
pyqtbinding = "pyqt6"
|
|
39
44
|
else:
|
|
40
|
-
|
|
41
|
-
print(f"using {
|
|
45
|
+
pyqtbinding = "pyside6"
|
|
46
|
+
print(f"using {pyqtbinding=}")
|
|
42
47
|
|
|
43
48
|
|
|
44
49
|
def newColorbar(left, top, impixpervoxx, impixpervoxy, imgsize):
|
|
@@ -132,6 +137,7 @@ class OrthoImageItem(QtWidgets.QWidget):
|
|
|
132
137
|
):
|
|
133
138
|
QtWidgets.QWidget.__init__(self)
|
|
134
139
|
self.map = map
|
|
140
|
+
self.mapname = self.map.label
|
|
135
141
|
self.bgmap = bgmap
|
|
136
142
|
self.axview = axview
|
|
137
143
|
self.corview = corview
|
|
@@ -175,6 +181,7 @@ class OrthoImageItem(QtWidgets.QWidget):
|
|
|
175
181
|
|
|
176
182
|
if self.verbose > 1:
|
|
177
183
|
print("OrthoImageItem initialization:")
|
|
184
|
+
print(" Map name:", self.mapname)
|
|
178
185
|
print(" Dimensions:", self.xdim, self.ydim, self.zdim)
|
|
179
186
|
print(" Voxel sizes:", self.xsize, self.ysize, self.zsize)
|
|
180
187
|
print(" FOVs:", self.xfov, self.yfov, self.zfov)
|
|
@@ -356,6 +363,7 @@ class OrthoImageItem(QtWidgets.QWidget):
|
|
|
356
363
|
def setMap(self, themap):
|
|
357
364
|
self.map = themap
|
|
358
365
|
self.tdim = self.map.tdim
|
|
366
|
+
self.mapname = self.map.label
|
|
359
367
|
|
|
360
368
|
def enableView(self):
|
|
361
369
|
if self.button is not None:
|
|
@@ -520,10 +528,14 @@ class OrthoImageItem(QtWidgets.QWidget):
|
|
|
520
528
|
if self.verbose > 1:
|
|
521
529
|
print("saving main window")
|
|
522
530
|
mydialog = QtWidgets.QFileDialog()
|
|
523
|
-
if
|
|
531
|
+
if pyqtbinding == "pyqt5":
|
|
524
532
|
options = mydialog.Options()
|
|
525
|
-
|
|
533
|
+
elif pyqtbinding == "pyqt6":
|
|
534
|
+
options = mydialog.options()
|
|
535
|
+
elif pyqtbinding == "pyside6":
|
|
526
536
|
options = mydialog.options()
|
|
537
|
+
else:
|
|
538
|
+
print("unsupported qt binding")
|
|
527
539
|
thedir = str(
|
|
528
540
|
mydialog.getExistingDirectory(options=options, caption="Image output directory")
|
|
529
541
|
)
|
rapidtide/RapidtideDataset.py
CHANGED
|
@@ -600,12 +600,15 @@ class RapidtideDataset:
|
|
|
600
600
|
if self.focusregressor is None:
|
|
601
601
|
self.focusregressor = thisregressor[0]
|
|
602
602
|
else:
|
|
603
|
-
if
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
603
|
+
if thisregressor[6]:
|
|
604
|
+
raise FileNotFoundError(f"regressor file {self.fileroot + thisregressor[2]} does not exist")
|
|
605
|
+
else:
|
|
606
|
+
if self.verbose > 1:
|
|
607
|
+
print(
|
|
608
|
+
"file: ",
|
|
609
|
+
self.fileroot + thisregressor[2],
|
|
610
|
+
" does not exist - skipping...",
|
|
611
|
+
)
|
|
609
612
|
|
|
610
613
|
def _loadfuncmaps(self):
|
|
611
614
|
mapstoinvert = ["varChange"]
|
|
@@ -1047,6 +1050,7 @@ class RapidtideDataset:
|
|
|
1047
1050
|
self.inputfreq,
|
|
1048
1051
|
self.inputfreq,
|
|
1049
1052
|
self.inputstarttime,
|
|
1053
|
+
True,
|
|
1050
1054
|
],
|
|
1051
1055
|
[
|
|
1052
1056
|
"postfilt",
|
|
@@ -1055,6 +1059,7 @@ class RapidtideDataset:
|
|
|
1055
1059
|
self.inputfreq,
|
|
1056
1060
|
self.inputfreq,
|
|
1057
1061
|
self.inputstarttime,
|
|
1062
|
+
True,
|
|
1058
1063
|
],
|
|
1059
1064
|
[
|
|
1060
1065
|
"pass1",
|
|
@@ -1063,6 +1068,7 @@ class RapidtideDataset:
|
|
|
1063
1068
|
self.fmrifreq * self.oversampfactor,
|
|
1064
1069
|
self.fmrifreq,
|
|
1065
1070
|
0.0,
|
|
1071
|
+
True,
|
|
1066
1072
|
],
|
|
1067
1073
|
[
|
|
1068
1074
|
"pass2",
|
|
@@ -1071,6 +1077,7 @@ class RapidtideDataset:
|
|
|
1071
1077
|
self.fmrifreq * self.oversampfactor,
|
|
1072
1078
|
self.fmrifreq,
|
|
1073
1079
|
0.0,
|
|
1080
|
+
False,
|
|
1074
1081
|
],
|
|
1075
1082
|
[
|
|
1076
1083
|
"pass3",
|
|
@@ -1079,6 +1086,7 @@ class RapidtideDataset:
|
|
|
1079
1086
|
self.fmrifreq * self.oversampfactor,
|
|
1080
1087
|
self.fmrifreq,
|
|
1081
1088
|
0.0,
|
|
1089
|
+
False,
|
|
1082
1090
|
],
|
|
1083
1091
|
[
|
|
1084
1092
|
"pass4",
|
|
@@ -1087,6 +1095,7 @@ class RapidtideDataset:
|
|
|
1087
1095
|
self.fmrifreq * self.oversampfactor,
|
|
1088
1096
|
self.fmrifreq,
|
|
1089
1097
|
0.0,
|
|
1098
|
+
False,
|
|
1090
1099
|
],
|
|
1091
1100
|
]
|
|
1092
1101
|
else:
|
|
@@ -1098,6 +1107,7 @@ class RapidtideDataset:
|
|
|
1098
1107
|
self.inputfreq,
|
|
1099
1108
|
self.inputfreq,
|
|
1100
1109
|
self.inputstarttime,
|
|
1110
|
+
True,
|
|
1101
1111
|
],
|
|
1102
1112
|
[
|
|
1103
1113
|
"postfilt",
|
|
@@ -1106,6 +1116,7 @@ class RapidtideDataset:
|
|
|
1106
1116
|
self.inputfreq,
|
|
1107
1117
|
self.inputfreq,
|
|
1108
1118
|
self.inputstarttime,
|
|
1119
|
+
True,
|
|
1109
1120
|
],
|
|
1110
1121
|
[
|
|
1111
1122
|
"pass1",
|
|
@@ -1114,6 +1125,7 @@ class RapidtideDataset:
|
|
|
1114
1125
|
self.fmrifreq * self.oversampfactor,
|
|
1115
1126
|
self.fmrifreq,
|
|
1116
1127
|
0.0,
|
|
1128
|
+
True,
|
|
1117
1129
|
],
|
|
1118
1130
|
[
|
|
1119
1131
|
"pass2",
|
|
@@ -1122,6 +1134,7 @@ class RapidtideDataset:
|
|
|
1122
1134
|
self.fmrifreq * self.oversampfactor,
|
|
1123
1135
|
self.fmrifreq,
|
|
1124
1136
|
0.0,
|
|
1137
|
+
False,
|
|
1125
1138
|
],
|
|
1126
1139
|
[
|
|
1127
1140
|
"pass3",
|
|
@@ -1130,6 +1143,7 @@ class RapidtideDataset:
|
|
|
1130
1143
|
self.fmrifreq * self.oversampfactor,
|
|
1131
1144
|
self.fmrifreq,
|
|
1132
1145
|
0.0,
|
|
1146
|
+
False,
|
|
1133
1147
|
],
|
|
1134
1148
|
[
|
|
1135
1149
|
"pass4",
|
|
@@ -1138,6 +1152,7 @@ class RapidtideDataset:
|
|
|
1138
1152
|
self.fmrifreq * self.oversampfactor,
|
|
1139
1153
|
self.fmrifreq,
|
|
1140
1154
|
0.0,
|
|
1155
|
+
False,
|
|
1141
1156
|
],
|
|
1142
1157
|
]
|
|
1143
1158
|
self._loadregressors()
|
rapidtide/_version.py
CHANGED
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-
|
|
11
|
+
"date": "2025-08-27T10:21:33-0400",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "3.0.
|
|
14
|
+
"full-revisionid": "078ea587f66134f5bb1f53817240da52156cf7f1",
|
|
15
|
+
"version": "3.0.11"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -15,28 +15,28 @@ rapidtide \
|
|
|
15
15
|
--refinedelayeachpass \
|
|
16
16
|
--similaritymetric correlation \
|
|
17
17
|
sub-RAPIDTIDETEST.nii.gz \
|
|
18
|
-
../dst/sub-
|
|
18
|
+
../dst/sub-RAPIDTIDETEST_flexipass
|
|
19
19
|
|
|
20
|
-
rapidtide \
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
sub-RAPIDTIDETEST.nii.gz \
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
tidepool --uistyle big --dataset \
|
|
41
|
-
|
|
42
|
-
|
|
20
|
+
#rapidtide \
|
|
21
|
+
#--spatialfilt 2.5 \
|
|
22
|
+
#--nprocs -1 \
|
|
23
|
+
#--searchrange -7.5 30 \
|
|
24
|
+
#--simcalcrange 50 -1 \
|
|
25
|
+
#--outputlevel more \
|
|
26
|
+
#--graymattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_GRAY \
|
|
27
|
+
#--brainmask sub-RAPIDTIDETEST_brainmask.nii.gz \
|
|
28
|
+
#--whitemattermask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_WHITE \
|
|
29
|
+
#--csfmask sub-RAPIDTIDETEST_synthseg.nii.gz:SSEG_CSF \
|
|
30
|
+
#--cleanrefined \
|
|
31
|
+
#--nofitfilt \
|
|
32
|
+
#--refinedelayeachpass \
|
|
33
|
+
#--similaritymetric riptide \
|
|
34
|
+
#--riptidestep 1.5 \
|
|
35
|
+
#--ampthresh 0.0 \
|
|
36
|
+
#--numnull 0 \
|
|
37
|
+
#sub-RAPIDTIDETEST.nii.gz \
|
|
38
|
+
#../dst/sub-RAPIDTIDETEST_riptide
|
|
39
|
+
#
|
|
40
|
+
#tidepool --uistyle big --dataset \
|
|
41
|
+
#../dst/sub-RAPIDTIDETEST_simfunc_ \
|
|
42
|
+
#../dst/sub-RAPIDTIDETEST_riptide_ &
|
|
@@ -72,6 +72,12 @@
|
|
|
72
72
|
happy \
|
|
73
73
|
sub-HAPPYTEST.nii.gz \
|
|
74
74
|
sub-HAPPYTEST.json \
|
|
75
|
-
../dst/
|
|
76
|
-
--
|
|
75
|
+
../dst/happy_mask \
|
|
76
|
+
--processmask sub-HAPPYTEST_mask.nii.gz \
|
|
77
|
+
--nprocs -1
|
|
78
|
+
|
|
79
|
+
happy \
|
|
80
|
+
sub-HAPPYTEST.nii.gz \
|
|
81
|
+
sub-HAPPYTEST.json \
|
|
82
|
+
../dst/happy \
|
|
77
83
|
--nprocs -1
|