From 99bb196e5cd9833697efd30f31cb5813bbd1e12d Mon Sep 17 00:00:00 2001 From: Dominik Demuth Date: Fri, 14 Apr 2023 19:17:05 +0200 Subject: [PATCH] basic FC reading is working for different script version --- src/gui_qt/data/datawidget/datawidget.py | 6 ++- src/gui_qt/io/fcbatchreader.py | 1 + src/nmreval/io/fcbatchreader.py | 56 ++++++++++++------------ 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/gui_qt/data/datawidget/datawidget.py b/src/gui_qt/data/datawidget/datawidget.py index cf4b741..d3a4df3 100644 --- a/src/gui_qt/data/datawidget/datawidget.py +++ b/src/gui_qt/data/datawidget/datawidget.py @@ -1,5 +1,6 @@ from __future__ import annotations +from nmreval.lib.logger import logger from nmreval.lib.colors import available_cycles from .properties import PropWidget @@ -356,7 +357,10 @@ class DataTree(QtWidgets.QTreeWidget): except AttributeError: idx = self.invisibleRootItem().indexOfChild(item) self.invisibleRootItem().takeChild(idx) - self._checked_graphs.remove(_id) + try: + self._checked_graphs.remove(_id) + except KeyError: + logger.warn(f'Graph {_id} already removed, skip') iterator += 1 diff --git a/src/gui_qt/io/fcbatchreader.py b/src/gui_qt/io/fcbatchreader.py index c94dfed..c2a498e 100644 --- a/src/gui_qt/io/fcbatchreader.py +++ b/src/gui_qt/io/fcbatchreader.py @@ -54,6 +54,7 @@ class QFCReader(QtWidgets.QDialog, Ui_FCEval_dialog): infiles = QtWidgets.QFileDialog.getExistingDirectory(caption='Select input directory', directory=str(self.path), options=QtWidgets.QFileDialog.ShowDirsOnly) + infiles = [infiles] if infiles else infiles if infiles: self.listWidget.addItems(infiles) diff --git a/src/nmreval/io/fcbatchreader.py b/src/nmreval/io/fcbatchreader.py index e27be6f..7d17c00 100644 --- a/src/nmreval/io/fcbatchreader.py +++ b/src/nmreval/io/fcbatchreader.py @@ -15,7 +15,6 @@ from nmreval.utils.utils import get_temperature, roundrobin class FCReader: def __init__(self, fname: (list | str | pathlib.Path)): - print('Hello') if isinstance(fname, (str, pathlib.Path)): self.fnames = [fname] else: @@ -78,15 +77,15 @@ class FCReader: _temp = {} reader = HdfReader(filename) - mag_directory = 'Magnetization' + mag_directory = None for m in ['Magnetization', 'mag']: - try: + if m in reader: mag_directory = m - except KeyError: - continue + break - for mag in reader.get_selected(mag_directory, dtype='points'): - _temp[mag.value] = mag + if m is not None: + for mag in reader.get_selected(mag_directory, dtype='points'): + _temp[mag.value] = mag return _temp @@ -122,14 +121,19 @@ class FCReader: _temp = {} bevo_groups = reader['data'].children + no_bevo = False for grp in bevo_groups.values(): for k in grp.data(): - print(k) + try: + # look for parameter, should be missing in older scripts + bevo = k.parameter['bevo'] + except KeyError: + no_bevo = True + break + if str(k.parent) != 'ACC_ABS_FID_sig (group)': continue - print(k.path, k, k.parent, k.parameter['bevo'], k.parameter['tevo']) - bevo = k.parameter['bevo'] tevo = k.parameter['tevo'] s = reader.make_signal(k, flag='fid', value='tevo', group='bevo') @@ -140,15 +144,20 @@ class FCReader: _temp[bevo].append((tevo, *[pp[1] for pp in pts])) - # sig = reader.get_selected('/data/B=*/ACC_ABS_FID*', dtype='signal') - # _temp = {} - # for s in sig: - # pts = s.points([region]) - # b = s.group - # if b not in _temp: - # _temp[b] = [] - # - # _temp[b].append([s.value, *[pp[1] for pp in pts]]) + if no_bevo: + break + + if no_bevo: + # hopefully only for old scripts + sig = reader.get_selected('/data/B=*/ACC_ABS_FID*', dtype='signal') + _temp = {} + for s in sig: + pts = s.points([region]) + b = s.group + if b not in _temp: + _temp[b] = [] + + _temp[b].append([s.value, *[pp[1] for pp in pts]]) for b, m in sorted(_temp.items()): m = np.array(m) @@ -410,12 +419,3 @@ class FCReader: @staticmethod def kww(x, m0, off, t1, beta): return m0 * np.exp(-(x/t1)**beta) + off - - -if __name__ == '__main__': - test = FCReader('/autohome/dominik/nmreval/testdata/fc_test/314K_2015-09-03_1605.h5') - test.load_magnetization(region=(None, None)) - - # test = FCReader('/autohome/dominik/nmreval/testdata/fc_test/2023-03-16_1423.h5') - # test.load_magnetization(region=(None, None)) - print(test.data)