interim save
This commit is contained in:
@ -6,20 +6,26 @@ from pyqtgraph import mkPen, mkBrush, LegendItem
|
||||
|
||||
from nmreval.dsc.hodge import tau_hodge
|
||||
from nmreval.lib.colors import Tab10
|
||||
from ..Qt import QtWidgets, QtCore
|
||||
from .._py.tnmh_dialog import Ui_Dialog
|
||||
from ..Qt import QtWidgets, QtCore, QtGui
|
||||
from .._py.tnmh_dialog import Ui_Wizard
|
||||
from ..lib.listwidget import QListWidgetSelect
|
||||
from ..lib.pg_objects import PlotItem, RegionItem
|
||||
|
||||
from nmreval.data import DSC, Points
|
||||
|
||||
|
||||
class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
newTg = QtCore.pyqtSignal(dict, list, str)
|
||||
class TgCalculator(QtWidgets.QWizard, Ui_Wizard):
|
||||
newTg = QtCore.pyqtSignal(dict)
|
||||
|
||||
def __init__(self, management, parent=None):
|
||||
super().__init__(parent=parent)
|
||||
|
||||
self.setupUi(self)
|
||||
self.listWidget = QListWidgetSelect(parent=self)
|
||||
self.listWidget.setObjectName('listWidget')
|
||||
self.setSideWidget(self.listWidget)
|
||||
self.listWidget.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding))
|
||||
|
||||
self._management = management
|
||||
self._colors = cycle(Tab10)
|
||||
|
||||
@ -56,8 +62,13 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
PlotItem(x=[], y=[], pen=None, symbol='d', symbolBrush=Tab10.TabRed.rgb())),
|
||||
None,
|
||||
),
|
||||
# 'fictive': PlotItem(x=[], y=[], pen=None, symbol='t1', symbolBrush=Tab10.TabPurple.rgb(), name='Fictive'),
|
||||
# 'TNMH': PlotItem(x=[], y=[], pen=None, symbol='star', symbolBrush=Tab10.TabPurple.rgb(), name='TNMH'),
|
||||
'fictive': (
|
||||
PlotItem(x=[], y=[], pen=None, symbol='t1', symbolBrush=Tab10.TabPurple.rgb(), name='Fictive'),
|
||||
None,
|
||||
(PlotItem(x=[], y=[], pen=mkPen({'color': Tab10.TabPurple.rgb()})),
|
||||
PlotItem(x=[], y=[], pen=None, symbol='t1', symbolBrush=Tab10.TabPurple.rgb())),
|
||||
None,
|
||||
),
|
||||
}
|
||||
self._lines = {}
|
||||
self.tau_plot.getPlotItem().addLegend()
|
||||
@ -75,8 +86,6 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
|
||||
self.add_sets()
|
||||
|
||||
self.listWidget.itemClicked.connect(self.show_tg_values)
|
||||
|
||||
self.new_graph_tau_combo.setEnabled(False)
|
||||
self.new_graph_tau_check.stateChanged.connect(lambda state: self.new_graph_tau_combo.setEnabled(not bool(state)))
|
||||
|
||||
@ -92,7 +101,6 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
for plots in self._plots.values():
|
||||
for val in plots:
|
||||
self.dsc_plot.removeItem(val)
|
||||
self.graphicsView_2.removeItem(val)
|
||||
|
||||
for key, plt in self._hodge.items():
|
||||
plt[0].setData(x=[], y=[])
|
||||
@ -148,16 +156,16 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
self.dsc_plot.addItem(tg_plot)
|
||||
|
||||
fictive_cp = PlotItem(pen=mkPen(c.rgb()))
|
||||
self.graphicsView_2.addItem(fictive_cp)
|
||||
# self.graphicsView_2.addItem(fictive_cp)
|
||||
|
||||
tnmh_fit = PlotItem()
|
||||
tnmh_fit.set_line(style=2, color=c)
|
||||
self.graphicsView_2.addItem(tnmh_fit)
|
||||
# self.graphicsView_2.addItem(tnmh_fit)
|
||||
|
||||
self._plots[key] = (data_plot, tg_plot, glass, liquid, tangent, fictive_cp, tnmh_fit)
|
||||
self._tg_value[key] = {
|
||||
'onset': (nan, nan),
|
||||
'mid': (nan, nan),
|
||||
'midpoint': (nan, nan),
|
||||
'end': (nan, nan),
|
||||
'inflection': (nan, nan),
|
||||
# 'fictive': (nan, nan),
|
||||
@ -194,28 +202,46 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
|
||||
self._update_tg_plots()
|
||||
|
||||
def show_tg_values(self, item):
|
||||
values = self._tg_value.get(item.data(QtCore.Qt.UserRole))
|
||||
|
||||
if values is not None:
|
||||
label = '\n'.join((f'{name.capitalize()}: {pos[0]:.2f} K' for name, pos in values.items()))
|
||||
self.tg_value_label.setText(label)
|
||||
|
||||
fit = self._fit.get(item.data(QtCore.Qt.UserRole))
|
||||
if fit is not None:
|
||||
self.label_5.setText(fit._parameter_string())
|
||||
|
||||
def _update_tg_plots(self):
|
||||
self.treeWidget.clear()
|
||||
for idx in range(self.listWidget.count()):
|
||||
item = self.listWidget.item(idx)
|
||||
|
||||
tree_item = QtWidgets.QTreeWidgetItem([item.text()])
|
||||
values = self._tg_value.get(item.data(QtCore.Qt.UserRole))
|
||||
|
||||
if values is not None:
|
||||
for name, pos in values.items():
|
||||
child_item = QtWidgets.QTreeWidgetItem([f'{name.capitalize()}: {pos[0]:.2f} K'])
|
||||
tree_item.addChild(child_item)
|
||||
|
||||
self.treeWidget.addTopLevelItem(tree_item)
|
||||
|
||||
key = item.data(QtCore.Qt.UserRole)
|
||||
plot = self._plots[key]
|
||||
data, _ = self._dsc[key]
|
||||
|
||||
plot[1].setData(array(list(self._tg_value[key].values())))
|
||||
|
||||
self.hodge()
|
||||
@QtCore.pyqtSlot(name='on_pushButton_clicked')
|
||||
def export_tg(self):
|
||||
ret_dic = {}
|
||||
for key, tg in self._tg_value.items():
|
||||
tgx = [x for x, y in tg.values()]
|
||||
tgy = [y for x, y in tg.values()]
|
||||
if self.tg_export_check.isChecked():
|
||||
tg_pts = Points(x=tgx, y=tgy, name=self._management[key].name + ' (Tg)', value=self._management[key].value)
|
||||
else:
|
||||
tg_pts = None
|
||||
|
||||
if self.tglines_export_check.isChecked():
|
||||
line = self._lines[key]
|
||||
else:
|
||||
line = []
|
||||
|
||||
ret_dic[key] = (tg_pts, line)
|
||||
|
||||
self.newTg.emit(ret_dic)
|
||||
|
||||
@QtCore.pyqtSlot(QtWidgets.QListWidgetItem, name='on_listWidget_itemChanged')
|
||||
def change_visibility(self, item: QtWidgets.QListWidgetItem):
|
||||
@ -270,6 +296,7 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
self._fit[key] = res
|
||||
plot[-1].setData(res.x, res.y)
|
||||
|
||||
@QtCore.pyqtSlot(name='on_toolButton_clicked')
|
||||
def hodge(self):
|
||||
for tg_type, (plot, data, fitplots, fit) in self._hodge.items():
|
||||
|
||||
@ -292,8 +319,8 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
|
||||
data, fit = tau_hodge(*array(m).T)
|
||||
data.name = f'{data.name} ({tg_type.capitalize()})'
|
||||
plot.setData(data.x, data.y)
|
||||
fitplots[0].setData(1000/fit.x, fit.y)
|
||||
fitplots[1].setData(1000/fit.x_data, fit.y_data)
|
||||
fitplots[0].setData(fit.x, fit.y)
|
||||
fitplots[1].setData(fit.x_data, fit.y_data)
|
||||
|
||||
self._hodge[tg_type] = (plot, data, fitplots, fit)
|
||||
|
||||
|
Reference in New Issue
Block a user