add hodge fit

This commit is contained in:
Dominik Demuth
2023-06-27 18:23:41 +02:00
parent 8a96e0472d
commit 1d9bf600ba
4 changed files with 255 additions and 185 deletions

View File

@ -27,19 +27,46 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
self._plots = {}
self._tg_value = {}
self._fit = {}
self._lines = {}
self._hodge = {
'onset': (PlotItem(x=[], y=[], pen=None, symbol='o', symbolBrush=Tab10.TabBlue.rgb(), name='Onset'), None),
'midpoint': (PlotItem(x=[], y=[], pen=None, symbol='s', symbolBrush=Tab10.TabOrange.rgb(), name='Midpoint'), None),
'end': (PlotItem(x=[], y=[], pen=None, symbol='t', symbolBrush=Tab10.TabGreen.rgb(), name='End'), None),
'inflection': (PlotItem(x=[], y=[], pen=None, symbol='d', symbolBrush=Tab10.TabRed.rgb(), name='Inflection'), None),
'onset': (
PlotItem(x=[], y=[], pen=None, symbol='o', symbolBrush=Tab10.TabBlue.rgb(), name='Onset'),
None,
(PlotItem(x=[], y=[], pen=mkPen({'color': Tab10.TabBlue.rgb()})),
PlotItem(x=[], y=[], pen=None, symbol='o', symbolBrush=Tab10.TabBlue.rgb())),
None,
),
'midpoint': (
PlotItem(x=[], y=[], pen=None, symbol='s', symbolBrush=Tab10.TabOrange.rgb(), name='Midpoint'),
None,
(PlotItem(x=[], y=[], pen=mkPen({'color': Tab10.TabOrange.rgb()})),
PlotItem(x=[], y=[], pen=None, symbol='s', symbolBrush=Tab10.TabOrange.rgb())),
None,
),
'end': (
PlotItem(x=[], y=[], pen=None, symbol='t', symbolBrush=Tab10.TabGreen.rgb(), name='End'),
None,
(PlotItem(x=[], y=[], pen=mkPen({'color': Tab10.TabGreen.rgb()})),
PlotItem(x=[], y=[], pen=None, symbol='t', symbolBrush=Tab10.TabGreen.rgb())),
None,
),
'inflection': (
PlotItem(x=[], y=[], pen=None, symbol='d', symbolBrush=Tab10.TabRed.rgb(), name='Inflection'),
None,
(PlotItem(x=[], y=[], pen=mkPen({'color': Tab10.TabRed.rgb()})),
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'),
}
self._lines = {}
self.tau_plot.getPlotItem().addLegend()
for plt, _ in self._hodge.values():
for plt, _, fitplt, _ in self._hodge.values():
self.tau_plot.addItem(plt)
self.tghodge_graph.addItem(fitplt[0])
self.tghodge_graph.addItem(fitplt[1])
self.tau_plot.setLogMode(y=True)
self.tghodge_graph.setLogMode(y=True)
self.limits = RegionItem(), RegionItem()
for lim in self.limits:
@ -69,7 +96,9 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
for key, plt in self._hodge.items():
plt[0].setData(x=[], y=[])
self._hodge[key] = (plt[0], None)
plt[2][0].setData(x=[], y=[])
plt[2][1].setData(x=[], y=[])
self._hodge[key] = (plt[0], None, plt[2], None)
self._dsc = {}
self._plots = {}
@ -242,7 +271,7 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
plot[-1].setData(res.x, res.y)
def hodge(self):
for tg_type, (plot, data) in self._hodge.items():
for tg_type, (plot, data, fitplots, fit) in self._hodge.items():
m = []
for idx in range(self.listWidget.count()):
@ -260,11 +289,13 @@ class TgCalculator(QtWidgets.QDialog, Ui_Dialog):
m.append([tg_value, data.value])
if len(m) > 1:
data = tau_hodge(*array(m).T)
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)
self._hodge[tg_type] = (plot, data)
self._hodge[tg_type] = (plot, data, fitplots, fit)
def close(self) -> bool:
self.clear()