* added "Show Derivative" to approximate imaginary eps without conductivity term
* closing matplotlib figure after saving
This commit is contained in:
parent
a36f8932f8
commit
784393a21a
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'ConductivityGroupBox.ui'
|
# Form implementation generated from reading ui file 'ConductivityGroupBox.ui'
|
||||||
#
|
#
|
||||||
# Created: Wed Apr 16 14:28:54 2014
|
# Created: Mon Jun 2 19:55:32 2014
|
||||||
# by: PyQt4 UI code generator 4.10.4
|
# by: PyQt4 UI code generator 4.10.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
@ -114,6 +114,7 @@ class BaseWidget(QGroupBox):
|
|||||||
sd = "( --- )"
|
sd = "( --- )"
|
||||||
self.errors[i].setStyleSheet(sd_style)
|
self.errors[i].setStyleSheet(sd_style)
|
||||||
self.errors[i].setText(sd)
|
self.errors[i].setText(sd)
|
||||||
|
#self.update()
|
||||||
|
|
||||||
def replaceDoubleSpinBox(self, layout, widget):
|
def replaceDoubleSpinBox(self, layout, widget):
|
||||||
ndx = layout.indexOf(widget)
|
ndx = layout.indexOf(widget)
|
||||||
@ -512,10 +513,14 @@ class YaffConfigWidget(QDialog):
|
|||||||
#self.replaceDoubleSpinBox(self.ui.gridLayout_tau, self.ui.doubleSpinBox_taumin)
|
#self.replaceDoubleSpinBox(self.ui.gridLayout_tau, self.ui.doubleSpinBox_taumin)
|
||||||
#self.replaceDoubleSpinBox(self.ui.gridLayout_tau, self.ui.doubleSpinBox_taumax)
|
#self.replaceDoubleSpinBox(self.ui.gridLayout_tau, self.ui.doubleSpinBox_taumax)
|
||||||
|
|
||||||
|
|
||||||
ndx = self.ui.gridLayout_time.indexOf(self.ui.doubleSpinBox_tmin)
|
ndx = self.ui.gridLayout_time.indexOf(self.ui.doubleSpinBox_tmin)
|
||||||
row, column, cols, rows = self.ui.gridLayout_time.getItemPosition(ndx)
|
row, column, cols, rows = self.ui.gridLayout_time.getItemPosition(ndx)
|
||||||
self.ui.doubleSpinBox_tmin.setParent(None)
|
self.ui.doubleSpinBox_tmin.setParent(None)
|
||||||
self.ui.doubleSpinBox_tmin = LogFSpinBox(self)
|
self.ui.doubleSpinBox_tmin = LogFSpinBox(self)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
self.ui.gridLayout_time.addWidget(self.ui.doubleSpinBox_tmin, row,column)
|
self.ui.gridLayout_time.addWidget(self.ui.doubleSpinBox_tmin, row,column)
|
||||||
|
|
||||||
ndx = self.ui.gridLayout_time.indexOf(self.ui.doubleSpinBox_tmax)
|
ndx = self.ui.gridLayout_time.indexOf(self.ui.doubleSpinBox_tmax)
|
||||||
|
30
ExtraDifferentialWidget.py
Normal file
30
ExtraDifferentialWidget.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
__author__ = 'markusro'
|
||||||
|
|
||||||
|
from PyQt4.QtGui import QColor
|
||||||
|
import ExtraDifferential
|
||||||
|
import pyqtgraph as pg
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
class DifferentialWidget(ExtraDifferential.PlotWidget):
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
super(DifferentialWidget, self).__init__(parent)
|
||||||
|
self.setLogMode(x=True, y=False)
|
||||||
|
self.showGrid(x=True, y=True)
|
||||||
|
self.addLegend()
|
||||||
|
self.disableAutoRange()
|
||||||
|
self.setLabel("bottom", "Frequency", units="Hz")
|
||||||
|
|
||||||
|
self.setLabel("left", u"Dielectric loss ε<sub>der</sub>''= ∂ε'/∂log10(v)" , units="Debye")
|
||||||
|
self.curve_imag = pg.PlotDataItem(x=[np.nan], y=[np.nan],pen=QColor(0,0,0,0), symbol='o',
|
||||||
|
symbolBrush=(255,127,0,127), name=u"Imaginary ε")
|
||||||
|
self.curve_real = pg.PlotDataItem(x=[np.nan], y=[np.nan],pen=QColor(0,0,0,0), symbol='s',
|
||||||
|
symbolBrush=(119,202,92,127), name=u"Real ε")
|
||||||
|
self.addItem(self.curve_imag)
|
||||||
|
self.addItem(self.curve_real)
|
||||||
|
|
||||||
|
def plot(self, x,real_y,imag_y):
|
||||||
|
self.enableAutoRange()
|
||||||
|
self.curve_real.setData(x, real_y)
|
||||||
|
self.curve_imag.setData(x, imag_y)
|
||||||
|
|
1
Makefile
1
Makefile
@ -7,5 +7,6 @@ all:
|
|||||||
pyuic4 StaticGroupBox.ui -o StaticGroupBox.py
|
pyuic4 StaticGroupBox.ui -o StaticGroupBox.py
|
||||||
pyuic4 YAFFparameters.ui -o YAFFparameters.py
|
pyuic4 YAFFparameters.ui -o YAFFparameters.py
|
||||||
pyuic4 YAFFConfig.ui -o YAFFConfig.py
|
pyuic4 YAFFConfig.ui -o YAFFConfig.py
|
||||||
|
pyuic4 ExtraDifferential.ui -o ExtraDifferential.py
|
||||||
stats:
|
stats:
|
||||||
wc -l QDS.py ContainerWidgets.py Container.py libyaff.py Mathlib.py Data.py
|
wc -l QDS.py ContainerWidgets.py Container.py libyaff.py Mathlib.py Data.py
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'PeakGroupBox.ui'
|
# Form implementation generated from reading ui file 'PeakGroupBox.ui'
|
||||||
#
|
#
|
||||||
# Created: Wed Apr 16 14:28:54 2014
|
# Created: Mon Jun 2 19:55:32 2014
|
||||||
# by: PyQt4 UI code generator 4.10.4
|
# by: PyQt4 UI code generator 4.10.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'PowerLawGroupBox.ui'
|
# Form implementation generated from reading ui file 'PowerLawGroupBox.ui'
|
||||||
#
|
#
|
||||||
# Created: Wed Apr 16 14:28:54 2014
|
# Created: Mon Jun 2 19:55:33 2014
|
||||||
# by: PyQt4 UI code generator 4.10.4
|
# by: PyQt4 UI code generator 4.10.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
57
QDS.py
57
QDS.py
@ -23,6 +23,7 @@ from Mathlib import FunctionRegister, FitRoutine
|
|||||||
from Data import Data
|
from Data import Data
|
||||||
|
|
||||||
import QDSMain
|
import QDSMain
|
||||||
|
import ExtraDifferentialWidget
|
||||||
|
|
||||||
class AppWindow(QMainWindow):
|
class AppWindow(QMainWindow):
|
||||||
|
|
||||||
@ -145,6 +146,23 @@ class AppWindow(QMainWindow):
|
|||||||
fit_action.triggered.connect(self.signalMapper.map)
|
fit_action.triggered.connect(self.signalMapper.map)
|
||||||
self.signalMapper.mapped.connect(self.fitData_start)
|
self.signalMapper.mapped.connect(self.fitData_start)
|
||||||
|
|
||||||
|
self.ui.actionShow_Derivative.triggered.connect(self.show_derivative)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def show_derivative(self):
|
||||||
|
self.xtra_wdgt = ExtraDifferentialWidget.DifferentialWidget()
|
||||||
|
#self.xtra_wdgt.set
|
||||||
|
deriv_r = np.diff(np.log10(self.data.epsilon.real))
|
||||||
|
deriv_i = np.diff(np.log10(self.data.epsilon.imag))*0
|
||||||
|
deriv_i = -np.pi/2 * np.diff(np.log10(self.data.epsilon.real))/np.diff(np.log10(self.data.frequency))
|
||||||
|
self.xtra_wdgt.plot(self.data.frequency[:-1], deriv_r, deriv_i)
|
||||||
|
# self.xtra_wdgt.plot([0,1], [0,1], [0,1])
|
||||||
|
self.xtra_wdgt.setGeometry(self.ui.pgPlotWidget_real.geometry())
|
||||||
|
self.xtra_wdgt.show()
|
||||||
|
#self.xtra_wdgt.showCenterd()
|
||||||
|
self.xtra_wdgt.raise_()
|
||||||
|
|
||||||
|
|
||||||
def updateCrosshair(self,evt):
|
def updateCrosshair(self,evt):
|
||||||
|
|
||||||
@ -215,7 +233,7 @@ class AppWindow(QMainWindow):
|
|||||||
Saving fit parameters to fitresults.log
|
Saving fit parameters to fitresults.log
|
||||||
including temperature
|
including temperature
|
||||||
"""
|
"""
|
||||||
self.saveFitFigure()
|
self._saveFitFigure()
|
||||||
if not os.path.exists("fitresults.log"):
|
if not os.path.exists("fitresults.log"):
|
||||||
f = open("fitresults.log", "w")
|
f = open("fitresults.log", "w")
|
||||||
else:
|
else:
|
||||||
@ -263,7 +281,7 @@ class AppWindow(QMainWindow):
|
|||||||
np.savetxt(f, pars, fmt = '%-10.3e', delimiter=" ")
|
np.savetxt(f, pars, fmt = '%-10.3e', delimiter=" ")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
def saveFitFigure(self):
|
def _saveFitFigure(self):
|
||||||
fig = pyplot.figure(figsize=(3.54*1.4, 2.75*1.4))
|
fig = pyplot.figure(figsize=(3.54*1.4, 2.75*1.4))
|
||||||
|
|
||||||
font = {'family' : 'sans serif',
|
font = {'family' : 'sans serif',
|
||||||
@ -290,7 +308,13 @@ class AppWindow(QMainWindow):
|
|||||||
#pyplot.savefig(os.path.splitext(self.filepath)[0]+".png")
|
#pyplot.savefig(os.path.splitext(self.filepath)[0]+".png")
|
||||||
pyplot.savefig(os.path.splitext(self.filepath)[0]+".pdf")
|
pyplot.savefig(os.path.splitext(self.filepath)[0]+".pdf")
|
||||||
fig.clear()
|
fig.clear()
|
||||||
|
fig.close()
|
||||||
|
|
||||||
|
def _saveFitFigureGrace(self):
|
||||||
|
#agrtemplate = open('template.agr').read()
|
||||||
|
agrtemplate = """
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
def addYaff(self, pos):
|
def addYaff(self, pos):
|
||||||
_yaff = YAFF(plt_real=self.ui.pgPlotWidget_real,
|
_yaff = YAFF(plt_real=self.ui.pgPlotWidget_real,
|
||||||
@ -363,11 +387,12 @@ class AppWindow(QMainWindow):
|
|||||||
plt_real=self.ui.pgPlotWidget_real,
|
plt_real=self.ui.pgPlotWidget_real,
|
||||||
plt_imag=self.ui.pgPlotWidget_imag,
|
plt_imag=self.ui.pgPlotWidget_imag,
|
||||||
limits=self.data.fit_limits)
|
limits=self.data.fit_limits)
|
||||||
|
self.function_registry.register_function(_peak)
|
||||||
|
|
||||||
_peak.changedData.connect(self.updatePlot)
|
_peak.changedData.connect(self.updatePlot)
|
||||||
_peak.removeObj.connect(self.delParamterObject)
|
_peak.removeObj.connect(self.delParamterObject)
|
||||||
new_peak = [2*10**pos.y(), 1 / (2*np.pi*10**pos.x()), 1, 1]
|
new_peak_beta0 = [2*10**pos.y(), 1 / (2*np.pi*10**pos.x()), 1, 1]
|
||||||
_peak.setParameter(beta = new_peak)
|
_peak.setParameter(beta = new_peak_beta0)
|
||||||
self.function_registry.register_function(_peak)
|
|
||||||
self.parameterWidget.add(_peak.widget)
|
self.parameterWidget.add(_peak.widget)
|
||||||
self.updatePlot()
|
self.updatePlot()
|
||||||
|
|
||||||
@ -435,27 +460,30 @@ class AppWindow(QMainWindow):
|
|||||||
self.openFile(path)
|
self.openFile(path)
|
||||||
|
|
||||||
def nextFile(self):
|
def nextFile(self):
|
||||||
|
lim = self.fit_boundary_imag.getRegion() # store limits
|
||||||
if len(self._file_paths) > self._current_file_index+1: # wrap around
|
if len(self._file_paths) > self._current_file_index+1: # wrap around
|
||||||
self._current_file_index += 1
|
self._current_file_index += 1
|
||||||
else:
|
else:
|
||||||
self._current_file_index = 0
|
self._current_file_index = 0
|
||||||
path = unicode(self._file_paths[self._current_file_index])
|
path = unicode(self._file_paths[self._current_file_index])
|
||||||
self.openFile(path)
|
self.openFile(path)
|
||||||
|
self.fit_boundary_imag.setRegion(lim)
|
||||||
|
|
||||||
def previousFile(self):
|
def previousFile(self):
|
||||||
|
lim = self.fit_boundary_imag.getRegion() # store limits
|
||||||
if self._current_file_index == 0: # wrap around
|
if self._current_file_index == 0: # wrap around
|
||||||
self._current_file_index = len(self._file_paths) - 1
|
self._current_file_index = len(self._file_paths) - 1
|
||||||
else:
|
else:
|
||||||
self._current_file_index -= 1
|
self._current_file_index -= 1
|
||||||
path = unicode(self._file_paths[self._current_file_index])
|
path = unicode(self._file_paths[self._current_file_index])
|
||||||
self.openFile(path)
|
self.openFile(path)
|
||||||
|
self.fit_boundary_imag.setRegion(lim)
|
||||||
|
|
||||||
def openFile(self,path):
|
def openFile(self,path):
|
||||||
print "opening: %s"%path
|
print "opening: %s"%path
|
||||||
self.filepath=path
|
self.filepath=path
|
||||||
# TODO analyze file (LF,MF, HF) and act accordingly
|
# TODO analyze file (LF,MF, HF) and act accordingly
|
||||||
data = np.loadtxt(path, skiprows=4)
|
data = np.loadtxt(path, skiprows=4)
|
||||||
self.setWindowTitle(os.path.basename(path))
|
|
||||||
numpat = re.compile('\d+\.\d+')
|
numpat = re.compile('\d+\.\d+')
|
||||||
try:
|
try:
|
||||||
Temp = None
|
Temp = None
|
||||||
@ -466,10 +494,15 @@ class AppWindow(QMainWindow):
|
|||||||
Temp = float(re.search(numpat, line).group())
|
Temp = float(re.search(numpat, line).group())
|
||||||
print "Temperature found in file:", Temp
|
print "Temperature found in file:", Temp
|
||||||
break
|
break
|
||||||
|
search_temp_in_filename = re.search('\d+\.\d+K', path)
|
||||||
|
if search_temp_in_filename:
|
||||||
|
Temp = float(search_temp_in_filename.group()[:-1])
|
||||||
if Temp == None: raise ValueError
|
if Temp == None: raise ValueError
|
||||||
except:
|
except:
|
||||||
Temp = QInputDialog.getDouble(self, "No temperature found in data set", "Temperature/K:", value=0.00)[0]
|
Temp = QInputDialog.getDouble(self, "No temperature found in data set", "Temperature/K:", value=0.00)[0]
|
||||||
# mask the data to values > 0 (loglog plot)
|
# mask the data to values > 0 (loglog plot)
|
||||||
|
self.setWindowTitle("%s - %.2f K"%(os.path.basename(path), Temp))
|
||||||
|
|
||||||
mask = (data[:, 1] > 0) & (data[:, 2] > 0) #& (data[:,2]>1e-3) & (data[:,0] > 1e-2)
|
mask = (data[:, 1] > 0) & (data[:, 2] > 0) #& (data[:,2]>1e-3) & (data[:,0] > 1e-2)
|
||||||
_freq = data[mask, 0]
|
_freq = data[mask, 0]
|
||||||
_die_stor = data[mask, 1]
|
_die_stor = data[mask, 1]
|
||||||
@ -501,6 +534,7 @@ class AppWindow(QMainWindow):
|
|||||||
|
|
||||||
p0,funcs = [],[]
|
p0,funcs = [],[]
|
||||||
for fcn in self.function_registry.get_registered_functions():
|
for fcn in self.function_registry.get_registered_functions():
|
||||||
|
print fcn
|
||||||
p0.extend(fcn.getParameter())
|
p0.extend(fcn.getParameter())
|
||||||
funcs.append(fcn)
|
funcs.append(fcn)
|
||||||
# calculate parametrized curve
|
# calculate parametrized curve
|
||||||
@ -509,13 +543,14 @@ class AppWindow(QMainWindow):
|
|||||||
# replot data and fit, TODO: replot only if measurement data changed
|
# replot data and fit, TODO: replot only if measurement data changed
|
||||||
self.data.data_curve_real.setData(self.data.frequency, self.data.epsilon.real)
|
self.data.data_curve_real.setData(self.data.frequency, self.data.epsilon.real)
|
||||||
self.data.data_curve_imag.setData(self.data.frequency, self.data.epsilon.imag)
|
self.data.data_curve_imag.setData(self.data.frequency, self.data.epsilon.imag)
|
||||||
|
print "updatePlot: ",self.data.frequency_fit, self.data.epsilon_fit
|
||||||
if len(funcs) > 0:
|
if len(funcs) > 0:
|
||||||
self.data.fitted_curve_real.setData(self.data.frequency_fit, self.data.epsilon_fit.real)
|
print "funcs > 0:",self.data.frequency_fit, self.data.epsilon_fit
|
||||||
self.data.fitted_curve_imag.setData(self.data.frequency_fit, self.data.epsilon_fit.imag)
|
self.data.fitted_curve_real.setData(x=self.data.frequency_fit, y=self.data.epsilon_fit.real)
|
||||||
|
self.data.fitted_curve_imag.setData(x=self.data.frequency_fit, y=self.data.epsilon_fit.imag)
|
||||||
else:
|
else:
|
||||||
self.data.fitted_curve_real.setData([np.nan],[np.nan])
|
self.data.fitted_curve_real.setData(x=np.array([np.nan]),y=np.array([np.nan]))
|
||||||
self.data.fitted_curve_imag.setData([np.nan],[np.nan])
|
self.data.fitted_curve_imag.setData(x=np.array([np.nan]),y=np.array([np.nan]))
|
||||||
|
|
||||||
|
|
||||||
def updateIntermediatePlot(self, freq, intermediate_data):
|
def updateIntermediatePlot(self, freq, intermediate_data):
|
||||||
|
10
QDSMain.py
10
QDSMain.py
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'QDSMain.ui'
|
# Form implementation generated from reading ui file 'QDSMain.ui'
|
||||||
#
|
#
|
||||||
# Created: Wed Apr 16 14:28:54 2014
|
# Created: Mon Jun 2 19:55:32 2014
|
||||||
# by: PyQt4 UI code generator 4.10.4
|
# by: PyQt4 UI code generator 4.10.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
@ -65,6 +65,8 @@ class Ui_MainWindow(object):
|
|||||||
self.menubar = QtGui.QMenuBar(MainWindow)
|
self.menubar = QtGui.QMenuBar(MainWindow)
|
||||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 956, 22))
|
self.menubar.setGeometry(QtCore.QRect(0, 0, 956, 22))
|
||||||
self.menubar.setObjectName(_fromUtf8("menubar"))
|
self.menubar.setObjectName(_fromUtf8("menubar"))
|
||||||
|
self.menuExtras = QtGui.QMenu(self.menubar)
|
||||||
|
self.menuExtras.setObjectName(_fromUtf8("menuExtras"))
|
||||||
MainWindow.setMenuBar(self.menubar)
|
MainWindow.setMenuBar(self.menubar)
|
||||||
self.statusbar = QtGui.QStatusBar(MainWindow)
|
self.statusbar = QtGui.QStatusBar(MainWindow)
|
||||||
self.statusbar.setObjectName(_fromUtf8("statusbar"))
|
self.statusbar.setObjectName(_fromUtf8("statusbar"))
|
||||||
@ -119,6 +121,10 @@ class Ui_MainWindow(object):
|
|||||||
icon5.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/qds_fit_abort.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
icon5.addPixmap(QtGui.QPixmap(_fromUtf8(":/icons/qds_fit_abort.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||||
self.actionActionAbortFit.setIcon(icon5)
|
self.actionActionAbortFit.setIcon(icon5)
|
||||||
self.actionActionAbortFit.setObjectName(_fromUtf8("actionActionAbortFit"))
|
self.actionActionAbortFit.setObjectName(_fromUtf8("actionActionAbortFit"))
|
||||||
|
self.actionShow_Derivative = QtGui.QAction(MainWindow)
|
||||||
|
self.actionShow_Derivative.setObjectName(_fromUtf8("actionShow_Derivative"))
|
||||||
|
self.menuExtras.addAction(self.actionShow_Derivative)
|
||||||
|
self.menubar.addAction(self.menuExtras.menuAction())
|
||||||
self.toolBar.addAction(self.actionAdd_Peak)
|
self.toolBar.addAction(self.actionAdd_Peak)
|
||||||
self.toolBar.addAction(self.actionAdd_Cond)
|
self.toolBar.addAction(self.actionAdd_Cond)
|
||||||
self.toolBar.addAction(self.actionAdd_PowerLaw)
|
self.toolBar.addAction(self.actionAdd_PowerLaw)
|
||||||
@ -134,6 +140,7 @@ class Ui_MainWindow(object):
|
|||||||
|
|
||||||
def retranslateUi(self, MainWindow):
|
def retranslateUi(self, MainWindow):
|
||||||
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
|
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
|
||||||
|
self.menuExtras.setTitle(_translate("MainWindow", "Extras", None))
|
||||||
self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar", None))
|
self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar", None))
|
||||||
self.actionAdd_Peak.setText(_translate("MainWindow", "Add Peak", None))
|
self.actionAdd_Peak.setText(_translate("MainWindow", "Add Peak", None))
|
||||||
self.actionAdd_Cond.setText(_translate("MainWindow", "Add Cond.", None))
|
self.actionAdd_Cond.setText(_translate("MainWindow", "Add Cond.", None))
|
||||||
@ -148,6 +155,7 @@ class Ui_MainWindow(object):
|
|||||||
self.actionYAFF.setToolTip(_translate("MainWindow", "Fit with YAFF", None))
|
self.actionYAFF.setToolTip(_translate("MainWindow", "Fit with YAFF", None))
|
||||||
self.actionActionAbortFit.setText(_translate("MainWindow", "Abort Fit", None))
|
self.actionActionAbortFit.setText(_translate("MainWindow", "Abort Fit", None))
|
||||||
self.actionActionAbortFit.setShortcut(_translate("MainWindow", "Ctrl+C", None))
|
self.actionActionAbortFit.setShortcut(_translate("MainWindow", "Ctrl+C", None))
|
||||||
|
self.actionShow_Derivative.setText(_translate("MainWindow", "Show Derivative", None))
|
||||||
|
|
||||||
from pyqtgraph import PlotWidget
|
from pyqtgraph import PlotWidget
|
||||||
import images_rc
|
import images_rc
|
||||||
|
12
QDSMain.ui
12
QDSMain.ui
@ -67,6 +67,13 @@
|
|||||||
<height>22</height>
|
<height>22</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
<widget class="QMenu" name="menuExtras">
|
||||||
|
<property name="title">
|
||||||
|
<string>Extras</string>
|
||||||
|
</property>
|
||||||
|
<addaction name="actionShow_Derivative"/>
|
||||||
|
</widget>
|
||||||
|
<addaction name="menuExtras"/>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QStatusBar" name="statusbar"/>
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
<widget class="QToolBar" name="toolBar">
|
<widget class="QToolBar" name="toolBar">
|
||||||
@ -203,6 +210,11 @@
|
|||||||
<string>Ctrl+C</string>
|
<string>Ctrl+C</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionShow_Derivative">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show Derivative</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'StaticGroupBox.ui'
|
# Form implementation generated from reading ui file 'StaticGroupBox.ui'
|
||||||
#
|
#
|
||||||
# Created: Wed Apr 16 14:28:54 2014
|
# Created: Mon Jun 2 19:55:33 2014
|
||||||
# by: PyQt4 UI code generator 4.10.4
|
# by: PyQt4 UI code generator 4.10.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'YAFFConfig.ui'
|
# Form implementation generated from reading ui file 'YAFFConfig.ui'
|
||||||
#
|
#
|
||||||
# Created: Wed Apr 16 14:28:55 2014
|
# Created: Mon Jun 2 19:55:33 2014
|
||||||
# by: PyQt4 UI code generator 4.10.4
|
# by: PyQt4 UI code generator 4.10.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Form implementation generated from reading ui file 'YAFFparameters.ui'
|
# Form implementation generated from reading ui file 'YAFFparameters.ui'
|
||||||
#
|
#
|
||||||
# Created: Wed Apr 16 14:28:55 2014
|
# Created: Mon Jun 2 19:55:33 2014
|
||||||
# by: PyQt4 UI code generator 4.10.4
|
# by: PyQt4 UI code generator 4.10.4
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
9
data.py
9
data.py
@ -11,8 +11,8 @@ class Data:
|
|||||||
def __init__(self, frequency=np.zeros(1), die_real=np.zeros(1), die_imag=np.zeros(1)):
|
def __init__(self, frequency=np.zeros(1), die_real=np.zeros(1), die_imag=np.zeros(1)):
|
||||||
self.frequency = frequency
|
self.frequency = frequency
|
||||||
self.epsilon = die_real + 1j * die_imag
|
self.epsilon = die_real + 1j * die_imag
|
||||||
self.frequency_fit = frequency
|
self.frequency_fit = frequency[:]
|
||||||
self.epsilon_fit = die_real*0 + 1j * die_imag*0
|
self.epsilon_fit = die_real[:]*0 + 1j * die_imag[:]*0
|
||||||
myPen_imag = pg.mkPen(width=3, color=(255,255,127))
|
myPen_imag = pg.mkPen(width=3, color=(255,255,127))
|
||||||
myPen_real = pg.mkPen(width=3, color=(51,255,127))
|
myPen_real = pg.mkPen(width=3, color=(51,255,127))
|
||||||
|
|
||||||
@ -20,8 +20,8 @@ class Data:
|
|||||||
symbolBrush=(255,127,0,127))
|
symbolBrush=(255,127,0,127))
|
||||||
self.data_curve_real = pg.PlotDataItem(x=[np.nan], y=[np.nan],pen=QColor(0,0,0,0), symbol='s',
|
self.data_curve_real = pg.PlotDataItem(x=[np.nan], y=[np.nan],pen=QColor(0,0,0,0), symbol='s',
|
||||||
symbolBrush=(119,202,92,127))
|
symbolBrush=(119,202,92,127))
|
||||||
self.fitted_curve_imag = pg.PlotDataItem(np.array([np.nan]), np.array([np.nan]), pen=myPen_imag)
|
self.fitted_curve_imag = pg.PlotDataItem(x=[np.nan], y=[np.nan], pen=myPen_imag)
|
||||||
self.fitted_curve_real = pg.PlotDataItem(np.array([np.nan]), np.array([np.nan]), pen=myPen_real)
|
self.fitted_curve_real = pg.PlotDataItem(x=[np.nan], y=[np.nan], pen=myPen_real)
|
||||||
self.length = len(frequency)
|
self.length = len(frequency)
|
||||||
self.meta = dict()
|
self.meta = dict()
|
||||||
self.fit_limits = [frequency.min(), frequency.max(), die_imag.min(), die_imag.max()]
|
self.fit_limits = [frequency.min(), frequency.max(), die_imag.min(), die_imag.max()]
|
||||||
@ -39,6 +39,7 @@ class Data:
|
|||||||
|
|
||||||
def set_data(self,f,e_real,e_imag):
|
def set_data(self,f,e_real,e_imag):
|
||||||
self.frequency = f
|
self.frequency = f
|
||||||
|
self.frequency_fit = f[:]
|
||||||
self.epsilon = e_real + 1j*e_imag
|
self.epsilon = e_real + 1j*e_imag
|
||||||
self.epsilon_fit = 0*e_real + 1j*e_imag*0
|
self.epsilon_fit = 0*e_real + 1j*e_imag*0
|
||||||
self.fit_limits = [f.min(), f.max(), e_imag.min(), e_imag.max()]
|
self.fit_limits = [f.min(), f.max(), e_imag.min(), e_imag.max()]
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Resource object code
|
# Resource object code
|
||||||
#
|
#
|
||||||
# Created: Mi. Apr. 16 14:28:54 2014
|
# Created: Mo. Juni 2 19:55:32 2014
|
||||||
# by: The Resource Compiler for PyQt (Qt v4.8.5)
|
# by: The Resource Compiler for PyQt (Qt v4.8.5)
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
Loading…
Reference in New Issue
Block a user