1
0
forked from IPKM/nmreval

color to dsc curves in tg

This commit is contained in:
Dominik Demuth 2023-05-31 17:20:51 +02:00
parent a8a7e75501
commit f74dd982ba

View File

@ -1,3 +1,8 @@
from itertools import cycle
from pyqtgraph import mkPen, mkBrush
from nmreval.lib.colors import Tab10
from ..Qt import QtWidgets, QtCore from ..Qt import QtWidgets, QtCore
from .._py.tnmh_dialog import Ui_Dialog from .._py.tnmh_dialog import Ui_Dialog
from ..lib.pg_objects import PlotItem, RegionItem from ..lib.pg_objects import PlotItem, RegionItem
@ -11,11 +16,10 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
self.setupUi(self) self.setupUi(self)
self._management = management self._management = management
self._colors = cycle(Tab10)
self._plots = {} self._dsc = {}
self._tg_baselines = {} self._tg_baselines = {}
self.dsc = []
self.limits = RegionItem(), RegionItem() self.limits = RegionItem(), RegionItem()
for lim in self.limits: for lim in self.limits:
self.graphicsView.addItem(lim) self.graphicsView.addItem(lim)
@ -28,45 +32,61 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
# s.valuesChanged.connect(self.management.shift_scale) # s.valuesChanged.connect(self.management.shift_scale)
def clear(self): def clear(self):
self.dsc = []
self.listWidget.clear() self.listWidget.clear()
for v in self._plots.values(): for plot, data in self._dsc.values():
self.graphicsView.removeItem(v) self.graphicsView.removeItem(plot)
self._plots = {} self._dsc = {}
for v in self._tg_baselines.values(): for v in self._tg_baselines.values():
self.graphicsView.removeItem(v) self.graphicsView.removeItem(v)
self._tg_baselines = {} self._tg_baselines = {}
def add_sets(self): def add_sets(self):
for key, name in self._management.active_sets: min_x = 10_000_000
data = self._management.data[key] max_x = -10_000_000
if isinstance(data.data, DSC): for (key, name), c in zip(self._management.active_sets, self._colors):
self.dsc.append(data) data = self._management[key].data
else: if not isinstance(data, DSC):
continue continue
min_x = min(min_x, data.x.min())
max_x = max(max_x, data.x.max())
item = QtWidgets.QListWidgetItem(name) item = QtWidgets.QListWidgetItem(name)
item.setData(QtCore.Qt.UserRole, key) item.setData(QtCore.Qt.UserRole, key)
item.setForeground(mkBrush(c.rgb()))
self.listWidget.addItem(item) self.listWidget.addItem(item)
plot = PlotItem(x=data.x, y=data.y) plot = PlotItem(x=data.x, y=data.y, pen=mkPen(c.rgb()))
self.graphicsView.addItem(plot) self.graphicsView.addItem(plot)
self._plots[key] = plot self._dsc[key] = (plot, data)
dist = max_x - min_x
self.limits[0].setRegion((min_x, min_x+0.1*dist))
self.limits[1].setRegion((max_x-0.1*dist, max_x))
@QtCore.pyqtSlot(name='on_pushButton_clicked') @QtCore.pyqtSlot(name='on_pushButton_clicked')
def calc_tg(self): def calc_tg(self):
for v in self._tg_baselines.values():
self.graphicsView.removeItem(v)
self._tg_baselines = {}
baselines = tuple(lim.getRegion() for lim in self.limits) baselines = tuple(lim.getRegion() for lim in self.limits)
if baselines[0][0] > baselines[1][0]: if baselines[0][0] > baselines[1][0]:
baselines = baselines[1], baselines[0] baselines = baselines[1], baselines[0]
for idx in range(self.listWidget.count()): for idx in range(self.listWidget.count()):
key = self.listWidget.item(idx).data(QtCore.Qt.UserRole) item = self.listWidget.item(idx)
tg_results, glass, liquid, tangent = self._management[key].data.glass_transition(*baselines) key = item.data(QtCore.Qt.UserRole)
color = item.foreground()
print(color)
_, data = self._dsc[key]
tg_results, glass, liquid, tangent = data.glass_transition(*baselines)
lines = [] lines = []
for line in (glass, liquid, tangent): for line in (glass, liquid, tangent):
plt = PlotItem(line[:, 0], line[:, 1]) plt = PlotItem(line[:, 0], line[:, 1])
plt.set_line(style=2, color=color.color())
self.graphicsView.addItem(plt) self.graphicsView.addItem(plt)
lines.append(plt) lines.append(plt)
self._tg_baselines[key] = lines self._tg_baselines[key] = lines