From d356585a7e34d866a4b224d2aa26287abb46469d Mon Sep 17 00:00:00 2001
From: Markus Rosenstihl
Date: Thu, 3 Apr 2014 20:56:50 +0200
Subject: [PATCH] Refactored base class for parameter widgets
---
ConductivityGroupBox.py | 89 ++++++++------
ConductivityGroupBox.ui | 120 ++++++++++++-------
CustomWidgets.py | 32 +++--
PeakGroupBox.py | 2 +-
PowerLawGroupBox.py | 2 +-
QDS.py | 31 +++--
QDSMain.py | 2 +-
StaticGroupBox.py | 2 +-
YAFFparameters.py | 251 ++++++++++++++++++++--------------------
YAFFparameters.ui | 60 ++++++----
data.py | 247 ++++++++++++++-------------------------
icons/add_yaff.png | Bin 0 -> 15379 bytes
images_rc.py | 2 +-
libyaff.py | 28 ++---
mathlib.py | 39 ++++---
15 files changed, 466 insertions(+), 441 deletions(-)
create mode 100644 icons/add_yaff.png
diff --git a/ConductivityGroupBox.py b/ConductivityGroupBox.py
index 67d142f..c06757b 100644
--- a/ConductivityGroupBox.py
+++ b/ConductivityGroupBox.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'ConductivityGroupBox.ui'
#
-# Created: Thu Mar 20 17:08:04 2014
+# Created: Thu Mar 27 13:33:39 2014
# by: PyQt4 UI code generator 4.10.3
#
# WARNING! All changes made in this file will be lost!
@@ -26,7 +26,7 @@ except AttributeError:
class Ui_ConductivityGroupBox(object):
def setupUi(self, ConductivityGroupBox):
ConductivityGroupBox.setObjectName(_fromUtf8("ConductivityGroupBox"))
- ConductivityGroupBox.resize(204, 129)
+ ConductivityGroupBox.resize(253, 156)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -40,18 +40,9 @@ class Ui_ConductivityGroupBox(object):
self.gridLayout.setSpacing(1)
self.gridLayout.setContentsMargins(0, 0, -1, -1)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
- self.label_2 = QtGui.QLabel(ConductivityGroupBox)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
- self.label_2.setSizePolicy(sizePolicy)
- self.label_2.setAlignment(QtCore.Qt.AlignCenter)
- self.label_2.setObjectName(_fromUtf8("label_2"))
- self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.label_6 = QtGui.QLabel(ConductivityGroupBox)
self.label_6.setObjectName(_fromUtf8("label_6"))
- self.gridLayout.addWidget(self.label_6, 2, 2, 1, 1)
+ self.gridLayout.addWidget(self.label_6, 3, 2, 1, 1)
self.checkBox_2 = QtGui.QCheckBox(ConductivityGroupBox)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
@@ -60,7 +51,26 @@ class Ui_ConductivityGroupBox(object):
self.checkBox_2.setSizePolicy(sizePolicy)
self.checkBox_2.setText(_fromUtf8(""))
self.checkBox_2.setObjectName(_fromUtf8("checkBox_2"))
- self.gridLayout.addWidget(self.checkBox_2, 1, 3, 1, 1, QtCore.Qt.AlignHCenter)
+ self.gridLayout.addWidget(self.checkBox_2, 2, 3, 1, 1, QtCore.Qt.AlignHCenter)
+ self.checkBox_3 = QtGui.QCheckBox(ConductivityGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.checkBox_3.sizePolicy().hasHeightForWidth())
+ self.checkBox_3.setSizePolicy(sizePolicy)
+ self.checkBox_3.setText(_fromUtf8(""))
+ self.checkBox_3.setChecked(True)
+ self.checkBox_3.setObjectName(_fromUtf8("checkBox_3"))
+ self.gridLayout.addWidget(self.checkBox_3, 3, 3, 1, 1, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter)
+ self.label_2 = QtGui.QLabel(ConductivityGroupBox)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
+ self.label_2.setSizePolicy(sizePolicy)
+ self.label_2.setAlignment(QtCore.Qt.AlignCenter)
+ self.label_2.setObjectName(_fromUtf8("label_2"))
+ self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
self.label = QtGui.QLabel(ConductivityGroupBox)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
@@ -73,28 +83,18 @@ class Ui_ConductivityGroupBox(object):
self.removeButton = QtGui.QPushButton(ConductivityGroupBox)
self.removeButton.setObjectName(_fromUtf8("removeButton"))
self.gridLayout.addWidget(self.removeButton, 0, 1, 1, 1)
- self.checkBox_3 = QtGui.QCheckBox(ConductivityGroupBox)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.checkBox_3.sizePolicy().hasHeightForWidth())
- self.checkBox_3.setSizePolicy(sizePolicy)
- self.checkBox_3.setText(_fromUtf8(""))
- self.checkBox_3.setChecked(True)
- self.checkBox_3.setObjectName(_fromUtf8("checkBox_3"))
- self.gridLayout.addWidget(self.checkBox_3, 2, 3, 1, 1, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter)
- self.label_3 = QtGui.QLabel(ConductivityGroupBox)
+ self.label_4 = QtGui.QLabel(ConductivityGroupBox)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
- self.label_3.setSizePolicy(sizePolicy)
- self.label_3.setAlignment(QtCore.Qt.AlignCenter)
- self.label_3.setObjectName(_fromUtf8("label_3"))
- self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
+ sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
+ self.label_4.setSizePolicy(sizePolicy)
+ self.label_4.setAlignment(QtCore.Qt.AlignCenter)
+ self.label_4.setObjectName(_fromUtf8("label_4"))
+ self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
self.label_5 = QtGui.QLabel(ConductivityGroupBox)
self.label_5.setObjectName(_fromUtf8("label_5"))
- self.gridLayout.addWidget(self.label_5, 1, 2, 1, 1)
+ self.gridLayout.addWidget(self.label_5, 2, 2, 1, 1)
self.doubleSpinBox_3 = QtGui.QDoubleSpinBox(ConductivityGroupBox)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
@@ -104,7 +104,7 @@ class Ui_ConductivityGroupBox(object):
self.doubleSpinBox_3.setSingleStep(0.05)
self.doubleSpinBox_3.setProperty("value", 1.0)
self.doubleSpinBox_3.setObjectName(_fromUtf8("doubleSpinBox_3"))
- self.gridLayout.addWidget(self.doubleSpinBox_3, 2, 1, 1, 1)
+ self.gridLayout.addWidget(self.doubleSpinBox_3, 3, 1, 1, 1)
self.doubleSpinBox_2 = QtGui.QDoubleSpinBox(ConductivityGroupBox)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
@@ -112,7 +112,23 @@ class Ui_ConductivityGroupBox(object):
sizePolicy.setHeightForWidth(self.doubleSpinBox_2.sizePolicy().hasHeightForWidth())
self.doubleSpinBox_2.setSizePolicy(sizePolicy)
self.doubleSpinBox_2.setObjectName(_fromUtf8("doubleSpinBox_2"))
- self.gridLayout.addWidget(self.doubleSpinBox_2, 1, 1, 1, 1)
+ self.gridLayout.addWidget(self.doubleSpinBox_2, 2, 1, 1, 1)
+ self.subtractConductivityButton = QtGui.QPushButton(ConductivityGroupBox)
+ self.subtractConductivityButton.setObjectName(_fromUtf8("subtractConductivityButton"))
+ self.gridLayout.addWidget(self.subtractConductivityButton, 0, 2, 1, 1)
+ self.label_3 = QtGui.QLabel(ConductivityGroupBox)
+ self.label_3.setObjectName(_fromUtf8("label_3"))
+ self.gridLayout.addWidget(self.label_3, 1, 0, 1, 1, QtCore.Qt.AlignHCenter)
+ self.doubleSpinBox_1 = QtGui.QDoubleSpinBox(ConductivityGroupBox)
+ self.doubleSpinBox_1.setObjectName(_fromUtf8("doubleSpinBox_1"))
+ self.gridLayout.addWidget(self.doubleSpinBox_1, 1, 1, 1, 1)
+ self.label_7 = QtGui.QLabel(ConductivityGroupBox)
+ self.label_7.setObjectName(_fromUtf8("label_7"))
+ self.gridLayout.addWidget(self.label_7, 1, 2, 1, 1)
+ self.checkBox_1 = QtGui.QCheckBox(ConductivityGroupBox)
+ self.checkBox_1.setText(_fromUtf8(""))
+ self.checkBox_1.setObjectName(_fromUtf8("checkBox_1"))
+ self.gridLayout.addWidget(self.checkBox_1, 1, 3, 1, 1, QtCore.Qt.AlignHCenter)
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
self.retranslateUi(ConductivityGroupBox)
@@ -122,10 +138,15 @@ class Ui_ConductivityGroupBox(object):
def retranslateUi(self, ConductivityGroupBox):
ConductivityGroupBox.setWindowTitle(_translate("ConductivityGroupBox", "GroupBox", None))
ConductivityGroupBox.setTitle(_translate("ConductivityGroupBox", "Conductivity", None))
- self.label_2.setText(_translate("ConductivityGroupBox", "σ", None))
self.label_6.setText(_translate("ConductivityGroupBox", "TextLabel", None))
+ self.label_2.setText(_translate("ConductivityGroupBox", "
σ\'(DC)
", None))
self.label.setText(_translate("ConductivityGroupBox", "Fix", None))
self.removeButton.setText(_translate("ConductivityGroupBox", "Remove", None))
- self.label_3.setText(_translate("ConductivityGroupBox", "α", None))
+ self.label_4.setText(_translate("ConductivityGroupBox", "α", None))
self.label_5.setText(_translate("ConductivityGroupBox", "TextLabel", None))
+ self.doubleSpinBox_2.setToolTip(_translate("ConductivityGroupBox", "DC conductivity, should only be seen in the imaginary permitivity. If there is a Jonscher type of Universal Dielectric Response, the ratio of σ"/σ\'(DC) is a constant
", None))
+ self.subtractConductivityButton.setText(_translate("ConductivityGroupBox", "Hide", None))
+ self.label_3.setText(_translate("ConductivityGroupBox", "σ"
", None))
+ self.doubleSpinBox_1.setToolTip(_translate("ConductivityGroupBox", "If there is a Jonscher type of Universal Dielectric Response, the ratio of σ"/σ\'(DC) is a constant
", None))
+ self.label_7.setText(_translate("ConductivityGroupBox", "TextLabel", None))
diff --git a/ConductivityGroupBox.ui b/ConductivityGroupBox.ui
index b8a4cd1..1f2d9e4 100644
--- a/ConductivityGroupBox.ui
+++ b/ConductivityGroupBox.ui
@@ -6,8 +6,8 @@
0
0
- 204
- 129
+ 253
+ 156
@@ -43,30 +43,14 @@
1
- -
-
-
-
- 0
- 0
-
-
-
- σ
-
-
- Qt::AlignCenter
-
-
-
- -
+
-
TextLabel
- -
+
-
@@ -79,6 +63,38 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ <html><head/><body><p>σ'<span style=" vertical-align:sub;">(DC)</span></p></body></html>
+
+
+ Qt::AlignCenter
+
+
+
-
@@ -102,24 +118,8 @@
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
- true
-
-
-
- -
-
+
-
+
0
@@ -134,14 +134,14 @@
- -
+
-
TextLabel
- -
+
-
@@ -157,7 +157,7 @@
- -
+
-
@@ -165,6 +165,44 @@
0
+
+ <html><head/><body><p>DC conductivity, should only be seen in the imaginary permitivity. If there is a Jonscher type of U<span style=" font-style:italic;">niversal Dielectric Response, </span>the ratio of σ"/σ'<span style=" vertical-align:sub;">(DC)</span> is a constant</p></body></html>
+
+
+
+ -
+
+
+ Hide
+
+
+
+ -
+
+
+ <html><head/><body><p>σ"</p></body></html>
+
+
+
+ -
+
+
+ <html><head/><body><p>If there is a Jonscher type of U<span style=" font-style:italic;">niversal Dielectric Response, </span>the ratio of σ"/σ'<span style=" vertical-align:sub;">(DC)</span> is a constant</p></body></html>
+
+
+
+ -
+
+
+ TextLabel
+
+
+
+ -
+
+
+
+
diff --git a/CustomWidgets.py b/CustomWidgets.py
index dc3f887..c84bac3 100644
--- a/CustomWidgets.py
+++ b/CustomWidgets.py
@@ -21,8 +21,8 @@ class LogFSpinBox(QDoubleSpinBox):
def __init__(self, parent = None):
super(LogFSpinBox, self).__init__(parent)
- self.setRange(1e-16,1e16)
- self.setMinimum(1e-16)
+ self.setRange(0.0,1e18)
+ self.setMinimum(0)
self.setDecimals(17)
self.setValue(1.0)
@@ -58,6 +58,7 @@ if __name__ == "__main__":
class BaseWidget(QGroupBox):
changedTable = pyqtSignal()
removeMe = pyqtSignal()
+ subtract = pyqtSignal()
def __init__(self, parent=None):
super(BaseWidget, self).__init__(parent)
self.fixedCheckBoxes = []
@@ -67,6 +68,9 @@ class BaseWidget(QGroupBox):
def remove(self):
self.removeMe.emit()
+ def subtract(self):
+ self.subtract.emit()
+
def changeValues(self, num):
self.changedTable.emit()
@@ -288,19 +292,27 @@ class ConductivityWidget(BaseWidget, QGroupBox):
self.ui = ConductivityGroupBox.Ui_ConductivityGroupBox()
self.ui.setupUi(self)
+ self.ui.doubleSpinBox_1.setParent(None)
+ self.ui.doubleSpinBox_1 = LogFSpinBox(self)
+ self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_1,1,1)
+
self.ui.doubleSpinBox_2.setParent(None)
self.ui.doubleSpinBox_2 = LogFSpinBox(self)
- self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_2,1,1)
+ self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_2,2,1)
+
self.ui.removeButton.clicked.connect(self.remove)
+ #self.ui.subtractConductivityButton.connect(self.subtract)
-
- self.errors = [self.ui.label_5,
+ self.errors = [self.ui.label_7,
+ self.ui.label_5,
self.ui.label_6]
- self.inputs = [self.ui.doubleSpinBox_2,
+ self.inputs = [self.ui.doubleSpinBox_1,
+ self.ui.doubleSpinBox_2,
self.ui.doubleSpinBox_3]
- self.fixedCheckBoxes = [ self.ui.checkBox_2,
+ self.fixedCheckBoxes = [self.ui.checkBox_1,
+ self.ui.checkBox_2,
self.ui.checkBox_3]
for dsb in self.inputs:
dsb.valueChanged.connect(self.changeValues)
@@ -345,15 +357,15 @@ class YaffWidget(BaseWidget, QGroupBox):
self.ui.doubleSpinBox_1.setParent(None)
self.ui.doubleSpinBox_1 = LogFSpinBox(self)
- self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_1, 1, 1)
+ self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_1, 2, 1)
self.ui.doubleSpinBox_2.setParent(None)
self.ui.doubleSpinBox_2 = LogFSpinBox(self)
- self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_2, 2, 1)
+ self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_2, 3, 1)
self.ui.doubleSpinBox_6.setParent(None)
self.ui.doubleSpinBox_6 = LogFSpinBox(self)
- self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_6, 6, 1)
+ self.ui.gridLayout.addWidget(self.ui.doubleSpinBox_6, 9, 1)
self.ui.removeButton.clicked.connect(self.remove)
diff --git a/PeakGroupBox.py b/PeakGroupBox.py
index 8cc574b..a7acc95 100644
--- a/PeakGroupBox.py
+++ b/PeakGroupBox.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'PeakGroupBox.ui'
#
-# Created: Thu Mar 20 17:08:04 2014
+# Created: Thu Mar 27 13:33:39 2014
# by: PyQt4 UI code generator 4.10.3
#
# WARNING! All changes made in this file will be lost!
diff --git a/PowerLawGroupBox.py b/PowerLawGroupBox.py
index ebb8322..dc3df8b 100644
--- a/PowerLawGroupBox.py
+++ b/PowerLawGroupBox.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'PowerLawGroupBox.ui'
#
-# Created: Thu Mar 20 17:08:04 2014
+# Created: Thu Mar 27 13:33:39 2014
# by: PyQt4 UI code generator 4.10.3
#
# WARNING! All changes made in this file will be lost!
diff --git a/QDS.py b/QDS.py
index 5a2a7a9..4dea6fd 100755
--- a/QDS.py
+++ b/QDS.py
@@ -22,12 +22,12 @@ import numpy as N
import QDSMain
-from data import Data, Conductivity, Peak, PowerComplex, Static
+from data import Data, Conductivity, Peak, PowerComplex, Static, YAFF
import pyqtgraph as pg
#import yaff
-from CustomWidgets import ParameterWidget
+from CustomWidgets import ParameterWidget, YaffWidget
USE_CROSSH=False
@@ -183,6 +183,15 @@ class AppWindow(QMainWindow):
msgBox.setText("Click in imaginary part")
msgBox.exec_()
+ if self.ui.actionYAFF.isChecked():
+ if mouse_in_imag:
+ self.addYaff(data_pos)
+ self.ui.actionYAFF.setChecked(False)
+ else:
+ msgBox.setText("Click in imaginary part")
+ msgBox.exec_()
+
+
if self.ui.actionAdd_PowerLaw.isChecked():
if mouse_in_imag:
@@ -268,15 +277,15 @@ class AppWindow(QMainWindow):
def addYaff(self, pos):
- _yaff = Conductivity(plt_real=self.ui.pgPlotWidget_real,
- plt_imag=self.ui.pgPlotWidget_imag,
- limits=self.data.fit_limits)
+ _yaff = YAFF(plt_real=self.ui.pgPlotWidget_real,
+ plt_imag=self.ui.pgPlotWidget_imag,
+ limits=self.data.fit_limits)
_yaff.changedData.connect(self.updatePlot)
_yaff.removeObj.connect(self.delParamterObject)
-
-# cond_par = [10**(pos.y() + pos.x())*2*N.pi , 1.0]
-# _yaff.setParameter(beta=cond_par)
-
+ gg_y = 10**pos.y()
+ gg_x = 10**pos.x()*2*N.pi
+ yaff_par = [ gg_y, gg_x , 1.0, 1.0, 0.5, gg_x/10, 1.0, 1.0]
+ _yaff.setParameter(beta=yaff_par)
self.parameterWidget.add(_yaff.widget)
self.function_registry.register_function(_yaff)
self.updatePlot()
@@ -289,7 +298,7 @@ class AppWindow(QMainWindow):
_conductivity.changedData.connect(self.updatePlot)
_conductivity.removeObj.connect(self.delParamterObject)
- cond_par = [10**(pos.y() + pos.x())*2*N.pi , 1.0]
+ cond_par = [0.0, 10**(pos.y() + pos.x())*2*N.pi , 1.0]
_conductivity.setParameter(beta=cond_par)
self.parameterWidget.add(_conductivity.widget)
@@ -434,7 +443,7 @@ class AppWindow(QMainWindow):
for fcn in self.function_registry.get_registered_functions():
p0.extend(fcn.getParameter())
funcs.append(fcn.id_string)
- # calculate parameterized curve
+ # calculate parametrized curve
self.data.set_fit(p0, funcs)
# replot data and fit, TODO: replot only if data changed
diff --git a/QDSMain.py b/QDSMain.py
index 751bbfb..e45015f 100644
--- a/QDSMain.py
+++ b/QDSMain.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'QDSMain.ui'
#
-# Created: Thu Mar 20 17:08:04 2014
+# Created: Thu Mar 27 13:33:39 2014
# by: PyQt4 UI code generator 4.10.3
#
# WARNING! All changes made in this file will be lost!
diff --git a/StaticGroupBox.py b/StaticGroupBox.py
index 9760b64..87a0eaa 100644
--- a/StaticGroupBox.py
+++ b/StaticGroupBox.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'StaticGroupBox.ui'
#
-# Created: Thu Mar 20 17:08:04 2014
+# Created: Thu Mar 27 13:33:39 2014
# by: PyQt4 UI code generator 4.10.3
#
# WARNING! All changes made in this file will be lost!
diff --git a/YAFFparameters.py b/YAFFparameters.py
index 264e110..ad01523 100644
--- a/YAFFparameters.py
+++ b/YAFFparameters.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'YAFFparameters.ui'
#
-# Created: Thu Mar 20 17:08:05 2014
+# Created: Thu Mar 27 13:33:39 2014
# by: PyQt4 UI code generator 4.10.3
#
# WARNING! All changes made in this file will be lost!
@@ -26,9 +26,10 @@ except AttributeError:
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
- Form.resize(270, 396)
+ Form.resize(263, 320)
self.gridLayout = QtGui.QGridLayout(Form)
- self.gridLayout.setMargin(1)
+ self.gridLayout.setMargin(0)
+ self.gridLayout.setSpacing(1)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.checkBox_2 = QtGui.QCheckBox(Form)
self.checkBox_2.setText(_fromUtf8(""))
@@ -38,18 +39,18 @@ class Ui_Form(object):
self.checkBox_1.setText(_fromUtf8(""))
self.checkBox_1.setObjectName(_fromUtf8("checkBox_1"))
self.gridLayout.addWidget(self.checkBox_1, 2, 3, 1, 1)
- self.label_4 = QtGui.QLabel(Form)
- self.label_4.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.label_4.setObjectName(_fromUtf8("label_4"))
- self.gridLayout.addWidget(self.label_4, 7, 0, 1, 1)
- self.label_21 = QtGui.QLabel(Form)
+ self.label_422 = QtGui.QLabel(Form)
+ self.label_422.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_422.setObjectName(_fromUtf8("label_422"))
+ self.gridLayout.addWidget(self.label_422, 7, 0, 1, 1)
+ self.label_10 = QtGui.QLabel(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_21.sizePolicy().hasHeightForWidth())
- self.label_21.setSizePolicy(sizePolicy)
- self.label_21.setObjectName(_fromUtf8("label_21"))
- self.gridLayout.addWidget(self.label_21, 13, 2, 1, 1)
+ sizePolicy.setHeightForWidth(self.label_10.sizePolicy().hasHeightForWidth())
+ self.label_10.setSizePolicy(sizePolicy)
+ self.label_10.setObjectName(_fromUtf8("label_10"))
+ self.gridLayout.addWidget(self.label_10, 13, 2, 1, 1)
self.doubleSpinBox_1 = QtGui.QDoubleSpinBox(Form)
self.doubleSpinBox_1.setObjectName(_fromUtf8("doubleSpinBox_1"))
self.gridLayout.addWidget(self.doubleSpinBox_1, 2, 1, 1, 1)
@@ -57,53 +58,53 @@ class Ui_Form(object):
self.doubleSpinBox_4.setSingleStep(0.05)
self.doubleSpinBox_4.setObjectName(_fromUtf8("doubleSpinBox_4"))
self.gridLayout.addWidget(self.doubleSpinBox_4, 7, 1, 1, 1)
- self.label_1 = QtGui.QLabel(Form)
- self.label_1.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.label_1.setObjectName(_fromUtf8("label_1"))
- self.gridLayout.addWidget(self.label_1, 2, 0, 1, 1)
- self.label_16 = QtGui.QLabel(Form)
+ self.label_111 = QtGui.QLabel(Form)
+ self.label_111.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_111.setObjectName(_fromUtf8("label_111"))
+ self.gridLayout.addWidget(self.label_111, 2, 0, 1, 1)
+ self.label_4 = QtGui.QLabel(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_16.sizePolicy().hasHeightForWidth())
- self.label_16.setSizePolicy(sizePolicy)
- self.label_16.setObjectName(_fromUtf8("label_16"))
- self.gridLayout.addWidget(self.label_16, 7, 2, 1, 1)
+ sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
+ self.label_4.setSizePolicy(sizePolicy)
+ self.label_4.setObjectName(_fromUtf8("label_4"))
+ self.gridLayout.addWidget(self.label_4, 7, 2, 1, 1)
self.doubleSpinBox_6 = QtGui.QDoubleSpinBox(Form)
self.doubleSpinBox_6.setObjectName(_fromUtf8("doubleSpinBox_6"))
self.gridLayout.addWidget(self.doubleSpinBox_6, 9, 1, 1, 1)
- self.label_18 = QtGui.QLabel(Form)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_18.sizePolicy().hasHeightForWidth())
- self.label_18.setSizePolicy(sizePolicy)
- self.label_18.setObjectName(_fromUtf8("label_18"))
- self.gridLayout.addWidget(self.label_18, 8, 2, 1, 1)
self.label_5 = QtGui.QLabel(Form)
- self.label_5.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
+ self.label_5.setSizePolicy(sizePolicy)
self.label_5.setObjectName(_fromUtf8("label_5"))
- self.gridLayout.addWidget(self.label_5, 8, 0, 1, 1)
- self.label_11 = QtGui.QLabel(Form)
- self.label_11.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.label_11.setObjectName(_fromUtf8("label_11"))
- self.gridLayout.addWidget(self.label_11, 12, 0, 1, 1)
- self.label_14 = QtGui.QLabel(Form)
+ self.gridLayout.addWidget(self.label_5, 8, 2, 1, 1)
+ self.label_522 = QtGui.QLabel(Form)
+ self.label_522.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_522.setObjectName(_fromUtf8("label_522"))
+ self.gridLayout.addWidget(self.label_522, 8, 0, 1, 1)
+ self.label_112 = QtGui.QLabel(Form)
+ self.label_112.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_112.setObjectName(_fromUtf8("label_112"))
+ self.gridLayout.addWidget(self.label_112, 12, 0, 1, 1)
+ self.label_9 = QtGui.QLabel(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_14.sizePolicy().hasHeightForWidth())
- self.label_14.setSizePolicy(sizePolicy)
- self.label_14.setObjectName(_fromUtf8("label_14"))
- self.gridLayout.addWidget(self.label_14, 12, 2, 1, 1)
- self.label_17 = QtGui.QLabel(Form)
+ sizePolicy.setHeightForWidth(self.label_9.sizePolicy().hasHeightForWidth())
+ self.label_9.setSizePolicy(sizePolicy)
+ self.label_9.setObjectName(_fromUtf8("label_9"))
+ self.gridLayout.addWidget(self.label_9, 12, 2, 1, 1)
+ self.label_6 = QtGui.QLabel(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_17.sizePolicy().hasHeightForWidth())
- self.label_17.setSizePolicy(sizePolicy)
- self.label_17.setObjectName(_fromUtf8("label_17"))
- self.gridLayout.addWidget(self.label_17, 9, 2, 1, 1)
+ sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
+ self.label_6.setSizePolicy(sizePolicy)
+ self.label_6.setObjectName(_fromUtf8("label_6"))
+ self.gridLayout.addWidget(self.label_6, 9, 2, 1, 1)
self.label_type = QtGui.QLabel(Form)
self.label_type.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_type.setObjectName(_fromUtf8("label_type"))
@@ -115,77 +116,77 @@ class Ui_Form(object):
self.label_huh = QtGui.QLabel(Form)
self.label_huh.setObjectName(_fromUtf8("label_huh"))
self.gridLayout.addWidget(self.label_huh, 1, 0, 1, 1)
- self.label_19 = QtGui.QLabel(Form)
+ self.label_2 = QtGui.QLabel(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_19.sizePolicy().hasHeightForWidth())
- self.label_19.setSizePolicy(sizePolicy)
- self.label_19.setObjectName(_fromUtf8("label_19"))
- self.gridLayout.addWidget(self.label_19, 3, 2, 1, 1)
- self.label_10 = QtGui.QLabel(Form)
- self.label_10.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.label_10.setObjectName(_fromUtf8("label_10"))
- self.gridLayout.addWidget(self.label_10, 13, 0, 1, 1)
- self.label_2 = QtGui.QLabel(Form)
- self.label_2.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
+ self.label_2.setSizePolicy(sizePolicy)
self.label_2.setObjectName(_fromUtf8("label_2"))
- self.gridLayout.addWidget(self.label_2, 3, 0, 1, 1)
- self.label_3 = QtGui.QLabel(Form)
- self.label_3.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.label_3.setObjectName(_fromUtf8("label_3"))
- self.gridLayout.addWidget(self.label_3, 5, 0, 1, 1)
+ self.gridLayout.addWidget(self.label_2, 3, 2, 1, 1)
+ self.label_102 = QtGui.QLabel(Form)
+ self.label_102.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_102.setObjectName(_fromUtf8("label_102"))
+ self.gridLayout.addWidget(self.label_102, 13, 0, 1, 1)
+ self.label_222 = QtGui.QLabel(Form)
+ self.label_222.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_222.setObjectName(_fromUtf8("label_222"))
+ self.gridLayout.addWidget(self.label_222, 3, 0, 1, 1)
+ self.label_322 = QtGui.QLabel(Form)
+ self.label_322.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_322.setObjectName(_fromUtf8("label_322"))
+ self.gridLayout.addWidget(self.label_322, 5, 0, 1, 1)
self.doubleSpinBox_9 = QtGui.QDoubleSpinBox(Form)
self.doubleSpinBox_9.setObjectName(_fromUtf8("doubleSpinBox_9"))
self.gridLayout.addWidget(self.doubleSpinBox_9, 12, 1, 1, 1)
- self.label_13 = QtGui.QLabel(Form)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_13.sizePolicy().hasHeightForWidth())
- self.label_13.setSizePolicy(sizePolicy)
- self.label_13.setObjectName(_fromUtf8("label_13"))
- self.gridLayout.addWidget(self.label_13, 11, 2, 1, 1)
- self.label_22 = QtGui.QLabel(Form)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_22.sizePolicy().hasHeightForWidth())
- self.label_22.setSizePolicy(sizePolicy)
- self.label_22.setObjectName(_fromUtf8("label_22"))
- self.gridLayout.addWidget(self.label_22, 2, 2, 1, 1)
- self.label_15 = QtGui.QLabel(Form)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_15.sizePolicy().hasHeightForWidth())
- self.label_15.setSizePolicy(sizePolicy)
- self.label_15.setObjectName(_fromUtf8("label_15"))
- self.gridLayout.addWidget(self.label_15, 5, 2, 1, 1)
self.label_8 = QtGui.QLabel(Form)
- self.label_8.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_8.sizePolicy().hasHeightForWidth())
+ self.label_8.setSizePolicy(sizePolicy)
self.label_8.setObjectName(_fromUtf8("label_8"))
- self.gridLayout.addWidget(self.label_8, 11, 0, 1, 1)
- self.label_6 = QtGui.QLabel(Form)
- self.label_6.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
- self.label_6.setObjectName(_fromUtf8("label_6"))
- self.gridLayout.addWidget(self.label_6, 9, 0, 1, 1)
+ self.gridLayout.addWidget(self.label_8, 11, 2, 1, 1)
+ self.label_1 = QtGui.QLabel(Form)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_1.sizePolicy().hasHeightForWidth())
+ self.label_1.setSizePolicy(sizePolicy)
+ self.label_1.setObjectName(_fromUtf8("label_1"))
+ self.gridLayout.addWidget(self.label_1, 2, 2, 1, 1)
+ self.label_3 = QtGui.QLabel(Form)
+ sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
+ self.label_3.setSizePolicy(sizePolicy)
+ self.label_3.setObjectName(_fromUtf8("label_3"))
+ self.gridLayout.addWidget(self.label_3, 5, 2, 1, 1)
+ self.label_82 = QtGui.QLabel(Form)
+ self.label_82.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_82.setObjectName(_fromUtf8("label_82"))
+ self.gridLayout.addWidget(self.label_82, 11, 0, 1, 1)
+ self.label_622 = QtGui.QLabel(Form)
+ self.label_622.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_622.setObjectName(_fromUtf8("label_622"))
+ self.gridLayout.addWidget(self.label_622, 9, 0, 1, 1)
self.doubleSpinBox_7 = QtGui.QDoubleSpinBox(Form)
self.doubleSpinBox_7.setSingleStep(0.05)
self.doubleSpinBox_7.setObjectName(_fromUtf8("doubleSpinBox_7"))
self.gridLayout.addWidget(self.doubleSpinBox_7, 10, 1, 1, 1)
- self.label_20 = QtGui.QLabel(Form)
+ self.label_7 = QtGui.QLabel(Form)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.label_20.sizePolicy().hasHeightForWidth())
- self.label_20.setSizePolicy(sizePolicy)
- self.label_20.setObjectName(_fromUtf8("label_20"))
- self.gridLayout.addWidget(self.label_20, 10, 2, 1, 1)
- self.label_7 = QtGui.QLabel(Form)
- self.label_7.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ sizePolicy.setHeightForWidth(self.label_7.sizePolicy().hasHeightForWidth())
+ self.label_7.setSizePolicy(sizePolicy)
self.label_7.setObjectName(_fromUtf8("label_7"))
- self.gridLayout.addWidget(self.label_7, 10, 0, 1, 1)
+ self.gridLayout.addWidget(self.label_7, 10, 2, 1, 1)
+ self.label_72 = QtGui.QLabel(Form)
+ self.label_72.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.label_72.setObjectName(_fromUtf8("label_72"))
+ self.gridLayout.addWidget(self.label_72, 10, 0, 1, 1)
self.doubleSpinBox_8 = QtGui.QDoubleSpinBox(Form)
self.doubleSpinBox_8.setSingleStep(0.05)
self.doubleSpinBox_8.setObjectName(_fromUtf8("doubleSpinBox_8"))
@@ -235,47 +236,51 @@ class Ui_Form(object):
self.label_23 = QtGui.QLabel(Form)
self.label_23.setObjectName(_fromUtf8("label_23"))
self.gridLayout.addWidget(self.label_23, 1, 3, 1, 1)
+ self.comboBox_2 = QtGui.QComboBox(Form)
+ self.comboBox_2.setObjectName(_fromUtf8("comboBox_2"))
+ self.gridLayout.addWidget(self.comboBox_2, 1, 1, 1, 1)
self.comboBox = QtGui.QComboBox(Form)
self.comboBox.setObjectName(_fromUtf8("comboBox"))
self.comboBox.addItem(_fromUtf8(""))
self.comboBox.addItem(_fromUtf8(""))
self.comboBox.addItem(_fromUtf8(""))
self.comboBox.addItem(_fromUtf8(""))
- self.gridLayout.addWidget(self.comboBox, 0, 1, 1, 2)
- self.comboBox_2 = QtGui.QComboBox(Form)
- self.comboBox_2.setObjectName(_fromUtf8("comboBox_2"))
- self.gridLayout.addWidget(self.comboBox_2, 1, 1, 1, 1)
+ self.gridLayout.addWidget(self.comboBox, 0, 1, 1, 1)
+ self.removeButton = QtGui.QPushButton(Form)
+ self.removeButton.setObjectName(_fromUtf8("removeButton"))
+ self.gridLayout.addWidget(self.removeButton, 0, 2, 1, 1)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
- self.label_4.setText(_translate("Form", "b", None))
- self.label_21.setText(_translate("Form", "TextLabel", None))
- self.label_1.setText(_translate("Form", "eps", None))
- self.label_16.setText(_translate("Form", "TextLabel", None))
- self.label_18.setText(_translate("Form", "TextLabel", None))
- self.label_5.setText(_translate("Form", "lambda", None))
- self.label_11.setText(_translate("Form", "TextLabel", None))
- self.label_14.setText(_translate("Form", "TextLabel", None))
- self.label_17.setText(_translate("Form", "TextLabel", None))
+ self.label_422.setText(_translate("Form", "b", None))
+ self.label_10.setText(_translate("Form", "TextLabel", None))
+ self.label_111.setText(_translate("Form", "eps", None))
+ self.label_4.setText(_translate("Form", "TextLabel", None))
+ self.label_5.setText(_translate("Form", "TextLabel", None))
+ self.label_522.setText(_translate("Form", "lambda", None))
+ self.label_112.setText(_translate("Form", "TextLabel", None))
+ self.label_9.setText(_translate("Form", "TextLabel", None))
+ self.label_6.setText(_translate("Form", "TextLabel", None))
self.label_type.setText(_translate("Form", "Type", None))
self.label_huh.setText(_translate("Form", "TextLabel", None))
- self.label_19.setText(_translate("Form", "TextLabel", None))
- self.label_10.setText(_translate("Form", "TextLabel", None))
- self.label_2.setText(_translate("Form", "tau_a", None))
- self.label_3.setText(_translate("Form", "a", None))
- self.label_13.setText(_translate("Form", "TextLabel", None))
- self.label_22.setText(_translate("Form", "TextLabel", None))
- self.label_15.setText(_translate("Form", "TextLabel", None))
- self.label_8.setText(_translate("Form", "b", None))
- self.label_6.setText(_translate("Form", "tau_b", None))
- self.label_20.setText(_translate("Form", "TextLabel", None))
- self.label_7.setText(_translate("Form", "a", None))
+ self.label_2.setText(_translate("Form", "TextLabel", None))
+ self.label_102.setText(_translate("Form", "TextLabel", None))
+ self.label_222.setText(_translate("Form", "tau_a", None))
+ self.label_322.setText(_translate("Form", "a", None))
+ self.label_8.setText(_translate("Form", "TextLabel", None))
+ self.label_1.setText(_translate("Form", "TextLabel", None))
+ self.label_3.setText(_translate("Form", "TextLabel", None))
+ self.label_82.setText(_translate("Form", "b", None))
+ self.label_622.setText(_translate("Form", "tau_b", None))
+ self.label_7.setText(_translate("Form", "TextLabel", None))
+ self.label_72.setText(_translate("Form", "a", None))
self.label_23.setText(_translate("Form", "Fix", None))
self.comboBox.setItemText(0, _translate("Form", "GG", None))
self.comboBox.setItemText(1, _translate("Form", "GGe", None))
self.comboBox.setItemText(2, _translate("Form", "GG + b", None))
self.comboBox.setItemText(3, _translate("Form", "GGe + b", None))
+ self.removeButton.setText(_translate("Form", "Remove", None))
diff --git a/YAFFparameters.ui b/YAFFparameters.ui
index 2127707..704d210 100644
--- a/YAFFparameters.ui
+++ b/YAFFparameters.ui
@@ -6,8 +6,8 @@
0
0
- 270
- 396
+ 263
+ 320
@@ -15,6 +15,9 @@
+ 0
+
+
1
-
@@ -32,7 +35,7 @@
-
-
+
b
@@ -42,7 +45,7 @@
-
-
+
0
@@ -65,7 +68,7 @@
-
-
+
eps
@@ -75,7 +78,7 @@
-
-
+
0
@@ -91,7 +94,7 @@
-
-
+
0
@@ -104,7 +107,7 @@
-
-
+
lambda
@@ -114,7 +117,7 @@
-
-
+
TextLabel
@@ -124,7 +127,7 @@
-
-
+
0
@@ -137,7 +140,7 @@
-
-
+
0
@@ -174,7 +177,7 @@
-
-
+
0
@@ -187,7 +190,7 @@
-
-
+
TextLabel
@@ -197,7 +200,7 @@
-
-
+
tau_a
@@ -207,7 +210,7 @@
-
-
+
a
@@ -220,7 +223,7 @@
-
-
+
0
@@ -233,7 +236,7 @@
-
-
+
0
@@ -246,7 +249,7 @@
-
-
+
0
@@ -259,7 +262,7 @@
-
-
+
b
@@ -269,7 +272,7 @@
-
-
+
tau_b
@@ -286,7 +289,7 @@
-
-
+
0
@@ -299,7 +302,7 @@
-
-
+
a
@@ -391,7 +394,10 @@
- -
+
-
+
+
+ -
-
@@ -415,8 +421,12 @@
- -
-
+
-
+
+
+ Remove
+
+
diff --git a/data.py b/data.py
index c168a68..2db04dc 100644
--- a/data.py
+++ b/data.py
@@ -31,10 +31,12 @@ class Data:
self.fit_limits = [frequency.min(), frequency.max(), die_imag.min(), die_imag.max()]
self.fit_param = None
- self.fit_funcs = None
+ self.fit_funcs = None # list of fit functions
+ self.hide_funcs = None # remove these func from the data
def set_fit(self, param, funcs):
self.fit_funcs = funcs
+ self.hide_funcs = []
self.fit_param = param
fit_real, fit_imag = FitFunctionCreator().fitfcn(param, self.frequency_fit, *funcs)
self.epsilon_fit = fit_real + 1j*fit_imag
@@ -79,36 +81,40 @@ class Data:
#if self.fitted_curve is not None: self.fitted_curve.remove()
-class Conductivity(QObject):
+class BaseObject(QObject):
changedData = pyqtSignal()
removeObj = pyqtSignal(QObject)
- def __init__( self, plt_imag=None, plt_real=None, limits=None ):
+ def __init__(self, plt_real=None, plt_imag=None, limits=None):
+ super(BaseObject, self).__init__()
- QObject.__init__(self)
- super(Conductivity, self)
- self.widget = CustomWidgets.ConductivityWidget()
- self.widget.changedTable.connect(self.updateData)
- self.widget.removeMe.connect(self.removeMe)
- self.f=Functions()
+ myPen = pg.mkPen( style=Qt.DotLine,
+ width=2.5)
- myPen = pg.mkPen( style=Qt.DashLine, width=2.5)
- self.color=QColor("black")
- self.plt_imag = plt_imag
+ self.data_curve_real = pg.PlotDataItem(x=N.array([N.nan]),y=N.array([N.nan]), pen=myPen)
self.plt_real = plt_real
-
-
- self.data_curve_real = pg.PlotDataItem(x=N.array([N.nan]), y=N.array([N.nan]), pen=myPen)
- self.data_curve_imag = pg.PlotDataItem(x=N.array([N.nan]), y=N.array([N.nan]), pen=myPen)
- self.plt_imag.addItem(self.data_curve_imag)
self.plt_real.addItem(self.data_curve_real)
+
+ self.data_curve_imag = pg.PlotDataItem(x=N.array([N.nan]),y=N.array([N.nan]), pen=myPen)
+ self.plt_imag = plt_imag
+ self.plt_imag.addItem(self.data_curve_imag)
+
self.limits = limits
- self.frequency = None
- self.conductivity = None
- self.epsilon_static = None
+ self.f=Functions()
+
+ self._color = QColor("white")
+
+ @property
+ def color(self):
+ return self._color
+
+ @color.setter
+ def color(self, c):
+ self._color = c
+ self.data_curve_real.setPen(c)
+ self.data_curve_imag.setPen(c)
- self.id_string = "conductivity"
def getParameter(self):
p = self.widget.getTable()
@@ -122,22 +128,6 @@ class Conductivity(QObject):
self.widget.updateTable(beta, sd_beta)
self.updateData()
- def updateData(self):
- # get current axis limits
- x_min, x_max, y_min, y_max = self.limits
- self.frequency = N.logspace(N.log10(x_min), N.log10(x_max), 254)
- p = self.getParameter()
-
- y = self.f.cond_cmplx(p, self.frequency)
- self.conductivity = y # imaginary part
-
- self.data_curve_real.setData(x=self.frequency, y=self.conductivity[0], label="Cond.")
- self.data_curve_imag.setData(x=self.frequency, y=self.conductivity[1], label="Cond.")
- self.changedData.emit()
-
-
- def get_color(self):
- return self.color
def get_data(self):
return self.frequency, self.conductivity
@@ -152,52 +142,49 @@ class Conductivity(QObject):
self.changedData.emit()
-class PowerComplex(QObject):
- changedData = pyqtSignal()
- removeObj = pyqtSignal(QObject)
+class Conductivity(BaseObject):
+ def __init__( self, plt_imag=None, plt_real=None, limits=None ):
+ super(Conductivity, self).__init__(plt_real=plt_real, plt_imag=plt_imag, limits=limits)
+ self.widget = CustomWidgets.ConductivityWidget()
+ self.widget.changedTable.connect(self.updateData)
+ self.widget.removeMe.connect(self.removeMe)
+ self.color = QColor("blue")
+
+ self.frequency = None
+ self.conductivity = None
+
+ self.id_string = "conductivity"
+
+
+
+ def updateData(self):
+ # get current axis limits
+ x_min, x_max, y_min, y_max = self.limits
+ self.frequency = N.logspace(N.log10(x_min), N.log10(x_max), 254)
+ p = self.getParameter()
+
+ self.conductivity = self.f.cond_cmplx(p, self.frequency)
+
+ self.data_curve_real.setData(x=self.frequency, y=self.conductivity[0], label="Cond.")
+ self.data_curve_imag.setData(x=self.frequency, y=self.conductivity[1], label="Cond.")
+ self.changedData.emit()
+
+
+
+class PowerComplex(BaseObject):
def __init__( self, plt_real=None, plt_imag=None, limits=None ):
- QObject.__init__(self)
- super(PowerComplex, self)
+ super(PowerComplex, self).__init__(plt_real=plt_real, plt_imag=plt_imag, limits=limits)
self.widget = CustomWidgets.PowerLawWidget()
self.widget.changedTable.connect(self.updateData)
self.widget.removeMe.connect(self.removeMe)
- myPen = pg.mkPen( style=Qt.DashLine, width=2.5)
- self.color=QColor("black")
-
- self.data_curve_real = pg.PlotDataItem(x=N.array([N.nan]), y=N.array([N.nan]), pen=myPen)
- self.data_curve_imag = pg.PlotDataItem(x=N.array([N.nan]), y=N.array([N.nan]), pen=myPen)
- self.plt_imag = plt_imag
- self.plt_real = plt_real
- self.plt_imag.addItem(self.data_curve_imag)
- self.plt_real.addItem(self.data_curve_real)
-
- self.limits = limits
self.frequency = None
self.powerlaw = None
- self.f = Functions()
+ self.color = QColor("#ff44c4")
self.id_string = 'power'
- def removeMe(self):
- self.plt_real.removeItem(self.data_curve_real)
- self.plt_imag.removeItem(self.data_curve_imag)
- self.removeObj.emit(self)
- self.changedData.emit()
-
- def getParameter(self):
- p = self.widget.getTable()
- return p
-
- def getFixed(self):
- p = self.widget.fixedParameter()
- return p
-
- def setParameter(self, beta, sd_beta=None):
- self.widget.updateTable(beta, sd_beta)
- self.updateData()
-
def updateData(self):
# get current axis limits
x_min, x_max, y_min, y_max = self.limits
@@ -211,56 +198,21 @@ class PowerComplex(QObject):
self.changedData.emit()
- def get_color(self):
- return self.color
-
- def get_data(self):
- return self.frequency, self.powerlaw
-
-
-
-class Static(QObject):
- changedData = pyqtSignal()
- removeObj = pyqtSignal(QObject)
+class Static(BaseObject):
def __init__( self, plt_real=None, plt_imag=None, limits=None ):
- QObject.__init__(self)
- super(Static, self)
- self.plt_real = plt_real
- self.plt_imag = plt_imag
+ super(Static, self).__init__(plt_real=plt_real, plt_imag=plt_imag, limits=limits)
+
self.widget = CustomWidgets.StaticWidget()
self.widget.changedTable.connect(self.updateData)
self.widget.removeMe.connect(self.removeMe)
- myPen = pg.mkPen( style=Qt.DashLine, width=2.5)
- self.color=QColor("black")
-
- self.data_curve_real = pg.PlotDataItem(x=N.array([N.nan]), y=N.array([N.nan]), pen=myPen)
- self.plt_real.addItem(self.data_curve_real)
-
- self.limits = limits
self.frequency = None
self.static = None
- self.f = Functions()
+ self.color = QColor('#FF0F13')
self.id_string = 'static'
- def removeMe(self):
- self.plt_real.removeItem(self.data_curve_real)
- self.removeObj.emit(self)
- self.changedData.emit()
-
- def getParameter(self):
- p = self.widget.getTable()
- return p
-
- def getFixed(self):
- p = self.widget.fixedParameter()
- return p
-
- def setParameter(self, beta, sd_beta=None):
- self.widget.updateTable(beta, sd_beta)
- self.updateData()
def updateData(self):
# get current axis limits
@@ -272,62 +224,22 @@ class Static(QObject):
self.changedData.emit()
- def get_color(self):
- return self.color
-
- def get_data(self):
- return self.frequency, self.static
-
-
-
-
-#def conductivity(p, nu):
-# c = p[0] / (2 * N.pi * nu) ** p[1]
-# return c
-
-
-class Peak(QObject):
- changedData = pyqtSignal()
- removeObj = pyqtSignal(QObject)
+class Peak(BaseObject):
def __init__( self, id_num=None, plt_real=None, plt_imag=None, limits=None ):
- QObject.__init__(self)
- super(Peak, self).__init__()
+ super(Peak, self).__init__(plt_real=plt_real, plt_imag=plt_imag, limits=limits)
self.widget = CustomWidgets.PeakWidget()
self.widget.setId(id_num)
self.color = id_to_color(id_num)
self.id_num = id_num
self.widget.setColor(self.color)
- self.widget.changedTable.connect(self.updatePeak)
+ self.widget.changedTable.connect(self.updateData)
self.widget.removeMe.connect(self.removeMe)
- self.plt_real = plt_real
- self.plt_imag = plt_imag
- self.limits = limits
-
- myPen = pg.mkPen( style=Qt.DashLine, width=3, color=self.color)
- self.data_curve_imag = pg.PlotDataItem(x=N.array([N.nan]),y=N.array([N.nan]), pen=myPen)
- self.data_curve_real = pg.PlotDataItem(x=N.array([N.nan]),y=N.array([N.nan]), pen=myPen)
- self.plt_imag.addItem(self.data_curve_imag)
- self.plt_real.addItem(self.data_curve_real)
self.frequency = None
self.epsilon = None
- self.f = Functions()
self.id_string = "hn"
- def getParameter(self):
- p = self.widget.getTable()
- return p
-
- def getFixed(self):
- p = self.widget.fixedParameter()
- return p
-
- def setParameter(self, beta, sd_beta=None):
- # delta_eps=None, tau=None, a=None, b=None
- self.widget.updateTable(beta=beta, sd_beta=sd_beta)
- self.updatePeak()
-
- def updatePeak(self):
+ def updateData(self):
x_min,x_max, y_min, y_max = self.limits
self.frequency = N.logspace(N.log10(x_min), N.log10(x_max), 1024)
self.epsilon = self.f.hn_cmplx(self.getParameter(), self.frequency)
@@ -335,15 +247,24 @@ class Peak(QObject):
self.data_curve_real.setData(x=self.frequency, y=self.epsilon[0])
self.changedData.emit()
- def get_color(self):
- return self.color
- def get_data(self):
- return self.frequency,self.epsilon
+class YAFF(BaseObject):
+ def __init__( self, plt_real=None, plt_imag=None, limits=None ):
+ super(YAFF, self).__init__(plt_real=plt_real, plt_imag=plt_imag, limits=limits)
+ self.widget = CustomWidgets.YaffWidget()
+ self.widget.changedTable.connect(self.updatePeak)
+ self.widget.removeMe.connect(self.removeMe)
+ self.frequency = None
+ self.epsilon = None
+ self.id_string = "yaff"
- def removeMe(self):
- self.plt_imag.removeItem(self.data_curve_imag)
- self.plt_real.removeItem(self.data_curve_real)
- self.removeObj.emit(self)
+
+ def updatePeak(self):
+ x_min,x_max, y_min, y_max = self.limits
+ self.frequency = N.logspace(N.log10(x_min), N.log10(x_max), 1024)
+ self.epsilon = self.f.hn_cmplx(self.getParameter()[:4], self.frequency)
+ self.data_curve_imag.setData(x=self.frequency, y=self.epsilon[1])
+ self.data_curve_real.setData(x=self.frequency, y=self.epsilon[0])
self.changedData.emit()
+
diff --git a/icons/add_yaff.png b/icons/add_yaff.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e883d82daf4f51ea3f5aeab4d2c81f126d2987f
GIT binary patch
literal 15379
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
literal 0
HcmV?d00001
diff --git a/images_rc.py b/images_rc.py
index 866506a..cbb085d 100644
--- a/images_rc.py
+++ b/images_rc.py
@@ -2,7 +2,7 @@
# Resource object code
#
-# Created: Do. Mär. 20 17:08:04 2014
+# Created: Do. Mär. 27 13:33:39 2014
# by: The Resource Compiler for PyQt (Qt v4.8.5)
#
# WARNING! All changes made in this file will be lost!
diff --git a/libyaff.py b/libyaff.py
index e8313dd..4210ced 100644
--- a/libyaff.py
+++ b/libyaff.py
@@ -6,26 +6,28 @@ import mathlib
import scipy.special
import scipy.integrate
-numpat = re.compile('\d+\.\d+')
-NUM_PROCESSES = 8
#define norm1(a,b) exp(gammln(b/a))/(a*pow(b/a,b/a))
#define glntau1(x,t,a,b) exp( -exp( (log(x)-log(t))*a )*b/a) * pow(x/t,b)
-def filon(oms, x,y):
- amps = N.zeros(len(oms), dtype='complex')
+def filon(oms, unsorted_x,unsorted_y):
+ x = unsorted_x[unsorted_x.argsort()]
+ y = unsorted_y[unsorted_x.argsort()]
+
+
+ amps = zeros(oms.size, dtype='complex')
for i,om in enumerate(oms):
- amps[i] = sum(diff(y)/diff(x)*(cos(om*x[1:])-cos(om*x[:-1])))/om**2
- amps[i] += 1j*(y[0]/om + N.sum(diff(y)/diff(x)*(sin(om*x[1:])-sin(om*x[:-1])))/om**2)
+ amps[i] = sum(diff(y)/diff(x)*(cos(om*x[1:])-cos(om*x[:-1])))/om**2
+ amps[i] += 1j*(y[0]/om + sum(diff(y)/diff(x)*(sin(om*x[1:])-sin(om*x[:-1])))/om**2)
return amps
class Yaff:
def __init__(self, dist_type=0):
- self.dist_x = N.logspace(-10,4,512)
- self.dist_y = N.zeros(self.dist_x.size)
+ self.dist_x = logspace(-10,5,512)
+ self.dist_y = zeros(self.dist_x.size)
self.dist_type = [self.yaff,
self.yaff_gg,
][dist_type]
@@ -74,7 +76,7 @@ class Yaff:
def dist_to_relax(self, ts,dist_x,dist_y):
phi = zeros(len(ts))
for i,t in enumerate(ts):
- phi[i] = phi_t(t,dist_x,dist_y)
+ phi[i] = self.phi_t(t,dist_x,dist_y)
return phi
@@ -112,16 +114,16 @@ class Yaff:
"""
delta_eps, tau1, a1, b1, lambd, tau2, a2, b2 = p
- dist_ggb = ggb(self.dist_x,tau2,a2,b2)
- dist_gg = gg(self.dist_x,tau1,a1,b1)
+ dist_ggb = self.ggb(p=[tau2,a2,b2], tau=self.dist_x)
+ dist_gg = self.gg(p=[tau1,a1,b1], tau=self.dist_x)
- ts = logspace(-10,5,1024)
+ ts = logspace(-10,5,768)
phi_beta = self.dist_to_relax(ts, self.dist_x, dist_ggb).real
phi_alpha = self.dist_to_relax(ts, self.dist_x, dist_gg).real
# William-Watts-Ansatz
phi_tot = (1-lambd) + lambd*phi_beta
phi_tot *= phi_alpha
- epp = delta_eps*2*pi*x*filon(2*pi*x, ts, phi_tot ).real
+ epp = delta_eps*2*pi*x*filon(2*pi*x, ts, phi_tot )
if cb != None:
cb.next(p,x,epp)
diff --git a/mathlib.py b/mathlib.py
index 3f444b2..d1df71f 100644
--- a/mathlib.py
+++ b/mathlib.py
@@ -1,11 +1,13 @@
# -*- encoding: utf-8 -*-
-import matplotlib
-import numpy as N
-from scipy import optimize as opt, optimize, odr
-#from QDS import mini_func, multi_hn
-from PyQt4.QtGui import QColor
__author__ = 'markusro'
+from PyQt4.QtGui import QColor
+
+import numpy as N
+from scipy import optimize as opt, odr
+
+import libyaff
+
def fit_anneal(x, y, p0, fixed, funcs):
raise NotImplementedError
@@ -82,11 +84,8 @@ def hn(p, nu):
def id_to_color(id):
- """
-
- """
- colors = ['b', 'r', 'g', 'c', 'm', 'y', 'k']
- colors = [QColor(54,22,115),
+ colors = [
+ QColor(54,22,115),
QColor(160,16,36),
QColor(45,142,15),
QColor(168,149,17),
@@ -139,10 +138,12 @@ class Functions:
self.list = {
# provides functions: "id_string":(function, number_of_parameters)
"hn":(self.hn_cmplx,4),
- "conductivity":(self.cond_cmplx,2),
+ "conductivity":(self.cond_cmplx,3),
"power":(self.power_cmplx,2),
"static":(self.static_cmplx,1),
+ "yaff":(self.yaff,8)
}
+ self.YAFF = libyaff.Yaff()
def hn_cmplx(self, p, x):
om = 2*N.pi*x
@@ -154,8 +155,8 @@ class Functions:
def cond_cmplx(self, p, x):
om = 2*N.pi*x
- sgma, n = p
- cond = sgma/(1j*om)**n
+ sgma, isgma, n = p
+ cond = sgma/(om**n) + isgma/(1j*om**n)# Jonscher (Universal Dielectric Response: e",e' prop sigma/omega**n
cplx = N.array([cond.real, -cond.imag])
return cplx
@@ -173,6 +174,11 @@ class Functions:
#cplx = N.array([static.real, static.imag])
return static
+ def yaff(self,p,x):
+ ya = self.YAFF.yaff(p,x)
+ cplx = N.array([ya.imag[::-1], ya.real])
+ return cplx
+
def get(self,name):
return self.list[name]
@@ -188,12 +194,13 @@ class FitFunctionCreator:
else:
self.data = N.zeros( (2,x.size) )
ndx = 0
- for fn in funcs: # loop over functions and add the results up
+ for fn in funcs: # loop over functions and add the results
f,num_p = self.functions.get(fn)
p = p0[ndx:ndx + num_p]
if x.ndim == 2:
x = x[0]
- self.data += f(p, x) # fit functions take only 1-dim x
+ result = f(p, x)
+ self.data += result # fit functions take only 1-dim x
ndx += num_p
return self.data
@@ -207,7 +214,7 @@ def fit_odr_cmplx(x, y, p0, fixed, fcns):
#we = 1/N.array([y.real**2, y.imag**2])
y = N.array([y.real, y.imag])
else:
- raise NotImplementedError,"need complex input for now"
+ raise NotImplementedError, "need complex input for now"
dat = odr.Data(x, y, we=we)
mod = odr.Model(f.fitfcn, extra_args=fcns)
fit = odr.ODR(dat, mod, p0, ifixx=(0,), ifixb=fixed, maxit=8000)