added first try for dumping the data to hdf5 files
This commit is contained in:
23
grum/io.py
Normal file
23
grum/io.py
Normal 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
|
||||
|
||||
|
||||
|
@ -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):
|
||||
|
Reference in New Issue
Block a user