Tau histograms for each comb tooth

master
michael 2021-08-10 12:12:42 -07:00
parent 04b549d106
commit 3239ac2a2c
4 changed files with 113 additions and 25 deletions

15
app.py
View File

@ -2,16 +2,13 @@ import sys
import crds_calc import crds_calc
from pandas import read_csv from pandas import read_csv
from PyQt5 import QtGui, QtWidgets, QtCore from PyQt5 import QtGui, QtWidgets, QtCore
from memdb import mem from db import mem
from mainwin import Ui_MainWindow from mainwin import Ui_MainWindow
from widgets import BaseGraph from widgets import BaseGraph
import pathlib import pathlib
class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow): class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow):
correlation_complete = QtCore.pyqtSignal()
fitting_complete = QtCore.pyqtSignal()
def __init__(self): def __init__(self):
super(AppWindow, self).__init__() super(AppWindow, self).__init__()
self.setupUi(self) self.setupUi(self)
@ -43,7 +40,9 @@ class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow):
return return
mem['x_data'] = data.transpose()[0] mem['x_data'] = data.transpose()[0]
mem['y_data'] = data.transpose()[1] mem['y_data'] = data.transpose()[1]
mem['timestep'] = mem['x_data'][1] - mem['x_data'][0] timestep = mem['x_data'][1] - mem['x_data'][0]
mem['timestep'] = timestep
self.spin_timestep.setValue(timestep)
self.raw_data_graph.plot() # Graph new stuff self.raw_data_graph.plot() # Graph new stuff
# self.groups_graph.clear() # Clear old stuff # self.groups_graph.clear() # Clear old stuff
@ -206,7 +205,11 @@ class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow):
mem['shift_over_fit'] = self.spin_shift_over_fit.value() mem['shift_over_fit'] = self.spin_shift_over_fit.value()
# print(mem['fit_equations']) # print(mem['fit_equations'])
self.peak_fit_viewer.plot() self.peak_fit_viewer.plot()
self.graph_tabs.setCurrentIndex(4)
mem['time_constants'] = crds_calc.get_time_constants(mem['fit_equations'])
self.tau_viewer.plot()
self.graph_tabs.setCurrentIndex(5)
self.fit_button.pressed.connect(init_fit) self.fit_button.pressed.connect(init_fit)
# Show equation # Show equation

View File

@ -1,5 +1,6 @@
from sqlitedict import SqliteDict from sqlitedict import SqliteDict
from varname.core import nameof from varname.core import nameof
from hashlib import md5
class ModSqliteDict(SqliteDict): class ModSqliteDict(SqliteDict):
def __init__(self): def __init__(self):
@ -12,4 +13,8 @@ class ModSqliteDict(SqliteDict):
name = nameof(item) name = nameof(item)
self[name] = item self[name] = item
def set_key_value(self, item, value):
name = nameof(item)
self[name] = value
mem = ModSqliteDict() mem = ModSqliteDict()

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1343</width> <width>1343</width>
<height>746</height> <height>653</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -39,12 +39,57 @@
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>-158</y> <y>0</y>
<width>261</width> <width>261</width>
<height>818</height> <height>878</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="minimumSize">
<size>
<width>239</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>239</width>
<height>16777215</height>
</size>
</property>
<property name="title">
<string>GENERAL CONFIG</string>
</property>
<layout class="QGridLayout" name="gridLayout_8">
<item row="0" column="0">
<layout class="QFormLayout" name="formLayout_7">
<item row="0" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Timestep</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="spin_timestep">
<property name="decimals">
<number>6</number>
</property>
<property name="minimum">
<double>-99.989999999999995</double>
</property>
<property name="singleStep">
<double>0.010000000000000</double>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item> <item>
<widget class="QGroupBox" name="groupBox"> <widget class="QGroupBox" name="groupBox">
<property name="minimumSize"> <property name="minimumSize">
@ -268,7 +313,7 @@
<rect> <rect>
<x>10</x> <x>10</x>
<y>160</y> <y>160</y>
<width>235</width> <width>221</width>
<height>53</height> <height>53</height>
</rect> </rect>
</property> </property>
@ -804,9 +849,6 @@
<string>Time Constant</string> <string>Time Constant</string>
</attribute> </attribute>
<layout class="QGridLayout" name="gridLayout_7"> <layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<widget class="TimeConstantGraph" name="tau_graph" native="true"/>
</item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QScrollArea" name="scrollArea_2"> <widget class="QScrollArea" name="scrollArea_2">
<property name="minimumSize"> <property name="minimumSize">
@ -830,7 +872,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>279</width> <width>279</width>
<height>633</height> <height>548</height>
</rect> </rect>
</property> </property>
<widget class="QGroupBox" name="groupBox_3"> <widget class="QGroupBox" name="groupBox_3">
@ -904,6 +946,9 @@ p, li { white-space: pre-wrap; }
</widget> </widget>
</widget> </widget>
</item> </item>
<item row="0" column="0">
<widget class="TimeConstantGraphsViewer" name="tau_viewer"/>
</item>
</layout> </layout>
</widget> </widget>
</widget> </widget>
@ -924,9 +969,6 @@ p, li { white-space: pre-wrap; }
<string>File</string> <string>File</string>
</property> </property>
<addaction name="actionOpen_CSV_File"/> <addaction name="actionOpen_CSV_File"/>
<addaction name="actionOpen_MATLAB_File"/>
<addaction name="separator"/>
<addaction name="actionExport_Binary"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionQuit_2"/> <addaction name="actionQuit_2"/>
</widget> </widget>
@ -1002,6 +1044,14 @@ p, li { white-space: pre-wrap; }
<string>F1</string> <string>F1</string>
</property> </property>
</action> </action>
<action name="actionSave_Options">
<property name="text">
<string>Save Options</string>
</property>
<property name="shortcut">
<string>Ctrl+S</string>
</property>
</action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>
@ -1016,12 +1066,6 @@ p, li { white-space: pre-wrap; }
<header>widgets</header> <header>widgets</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>TimeConstantGraph</class>
<extends>QWidget</extends>
<header>widgets</header>
<container>1</container>
</customwidget>
<customwidget> <customwidget>
<class>AddedPeaksGraph</class> <class>AddedPeaksGraph</class>
<extends>QWidget</extends> <extends>QWidget</extends>
@ -1040,6 +1084,12 @@ p, li { white-space: pre-wrap; }
<header>widgets</header> <header>widgets</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>TimeConstantGraphsViewer</class>
<extends>QTabWidget</extends>
<header>widgets</header>
<container>1</container>
</customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections/> <connections/>

View File

@ -4,7 +4,9 @@ import matplotlib
matplotlib.use('Qt5Agg') matplotlib.use('Qt5Agg')
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure from matplotlib.figure import Figure
from memdb import mem from matplotlib import colors
from matplotlib import pyplot as plt
from db import mem
from crds_calc import exp_func from crds_calc import exp_func
class MplCanvas(FigureCanvasQTAgg): class MplCanvas(FigureCanvasQTAgg):
@ -161,4 +163,32 @@ class FitsGraphViewer(QtWidgets.QTabWidget):
# # ax.set(xlabel='x-label', ylabel='y-label') # # ax.set(xlabel='x-label', ylabel='y-label')
class TimeConstantGraph(BaseGraph): class TimeConstantGraph(BaseGraph):
pass
def __init__(self, x):
super().__init__(x)
self.peak_index = 0
def set_peak_index(self, i):
self.peak_index = i
def plot_data(self):
data = []
for g_i in range(len(mem['time_constants'])):
data.append(mem['time_constants'][g_i][self.peak_index])
self.canv.axes.hist(data, bins='auto', alpha=0.8)
class TimeConstantGraphsViewer(QtWidgets.QTabWidget):
def __init__(self, x):
super(TimeConstantGraphsViewer, self).__init__(x)
layout = QtWidgets.QGridLayout()
self.setLayout(layout)
def plot(self): # Create tabs & plot ALL data (each individual graph)
self.clear()
for p_i in range(len(mem['time_constants'][0])):
tab_name = str(p_i+1)
tau_graph = TimeConstantGraph(self)
tau_graph.set_peak_index(p_i)
self.addTab(tau_graph, tab_name)
tau_graph.plot()