Skip to content

Commit 897c5c0

Browse files
committed
update gui
1 parent 78c8ce3 commit 897c5c0

File tree

3 files changed

+42
-147
lines changed

3 files changed

+42
-147
lines changed

dosview/__init__.py

+39-144
Original file line numberDiff line numberDiff line change
@@ -25,133 +25,6 @@
2525

2626
from .version import __version__
2727

28-
def parse_file_old(file_path):
29-
30-
print("Parser start ")
31-
32-
metadata = {
33-
'log_runs_count': 0,
34-
'log_device_info': {}
35-
}
36-
max_size = 0
37-
38-
with open(file_path, 'r') as file:
39-
for line in file:
40-
parts_size = len(line.split(","))
41-
if parts_size > max_size: max_size = parts_size
42-
43-
for line in file:
44-
parts_size = len(line.split(","))
45-
if parts_size > max_size: max_size = parts_size
46-
47-
parts = line.split(",")
48-
match parts[0]:
49-
case "$HIST":
50-
pass
51-
# spec_mod = SpectrumData()
52-
# spec_mod.record = instance
53-
# spec_mod.spectrum = parts[8:]
54-
# spec_mod.integration = 10
55-
# spec_mod.time = parts[2]
56-
# spec_mod.save()
57-
case "$DOS":
58-
print("DOS", line)
59-
metadata['log_runs_count'] += 1
60-
metadata['log_device_info']['DOS'] = {
61-
"type": parts[0],
62-
"hw-model": parts[1],
63-
"fw-version": parts[2],
64-
"fw-build_info": parts[5],
65-
"fw-commit": parts[4],
66-
'hw-sn': parts[6].strip()
67-
}
68-
case "$DIG":
69-
print("DIG", line)
70-
metadata['log_device_info']['DIG'] = {
71-
"type": parts[0],
72-
"hw-model": parts[1],
73-
"hw-sn": parts[2],
74-
'eeprom': parts[3].strip()
75-
}
76-
case "$ADC":
77-
print("ADC", line)
78-
metadata['log_device_info']['ADC'] = {
79-
"type": parts[0],
80-
"hw-model": parts[1],
81-
"hw-sn": parts[2],
82-
'eeprom': parts[3].strip()
83-
}
84-
case _:
85-
pass
86-
87-
df_log = pd.read_csv(file_path, sep = ',', header = None, names=range(max_size), low_memory=False)
88-
data_types = df_log[0].unique().tolist()
89-
90-
df_spectrum = df_log [df_log[0] == '$HIST']
91-
df_spectrum = df_spectrum.drop(columns=[0, 1, 3, 4, 5, 6, 7])
92-
93-
new_columns = ['time'] + list(range(df_spectrum.shape[1] - 1))
94-
df_spectrum.columns = new_columns
95-
96-
df_spectrum['time'] = df_spectrum['time'].astype(float)
97-
minimal_time = df_spectrum['time'].min()
98-
duration = df_spectrum['time'].max() - df_spectrum['time'].min()
99-
100-
metadata['log_info'] = {}
101-
metadata['log_info']['log_type'] = 'xDOS_SPECTRAL'
102-
metadata['log_info']['log_type_version'] = '1.0'
103-
metadata['log_info']['internal_time_min'] = df_spectrum['time'].min()
104-
metadata['log_info']['internal_time_max'] = df_spectrum['time'].max()
105-
metadata['log_info']['log_duration'] = float(duration)
106-
metadata['log_info']['spectral_count'] = df_spectrum.shape[0]
107-
metadata['log_info']['channels'] = df_spectrum.shape[1] - 1
108-
metadata['log_info']['types'] = data_types
109-
metadata['log_info']['telemetry_values'] = []
110-
111-
df_spectrum['time'] = df_spectrum['time'] - df_spectrum['time'].min()
112-
113-
time = df_spectrum['time'].to_list()
114-
sums = df_spectrum.drop('time', axis=1).sum(axis=1) #.div(total_time)
115-
116-
hist = df_spectrum.drop('time', axis=1).sum(axis=0)
117-
118-
119-
df_metadata = pd.DataFrame()
120-
121-
if True:
122-
try:
123-
for index, row in df_log.iterrows():
124-
first_column_value = row[0]
125-
row_as_list = row.tolist()[2:]
126-
127-
match first_column_value:
128-
case '$BATT':
129-
keys = ['time', 'voltage', 'current', 'capacity_remaining', 'capacity_full', 'temperature']
130-
bat = { k:float(v) for (k,v) in zip(keys, row_as_list[0:len(keys)])}
131-
#bat['current'] /= 1000.0
132-
#bat['voltage'] /= 1000.0
133-
df_metadata = pd.concat([df_metadata, pd.DataFrame([bat])], ignore_index=True)
134-
del bat
135-
case '$ENV':
136-
keys = ['time', 'temperature_0', 'humidity_0', 'temperature_1', 'humidity_1', 'temperature_2', 'pressure_3']
137-
env = { k:float(v) for (k,v) in zip(keys, row_as_list[0:len(keys)])}
138-
df_metadata = pd.concat([df_metadata, pd.DataFrame([env])], ignore_index=True)
139-
del env
140-
case '$HIST':
141-
pass
142-
case _:
143-
print('Unknown row', first_column_value)
144-
145-
df_metadata['time'] = df_metadata['time'] - minimal_time
146-
except Exception as e:
147-
print(e)
148-
149-
150-
print("File parsered ..")
151-
152-
return [df_spectrum['time'], sums, hist, metadata, df_metadata]
153-
154-
15528

15629
def parse_file(file_path):
15730
start_time = time.time()
@@ -192,7 +65,6 @@ def parse_file(file_path):
19265
print(f'Unknown row type: {parts[0]}')
19366

19467

195-
19668
np_spectrum = np.array(df_lines, dtype=float)
19769
time_column = np_spectrum[:, 0]
19870
np_spectrum = np_spectrum[:, 8:]
@@ -204,7 +76,7 @@ def parse_file(file_path):
20476
maximal_time = time_column.max()
20577
duration = maximal_time - minimal_time
20678

207-
df_metadata = pd.DataFrame(df_metadata, columns=range(9))
79+
#df_metadata = pd.DataFrame(df_metadata, columns=range(9))
20880

20981
metadata['log_info'].update({
21082
'log_type': 'xDOS_SPECTRAL',
@@ -233,7 +105,6 @@ def run(self):
233105

234106

235107

236-
237108
class PlotCanvas(pg.GraphicsLayoutWidget):
238109
def __init__(self, parent=None, file_path=None):
239110
super().__init__(parent)
@@ -1145,10 +1016,8 @@ def initUI(self):
11451016
self.logView_splitter = QSplitter(Qt.Horizontal)
11461017
self.logView_splitter.addWidget(self.left_panel)
11471018
#self.logView_splitter.addWidget(QWidget())
1148-
self.logView_splitter.setSizes([1, 9])
1149-
sizes = self.logView_splitter.sizes()
1150-
#sizes[0] = int(sizes[1] * 0.1)
1151-
#self.logView_splitter.setSizes(sizes)
1019+
1020+
11521021

11531022
layout = QVBoxLayout()
11541023
layout.addWidget(self.logView_splitter)
@@ -1160,6 +1029,11 @@ def open_file(self, file_path):
11601029
self.plot_canvas = PlotCanvas(self, file_path=self.file_path)
11611030
self.logView_splitter.addWidget(self.plot_canvas)
11621031

1032+
self.logView_splitter.setSizes([1, 9])
1033+
sizes = self.logView_splitter.sizes()
1034+
sizes[0] = int(sizes[1] * 0.1)
1035+
self.logView_splitter.setSizes(sizes)
1036+
11631037
self.start_data_loading()
11641038

11651039
def start_data_loading(self):
@@ -1221,6 +1095,14 @@ def __init__(self, args):
12211095
self.plot_tab = None
12221096
self.airdos_tab = None
12231097

1098+
def updateStackedWidget(self):
1099+
print("Updating stacked widget")
1100+
print(self.tab_widget.count())
1101+
if self.tab_widget.count():
1102+
self.stacked_container.setCurrentIndex(1)
1103+
else:
1104+
self.stacked_container.setCurrentIndex(0)
1105+
12241106
def openPlotTab(self, file_path = None):
12251107
plot_tab = PlotTab()
12261108
if not file_path:
@@ -1232,21 +1114,34 @@ def openPlotTab(self, file_path = None):
12321114

12331115
self.tab_widget.addTab(plot_tab, f"{file_name}")
12341116
self.tab_widget.setCurrentIndex(self.tab_widget.count() - 1)
1117+
self.updateStackedWidget()
12351118

12361119

12371120
def openAirdosTab(self):
12381121
airdos_tab = AirdosConfigTab()
12391122
self.tab_widget.addTab(airdos_tab, "Airdos control")
12401123
self.tab_widget.setCurrentIndex(self.tab_widget.count() - 1)
1124+
self.updateStackedWidget()
1125+
12411126

1127+
def blank_page(self):
1128+
# This is widget for blank page
1129+
# When no tab is opened
1130+
widget = QWidget()
1131+
layout = QVBoxLayout()
1132+
label = QLabel("No tab is opened yet. Open a file or enable airdos control.", alignment=Qt.AlignCenter)
1133+
layout.addWidget(label)
1134+
widget.setLayout(layout)
1135+
return widget
12421136

12431137
def initUI(self):
12441138
self.setWindowTitle(self.title)
12451139
self.setGeometry(self.left, self.top, self.width, self.height)
12461140
self.setWindowIcon(QIcon('media/icon_ust.png'))
12471141

1142+
12481143
self.tab_widget = QTabWidget()
1249-
self.setCentralWidget(self.tab_widget)
1144+
12501145

12511146
if self.args.file_path:
12521147
print("Oteviram zalozku s logem")
@@ -1293,18 +1188,17 @@ def initUI(self):
12931188
self.setStatusBar(self.statusBar)
12941189
self.statusBar.showMessage("Welcome to dosview")
12951190

1191+
self.stacked_container = QStackedWidget()
1192+
self.stacked_container.addWidget(self.blank_page())
1193+
self.stacked_container.addWidget(self.tab_widget)
1194+
self.stacked_container.setCurrentIndex(0)
1195+
self.setCentralWidget(self.stacked_container)
12961196

1297-
self.setWindowTitle(f"dosview - {self.file_path}")
12981197
self.show()
12991198

13001199

13011200
def action_switch_airdoscontrol(self):
1302-
print("Switching to Airdos control tab")
1303-
1304-
if not self.airdos_tab:
1305-
self.airdos_tab = AirdosConfigTab()
1306-
self.tab_widget.addTab(self.airdos_tab, "Airdos control")
1307-
self.statusBar.showMessage("Airdos control tab opened")
1201+
self.openAirdosTab()
13081202

13091203
def about(self):
13101204
message = QMessageBox.about(self, "About dosview", "dosview is a simple tool to visualize data from Universal Scientific Technologies's")
@@ -1318,8 +1212,9 @@ def open_new_file(self, flag):
13181212
dlg.setFileMode(QFileDialog.ExistingFile)
13191213

13201214
fn = dlg.getOpenFileName()
1321-
print(fn)
1322-
self.openPlotTab(fn[0])
1215+
print("Open file", fn[0])
1216+
if fn[0]:
1217+
self.openPlotTab(fn[0])
13231218

13241219
dlg.deleteLater()
13251220

dosview/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env python3
22
# -*- coding: UTF-8 -*-
3-
__version__ = "0.1.14"
3+
__version__ = "0.1.15"

setup.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ def run(self):
3737
setup(
3838
name='dosview',
3939
#version= dosview.__version__,
40-
version="0.1.13",
41-
description='A .dos file viewer',
40+
version="0.1.15",
41+
description='Dosview is a simple graphical log viewer and control interface for Universial Scientific Technologies (UST) dosimeters.',
4242
long_description=long_description,
4343
long_description_content_type='text/markdown',
4444
packages=find_packages(),

0 commit comments

Comments
 (0)