add beamformer args

This commit is contained in:
flandre 2025-04-13 20:17:05 +08:00
parent 0f8e5a3ccc
commit 74ce48c7a4
7 changed files with 779 additions and 654 deletions

View File

@ -34,14 +34,15 @@ class Beamformer(Node):
return
d2 = (data
.crop(arg.t_start, arg.t_end)
.dct(80, 1500)
# .dct(80, 1500)
.dct_center(arg.dct_center, arg.dct_bandwidth)
.call(lambda m: m.astype(cp.int16))
.call(pwi)
.call(cp.asarray, order='C')
.argrelextrema()
.conv_guass(b=18 * 0.01)
.rotate90()
.grey()
# .grey()
.cpu()
)
self.send(RfMatMsg(d2))
@ -50,6 +51,8 @@ class Beamformer(Node):
time.sleep(1)
dc = DeviceConfig()
pwi, _ = gen_pwi(direct_dist(dc), dc)
last_v2 = 5900
last_f_rows = 0
while True:
self.muxer_req_socket.send(b'')
r = dict(self.c.poller.poll())
@ -72,5 +75,10 @@ class Beamformer(Node):
fb1 = cp.frombuffer(s, dtype=cp.int16)
seq_meta = RfSequenceMeta.from_name(seq_msg.name)
mat = RfMat(fb1.reshape(seq_meta.shape), b_msg.meta, seq_meta)
if arg_msg.v2 != last_v2 or arg_msg.f_rows != last_f_rows:
last_v2 = arg_msg.v2
last_f_rows = arg_msg.f_rows
dc = DeviceConfig(v2=arg_msg.v2, rows=arg_msg.f_rows)
pwi, _ = gen_pwi(direct_dist(dc), dc)
if seq_meta.mode == RfSequenceMeta.RfSequenceMode.PWI:
self.process_pwi(mat, arg_msg, pwi)

View File

@ -42,16 +42,6 @@ class Adv(QMainWindow, Ui_MainWindow):
if isinstance(msg, KillMsg):
if msg.name == '':
self.close()
elif isinstance(msg, BMMsg):
qImg = QImage(
msg.data,
C.video_width,
C.video_height,
4 * C.video_width,
QImage.Format.Format_RGBA8888
)
self.g.setPixmap(QPixmap(qImg))
self.graphicsView.fitInView(self.s.sceneRect(), Qt.AspectRatioMode.KeepAspectRatio)
elif isinstance(msg, RfMatMsg):
w = msg.rfmat.m.shape[1]
h = msg.rfmat.m.shape[0]
@ -75,6 +65,7 @@ class Adv(QMainWindow, Ui_MainWindow):
)
self.g.setPixmap(QPixmap(qImg))
self.s.setSceneRect(0.0, 0.0, w, h)
if self.scale:
self.graphicsView.fitInView(self.s.sceneRect())
else:

View File

@ -118,9 +118,6 @@ class Adv(QMainWindow, Ui_MainWindow):
# self.cb_bscan.checkStateChanged.connect(lambda e: print(e == 2, flush=True))
# self.cb_bscan.checkStateChanged.connect(lambda e: print(e.name, flush=True))
self.b_new_imaging_config.clicked.connect(self.on_new_imaging_config)
self.c_imaging_config.currentIndexChanged.connect(self.on_imaging_config)
self.b_probe_single.clicked.connect(self.on_probe('single'))
self.b_probe_orig.clicked.connect(self.on_probe('orig'))
self.b_probe_start.clicked.connect(self.on_probe('start'))
@ -178,19 +175,28 @@ class Adv(QMainWindow, Ui_MainWindow):
return f
def on_imaging_config(self, i):
@pyqtSlot()
def on_b_new_imaging_config_clicked(self):
filename, okPressed = QtWidgets.QInputDialog.getText(None,
"Set New Imaging Config Name",
"Config Name:",
QLineEdit.EchoMode.Normal,
"")
if okPressed and filename != '':
(C.imaging_config_folder / f'{filename}.json').write_text(self.arg.json())
idx = self.c_imaging_config.findText(filename)
if idx == -1:
self.c_imaging_config.addItem(filename)
idx = self.c_imaging_config.findText(filename)
self.c_imaging_config.setCurrentIndex(idx)
else:
self.c_imaging_config.setCurrentIndex(idx)
@pyqtSlot(int)
def on_c_imaging_config_currentIndexChanged(self, i):
name = self.c_imaging_config.itemText(i)
self.p.send(ImageArgMsg.from_path(C.imaging_config_folder / f'{name}.json'))
def on_new_imaging_config(self):
text, okPressed = QtWidgets.QInputDialog.getText(None,
"Set New Imaging Config Name",
"Config Name:",
QLineEdit.EchoMode.Normal,
"")
if okPressed and text != '':
(C.imaging_config_folder / f'{text}.json').write_text(self.arg.json())
def on_select_base(self):
base = QFileDialog.getExistingDirectory(self, 'Select Base Folder', DS.__str__())
self.l_base.setText(Path(base).__str__())
@ -341,6 +347,10 @@ class Adv(QMainWindow, Ui_MainWindow):
self.arg.sender = 'ui'
self.s_t_start.setValue(msg.t_start)
self.s_t_end.setValue(msg.t_end)
self.s_f_rows.setValue(msg.f_rows)
self.s_v2.setValue(msg.v2)
self.s_dct_center.setValue(msg.dct_center)
self.s_dct_bandwidth.setValue(msg.dct_bandwidth)
elif isinstance(msg, MoveAxisMsg):
match msg.axis:
case 'S':
@ -368,6 +378,9 @@ class Adv(QMainWindow, Ui_MainWindow):
mmax_shape0 = max(self.seq_meta.shape)
self.s_t_start.setMaximum(mmax_shape0)
self.s_t_end.setMaximum(mmax_shape0)
self.s_dct_center.setMaximum(mmax_shape0)
self.s_dct_bandwidth.setMaximum(mmax_shape0)
self.s_f_rows.setMaximum(mmax_shape0)
elif isinstance(msg, DeviceConnectedMsg):
if msg.value:
self.set_device_connection(LinkStatus.GREEN)
@ -443,6 +456,24 @@ class Adv(QMainWindow, Ui_MainWindow):
if self.cb_bscan.sender() is None:
self.p.send(SetWindowVisibleMsg('ui', 'bscan', v == 2))
@pyqtSlot(int)
def on_s_dct_center_valueChanged(self, v):
if self.s_dct_center.sender() is None:
self.arg.dct_center = v
self.p.send(self.arg)
@pyqtSlot(int)
def on_s_dct_bandwidth_valueChanged(self, v):
if self.s_dct_bandwidth.sender() is None:
self.arg.dct_bandwidth = v
self.p.send(self.arg)
@pyqtSlot(int)
def on_s_v2_valueChanged(self, v):
if self.s_v2.sender() is None:
self.arg.v2 = v
self.p.send(self.arg)
@pyqtSlot(int)
def on_t_start(self, v):
if self.s_t_end.sender() is None:
@ -455,6 +486,12 @@ class Adv(QMainWindow, Ui_MainWindow):
self.arg.t_end = v
self.p.send(self.arg)
@pyqtSlot(int)
def on_s_f_rows_valueChanged(self, v):
if self.s_f_rows.sender() is None:
self.arg.f_rows = v
self.p.send(self.arg)
@pyqtSlot(int)
def on_select_plyayback_seq_name(self, v):
if self.c_playback_seq_name.sender() is None or isinstance(self.c_playback_seq_name.sender(), QFrame):

View File

@ -12,11 +12,115 @@ from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1238, 999)
MainWindow.resize(1238, 1017)
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.g_cap = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_cap.setEnabled(False)
self.g_cap.setObjectName("g_cap")
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.g_cap)
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.g_live = QtWidgets.QGroupBox(parent=self.g_cap)
self.g_live.setCheckable(True)
self.g_live.setChecked(False)
self.g_live.setObjectName("g_live")
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.g_live)
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
self.label_17 = QtWidgets.QLabel(parent=self.g_live)
self.label_17.setObjectName("label_17")
self.horizontalLayout_12.addWidget(self.label_17)
self.l_record_commit = QtWidgets.QLineEdit(parent=self.g_live)
self.l_record_commit.setEnabled(False)
self.l_record_commit.setObjectName("l_record_commit")
self.horizontalLayout_12.addWidget(self.l_record_commit)
self.b_record = QtWidgets.QPushButton(parent=self.g_live)
self.b_record.setEnabled(False)
self.b_record.setObjectName("b_record")
self.horizontalLayout_12.addWidget(self.b_record)
self.verticalLayout_6.addLayout(self.horizontalLayout_12)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_18 = QtWidgets.QLabel(parent=self.g_live)
self.label_18.setObjectName("label_18")
self.horizontalLayout_2.addWidget(self.label_18)
self.l_record_frames = QtWidgets.QLabel(parent=self.g_live)
self.l_record_frames.setObjectName("l_record_frames")
self.horizontalLayout_2.addWidget(self.l_record_frames)
self.label_25 = QtWidgets.QLabel(parent=self.g_live)
self.label_25.setObjectName("label_25")
self.horizontalLayout_2.addWidget(self.label_25)
self.l_record_size = QtWidgets.QLabel(parent=self.g_live)
self.l_record_size.setObjectName("l_record_size")
self.horizontalLayout_2.addWidget(self.l_record_size)
self.label_26 = QtWidgets.QLabel(parent=self.g_live)
self.label_26.setObjectName("label_26")
self.horizontalLayout_2.addWidget(self.label_26)
self.l_record_max_sid = QtWidgets.QLabel(parent=self.g_live)
self.l_record_max_sid.setObjectName("l_record_max_sid")
self.horizontalLayout_2.addWidget(self.l_record_max_sid)
self.horizontalLayout_2.setStretch(1, 1)
self.horizontalLayout_2.setStretch(3, 1)
self.horizontalLayout_2.setStretch(5, 1)
self.verticalLayout_6.addLayout(self.horizontalLayout_2)
self.verticalLayout_6.setStretch(0, 1)
self.horizontalLayout_8.addWidget(self.g_live)
self.g_playback = QtWidgets.QGroupBox(parent=self.g_cap)
self.g_playback.setCheckable(True)
self.g_playback.setChecked(False)
self.g_playback.setObjectName("g_playback")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.g_playback)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.gridLayout_6 = QtWidgets.QGridLayout()
self.gridLayout_6.setObjectName("gridLayout_6")
self.sp_sid = QtWidgets.QSpinBox(parent=self.g_playback)
self.sp_sid.setObjectName("sp_sid")
self.gridLayout_6.addWidget(self.sp_sid, 1, 2, 1, 1)
self.label_4 = QtWidgets.QLabel(parent=self.g_playback)
self.label_4.setObjectName("label_4")
self.gridLayout_6.addWidget(self.label_4, 1, 0, 1, 1)
self.label_16 = QtWidgets.QLabel(parent=self.g_playback)
self.label_16.setObjectName("label_16")
self.gridLayout_6.addWidget(self.label_16, 0, 0, 1, 1)
self.c_playback_seq_name = QtWidgets.QComboBox(parent=self.g_playback)
self.c_playback_seq_name.setEditable(False)
self.c_playback_seq_name.setObjectName("c_playback_seq_name")
self.c_playback_seq_name.addItem("")
self.gridLayout_6.addWidget(self.c_playback_seq_name, 0, 1, 1, 2)
self.s_sid = QJumpSlider(parent=self.g_playback)
self.s_sid.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_sid.setObjectName("s_sid")
self.gridLayout_6.addWidget(self.s_sid, 1, 1, 1, 1)
self.verticalLayout_3.addLayout(self.gridLayout_6)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label26 = QtWidgets.QLabel(parent=self.g_playback)
self.label26.setObjectName("label26")
self.horizontalLayout_5.addWidget(self.label26)
self.l_seq_min = QtWidgets.QLabel(parent=self.g_playback)
self.l_seq_min.setObjectName("l_seq_min")
self.horizontalLayout_5.addWidget(self.l_seq_min)
self.label_28 = QtWidgets.QLabel(parent=self.g_playback)
self.label_28.setObjectName("label_28")
self.horizontalLayout_5.addWidget(self.label_28)
self.l_seq_current = QtWidgets.QLabel(parent=self.g_playback)
self.l_seq_current.setObjectName("l_seq_current")
self.horizontalLayout_5.addWidget(self.l_seq_current)
self.label_29 = QtWidgets.QLabel(parent=self.g_playback)
self.label_29.setObjectName("label_29")
self.horizontalLayout_5.addWidget(self.label_29)
self.l_seq_max = QtWidgets.QLabel(parent=self.g_playback)
self.l_seq_max.setObjectName("l_seq_max")
self.horizontalLayout_5.addWidget(self.l_seq_max)
self.horizontalLayout_5.setStretch(1, 1)
self.horizontalLayout_5.setStretch(3, 1)
self.horizontalLayout_5.setStretch(5, 1)
self.verticalLayout_3.addLayout(self.horizontalLayout_5)
self.horizontalLayout_8.addWidget(self.g_playback)
self.gridLayout.addWidget(self.g_cap, 2, 0, 1, 2)
self.g_us = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_us.setStyleSheet("#g_us{\n"
" background: pink;\n"
@ -189,6 +293,71 @@ class Ui_MainWindow(object):
self.horizontalSlider_8.setObjectName("horizontalSlider_8")
self.gridLayout_4.addWidget(self.horizontalSlider_8, 6, 1, 1, 1)
self.gridLayout.addLayout(self.gridLayout_4, 3, 1, 1, 1)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label = QtWidgets.QLabel(parent=self.centralwidget)
self.label.setObjectName("label")
self.horizontalLayout_4.addWidget(self.label)
self.l_base = QtWidgets.QLineEdit(parent=self.centralwidget)
self.l_base.setText("")
self.l_base.setObjectName("l_base")
self.horizontalLayout_4.addWidget(self.l_base)
self.b_select_base = QtWidgets.QPushButton(parent=self.centralwidget)
self.b_select_base.setObjectName("b_select_base")
self.horizontalLayout_4.addWidget(self.b_select_base)
self.b_base = QtWidgets.QPushButton(parent=self.centralwidget)
self.b_base.setIconSize(QtCore.QSize(16, 16))
self.b_base.setObjectName("b_base")
self.horizontalLayout_4.addWidget(self.b_base)
self.gridLayout.addLayout(self.horizontalLayout_4, 4, 0, 1, 2)
self.g_probe_head = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_probe_head.setStyleSheet("#g_probe_head {\n"
" background: pink;\n"
"border-radius: 7px;\n"
"}")
self.g_probe_head.setTitle("")
self.g_probe_head.setObjectName("g_probe_head")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.g_probe_head)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.label_31 = QtWidgets.QLabel(parent=self.g_probe_head)
font = QtGui.QFont()
font.setFamily("Noto Sans")
font.setPointSize(15)
self.label_31.setFont(font)
self.label_31.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_31.setObjectName("label_31")
self.horizontalLayout_7.addWidget(self.label_31)
self.b_probe_head_switch = QtWidgets.QPushButton(parent=self.g_probe_head)
self.b_probe_head_switch.setText("")
self.b_probe_head_switch.setObjectName("b_probe_head_switch")
self.horizontalLayout_7.addWidget(self.b_probe_head_switch)
self.horizontalLayout_7.setStretch(0, 1)
self.verticalLayout_5.addLayout(self.horizontalLayout_7)
self.groupBox_3 = QtWidgets.QGroupBox(parent=self.g_probe_head)
self.groupBox_3.setTitle("")
self.groupBox_3.setObjectName("groupBox_3")
self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.groupBox_3)
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
self.b_probe_start = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_start.setObjectName("b_probe_start")
self.horizontalLayout_11.addWidget(self.b_probe_start)
self.b_probe_stop = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_stop.setObjectName("b_probe_stop")
self.horizontalLayout_11.addWidget(self.b_probe_stop)
self.b_probe_single = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_single.setObjectName("b_probe_single")
self.horizontalLayout_11.addWidget(self.b_probe_single)
self.b_probe_orig = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_orig.setObjectName("b_probe_orig")
self.horizontalLayout_11.addWidget(self.b_probe_orig)
self.l_probe_angle = QtWidgets.QLabel(parent=self.groupBox_3)
self.l_probe_angle.setObjectName("l_probe_angle")
self.horizontalLayout_11.addWidget(self.l_probe_angle)
self.verticalLayout_5.addWidget(self.groupBox_3)
self.verticalLayout_5.setStretch(1, 1)
self.gridLayout.addWidget(self.g_probe_head, 1, 0, 1, 1)
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.cb_bscan = QtWidgets.QCheckBox(parent=self.centralwidget)
@ -201,110 +370,6 @@ class Ui_MainWindow(object):
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_6.addItem(spacerItem1)
self.gridLayout.addLayout(self.horizontalLayout_6, 5, 0, 1, 2)
self.g_cap = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_cap.setEnabled(False)
self.g_cap.setObjectName("g_cap")
self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.g_cap)
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.g_live = QtWidgets.QGroupBox(parent=self.g_cap)
self.g_live.setCheckable(True)
self.g_live.setChecked(False)
self.g_live.setObjectName("g_live")
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.g_live)
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
self.label_17 = QtWidgets.QLabel(parent=self.g_live)
self.label_17.setObjectName("label_17")
self.horizontalLayout_12.addWidget(self.label_17)
self.l_record_commit = QtWidgets.QLineEdit(parent=self.g_live)
self.l_record_commit.setEnabled(False)
self.l_record_commit.setObjectName("l_record_commit")
self.horizontalLayout_12.addWidget(self.l_record_commit)
self.b_record = QtWidgets.QPushButton(parent=self.g_live)
self.b_record.setEnabled(False)
self.b_record.setObjectName("b_record")
self.horizontalLayout_12.addWidget(self.b_record)
self.verticalLayout_6.addLayout(self.horizontalLayout_12)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_18 = QtWidgets.QLabel(parent=self.g_live)
self.label_18.setObjectName("label_18")
self.horizontalLayout_2.addWidget(self.label_18)
self.l_record_frames = QtWidgets.QLabel(parent=self.g_live)
self.l_record_frames.setObjectName("l_record_frames")
self.horizontalLayout_2.addWidget(self.l_record_frames)
self.label_25 = QtWidgets.QLabel(parent=self.g_live)
self.label_25.setObjectName("label_25")
self.horizontalLayout_2.addWidget(self.label_25)
self.l_record_size = QtWidgets.QLabel(parent=self.g_live)
self.l_record_size.setObjectName("l_record_size")
self.horizontalLayout_2.addWidget(self.l_record_size)
self.label_26 = QtWidgets.QLabel(parent=self.g_live)
self.label_26.setObjectName("label_26")
self.horizontalLayout_2.addWidget(self.label_26)
self.l_record_max_sid = QtWidgets.QLabel(parent=self.g_live)
self.l_record_max_sid.setObjectName("l_record_max_sid")
self.horizontalLayout_2.addWidget(self.l_record_max_sid)
self.horizontalLayout_2.setStretch(1, 1)
self.horizontalLayout_2.setStretch(3, 1)
self.horizontalLayout_2.setStretch(5, 1)
self.verticalLayout_6.addLayout(self.horizontalLayout_2)
self.verticalLayout_6.setStretch(0, 1)
self.horizontalLayout_8.addWidget(self.g_live)
self.g_playback = QtWidgets.QGroupBox(parent=self.g_cap)
self.g_playback.setCheckable(True)
self.g_playback.setChecked(False)
self.g_playback.setObjectName("g_playback")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.g_playback)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.gridLayout_6 = QtWidgets.QGridLayout()
self.gridLayout_6.setObjectName("gridLayout_6")
self.sp_sid = QtWidgets.QSpinBox(parent=self.g_playback)
self.sp_sid.setObjectName("sp_sid")
self.gridLayout_6.addWidget(self.sp_sid, 1, 2, 1, 1)
self.label_4 = QtWidgets.QLabel(parent=self.g_playback)
self.label_4.setObjectName("label_4")
self.gridLayout_6.addWidget(self.label_4, 1, 0, 1, 1)
self.label_16 = QtWidgets.QLabel(parent=self.g_playback)
self.label_16.setObjectName("label_16")
self.gridLayout_6.addWidget(self.label_16, 0, 0, 1, 1)
self.c_playback_seq_name = QtWidgets.QComboBox(parent=self.g_playback)
self.c_playback_seq_name.setEditable(False)
self.c_playback_seq_name.setObjectName("c_playback_seq_name")
self.c_playback_seq_name.addItem("")
self.gridLayout_6.addWidget(self.c_playback_seq_name, 0, 1, 1, 2)
self.s_sid = QJumpSlider(parent=self.g_playback)
self.s_sid.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_sid.setObjectName("s_sid")
self.gridLayout_6.addWidget(self.s_sid, 1, 1, 1, 1)
self.verticalLayout_3.addLayout(self.gridLayout_6)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label26 = QtWidgets.QLabel(parent=self.g_playback)
self.label26.setObjectName("label26")
self.horizontalLayout_5.addWidget(self.label26)
self.l_seq_min = QtWidgets.QLabel(parent=self.g_playback)
self.l_seq_min.setObjectName("l_seq_min")
self.horizontalLayout_5.addWidget(self.l_seq_min)
self.label_28 = QtWidgets.QLabel(parent=self.g_playback)
self.label_28.setObjectName("label_28")
self.horizontalLayout_5.addWidget(self.label_28)
self.l_seq_current = QtWidgets.QLabel(parent=self.g_playback)
self.l_seq_current.setObjectName("l_seq_current")
self.horizontalLayout_5.addWidget(self.l_seq_current)
self.label_29 = QtWidgets.QLabel(parent=self.g_playback)
self.label_29.setObjectName("label_29")
self.horizontalLayout_5.addWidget(self.label_29)
self.l_seq_max = QtWidgets.QLabel(parent=self.g_playback)
self.l_seq_max.setObjectName("l_seq_max")
self.horizontalLayout_5.addWidget(self.l_seq_max)
self.horizontalLayout_5.setStretch(1, 1)
self.horizontalLayout_5.setStretch(3, 1)
self.horizontalLayout_5.setStretch(5, 1)
self.verticalLayout_3.addLayout(self.horizontalLayout_5)
self.horizontalLayout_8.addWidget(self.g_playback)
self.gridLayout.addWidget(self.g_cap, 2, 0, 1, 2)
self.g_cobot = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_cobot.setStyleSheet("#g_cobot {\n"
" background: pink;\n"
@ -404,58 +469,36 @@ class Ui_MainWindow(object):
self.gridLayout.addWidget(self.g_cobot, 0, 1, 2, 1)
self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setObjectName("gridLayout_5")
self.spinBox_3 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_3.setObjectName("spinBox_3")
self.gridLayout_5.addWidget(self.spinBox_3, 6, 2, 1, 1)
self.label_33 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_33.setObjectName("label_33")
self.gridLayout_5.addWidget(self.label_33, 7, 0, 1, 1)
self.label_15 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_15.setObjectName("label_15")
self.gridLayout_5.addWidget(self.label_15, 3, 0, 1, 1)
self.label_34 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_34.setObjectName("label_34")
self.gridLayout_5.addWidget(self.label_34, 8, 0, 1, 1)
self.s_t_start = QJumpSlider(parent=self.centralwidget)
self.s_t_start.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_t_start.setObjectName("s_t_start")
self.gridLayout_5.addWidget(self.s_t_start, 3, 1, 1, 1)
self.label_7 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_7.setObjectName("label_7")
self.gridLayout_5.addWidget(self.label_7, 6, 0, 1, 1)
self.spinBox_12 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_12.setObjectName("spinBox_12")
self.gridLayout_5.addWidget(self.spinBox_12, 3, 2, 1, 1)
self.spinBox_2 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_2.setObjectName("spinBox_2")
self.gridLayout_5.addWidget(self.spinBox_2, 5, 2, 1, 1)
self.horizontalSlider_2 = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalSlider_2.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalSlider_2.setObjectName("horizontalSlider_2")
self.gridLayout_5.addWidget(self.horizontalSlider_2, 5, 1, 1, 1)
self.spinBox = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox.setObjectName("spinBox")
self.gridLayout_5.addWidget(self.spinBox, 4, 2, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
self.gridLayout_5.addItem(spacerItem2, 7, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(False)
self.label_2.setFont(font)
self.label_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 3)
self.gridLayout_5.addItem(spacerItem2, 9, 1, 1, 1)
self.s_t_end = QJumpSlider(parent=self.centralwidget)
self.s_t_end.setMinimum(1)
self.s_t_end.setMaximum(1500)
self.s_t_end.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_t_end.setObjectName("s_t_end")
self.gridLayout_5.addWidget(self.s_t_end, 4, 1, 1, 1)
self.label_6 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_6.setObjectName("label_6")
self.gridLayout_5.addWidget(self.label_6, 5, 0, 1, 1)
self.spinBox = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox.setObjectName("spinBox")
self.gridLayout_5.addWidget(self.spinBox, 4, 2, 1, 1)
self.label_15 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_15.setObjectName("label_15")
self.gridLayout_5.addWidget(self.label_15, 3, 0, 1, 1)
self.s_t_start = QJumpSlider(parent=self.centralwidget)
self.s_t_start.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_t_start.setObjectName("s_t_start")
self.gridLayout_5.addWidget(self.s_t_start, 3, 1, 1, 1)
self.label_5 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_5.setObjectName("label_5")
self.gridLayout_5.addWidget(self.label_5, 4, 0, 1, 1)
self.horizontalSlider_4 = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalSlider_4.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalSlider_4.setObjectName("horizontalSlider_4")
self.gridLayout_5.addWidget(self.horizontalSlider_4, 6, 1, 1, 1)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_27 = QtWidgets.QLabel(parent=self.centralwidget)
@ -469,72 +512,54 @@ class Ui_MainWindow(object):
self.horizontalLayout_3.addWidget(self.b_new_imaging_config)
self.horizontalLayout_3.setStretch(1, 1)
self.gridLayout_5.addLayout(self.horizontalLayout_3, 2, 0, 1, 3)
self.gridLayout.addLayout(self.gridLayout_5, 3, 0, 1, 1)
self.g_probe_head = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_probe_head.setStyleSheet("#g_probe_head {\n"
" background: pink;\n"
"border-radius: 7px;\n"
"}")
self.g_probe_head.setTitle("")
self.g_probe_head.setObjectName("g_probe_head")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.g_probe_head)
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.label_31 = QtWidgets.QLabel(parent=self.g_probe_head)
self.label_6 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_6.setObjectName("label_6")
self.gridLayout_5.addWidget(self.label_6, 5, 0, 1, 1)
self.spinBox_2 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_2.setObjectName("spinBox_2")
self.gridLayout_5.addWidget(self.spinBox_2, 5, 2, 1, 1)
self.spinBox_3 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_3.setObjectName("spinBox_3")
self.gridLayout_5.addWidget(self.spinBox_3, 6, 2, 1, 1)
self.s_dct_bandwidth = QtWidgets.QSlider(parent=self.centralwidget)
self.s_dct_bandwidth.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_dct_bandwidth.setObjectName("s_dct_bandwidth")
self.gridLayout_5.addWidget(self.s_dct_bandwidth, 7, 1, 1, 1)
self.s_v2 = QtWidgets.QSlider(parent=self.centralwidget)
self.s_v2.setMinimum(1)
self.s_v2.setMaximum(7000)
self.s_v2.setProperty("value", 5900)
self.s_v2.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_v2.setObjectName("s_v2")
self.gridLayout_5.addWidget(self.s_v2, 5, 1, 1, 1)
self.s_dct_center = QtWidgets.QSlider(parent=self.centralwidget)
self.s_dct_center.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_dct_center.setObjectName("s_dct_center")
self.gridLayout_5.addWidget(self.s_dct_center, 6, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
font = QtGui.QFont()
font.setFamily("Noto Sans")
font.setPointSize(15)
self.label_31.setFont(font)
self.label_31.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_31.setObjectName("label_31")
self.horizontalLayout_7.addWidget(self.label_31)
self.b_probe_head_switch = QtWidgets.QPushButton(parent=self.g_probe_head)
self.b_probe_head_switch.setText("")
self.b_probe_head_switch.setObjectName("b_probe_head_switch")
self.horizontalLayout_7.addWidget(self.b_probe_head_switch)
self.horizontalLayout_7.setStretch(0, 1)
self.verticalLayout_5.addLayout(self.horizontalLayout_7)
self.groupBox_3 = QtWidgets.QGroupBox(parent=self.g_probe_head)
self.groupBox_3.setTitle("")
self.groupBox_3.setObjectName("groupBox_3")
self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.groupBox_3)
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
self.b_probe_start = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_start.setObjectName("b_probe_start")
self.horizontalLayout_11.addWidget(self.b_probe_start)
self.b_probe_stop = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_stop.setObjectName("b_probe_stop")
self.horizontalLayout_11.addWidget(self.b_probe_stop)
self.b_probe_single = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_single.setObjectName("b_probe_single")
self.horizontalLayout_11.addWidget(self.b_probe_single)
self.b_probe_orig = QtWidgets.QPushButton(parent=self.groupBox_3)
self.b_probe_orig.setObjectName("b_probe_orig")
self.horizontalLayout_11.addWidget(self.b_probe_orig)
self.l_probe_angle = QtWidgets.QLabel(parent=self.groupBox_3)
self.l_probe_angle.setObjectName("l_probe_angle")
self.horizontalLayout_11.addWidget(self.l_probe_angle)
self.verticalLayout_5.addWidget(self.groupBox_3)
self.verticalLayout_5.setStretch(1, 1)
self.gridLayout.addWidget(self.g_probe_head, 1, 0, 1, 1)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label = QtWidgets.QLabel(parent=self.centralwidget)
self.label.setObjectName("label")
self.horizontalLayout_4.addWidget(self.label)
self.l_base = QtWidgets.QLineEdit(parent=self.centralwidget)
self.l_base.setText("")
self.l_base.setObjectName("l_base")
self.horizontalLayout_4.addWidget(self.l_base)
self.b_select_base = QtWidgets.QPushButton(parent=self.centralwidget)
self.b_select_base.setObjectName("b_select_base")
self.horizontalLayout_4.addWidget(self.b_select_base)
self.b_base = QtWidgets.QPushButton(parent=self.centralwidget)
self.b_base.setIconSize(QtCore.QSize(16, 16))
self.b_base.setObjectName("b_base")
self.horizontalLayout_4.addWidget(self.b_base)
self.gridLayout.addLayout(self.horizontalLayout_4, 4, 0, 1, 2)
font.setPointSize(20)
font.setBold(False)
self.label_2.setFont(font)
self.label_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 3)
self.s_f_rows = QtWidgets.QSlider(parent=self.centralwidget)
self.s_f_rows.setMinimum(500)
self.s_f_rows.setMaximum(7000)
self.s_f_rows.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_f_rows.setObjectName("s_f_rows")
self.gridLayout_5.addWidget(self.s_f_rows, 8, 1, 1, 1)
self.spinBox_12 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_12.setObjectName("spinBox_12")
self.gridLayout_5.addWidget(self.spinBox_12, 3, 2, 1, 1)
self.spinBox_7 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_7.setObjectName("spinBox_7")
self.gridLayout_5.addWidget(self.spinBox_7, 7, 2, 1, 1)
self.spinBox_13 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_13.setObjectName("spinBox_13")
self.gridLayout_5.addWidget(self.spinBox_13, 8, 2, 1, 1)
self.gridLayout.addLayout(self.gridLayout_5, 3, 0, 1, 1)
self.gridLayout.setRowStretch(0, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
@ -551,6 +576,26 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Scarlet Flandre Control Panel"))
self.g_cap.setTitle(_translate("MainWindow", "Capture Source"))
self.g_live.setTitle(_translate("MainWindow", "Live"))
self.label_17.setText(_translate("MainWindow", "RecordName"))
self.b_record.setText(_translate("MainWindow", "Record"))
self.label_18.setText(_translate("MainWindow", "Record Frames:"))
self.l_record_frames.setText(_translate("MainWindow", "0"))
self.label_25.setText(_translate("MainWindow", "Record Size:"))
self.l_record_size.setText(_translate("MainWindow", "0"))
self.label_26.setText(_translate("MainWindow", "Max SeqId:"))
self.l_record_max_sid.setText(_translate("MainWindow", "0"))
self.g_playback.setTitle(_translate("MainWindow", "Playback"))
self.label_4.setText(_translate("MainWindow", "Frame ID"))
self.label_16.setText(_translate("MainWindow", "SeqName"))
self.c_playback_seq_name.setItemText(0, _translate("MainWindow", "Unset"))
self.label26.setText(_translate("MainWindow", "Min:"))
self.l_seq_min.setText(_translate("MainWindow", "0"))
self.label_28.setText(_translate("MainWindow", "Current:"))
self.l_seq_current.setText(_translate("MainWindow", "0"))
self.label_29.setText(_translate("MainWindow", "Max:"))
self.l_seq_max.setText(_translate("MainWindow", "0"))
self.label_30.setText(_translate("MainWindow", "Ultrasound T/R Device Driver"))
self.b_device_connection.setText(_translate("MainWindow", "Connect"))
self.lb_device_connection.setText(_translate("MainWindow", "Disconnected"))
@ -572,45 +617,27 @@ class Ui_MainWindow(object):
self.label_12.setText(_translate("MainWindow", "Roll"))
self.label_11.setText(_translate("MainWindow", "E"))
self.label_8.setText(_translate("MainWindow", "X"))
self.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
self.checkBox.setText(_translate("MainWindow", "FOCUS"))
self.g_cap.setTitle(_translate("MainWindow", "Capture Source"))
self.g_live.setTitle(_translate("MainWindow", "Live"))
self.label_17.setText(_translate("MainWindow", "RecordName"))
self.b_record.setText(_translate("MainWindow", "Record"))
self.label_18.setText(_translate("MainWindow", "Record Frames:"))
self.l_record_frames.setText(_translate("MainWindow", "0"))
self.label_25.setText(_translate("MainWindow", "Record Size:"))
self.l_record_size.setText(_translate("MainWindow", "0"))
self.label_26.setText(_translate("MainWindow", "Max SeqId:"))
self.l_record_max_sid.setText(_translate("MainWindow", "0"))
self.g_playback.setTitle(_translate("MainWindow", "Playback"))
self.label_4.setText(_translate("MainWindow", "Frame ID"))
self.label_16.setText(_translate("MainWindow", "SeqName"))
self.c_playback_seq_name.setItemText(0, _translate("MainWindow", "Unset"))
self.label26.setText(_translate("MainWindow", "Min:"))
self.l_seq_min.setText(_translate("MainWindow", "0"))
self.label_28.setText(_translate("MainWindow", "Current:"))
self.l_seq_current.setText(_translate("MainWindow", "0"))
self.label_29.setText(_translate("MainWindow", "Max:"))
self.l_seq_max.setText(_translate("MainWindow", "0"))
self.label_23.setText(_translate("MainWindow", "Force"))
self.label_22.setText(_translate("MainWindow", "Position"))
self.label_19.setText(_translate("MainWindow", "6DOF Cobot"))
self.label_7.setText(_translate("MainWindow", "TextLabel"))
self.label_2.setText(_translate("MainWindow", "Imaging"))
self.label_6.setText(_translate("MainWindow", "TextLabel"))
self.label_15.setText(_translate("MainWindow", "t_start"))
self.label_5.setText(_translate("MainWindow", "t_end"))
self.label_27.setText(_translate("MainWindow", "Profile"))
self.b_new_imaging_config.setText(_translate("MainWindow", "New"))
self.label.setText(_translate("MainWindow", "Base Path"))
self.b_select_base.setText(_translate("MainWindow", "Select"))
self.b_base.setText(_translate("MainWindow", "Open"))
self.label_31.setText(_translate("MainWindow", "Probe Head Control"))
self.b_probe_start.setText(_translate("MainWindow", "Start"))
self.b_probe_stop.setText(_translate("MainWindow", "Stop"))
self.b_probe_single.setText(_translate("MainWindow", "Single"))
self.b_probe_orig.setText(_translate("MainWindow", "Orig"))
self.l_probe_angle.setText(_translate("MainWindow", "TextLabel"))
self.label.setText(_translate("MainWindow", "Base Path"))
self.b_select_base.setText(_translate("MainWindow", "Select"))
self.b_base.setText(_translate("MainWindow", "Open"))
self.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
self.checkBox.setText(_translate("MainWindow", "FOCUS"))
self.label_23.setText(_translate("MainWindow", "Force"))
self.label_22.setText(_translate("MainWindow", "Position"))
self.label_19.setText(_translate("MainWindow", "6DOF Cobot"))
self.label_33.setText(_translate("MainWindow", "dct_bandwidth"))
self.label_15.setText(_translate("MainWindow", "t_start"))
self.label_34.setText(_translate("MainWindow", "f_rows"))
self.label_7.setText(_translate("MainWindow", "dct_center"))
self.label_5.setText(_translate("MainWindow", "t_end"))
self.label_27.setText(_translate("MainWindow", "Profile"))
self.b_new_imaging_config.setText(_translate("MainWindow", "New"))
self.label_6.setText(_translate("MainWindow", "v2"))
self.label_2.setText(_translate("MainWindow", "Imaging"))
from flandre.pyqt.QJumpSlider import QJumpSlider

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1238</width>
<height>999</height>
<height>1017</height>
</rect>
</property>
<property name="windowTitle">
@ -15,6 +15,208 @@
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout" rowstretch="1,0,0,0,0,0" columnstretch="0,0">
<item row="2" column="0" colspan="2">
<widget class="QGroupBox" name="g_cap">
<property name="enabled">
<bool>false</bool>
</property>
<property name="title">
<string>Capture Source</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QGroupBox" name="g_live">
<property name="title">
<string>Live</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6" stretch="1,0">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QLabel" name="label_17">
<property name="text">
<string>RecordName</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="l_record_commit">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_record">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Record</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0,1,0,1">
<item>
<widget class="QLabel" name="label_18">
<property name="text">
<string>Record Frames:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_record_frames">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_25">
<property name="text">
<string>Record Size:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_record_size">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_26">
<property name="text">
<string>Max SeqId:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_record_max_sid">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="g_playback">
<property name="title">
<string>Playback</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QGridLayout" name="gridLayout_6">
<item row="1" column="2">
<widget class="QSpinBox" name="sp_sid"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Frame ID</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>SeqName</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="c_playback_seq_name">
<property name="editable">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Unset</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QJumpSlider" name="s_sid">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5" stretch="0,1,0,1,0,1">
<item>
<widget class="QLabel" name="label26">
<property name="text">
<string>Min:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_seq_min">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_28">
<property name="text">
<string>Current:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_seq_current">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_29">
<property name="text">
<string>Max:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_seq_max">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="g_us">
<property name="styleSheet">
@ -336,6 +538,130 @@ border-radius: 7px;
</item>
</layout>
</item>
<item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Base Path</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="l_base">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_select_base">
<property name="text">
<string>Select</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_base">
<property name="text">
<string>Open</string>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="g_probe_head">
<property name="styleSheet">
<string notr="true">#g_probe_head {
background: pink;
border-radius: 7px;
}</string>
</property>
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5" stretch="0,1">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7" stretch="1,0">
<item>
<widget class="QLabel" name="label_31">
<property name="font">
<font>
<family>Noto Sans</family>
<pointsize>15</pointsize>
</font>
</property>
<property name="text">
<string>Probe Head Control</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_head_switch">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QPushButton" name="b_probe_start">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_stop">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_single">
<property name="text">
<string>Single</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_orig">
<property name="text">
<string>Orig</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_probe_angle">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
@ -370,208 +696,6 @@ border-radius: 7px;
</item>
</layout>
</item>
<item row="2" column="0" colspan="2">
<widget class="QGroupBox" name="g_cap">
<property name="enabled">
<bool>false</bool>
</property>
<property name="title">
<string>Capture Source</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QGroupBox" name="g_live">
<property name="title">
<string>Live</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6" stretch="1,0">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<item>
<widget class="QLabel" name="label_17">
<property name="text">
<string>RecordName</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="l_record_commit">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_record">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Record</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0,1,0,1">
<item>
<widget class="QLabel" name="label_18">
<property name="text">
<string>Record Frames:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_record_frames">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_25">
<property name="text">
<string>Record Size:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_record_size">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_26">
<property name="text">
<string>Max SeqId:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_record_max_sid">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="g_playback">
<property name="title">
<string>Playback</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QGridLayout" name="gridLayout_6">
<item row="1" column="2">
<widget class="QSpinBox" name="sp_sid"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Frame ID</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>SeqName</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="c_playback_seq_name">
<property name="editable">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Unset</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QJumpSlider" name="s_sid">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5" stretch="0,1,0,1,0,1">
<item>
<widget class="QLabel" name="label26">
<property name="text">
<string>Min:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_seq_min">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_28">
<property name="text">
<string>Current:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_seq_current">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_29">
<property name="text">
<string>Max:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_seq_max">
<property name="text">
<string>0</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="1" rowspan="2">
<widget class="QGroupBox" name="g_cobot">
<property name="styleSheet">
@ -750,30 +874,45 @@ border-radius: 7px;
</item>
<item row="3" column="0">
<layout class="QGridLayout" name="gridLayout_5">
<item row="6" column="2">
<widget class="QSpinBox" name="spinBox_3"/>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<item row="7" column="0">
<widget class="QLabel" name="label_33">
<property name="text">
<string>TextLabel</string>
<string>dct_bandwidth</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSpinBox" name="spinBox_12"/>
<item row="3" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>t_start</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QSpinBox" name="spinBox_2"/>
<item row="8" column="0">
<widget class="QLabel" name="label_34">
<property name="text">
<string>f_rows</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QSlider" name="horizontalSlider_2">
<item row="3" column="1">
<widget class="QJumpSlider" name="s_t_start">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="7" column="1">
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>dct_center</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QSpinBox" name="spinBox"/>
</item>
<item row="9" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
@ -786,22 +925,6 @@ border-radius: 7px;
</property>
</spacer>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>20</pointsize>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Imaging</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QJumpSlider" name="s_t_end">
<property name="minimum">
@ -815,30 +938,6 @@ border-radius: 7px;
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QSpinBox" name="spinBox"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>t_start</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QJumpSlider" name="s_t_start">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
@ -846,13 +945,6 @@ border-radius: 7px;
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSlider" name="horizontalSlider_4">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1,0">
<item>
@ -874,130 +966,87 @@ border-radius: 7px;
</item>
</layout>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="g_probe_head">
<property name="styleSheet">
<string notr="true">#g_probe_head {
background: pink;
border-radius: 7px;
}</string>
</property>
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5" stretch="0,1">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_7" stretch="1,0">
<item>
<widget class="QLabel" name="label_31">
<property name="font">
<font>
<family>Noto Sans</family>
<pointsize>15</pointsize>
</font>
</property>
<property name="text">
<string>Probe Head Control</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_head_switch">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string/>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QPushButton" name="b_probe_start">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_stop">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_single">
<property name="text">
<string>Single</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_probe_orig">
<property name="text">
<string>Orig</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="l_probe_angle">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="4" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label">
<item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Base Path</string>
<string>v2</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="l_base">
<property name="text">
<string/>
<item row="5" column="2">
<widget class="QSpinBox" name="spinBox_2"/>
</item>
<item row="6" column="2">
<widget class="QSpinBox" name="spinBox_3"/>
</item>
<item row="7" column="1">
<widget class="QSlider" name="s_dct_bandwidth">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_select_base">
<property name="text">
<string>Select</string>
<item row="5" column="1">
<widget class="QSlider" name="s_v2">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>7000</number>
</property>
<property name="value">
<number>5900</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="b_base">
<property name="text">
<string>Open</string>
</property>
<property name="iconSize">
<size>
<width>16</width>
<height>16</height>
</size>
<item row="6" column="1">
<widget class="QSlider" name="s_dct_center">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>20</pointsize>
<bold>false</bold>
</font>
</property>
<property name="text">
<string>Imaging</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QSlider" name="s_f_rows">
<property name="minimum">
<number>500</number>
</property>
<property name="maximum">
<number>7000</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSpinBox" name="spinBox_12"/>
</item>
<item row="7" column="2">
<widget class="QSpinBox" name="spinBox_7"/>
</item>
<item row="8" column="2">
<widget class="QSpinBox" name="spinBox_13"/>
</item>
</layout>
</item>
</layout>

View File

@ -240,23 +240,29 @@ class MoveAxisMsg(Msg):
@dataclasses.dataclass
class ImageArgMsg(Msg):
sender: str
t_start: int
t_end: int
t_start: int = 0
v2: int = 5900
dct_center: int = 0
dct_bandwidth: int = 0
f_rows: int = 0
@staticmethod
def from_path(p: Path):
j = json.loads(p.read_text())
return ImageArgMsg(
'load',
t_start=j['t_start'],
t_end=j['t_end'],
sender='load',
**json.loads(p.read_text())
)
def json(self):
return json.dumps(dict(
t_start=self.t_start,
t_end=self.t_end,
))
arg_d = dict()
for field in dataclasses.fields(ImageArgMsg):
match field.name:
case 'sender':
pass
case _:
arg_d[field.name] = self.__getattribute__(field.name)
return json.dumps(arg_d)
@dataclasses.dataclass

View File

@ -14,7 +14,6 @@ import scipy.signal
from cupyx.scipy.fft import dctn, idctn
from scipy.stats import norm as norms
from flandre.utils.RfFile import RfFrame, RfSequenceMeta
from flandre.utils.RfMeta import RfFrameMeta
@ -61,6 +60,10 @@ class RfMat:
return RfMat(self.m.copy(), self.frame_meta, self.seq_meta)
return RfMat(data, self.frame_meta, self.seq_meta)
@property
def duration(self):
return self.m.shape[1]
@property
def p(self):
if self.device == 'cpu':
@ -182,6 +185,11 @@ class RfMat:
raise NotImplementedError()
return self.copy(idct(m_dct))
def dct_center(self, center, bandwidth):
mmin = max(0, int(center - bandwidth / 2))
mmax = min(self.duration, int(center + bandwidth / 2))
return self.dct(mmin, mmax)
def argrelextrema(self, axis=1):
arg = scipy.signal.argrelextrema
m = self.m
@ -216,6 +224,5 @@ class RfMat:
return self.copy(rm)
if __name__ == '__main__':
cp.zeros((1, 2, 3)) + 1