forked from IPKM/nmreval
Add standard deviation to averaging methods of pick points
This commit is contained in:
parent
05862730a0
commit
4f0a7827ba
@ -1,10 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'resources/_ui/ptstab.ui'
|
||||
# Form implementation generated from reading ui file './nmreval/src/resources/_ui/ptstab.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.12.3
|
||||
# Created by: PyQt5 UI code generator 5.15.10
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
# 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.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
@ -45,6 +46,7 @@ class Ui_Form(object):
|
||||
self.average_combobox.addItem("")
|
||||
self.average_combobox.addItem("")
|
||||
self.average_combobox.addItem("")
|
||||
self.average_combobox.addItem("")
|
||||
self.horizontalLayout.addWidget(self.average_combobox)
|
||||
self.verticalLayout.addWidget(self.groupBox)
|
||||
self.groupBox_2 = QtWidgets.QGroupBox(Form)
|
||||
@ -111,7 +113,7 @@ class Ui_Form(object):
|
||||
"Single number for points (e.g. 1e-6); \n"
|
||||
"two numbers separated by space for regions (e.g. 1e-6 5e-6). \n"
|
||||
"Changing between regions and points is NOT possible"))
|
||||
self.groupBox.setTitle(_translate("Form", "Average"))
|
||||
self.groupBox.setTitle(_translate("Form", "Average (drop-down used for pts and regions)"))
|
||||
self.left_pt.setSuffix(_translate("Form", " pts"))
|
||||
self.left_pt.setPrefix(_translate("Form", "- "))
|
||||
self.right_pt.setSuffix(_translate("Form", " pts"))
|
||||
@ -119,6 +121,7 @@ class Ui_Form(object):
|
||||
self.average_combobox.setItemText(0, _translate("Form", "Mean"))
|
||||
self.average_combobox.setItemText(1, _translate("Form", "Sum"))
|
||||
self.average_combobox.setItemText(2, _translate("Form", "Integral"))
|
||||
self.average_combobox.setItemText(3, _translate("Form", "Std. deviation"))
|
||||
self.groupBox_2.setTitle(_translate("Form", "Special value"))
|
||||
self.special_comboBox.setToolTip(_translate("Form", "Automatic selection of respective points"))
|
||||
self.special_comboBox.setItemText(0, _translate("Form", "max(y)"))
|
||||
|
@ -91,7 +91,7 @@ class PointSelectWidget(QtWidgets.QWidget, Ui_Form):
|
||||
item = QtWidgets.QListWidgetItem(f'{self.pts[-1][0]:.5g} - {self.pts[-1][1]:.5g}')
|
||||
else:
|
||||
item = QtWidgets.QListWidgetItem(f'{self.pts[-1]:.5g}')
|
||||
item.setFlags(item.flags() ^ QtCore.Qt.ItemIsEditable)
|
||||
item.setFlags(item.flags() ^ QtCore.Qt.ItemFlag.ItemIsEditable)
|
||||
self.peaktable.blockSignals(True)
|
||||
self.peaktable.addItem(item)
|
||||
self.peaktable.blockSignals(False)
|
||||
@ -103,7 +103,7 @@ class PointSelectWidget(QtWidgets.QWidget, Ui_Form):
|
||||
@QtCore.pyqtSlot()
|
||||
def apply(self) -> dict:
|
||||
ret_dic = {'avg_range': [self.left_pt.value(), self.right_pt.value()],
|
||||
'avg_mode': {0: 'mean', 1: 'sum', 2: 'integral'}[self.average_combobox.currentIndex()],
|
||||
'avg_mode': {0: 'mean', 1: 'sum', 2: 'integral', 3: 'std'}[self.average_combobox.currentIndex()],
|
||||
'special': None, 'idx': None,
|
||||
'xy': (self.xbutton.isChecked(), self.ybutton.isChecked())}
|
||||
|
||||
@ -199,4 +199,4 @@ class PointSelectWidget(QtWidgets.QWidget, Ui_Form):
|
||||
|
||||
@QtCore.pyqtSlot(int, name='on_graph_checkbox_stateChanged')
|
||||
def changed_state(self, checked):
|
||||
self.graph_combobox.setEnabled(checked != QtCore.Qt.Checked)
|
||||
self.graph_combobox.setEnabled(checked != QtCore.Qt.CheckState.Checked)
|
||||
|
@ -294,7 +294,7 @@ class Points:
|
||||
|
||||
avg_range (tuple of int) :
|
||||
Region for average of y values. Tuple (a, b) uses ``y[i-a:i+b+1]`` around index `i`. Default is (0, 0).
|
||||
avg_mode (str {'mean', 'sum', 'integral'} , optional) :
|
||||
avg_mode (str {'mean', 'sum', 'integral', 'std'} , optional) :
|
||||
Averaging type
|
||||
|
||||
`mean` : Arithmetic average
|
||||
@ -303,6 +303,8 @@ class Points:
|
||||
|
||||
'integral`: Integration over range using Simpson's rule
|
||||
|
||||
'std': Standard deviation
|
||||
|
||||
pts (list, optional) :
|
||||
If given, points will be appended.
|
||||
|
||||
@ -313,8 +315,8 @@ class Points:
|
||||
if (idx is None) and (special is None):
|
||||
raise ValueError('Either `idx` or `special` must be given')
|
||||
|
||||
if avg_mode not in ['mean', 'sum', 'integral']:
|
||||
raise ValueError(f'Parameter `avg_mode` is `mean`, `sum`, `integral`, not `{avg_mode}`' )
|
||||
if avg_mode not in ['mean', 'sum', 'integral', 'std']:
|
||||
raise ValueError(f'Parameter `avg_mode` is `mean`, `sum`, `integral`, `std`, not `{avg_mode}`' )
|
||||
|
||||
if pts is None:
|
||||
pts = []
|
||||
@ -388,6 +390,10 @@ class Points:
|
||||
y_mean = simpson(y[left:right].real, x=x[left:right])
|
||||
y_err_mean = np.linalg.norm(cumulative_trapezoid(y_err[left:right].real, x=x[left:right]))
|
||||
|
||||
elif mode == 'std':
|
||||
y_mean = np.std(y[left:right])
|
||||
y_err_mean = 0.
|
||||
|
||||
else:
|
||||
y_mean = y[idx].real
|
||||
y_err_mean = y_err[idx]
|
||||
|
@ -42,7 +42,7 @@ Changing between regions and points is NOT possible</string>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Average</string>
|
||||
<string>Average (drop-down used for pts and regions)</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
@ -109,6 +109,11 @@ Changing between regions and points is NOT possible</string>
|
||||
<string>Integral</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Std. deviation</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
Loading…
Reference in New Issue
Block a user