diff --git a/dstat-interface/dstat-interface/dstat_comm.py b/dstat-interface/dstat-interface/dstat_comm.py index ff4dab024f5949b782e6625d80b2dce11b388985..b34eddb030429c64e180bcaf485b55a86590ca0c 100644 --- a/dstat-interface/dstat-interface/dstat_comm.py +++ b/dstat-interface/dstat-interface/dstat_comm.py @@ -54,13 +54,11 @@ class Experiment(object): self.proc.start() def __init__(self, parameters, main_pipe): - """Must be overridden to define self.parameters, and self.databytes.""" + """Adds commands for gain and ADC.""" self.parameters = parameters self.main_pipe = main_pipe self.databytes = 8 - - def init(self): - """Adds commands for gain and ADC.""" + self.data_extra = [] # must be defined even when not needed self.__gaintable = [1e2, 3e2, 3e3, 3e4, 3e5, 3e6, 3e7, 5e8] self.gain = self.__gaintable[int(self.parameters['gain'])] @@ -147,11 +145,11 @@ class Experiment(object): """ pass -class chronoamp(Experiment): +class Chronoamp(Experiment): """Chronoamperometry experiment""" def __init__(self, parameters, main_pipe): - self.main_pipe = main_pipe - self.parameters = parameters + super(Chronoamp, self).__init__(parameters, main_pipe) + self.datatype = "linearData" self.xlabel = "Time (s)" self.ylabel = "Current (A)" @@ -164,8 +162,6 @@ class chronoamp(Experiment): for i in self.parameters['time']: self.xmax += int(i) - self.init() # need to call after xmin and xmax are set - self.commands += "R" self.commands[2] += str(len(self.parameters['potential'])) self.commands[2] += " " @@ -184,11 +180,10 @@ class chronoamp(Experiment): return (scan, [seconds+milliseconds/1000., current*(1.5/self.gain/8388607)]) -class lsv_exp(Experiment): +class LSVExp(Experiment): """Linear Scan Voltammetry experiment""" - def __init__(self, parameters, send_pipe): - self.main_pipe = send_pipe - self.parameters = parameters + def __init__(self, parameters, main_pipe): + super(LSVExp, self).__init__(parameters, main_pipe) self.datatype = "linearData" self.xlabel = "Voltage (mV)" @@ -219,11 +214,10 @@ class lsv_exp(Experiment): self.commands[2] += str(self.parameters['slope']) self.commands[2] += " " -class cv_exp(Experiment): +class CVExp(Experiment): """Cyclic Voltammetry experiment""" def __init__(self, parameters, main_pipe): - self.main_pipe = main_pipe - self.parameters = parameters + super(CVExp, self).__init__(parameters, main_pipe) self.datatype = "CVData" self.xlabel = "Voltage (mV)" @@ -234,8 +228,6 @@ class cv_exp(Experiment): self.xmin = self.parameters['v1'] self.xmax = self.parameters['v2'] - self.init() - self.commands += "C" self.commands[2] += str(self.parameters['clean_s']) self.commands[2] += " " @@ -258,11 +250,10 @@ class cv_exp(Experiment): self.commands[2] += str(self.parameters['slope']) self.commands[2] += " " -class swv_exp(Experiment): +class SWVExp(Experiment): """Square Wave Voltammetry experiment""" def __init__(self, parameters, main_pipe): - self.main_pipe = main_pipe - self.parameters = parameters + super(SWVExp, self).__init__(parameters, main_pipe) self.datatype = "SWVData" self.xlabel = "Voltage (mV)" @@ -273,8 +264,7 @@ class swv_exp(Experiment): self.xmin = self.parameters['start'] self.xmax = self.parameters['stop'] - - self.init() + # forward/reverse stored here - needs to be after # self.init to keep from being redefined self.data_extra = [[], []] @@ -314,12 +304,11 @@ class swv_exp(Experiment): reverse*(1.5/self.gain/8388607)]) -class dpv_exp(swv_exp): +class DPVExp(SWVExp): """Diffential Pulse Voltammetry experiment.""" def __init__(self, parameters, main_pipe): - """Overrides swv_exp method""" - self.main_pipe = main_pipe - self.parameters = parameters + """Overrides SWVExp method""" + super(DPVExp, self).__init__(parameters, main_pipe) self.datatype = "SWVData" self.xlabel = "Voltage (mV)" diff --git a/dstat-interface/dstat-interface/main.py b/dstat-interface/dstat-interface/main.py index e2cb161c97aeefb50fbce670b4ad5441c01fd0ff..9f7d2d6a19bf8ac3e40e5f113b141e923062a746 100644 --- a/dstat-interface/dstat-interface/main.py +++ b/dstat-interface/dstat-interface/main.py @@ -24,7 +24,7 @@ import interface.save as save import dstat_comm as comm import interface.exp_window as exp_window import interface.adc_pot as adc_pot -import mpltest +import plot import microdrop from serial import SerialException @@ -77,7 +77,7 @@ class Main(object): self.autosavedir_button = self.builder.get_object('autosavedir_button') self.autosavename = self.builder.get_object('autosavename') - self.plot = mpltest.plotbox(self.plotwindow) + self.plot = plot.plotbox(self.plotwindow) #fill adc_pot_box self.adc_pot_box = self.builder.get_object('gain_adc_box') @@ -205,7 +205,7 @@ class Main(object): "Step table is empty") self.recv_p, self.send_p = multiprocessing.Pipe(duplex=True) - self.current_exp = comm.chronoamp(parameters, self.send_p) + self.current_exp = comm.Chronoamp(parameters, self.send_p) self.plot.clearall() self.plot.changetype(self.current_exp) @@ -257,15 +257,10 @@ class Main(object): "Start cannot equal Stop.") self.recv_p, self.send_p = multiprocessing.Pipe(duplex=True) - self.current_exp = comm.lsv_exp(parameters, self.send_p) + self.current_exp = comm.LSVExp(parameters, self.send_p) self.plot.clearall() self.plot.changetype(self.current_exp) - self.rawbuffer.set_text("") - self.rawbuffer.place_cursor(self.rawbuffer.get_start_iter()) - - for i in self.current_exp.commands: - self.rawbuffer.insert_at_cursor(i) self.current_exp.run_wrapper( self.serial_liststore.get_value( @@ -274,7 +269,7 @@ class Main(object): self.send_p.close() self.plot_proc = gobject.timeout_add(200, - self.experiment_running_plot) + self.experiment_running_plot) gobject.idle_add(self.experiment_running) return @@ -316,15 +311,10 @@ class Main(object): "Vertex 1 cannot equal Vertex 2.") self.recv_p, self.send_p = multiprocessing.Pipe(duplex=True) - self.current_exp = comm.cv_exp(parameters, self.send_p) + self.current_exp = comm.CVExp(parameters, self.send_p) self.plot.clearall() self.plot.changetype(self.current_exp) - self.rawbuffer.set_text("") - self.rawbuffer.place_cursor(self.rawbuffer.get_start_iter()) - - for i in self.current_exp.commands: - self.rawbuffer.insert_at_cursor(i) self.current_exp.run_wrapper( self.serial_liststore.get_value( @@ -333,7 +323,7 @@ class Main(object): self.send_p.close() self.plot_proc = gobject.timeout_add(200, - self.experiment_running_plot) + self.experiment_running_plot) gobject.idle_add(self.experiment_running) return @@ -384,15 +374,10 @@ class Main(object): "Start cannot equal Stop.") self.recv_p, self.send_p = multiprocessing.Pipe(duplex=True) - self.current_exp = comm.swv_exp(parameters, self.send_p) + self.current_exp = comm.SWVExp(parameters, self.send_p) self.plot.clearall() self.plot.changetype(self.current_exp) - self.rawbuffer.set_text("") - self.rawbuffer.place_cursor(self.rawbuffer.get_start_iter()) - - for i in self.current_exp.commands: - self.rawbuffer.insert_at_cursor(i) self.current_exp.run_wrapper( self.serial_liststore.get_value( @@ -448,15 +433,10 @@ class Main(object): "Start cannot equal Stop.") self.recv_p, self.send_p = multiprocessing.Pipe(duplex=True) - self.current_exp = comm.dpv_exp(parameters, self.send_p) + self.current_exp = comm.DPVExp(parameters, self.send_p) self.plot.clearall() self.plot.changetype(self.current_exp) - self.rawbuffer.set_text("") - self.rawbuffer.place_cursor(self.rawbuffer.get_start_iter()) - - for i in self.current_exp.commands: - self.rawbuffer.insert_at_cursor(i) self.current_exp.run_wrapper( self.serial_liststore.get_value( @@ -551,6 +531,9 @@ class Main(object): self.rawbuffer.set_text("") self.rawbuffer.place_cursor(self.rawbuffer.get_start_iter()) + for i in self.current_exp.commands: + self.rawbuffer.insert_at_cursor(i) + for col in zip(*self.current_exp.data): for row in col: self.rawbuffer.insert_at_cursor(str(row)+ " ") @@ -590,11 +573,11 @@ class Main(object): def on_file_save_exp_activate(self, menuitem, data=None): """Activate dialogue to save current experiment data. """ if self.current_exp: - save_inst = save.manSave(self.current_exp) + save.manSave(self.current_exp) def on_file_save_plot_activate(self, menuitem, data=None): """Activate dialogue to save current plot.""" - save_inst = save.plotSave(self.plot) + save.plotSave(self.plot) def on_menu_dropbot_connect_activate(self, menuitem, data=None): """Listen for remote control connection from µDrop.""" diff --git a/dstat-interface/dstat-interface/mpltest.py b/dstat-interface/dstat-interface/plot.py similarity index 100% rename from dstat-interface/dstat-interface/mpltest.py rename to dstat-interface/dstat-interface/plot.py