NoPaste

Markus Feldmann 2009-05-21 konvertiere Daten

von Anonymous

SNIPPET_TEXT:
  1. #!/usr/bin/env python
  2. # encoding: utf8
  3. #
  4. # Autor: Markus Feldmann
  5. #
  6.  
  7. import wx
  8. from matplotlib.figure import Figure
  9. from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg
  10. import cPickle
  11. import pickle
  12. import time
  13. import numpy
  14. import os
  15.  
  16. class HistoApp(wx.App):
  17.     def OnInit(self):
  18.         f_daten = file('../../../peakdaten.dat','r')
  19.         starttime, endtime, samp_rate = cPickle.load(f_daten)
  20.         f_daten.close()
  21.         wx.EVT_CLOSE(self, self.OnQuit)
  22.         timescale, nitems = self.gettimescale(starttime, endtime)
  23.         print "Mehrfrequente Messung",\
  24.             "\nStartzeit: ",time.ctime(float(starttime)),\
  25.             "\nEndzeit: ",time.ctime(float(endtime)),\
  26.             "\nGesamte Zeitspanne: ",float(endtime - starttime)," sek.",\
  27.             "\nZeitdifferenz von Sample zum nächsten: ",float(timescale)," sek.",\
  28.             "\nAnzahl Samples: ",nitems
  29.         print 'Stufe 1'
  30.         self.extrahierePeaks(starttime,endtime,timescale,nitems)
  31.         print 'Stufe 2'
  32.         self.frame = HistoFrame(parent=None,\
  33.                                     title='Histogramm einer Mehrfrequenten Impulsmessung',\
  34.                                     size=(640, 480))
  35.         self.frame.Show()
  36.         return True
  37.    
  38.     def gettimescale(self,starttime, endtime):
  39.         filename = '../../../peakdetektor1.hex'
  40.         file_size = os.path.getsize(filename)
  41.         nitems = 0
  42.         nitems = file_size
  43.         if nitems is not 0:
  44.             #Zeitabstand von einem Sample zum naechsten
  45.             timescale = float(endtime - starttime)/float(nitems)
  46.         else:
  47.             timescale = float(endtime - starttime)
  48.         return timescale, nitems
  49.    
  50.     def extrahierePeaks(self,starttime,endtime,timescale,nitems):
  51.         f_output = open('../../../peakswerteundzeit.dat','wb')
  52.         f_p_1 = open('../../../peakdetektor1.hex','rb')
  53.         f_p_2 = open('../../../peakdetektor2.hex','rb')
  54.         f_p_3 = open('../../../peakdetektor3.hex','rb')
  55.         f_pv_1 = open('../../../peakband1.hex','rb')
  56.         f_pv_2 = open('../../../peakband2.hex','rb')
  57.         f_pv_3 = open('../../../peakband3.hex','rb')
  58.         a_p_1 = numpy.fromfile(f_p_1,dtype='b',count=-1)
  59.         a_p_2 = numpy.fromfile(f_p_2,dtype='b',count=-1)
  60.         a_p_3 = numpy.fromfile(f_p_3,dtype='b',count=-1)
  61.         a_pv_1 = numpy.fromfile(f_pv_1,dtype='f',count=-1)
  62.         a_pv_2 = numpy.fromfile(f_pv_2,dtype='f',count=-1)
  63.         a_pv_3 = numpy.fromfile(f_pv_3,dtype='f',count=-1)
  64.         i = 0
  65.         a_time = []
  66.         a_a = []
  67.         a_b = []
  68.         a_c = []
  69.         a_ar = []
  70.         a_ai = []
  71.         a_br = []
  72.         a_bi = []
  73.         a_cr = []
  74.         a_ci = []
  75.         while i <= nitems-1:
  76.             if (a_p_1[i] or a_p_2[i] or a_p_3[i]):
  77.                 a_time += [timescale*i]
  78.                 a_a.append(a_p_1[i])
  79. #                 print "Mit i ist ",i," ergibt sich für a_p_1[i] ",a_p_1[i],\
  80. #                     "und für a_a ",a_a[:]
  81.                 a_b.append(a_p_2[i])
  82.                 a_c.append(a_p_3[i])
  83.                 a_ar.append(a_pv_1[i*2])
  84.                 a_ai.append(a_pv_1[i*2+1])
  85.                 a_br.append(a_pv_2[i*2])
  86.                 a_bi.append(a_pv_2[i*2+1])
  87.                 a_cr.append(a_pv_3[i*2])
  88.                 a_ci.append(a_pv_3[i*2+1])
  89.             i += 1
  90.         cPickle.dump(a_time,f_output)
  91.         cPickle.dump(a_a,f_output)
  92.         cPickle.dump(a_b,f_output)
  93.         cPickle.dump(a_c,f_output)
  94.         cPickle.dump(a_ar,f_output)
  95.         cPickle.dump(a_ai,f_output)
  96.         cPickle.dump(a_br,f_output)
  97.         cPickle.dump(a_bi,f_output)
  98.         cPickle.dump(a_cr,f_output)
  99.         cPickle.dump(a_ci,f_output)
  100.         f_output.flush()
  101.         f_output.close()
  102.  
  103.     def OnQuit(self):
  104.         f_peaks_1.close()
  105.         f_peaks_2.close()
  106.         f_peaks_3.close()
  107.         f_peakvalue_1.close()
  108.         f_peakvalue_2.close()
  109.         f_peakvalue_3.close()
  110.        
  111. class HistoFrame(wx.Frame):
  112.     def __init__(self, *args, **kwargs):
  113.         wx.Frame.__init__(self, *args, **kwargs)
  114.         self.Bind(wx.EVT_MENU, self.onQuit, id=105)
  115.         self.makeMenu()
  116.         self.graphWindow = GraphWindow(self)
  117.  
  118.     def makeMenu(self):
  119.         menubar = wx.MenuBar()
  120.         file = wx.Menu()
  121.         quit = wx.MenuItem(file, 105, '&Quit\tCtrrl+Q', 'Quit the Application')
  122.         file.AppendItem(quit)
  123.         menubar.Append(file, '&File')
  124.         self.SetMenuBar(menubar)
  125.  
  126.     def onQuit(self,event):
  127.         self.Close()
  128.  
  129. class GraphWindow(wx.Window):
  130.     def __init__(self, *args, **kwargs):
  131.         wx.Window.__init__(self, *args, **kwargs)
  132.         self.lines = []
  133.         self.figure = Figure()
  134.         self.canvas = FigureCanvasWxAgg(self, -1, self.figure)
  135.         f_dat = open('../../../peakswerteundzeit.dat','rb')
  136.         nitems = 2
  137.         self.a_time = cPickle.load(f_dat)
  138.         self.a_a = cPickle.load(f_dat)
  139.         self.a_b = cPickle.load(f_dat)
  140.         self.a_c = cPickle.load(f_dat)
  141.         self.a_ar = cPickle.load(f_dat)
  142.         self.a_ai = cPickle.load(f_dat)
  143.         self.a_br = cPickle.load(f_dat)
  144.         self.a_bi = cPickle.load(f_dat)
  145.         self.a_cr = cPickle.load(f_dat)
  146.         self.a_ci = cPickle.load(f_dat)
  147.         self.draw(nitems)
  148.  
  149.     def draw(self,nitems):
  150.         if not hasattr(self, 'subplot1'):
  151.             self.subplot1 = self.figure.add_subplot(211)
  152.             self.subplot2 = self.figure.add_subplot(212)
  153.         a = numpy.array(self.a_a[0:nitems])
  154.         b = numpy.array(self.a_b[0:nitems])
  155.         c = numpy.array(self.a_c[0:nitems])
  156.         d = numpy.array(self.a_time[0:nitems])
  157.         print a, b, c, d, numpy.add(a,b)
  158.         bar1 = self.subplot1.bar(d,a, color='red', edgecolor='red',align='edge')
  159.         bar2 = self.subplot1.bar(d,b, color='green', edgecolor='green',align='edge',
  160.                                  bottom=a)
  161.         bar3 = self.subplot1.bar(d,c, color='blue', edgecolor='blue',align='edge',
  162.                                  bottom=numpy.add(a,b))
  163.  
  164.        
  165. if __name__ == '__main__':
  166.     app = HistoApp(0)
  167.     app.MainLoop()

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN