added first try for dumping the data to hdf5 files

This commit is contained in:
2023-01-25 21:59:14 +01:00
parent fc2fa9ae34
commit 3a0f2bd0d6
2 changed files with 49 additions and 1 deletions

23
grum/io.py Normal file
View File

@ -0,0 +1,23 @@
import h5py
def write_dict(fn, d):
d = flatten_dict(d)
with h5py.File(fn, "w") as f:
for k, v in d.items():
f[k] = v
def flatten_dict(d, parent="", sep="/"):
res = {}
for key, value in d.items():
abs_key = parent + sep + key
if isinstance(value, dict):
deeper = flatten_dict(value, parent=abs_key, sep=sep)
res.update(deeper)
else:
res[abs_key] = value
return res

View File

@ -1,9 +1,10 @@
from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtWidgets import QMainWindow, QSplitter
from PyQt5.QtWidgets import QMainWindow, QSplitter, QFileDialog
from . import assets
from .dictlist import DictList
from .exampledata import exampledata
from .io import write_dict
from .mdi import MDIArea, MDISubMultiPlot, MDISubPlot, MDIWindowMode
from .menus import BarMenu
from .plotdesc import PlotDescription
@ -42,6 +43,11 @@ class MainWindow(QMainWindow):
bar = self.menuBar()
self.menu_file = menu = BarMenu(bar, "&File")
menu.addAction("Save as...", self.on_save)
shortcut(self, "Ctrl+S", self.on_save)
self.menu_settings = menu = BarMenu(bar, "&Settings")
menu.addCheckbox("Open new plots", state=True)
@ -114,6 +120,25 @@ class MainWindow(QMainWindow):
self.lst.set_alarm_for_selected(True)
def on_save(self):
filters = [
"HDF5 files (*.h5)",
"All files (*)"
]
filters = ";;".join(filters)
fn, _chosen_filter = QFileDialog.getSaveFileName(self, filter=filters)
if not fn:
return
data = {}
for name, item in self.lst.items.items():
desc = item.value
data[name] = dict(xs=desc.xs, ys=desc.ys)
write_dict(fn, data)
# Plumbing
def plot_single_item(self, item):