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

View File

@ -42,16 +42,6 @@ class Adv(QMainWindow, Ui_MainWindow):
if isinstance(msg, KillMsg): if isinstance(msg, KillMsg):
if msg.name == '': if msg.name == '':
self.close() 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): elif isinstance(msg, RfMatMsg):
w = msg.rfmat.m.shape[1] w = msg.rfmat.m.shape[1]
h = msg.rfmat.m.shape[0] h = msg.rfmat.m.shape[0]
@ -75,6 +65,7 @@ class Adv(QMainWindow, Ui_MainWindow):
) )
self.g.setPixmap(QPixmap(qImg)) self.g.setPixmap(QPixmap(qImg))
self.s.setSceneRect(0.0, 0.0, w, h)
if self.scale: if self.scale:
self.graphicsView.fitInView(self.s.sceneRect()) self.graphicsView.fitInView(self.s.sceneRect())
else: 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 == 2, flush=True))
# self.cb_bscan.checkStateChanged.connect(lambda e: print(e.name, 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_single.clicked.connect(self.on_probe('single'))
self.b_probe_orig.clicked.connect(self.on_probe('orig')) self.b_probe_orig.clicked.connect(self.on_probe('orig'))
self.b_probe_start.clicked.connect(self.on_probe('start')) self.b_probe_start.clicked.connect(self.on_probe('start'))
@ -178,18 +175,27 @@ class Adv(QMainWindow, Ui_MainWindow):
return f return f
def on_imaging_config(self, i): @pyqtSlot()
name = self.c_imaging_config.itemText(i) def on_b_new_imaging_config_clicked(self):
self.p.send(ImageArgMsg.from_path(C.imaging_config_folder / f'{name}.json')) filename, okPressed = QtWidgets.QInputDialog.getText(None,
def on_new_imaging_config(self):
text, okPressed = QtWidgets.QInputDialog.getText(None,
"Set New Imaging Config Name", "Set New Imaging Config Name",
"Config Name:", "Config Name:",
QLineEdit.EchoMode.Normal, QLineEdit.EchoMode.Normal,
"") "")
if okPressed and text != '': if okPressed and filename != '':
(C.imaging_config_folder / f'{text}.json').write_text(self.arg.json()) (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_select_base(self): def on_select_base(self):
base = QFileDialog.getExistingDirectory(self, 'Select Base Folder', DS.__str__()) base = QFileDialog.getExistingDirectory(self, 'Select Base Folder', DS.__str__())
@ -341,6 +347,10 @@ class Adv(QMainWindow, Ui_MainWindow):
self.arg.sender = 'ui' self.arg.sender = 'ui'
self.s_t_start.setValue(msg.t_start) self.s_t_start.setValue(msg.t_start)
self.s_t_end.setValue(msg.t_end) 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): elif isinstance(msg, MoveAxisMsg):
match msg.axis: match msg.axis:
case 'S': case 'S':
@ -368,6 +378,9 @@ class Adv(QMainWindow, Ui_MainWindow):
mmax_shape0 = max(self.seq_meta.shape) mmax_shape0 = max(self.seq_meta.shape)
self.s_t_start.setMaximum(mmax_shape0) self.s_t_start.setMaximum(mmax_shape0)
self.s_t_end.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): elif isinstance(msg, DeviceConnectedMsg):
if msg.value: if msg.value:
self.set_device_connection(LinkStatus.GREEN) self.set_device_connection(LinkStatus.GREEN)
@ -443,6 +456,24 @@ class Adv(QMainWindow, Ui_MainWindow):
if self.cb_bscan.sender() is None: if self.cb_bscan.sender() is None:
self.p.send(SetWindowVisibleMsg('ui', 'bscan', v == 2)) 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) @pyqtSlot(int)
def on_t_start(self, v): def on_t_start(self, v):
if self.s_t_end.sender() is None: if self.s_t_end.sender() is None:
@ -455,6 +486,12 @@ class Adv(QMainWindow, Ui_MainWindow):
self.arg.t_end = v self.arg.t_end = v
self.p.send(self.arg) 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) @pyqtSlot(int)
def on_select_plyayback_seq_name(self, v): 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): 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): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow") MainWindow.setObjectName("MainWindow")
MainWindow.resize(1238, 999) MainWindow.resize(1238, 1017)
self.centralwidget = QtWidgets.QWidget(parent=MainWindow) self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout") 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 = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_us.setStyleSheet("#g_us{\n" self.g_us.setStyleSheet("#g_us{\n"
" background: pink;\n" " background: pink;\n"
@ -189,6 +293,71 @@ class Ui_MainWindow(object):
self.horizontalSlider_8.setObjectName("horizontalSlider_8") self.horizontalSlider_8.setObjectName("horizontalSlider_8")
self.gridLayout_4.addWidget(self.horizontalSlider_8, 6, 1, 1, 1) self.gridLayout_4.addWidget(self.horizontalSlider_8, 6, 1, 1, 1)
self.gridLayout.addLayout(self.gridLayout_4, 3, 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 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.cb_bscan = QtWidgets.QCheckBox(parent=self.centralwidget) 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) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout_6.addItem(spacerItem1) self.horizontalLayout_6.addItem(spacerItem1)
self.gridLayout.addLayout(self.horizontalLayout_6, 5, 0, 1, 2) 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 = QtWidgets.QGroupBox(parent=self.centralwidget)
self.g_cobot.setStyleSheet("#g_cobot {\n" self.g_cobot.setStyleSheet("#g_cobot {\n"
" background: pink;\n" " background: pink;\n"
@ -404,58 +469,36 @@ class Ui_MainWindow(object):
self.gridLayout.addWidget(self.g_cobot, 0, 1, 2, 1) self.gridLayout.addWidget(self.g_cobot, 0, 1, 2, 1)
self.gridLayout_5 = QtWidgets.QGridLayout() self.gridLayout_5 = QtWidgets.QGridLayout()
self.gridLayout_5.setObjectName("gridLayout_5") self.gridLayout_5.setObjectName("gridLayout_5")
self.spinBox_3 = QtWidgets.QSpinBox(parent=self.centralwidget) self.label_33 = QtWidgets.QLabel(parent=self.centralwidget)
self.spinBox_3.setObjectName("spinBox_3") self.label_33.setObjectName("label_33")
self.gridLayout_5.addWidget(self.spinBox_3, 6, 2, 1, 1) 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 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_7.setObjectName("label_7") self.label_7.setObjectName("label_7")
self.gridLayout_5.addWidget(self.label_7, 6, 0, 1, 1) self.gridLayout_5.addWidget(self.label_7, 6, 0, 1, 1)
self.spinBox_12 = QtWidgets.QSpinBox(parent=self.centralwidget) self.spinBox = QtWidgets.QSpinBox(parent=self.centralwidget)
self.spinBox_12.setObjectName("spinBox_12") self.spinBox.setObjectName("spinBox")
self.gridLayout_5.addWidget(self.spinBox_12, 3, 2, 1, 1) self.gridLayout_5.addWidget(self.spinBox, 4, 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)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
self.gridLayout_5.addItem(spacerItem2, 7, 1, 1, 1) self.gridLayout_5.addItem(spacerItem2, 9, 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.s_t_end = QJumpSlider(parent=self.centralwidget) self.s_t_end = QJumpSlider(parent=self.centralwidget)
self.s_t_end.setMinimum(1) self.s_t_end.setMinimum(1)
self.s_t_end.setMaximum(1500) self.s_t_end.setMaximum(1500)
self.s_t_end.setOrientation(QtCore.Qt.Orientation.Horizontal) self.s_t_end.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.s_t_end.setObjectName("s_t_end") self.s_t_end.setObjectName("s_t_end")
self.gridLayout_5.addWidget(self.s_t_end, 4, 1, 1, 1) 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 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_5.setObjectName("label_5") self.label_5.setObjectName("label_5")
self.gridLayout_5.addWidget(self.label_5, 4, 0, 1, 1) 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 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_27 = QtWidgets.QLabel(parent=self.centralwidget) 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.addWidget(self.b_new_imaging_config)
self.horizontalLayout_3.setStretch(1, 1) self.horizontalLayout_3.setStretch(1, 1)
self.gridLayout_5.addLayout(self.horizontalLayout_3, 2, 0, 1, 3) self.gridLayout_5.addLayout(self.horizontalLayout_3, 2, 0, 1, 3)
self.gridLayout.addLayout(self.gridLayout_5, 3, 0, 1, 1) self.label_6 = QtWidgets.QLabel(parent=self.centralwidget)
self.g_probe_head = QtWidgets.QGroupBox(parent=self.centralwidget) self.label_6.setObjectName("label_6")
self.g_probe_head.setStyleSheet("#g_probe_head {\n" self.gridLayout_5.addWidget(self.label_6, 5, 0, 1, 1)
" background: pink;\n" self.spinBox_2 = QtWidgets.QSpinBox(parent=self.centralwidget)
"border-radius: 7px;\n" self.spinBox_2.setObjectName("spinBox_2")
"}") self.gridLayout_5.addWidget(self.spinBox_2, 5, 2, 1, 1)
self.g_probe_head.setTitle("") self.spinBox_3 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.g_probe_head.setObjectName("g_probe_head") self.spinBox_3.setObjectName("spinBox_3")
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.g_probe_head) self.gridLayout_5.addWidget(self.spinBox_3, 6, 2, 1, 1)
self.verticalLayout_5.setObjectName("verticalLayout_5") self.s_dct_bandwidth = QtWidgets.QSlider(parent=self.centralwidget)
self.horizontalLayout_7 = QtWidgets.QHBoxLayout() self.s_dct_bandwidth.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.s_dct_bandwidth.setObjectName("s_dct_bandwidth")
self.label_31 = QtWidgets.QLabel(parent=self.g_probe_head) 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 = QtGui.QFont()
font.setFamily("Noto Sans") font.setPointSize(20)
font.setPointSize(15) font.setBold(False)
self.label_31.setFont(font) self.label_2.setFont(font)
self.label_31.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.label_2.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label_31.setObjectName("label_31") self.label_2.setObjectName("label_2")
self.horizontalLayout_7.addWidget(self.label_31) self.gridLayout_5.addWidget(self.label_2, 0, 0, 1, 3)
self.b_probe_head_switch = QtWidgets.QPushButton(parent=self.g_probe_head) self.s_f_rows = QtWidgets.QSlider(parent=self.centralwidget)
self.b_probe_head_switch.setText("") self.s_f_rows.setMinimum(500)
self.b_probe_head_switch.setObjectName("b_probe_head_switch") self.s_f_rows.setMaximum(7000)
self.horizontalLayout_7.addWidget(self.b_probe_head_switch) self.s_f_rows.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.horizontalLayout_7.setStretch(0, 1) self.s_f_rows.setObjectName("s_f_rows")
self.verticalLayout_5.addLayout(self.horizontalLayout_7) self.gridLayout_5.addWidget(self.s_f_rows, 8, 1, 1, 1)
self.groupBox_3 = QtWidgets.QGroupBox(parent=self.g_probe_head) self.spinBox_12 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.groupBox_3.setTitle("") self.spinBox_12.setObjectName("spinBox_12")
self.groupBox_3.setObjectName("groupBox_3") self.gridLayout_5.addWidget(self.spinBox_12, 3, 2, 1, 1)
self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.groupBox_3) self.spinBox_7 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.horizontalLayout_11.setObjectName("horizontalLayout_11") self.spinBox_7.setObjectName("spinBox_7")
self.b_probe_start = QtWidgets.QPushButton(parent=self.groupBox_3) self.gridLayout_5.addWidget(self.spinBox_7, 7, 2, 1, 1)
self.b_probe_start.setObjectName("b_probe_start") self.spinBox_13 = QtWidgets.QSpinBox(parent=self.centralwidget)
self.horizontalLayout_11.addWidget(self.b_probe_start) self.spinBox_13.setObjectName("spinBox_13")
self.b_probe_stop = QtWidgets.QPushButton(parent=self.groupBox_3) self.gridLayout_5.addWidget(self.spinBox_13, 8, 2, 1, 1)
self.b_probe_stop.setObjectName("b_probe_stop") self.gridLayout.addLayout(self.gridLayout_5, 3, 0, 1, 1)
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)
self.gridLayout.setRowStretch(0, 1) self.gridLayout.setRowStretch(0, 1)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(parent=MainWindow) self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
@ -551,6 +576,26 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Scarlet Flandre Control Panel")) 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.label_30.setText(_translate("MainWindow", "Ultrasound T/R Device Driver"))
self.b_device_connection.setText(_translate("MainWindow", "Connect")) self.b_device_connection.setText(_translate("MainWindow", "Connect"))
self.lb_device_connection.setText(_translate("MainWindow", "Disconnected")) 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_12.setText(_translate("MainWindow", "Roll"))
self.label_11.setText(_translate("MainWindow", "E")) self.label_11.setText(_translate("MainWindow", "E"))
self.label_8.setText(_translate("MainWindow", "X")) self.label_8.setText(_translate("MainWindow", "X"))
self.cb_bscan.setText(_translate("MainWindow", "BSCAN")) self.label.setText(_translate("MainWindow", "Base Path"))
self.checkBox.setText(_translate("MainWindow", "FOCUS")) self.b_select_base.setText(_translate("MainWindow", "Select"))
self.g_cap.setTitle(_translate("MainWindow", "Capture Source")) self.b_base.setText(_translate("MainWindow", "Open"))
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_31.setText(_translate("MainWindow", "Probe Head Control")) self.label_31.setText(_translate("MainWindow", "Probe Head Control"))
self.b_probe_start.setText(_translate("MainWindow", "Start")) self.b_probe_start.setText(_translate("MainWindow", "Start"))
self.b_probe_stop.setText(_translate("MainWindow", "Stop")) self.b_probe_stop.setText(_translate("MainWindow", "Stop"))
self.b_probe_single.setText(_translate("MainWindow", "Single")) self.b_probe_single.setText(_translate("MainWindow", "Single"))
self.b_probe_orig.setText(_translate("MainWindow", "Orig")) self.b_probe_orig.setText(_translate("MainWindow", "Orig"))
self.l_probe_angle.setText(_translate("MainWindow", "TextLabel")) self.l_probe_angle.setText(_translate("MainWindow", "TextLabel"))
self.label.setText(_translate("MainWindow", "Base Path")) self.cb_bscan.setText(_translate("MainWindow", "BSCAN"))
self.b_select_base.setText(_translate("MainWindow", "Select")) self.checkBox.setText(_translate("MainWindow", "FOCUS"))
self.b_base.setText(_translate("MainWindow", "Open")) 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 from flandre.pyqt.QJumpSlider import QJumpSlider

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1238</width> <width>1238</width>
<height>999</height> <height>1017</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -15,6 +15,208 @@
</property> </property>
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout" rowstretch="1,0,0,0,0,0" columnstretch="0,0"> <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"> <item row="0" column="0">
<widget class="QGroupBox" name="g_us"> <widget class="QGroupBox" name="g_us">
<property name="styleSheet"> <property name="styleSheet">
@ -336,6 +538,130 @@ border-radius: 7px;
</item> </item>
</layout> </layout>
</item> </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"> <item row="5" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_6"> <layout class="QHBoxLayout" name="horizontalLayout_6">
<item> <item>
@ -370,208 +696,6 @@ border-radius: 7px;
</item> </item>
</layout> </layout>
</item> </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"> <item row="0" column="1" rowspan="2">
<widget class="QGroupBox" name="g_cobot"> <widget class="QGroupBox" name="g_cobot">
<property name="styleSheet"> <property name="styleSheet">
@ -750,30 +874,45 @@ border-radius: 7px;
</item> </item>
<item row="3" column="0"> <item row="3" column="0">
<layout class="QGridLayout" name="gridLayout_5"> <layout class="QGridLayout" name="gridLayout_5">
<item row="6" column="2"> <item row="7" column="0">
<widget class="QSpinBox" name="spinBox_3"/> <widget class="QLabel" name="label_33">
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text"> <property name="text">
<string>TextLabel</string> <string>dct_bandwidth</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="2"> <item row="3" column="0">
<widget class="QSpinBox" name="spinBox_12"/> <widget class="QLabel" name="label_15">
<property name="text">
<string>t_start</string>
</property>
</widget>
</item> </item>
<item row="5" column="2"> <item row="8" column="0">
<widget class="QSpinBox" name="spinBox_2"/> <widget class="QLabel" name="label_34">
<property name="text">
<string>f_rows</string>
</property>
</widget>
</item> </item>
<item row="5" column="1"> <item row="3" column="1">
<widget class="QSlider" name="horizontalSlider_2"> <widget class="QJumpSlider" name="s_t_start">
<property name="orientation"> <property name="orientation">
<enum>Qt::Orientation::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
</widget> </widget>
</item> </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"> <spacer name="verticalSpacer_2">
<property name="orientation"> <property name="orientation">
<enum>Qt::Orientation::Vertical</enum> <enum>Qt::Orientation::Vertical</enum>
@ -786,22 +925,6 @@ border-radius: 7px;
</property> </property>
</spacer> </spacer>
</item> </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"> <item row="4" column="1">
<widget class="QJumpSlider" name="s_t_end"> <widget class="QJumpSlider" name="s_t_end">
<property name="minimum"> <property name="minimum">
@ -815,30 +938,6 @@ border-radius: 7px;
</property> </property>
</widget> </widget>
</item> </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"> <item row="4" column="0">
<widget class="QLabel" name="label_5"> <widget class="QLabel" name="label_5">
<property name="text"> <property name="text">
@ -846,13 +945,6 @@ border-radius: 7px;
</property> </property>
</widget> </widget>
</item> </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"> <item row="2" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1,0"> <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1,0">
<item> <item>
@ -874,129 +966,86 @@ border-radius: 7px;
</item> </item>
</layout> </layout>
</item> </item>
</layout> <item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>v2</string>
</property>
</widget>
</item> </item>
<item row="1" column="0"> <item row="5" column="2">
<widget class="QGroupBox" name="g_probe_head"> <widget class="QSpinBox" name="spinBox_2"/>
<property name="styleSheet"> </item>
<string notr="true">#g_probe_head { <item row="6" column="2">
background: pink; <widget class="QSpinBox" name="spinBox_3"/>
border-radius: 7px; </item>
}</string> <item row="7" column="1">
<widget class="QSlider" name="s_dct_bandwidth">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="title"> </widget>
<string/> </item>
<item row="5" column="1">
<widget class="QSlider" name="s_v2">
<property name="minimum">
<number>1</number>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_5" stretch="0,1"> <property name="maximum">
<item> <number>7000</number>
<layout class="QHBoxLayout" name="horizontalLayout_7" stretch="1,0"> </property>
<item> <property name="value">
<widget class="QLabel" name="label_31"> <number>5900</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<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"> <property name="font">
<font> <font>
<family>Noto Sans</family> <pointsize>20</pointsize>
<pointsize>15</pointsize> <bold>false</bold>
</font> </font>
</property> </property>
<property name="text"> <property name="text">
<string>Probe Head Control</string> <string>Imaging</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignmentFlag::AlignCenter</set> <set>Qt::AlignmentFlag::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item row="8" column="1">
<widget class="QPushButton" name="b_probe_head_switch"> <widget class="QSlider" name="s_f_rows">
<property name="text"> <property name="minimum">
<string/> <number>500</number>
</property>
<property name="maximum">
<number>7000</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property> </property>
</widget> </widget>
</item> </item>
</layout> <item row="3" column="2">
<widget class="QSpinBox" name="spinBox_12"/>
</item> </item>
<item> <item row="7" column="2">
<widget class="QGroupBox" name="groupBox_3"> <widget class="QSpinBox" name="spinBox_7"/>
<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>
<item> <item row="8" column="2">
<widget class="QPushButton" name="b_probe_stop"> <widget class="QSpinBox" name="spinBox_13"/>
<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">
<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> </item>
</layout> </layout>
</item> </item>

View File

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

View File

@ -14,7 +14,6 @@ import scipy.signal
from cupyx.scipy.fft import dctn, idctn from cupyx.scipy.fft import dctn, idctn
from scipy.stats import norm as norms from scipy.stats import norm as norms
from flandre.utils.RfFile import RfFrame, RfSequenceMeta from flandre.utils.RfFile import RfFrame, RfSequenceMeta
from flandre.utils.RfMeta import RfFrameMeta 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(self.m.copy(), self.frame_meta, self.seq_meta)
return RfMat(data, 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 @property
def p(self): def p(self):
if self.device == 'cpu': if self.device == 'cpu':
@ -182,6 +185,11 @@ class RfMat:
raise NotImplementedError() raise NotImplementedError()
return self.copy(idct(m_dct)) 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): def argrelextrema(self, axis=1):
arg = scipy.signal.argrelextrema arg = scipy.signal.argrelextrema
m = self.m m = self.m
@ -216,6 +224,5 @@ class RfMat:
return self.copy(rm) return self.copy(rm)
if __name__ == '__main__': if __name__ == '__main__':
cp.zeros((1, 2, 3)) + 1 cp.zeros((1, 2, 3)) + 1