Package empro :: Package toolkit :: Package analysis :: Module ppr_results_overview
[frames] | no frames]

Source Code for Module empro.toolkit.analysis.ppr_results_overview

 1  from empro.gui import SimpleDialog, TableView, Cancel,TabWidget 
2 -class PPRResults(object):
3 - def __init__(self,sipiData):
4 import sys 5 import collections 6 simLocation = sipiData.simulationPath 7 if not simLocation: 8 raise Exception("Simulation Results Not Found") 9 logFile = sipiData.simulationPath+r"/project.log" 10 with open(logFile,"r") as data: 11 dataList = data.readlines() 12 for line in dataList : 13 if line.split() == ["Eigenfrequency","Q","value"]: 14 n = dataList.index(line) 15 results = [] 16 for data in dataList[n+2:-5]: 17 result = [item.strip() for item in data.split(" ")] 18 data,unit = result[1].split(" ") 19 if unit == "Hz": 20 result[1] = float(data)*0.000001 21 if unit == "KHz": 22 result[1] = float(data)*0.001 23 if unit == "GHz": 24 result[1] = float(data)*1000 25 if unit == "MHz": 26 result[1] = float(data) 27 result[2] = float(result[2]) 28 results.append(result[1:]) 29 fieldsList =[] 30 for result in results: 31 Fields = collections.namedtuple('Frequency',['eigenFrequency', 'qValue']) 32 fields = Fields(*result) 33 fieldsList.append(fields) 34 self.fields = fieldsList
35
36 -class ResultsOverview:
37 - def __init__(self,sipiData):
38 import empro.gui 39 self.dialog = SimpleDialog(Cancel) 40 self.dialog.setButtonText(Cancel,'Close') 41 self.dialog.title = "PPR Results Overview" 42 self.dialog.resize(800, 600) 43 self.tabWidget = TabWidget() 44 w = empro.gui.Widget() 45 self.tabWidget.insertTab(0, self._fieldTab(), "Frequencies") 46 self.dialog.layout.add(self.tabWidget) 47 self.dialog.windowFlags = empro.gui.WF_Window 48 self.dialog.windowFlags &= ~empro.gui.WF_WindowStaysOnTopHint 49 self.sipiData = sipiData 50 self.results = PPRResults(sipiData) 51 for index, frequency in enumerate(self.results.fields): 52 row = [frequency.eigenFrequency, frequency.qValue] 53 self._fieldTable.setRow(index, row) 54 self._fieldTable.headers = ["Eigenfrequency [MHz]" , "Q Value"] 55 self._fieldTable.resizeColumnsToContents() 56 for table in [self._fieldTable]: 57 table.selectionBehavior = TableView.SelectRows 58 table.selectionMode = TableView.ExtendedSelection 59 table.resizeRowsToContents() 60 table.resizeColumnsToContents() 61 table.onLayoutChanged = lambda y=table: self.onSelectionChanged(y) 62 table.onSelectionChanged = lambda y=table: self.onSelectionChanged(y) 63 table.refresh()
64 - def _fieldTab(self):
65 import empro.gui 66 w = empro.gui.Widget() 67 self._fieldTable = TableView(w) 68 self._fieldTable.objectName = "Frequencies" 69 w.layout = empro.gui.VBoxLayout() 70 w.layout.addWidget(self._fieldTable) 71 columns = ["Eigenfrequency [MHz]" , "Q Value"] 72 self._fieldTable.headers = [] 73 self._fieldTable.resizeColumnsToContents() 74 return w
75
76 - def onSelectionChanged( self,table):
77 # ugly workaround: the table doesn't repaint itself properly when changing the selection. 78 # to work around it, we wiggle the window's size a bit. 79 import empro 80 w, h = table.size() 81 table.resize(w + 2, h) 82 table.resize(w, h)
83
84 - def show(self):
85 self.dialog.show(False)
86 87 if False:
88 - class bla(object):
89 - def __init__(self):
91 92 resultsOverview = ResultsOverview(empro.activeProject.analyses[2]) 93 resultsOverview.show() 94