dsc baseline uses consistent offset for correction; closes #53
This commit is contained in:
parent
d8cc99cea4
commit
adcd98fc31
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'src/resources/_ui/dscfile_dialog.ui'
|
# Form implementation generated from reading ui file 'src/resources/_ui/dscfile_dialog.ui'
|
||||||
#
|
#
|
||||||
# Created by: PyQt5 UI code generator 5.15.2
|
# Created by: PyQt5 UI code generator 5.15.9
|
||||||
#
|
#
|
||||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||||
# run again. Do not edit this file unless you know what you are doing.
|
# run again. Do not edit this file unless you know what you are doing.
|
||||||
@ -161,12 +161,12 @@ class Ui_Dialog(object):
|
|||||||
self.buttonBox.setCenterButtons(True)
|
self.buttonBox.setCenterButtons(True)
|
||||||
self.buttonBox.setObjectName("buttonBox")
|
self.buttonBox.setObjectName("buttonBox")
|
||||||
self.verticalLayout_4.addWidget(self.buttonBox)
|
self.verticalLayout_4.addWidget(self.buttonBox)
|
||||||
self.widget1 = QtWidgets.QWidget(self.splitter)
|
self.layoutWidget = QtWidgets.QWidget(self.splitter)
|
||||||
self.widget1.setObjectName("widget1")
|
self.layoutWidget.setObjectName("layoutWidget")
|
||||||
self.gridLayout = QtWidgets.QGridLayout(self.widget1)
|
self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget)
|
||||||
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
||||||
self.gridLayout.setObjectName("gridLayout")
|
self.gridLayout.setObjectName("gridLayout")
|
||||||
self.raw_graph = PlotWidget(self.widget1)
|
self.raw_graph = PlotWidget(self.layoutWidget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
@ -175,7 +175,7 @@ class Ui_Dialog(object):
|
|||||||
self.raw_graph.setMinimumSize(QtCore.QSize(300, 200))
|
self.raw_graph.setMinimumSize(QtCore.QSize(300, 200))
|
||||||
self.raw_graph.setObjectName("raw_graph")
|
self.raw_graph.setObjectName("raw_graph")
|
||||||
self.gridLayout.addWidget(self.raw_graph, 0, 0, 1, 1)
|
self.gridLayout.addWidget(self.raw_graph, 0, 0, 1, 1)
|
||||||
self.calib_graph = PlotWidget(self.widget1)
|
self.calib_graph = PlotWidget(self.layoutWidget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
@ -184,7 +184,7 @@ class Ui_Dialog(object):
|
|||||||
self.calib_graph.setMinimumSize(QtCore.QSize(300, 200))
|
self.calib_graph.setMinimumSize(QtCore.QSize(300, 200))
|
||||||
self.calib_graph.setObjectName("calib_graph")
|
self.calib_graph.setObjectName("calib_graph")
|
||||||
self.gridLayout.addWidget(self.calib_graph, 1, 0, 1, 1)
|
self.gridLayout.addWidget(self.calib_graph, 1, 0, 1, 1)
|
||||||
self.baseline_graph = PlotWidget(self.widget1)
|
self.baseline_graph = PlotWidget(self.layoutWidget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
@ -193,7 +193,7 @@ class Ui_Dialog(object):
|
|||||||
self.baseline_graph.setMinimumSize(QtCore.QSize(300, 200))
|
self.baseline_graph.setMinimumSize(QtCore.QSize(300, 200))
|
||||||
self.baseline_graph.setObjectName("baseline_graph")
|
self.baseline_graph.setObjectName("baseline_graph")
|
||||||
self.gridLayout.addWidget(self.baseline_graph, 0, 1, 1, 1)
|
self.gridLayout.addWidget(self.baseline_graph, 0, 1, 1, 1)
|
||||||
self.end_graph = PlotWidget(self.widget1)
|
self.end_graph = PlotWidget(self.layoutWidget)
|
||||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
@ -205,8 +205,8 @@ class Ui_Dialog(object):
|
|||||||
self.verticalLayout_5.addWidget(self.splitter)
|
self.verticalLayout_5.addWidget(self.splitter)
|
||||||
|
|
||||||
self.retranslateUi(Dialog)
|
self.retranslateUi(Dialog)
|
||||||
self.buttonBox.accepted.connect(Dialog.accept)
|
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
|
||||||
self.buttonBox.rejected.connect(Dialog.reject)
|
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
|
||||||
QtCore.QMetaObject.connectSlotsByName(Dialog)
|
QtCore.QMetaObject.connectSlotsByName(Dialog)
|
||||||
|
|
||||||
def retranslateUi(self, Dialog):
|
def retranslateUi(self, Dialog):
|
||||||
@ -221,7 +221,7 @@ class Ui_Dialog(object):
|
|||||||
self.groupBox_5.setTitle(_translate("Dialog", "Slope correction"))
|
self.groupBox_5.setTitle(_translate("Dialog", "Slope correction"))
|
||||||
self.none_radioButton.setText(_translate("Dialog", "None"))
|
self.none_radioButton.setText(_translate("Dialog", "None"))
|
||||||
self.isotherm_radioButton.setText(_translate("Dialog", "Isotherms"))
|
self.isotherm_radioButton.setText(_translate("Dialog", "Isotherms"))
|
||||||
self.slope_radioButton.setText(_translate("Dialog", "Initial slope"))
|
self.slope_radioButton.setText(_translate("Dialog", "Curve slope"))
|
||||||
self.limit1_lineedit.setPlaceholderText(_translate("Dialog", "start (in min)"))
|
self.limit1_lineedit.setPlaceholderText(_translate("Dialog", "start (in min)"))
|
||||||
self.limit2_lineedit.setPlaceholderText(_translate("Dialog", "stop (in min)"))
|
self.limit2_lineedit.setPlaceholderText(_translate("Dialog", "stop (in min)"))
|
||||||
self.groupBox_3.setTitle(_translate("Dialog", "References"))
|
self.groupBox_3.setTitle(_translate("Dialog", "References"))
|
||||||
|
@ -305,10 +305,11 @@ class DSCCalibrator:
|
|||||||
drift_value = np.c_[drift_value, isotherm_sample]
|
drift_value = np.c_[drift_value, isotherm_sample]
|
||||||
|
|
||||||
if slope is not None:
|
if slope is not None:
|
||||||
offset = sample_data[1, 200]
|
|
||||||
if slope == 'iso':
|
if slope == 'iso':
|
||||||
# calculate slope from difference between isotherms
|
# calculate slope from difference between isotherms
|
||||||
m = (mean_isotherms[1] - mean_isotherms[0]) / (sample_data[2, -1] - sample_data[2, 0])
|
m = (mean_isotherms[1] - mean_isotherms[0]) / (sample_data[2, -1] - sample_data[2, 0])
|
||||||
|
region = sample_data[1:, 200:201]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# calculate mean slope of heat flow from points in the beginning
|
# calculate mean slope of heat flow from points in the beginning
|
||||||
@ -326,16 +327,17 @@ class DSCCalibrator:
|
|||||||
|
|
||||||
if region is None:
|
if region is None:
|
||||||
# if no limits, use all
|
# if no limits, use all
|
||||||
region = sample_data[1:, :]
|
region = sample_data[1:, 200:-200]
|
||||||
|
|
||||||
grad = np.gradient(region[0, :], region[1, :])
|
grad = np.gradient(region[0, :], region[1, :])
|
||||||
grad = grad[~np.isnan(grad)]
|
grad = grad[~np.isnan(grad)]
|
||||||
m = grad[(grad < grad.mean()+grad.std()/5)*(grad > grad.mean()-grad.std()/5)].mean()
|
m = grad[(grad < grad.mean()+grad.std()/5)*(grad > grad.mean()-grad.std()/5)].mean()
|
||||||
|
|
||||||
sample_data[1] -= m * (sample_data[2] - sample_data[2, 200]) + offset
|
offset = region[0, 0]
|
||||||
|
sample_data[1] -= m * (sample_data[2] - region[1, 0]) + offset
|
||||||
line = np.array([[sample_data[2, 0], sample_data[2, -1]],
|
line = np.array([[sample_data[2, 0], sample_data[2, -1]],
|
||||||
[m * (sample_data[2, 0] - sample_data[2, 200]) + offset,
|
[m * (sample_data[2, 0] - region[1, 0]) + offset,
|
||||||
m * (sample_data[2, -1] - sample_data[2, 200]) + offset]])
|
m * (sample_data[2, -1] - region[1, 0]) + offset]])
|
||||||
|
|
||||||
else:
|
else:
|
||||||
line = np.array([[sample_data[2, 0], sample_data[2, -1]], [0, 0]])
|
line = np.array([[sample_data[2, 0], sample_data[2, -1]], [0, 0]])
|
||||||
|
@ -187,7 +187,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QRadioButton" name="slope_radioButton">
|
<widget class="QRadioButton" name="slope_radioButton">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Initial slope</string>
|
<string>Curve slope</string>
|
||||||
</property>
|
</property>
|
||||||
<attribute name="buttonGroup">
|
<attribute name="buttonGroup">
|
||||||
<string notr="true">buttonGroup</string>
|
<string notr="true">buttonGroup</string>
|
||||||
@ -375,7 +375,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="">
|
<widget class="QWidget" name="layoutWidget">
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="PlotWidget" name="raw_graph">
|
<widget class="PlotWidget" name="raw_graph">
|
||||||
|
Loading…
Reference in New Issue
Block a user