class MainFrame(Frame): def __init__(self, parent=None, title='', direction='H', size=(750, 750), lfname=None): Frame.__init__(self, parent, title, direction, size) def Body(self): self.CreateMenu() self.CenterOnScreen() self.fig = Figure(figsize=(7, 5), dpi=100) self.canvas = FigureCanvas(self, -1, self.fig) self.figmgr = FigureManager(self.canvas, 1, self) # self.axes = [self.fig.add_subplot(221), # self.fig.add_subplot(222), # self.fig.add_subplot(223), # self.fig.add_subplot(224)] self.axis = self.fig.add_subplot(1, 2, 1) self.AddComponent(self.canvas) self.Plot() def Plot(self): self.axis.hold(False) for i in range(1): x = linspace(0, 200.0, 201) self.axis.plot(x, x**2 * sin(x / 200), '-o') self.axis.hold(True) self.canvas.draw() self.canvas.gui_repaint() def CreateMenu(self): menubar = MenuBar() menu = Menu(self) menu.Append("&Quit", self.Quit, "Quit", hotkey="Ctrl+Q") menubar.Append(menu, "&File") self.SetMenuBar(menubar) self.CreateStatusBar() def Quit(self, event=None): self.Close()
class MainFrame(Frame): def __init__(self, parent=None, title='', direction='H', size=(750, 750), lfname=None, params=None): self.fig = None # turn off security warning on tmpnam. why is it here? warnings.filterwarnings('ignore') fname = os.tempnam() warnings.resetwarnings() self.base_dir = os.path.dirname(__file__) if not self.base_dir: self.base_dir = '.' self.tmpfile = fname + "_plasticity.dat" self.modified = False self.running = False self.stopping = False self.quitting = False self.plot_first = False if not params: self.params = default_params() else: self.params = params for p in self.params['pattern_input']: if not os.path.exists(p['filename']): p['filename'] = self.base_dir + "/" + p['filename'] if lfname: if not self.__load_sim__(lfname): self.plot_first = True Frame.__init__(self, parent, title, direction, size) def Body(self): self.CreateMenu() self.CenterOnScreen() self.ResetTitle() fname = self.base_dir + "/images/plasticity_small_icon.ico" self.SetIcon(fname) self.fig = Figure(figsize=(7, 5), dpi=100) self.canvas = FigureCanvas(self, -1, self.fig) self.figmgr = FigureManager(self.canvas, 1, self) self.axes = [ self.fig.add_subplot(221), self.fig.add_subplot(222), self.fig.add_subplot(223), self.fig.add_subplot(224) ] if self.plot_first: sim = zpickle.load(self.tmpfile) sim['params']['display'] = True self.Plot(sim) def Stopping(self): return self.stopping def Yield(self): wx.Yield() def ResetTitle(self): (root, sfname) = os.path.split(self.params['save_sim_file']) if self.modified: s = ' (*)' else: s = '' title = 'Plasticity: %s%s' % (sfname, s) self.SetTitle(title) def Plot(self, sim): if not sim['params']['display']: return if sim['params']['display_module']: try: module = __import__(sim['params']['display_module'], fromlist=['UserPlot']) except ImportError: sim['params']['display'] = False dlg = MessageDialog( self, "Error", "Error in Import: %s. Turning display off" % sim['params']['display_module'], icon='error') dlg.ShowModal() dlg.Destroy() return try: module.UserPlot(self, sim) return except ValueError: sim['params']['display'] = False dlg = MessageDialog(self, "Error", "Error in display. Turning display off", icon='error') dlg.ShowModal() dlg.Destroy() return try: im = weights2image(sim['params'], sim['weights']) self.axes[0].hold(False) self.axes[0].set_axis_bgcolor('k') self.axes[0].pcolor(im, cmap=gray, edgecolors='k') self.axes[0].set_aspect('equal') num_moments = sim['moments_mat'].shape[0] self.axes[1].hold(False) num_neurons = sim['moments_mat'].shape[1] for k in range(num_neurons): for i in range(num_moments): self.axes[1].plot(sim['moments_mat'][i, k, :], '-o') self.axes[1].hold(True) self.axes[2].hold(False) response_mat = sim['response_mat'] response_var_list = sim['response_var_list'] styles = ['b-o', 'g-o'] for i, r in enumerate(response_var_list[-1]): x = r[1] y = r[2] self.axes[2].plot(x, y, styles[i]) self.axes[2].hold(True) self.axes[3].hold(False) styles = ['b-o', 'g-o'] for i, r in enumerate(response_mat): self.axes[3].plot(r, styles[i]) self.axes[3].hold(True) self.canvas.draw() self.canvas.gui_repaint() except ValueError: sim['params']['display'] = False dlg = MessageDialog(self, "Error", "Error in display. Turning display off", icon='error') dlg.ShowModal() dlg.Destroy() def Run_Pause(self, event): if not self.running: # pylab.close() self.params['tmpfile'] = self.tmpfile if os.path.exists(self.tmpfile): self.params['continue'] = 1 self.modified = True self.ResetTitle() self.running = True ## d={} ## d['params']=self.params ## zpickle.save(d,'plasticity_tmpparams.dat') ## cmd='./run_sim.py --paramfile plasticity_tmpparams.dat --from_gui 1' ## os.system(cmd) self.stopping = False run_sim(self.params, self) self.params['load_sim_file'] = self.tmpfile self.running = False if self.quitting: self.Quit() else: self.stopping = True def __load_sim__(self, lfname): sim = zpickle.load(lfname) params = sim['params'] params['save_sim_file'] = self.params['save_sim_file'] params['load_sim_file'] = '' params['continue'] = False try: params['initial_weights'] = sim['weights'] params['initial_moments'] = sim['moments'] except KeyError: self.params = params return 1 params['load_sim_file'] = self.tmpfile params['continue'] = True sim['params'] = params self.params = params zpickle.save(sim, self.tmpfile) return 0 def Reset_Simulation(self, event=None): if not os.path.exists(self.tmpfile): return self.canvas.Show(False) if self.modified: (root, sfname) = os.path.split(self.params['save_sim_file']) dlg = MessageDialog( self, text="Do you want to save the changes you made to %s?" % sfname, title="Reset", ok=0, yes_no=1, cancel=1) result = dlg.ShowModal() dlg.Destroy() if result == 'cancel': self.canvas.Show(True) return elif result == 'yes': filename = self.Save_Simulation() if not filename: # cancelled the save self.canvas.Show(True) return self.params['continue'] = False self.params['load_sim_file'] = '' self.params['initial_weights'] = [] self.params['initial_moments'] = [] for a in self.axes: a.cla() self.canvas.draw() self.canvas.Show(True) def Restart(self, event=None): if not os.path.exists(self.tmpfile): return self.canvas.Show(False) if self.modified: (root, sfname) = os.path.split(self.params['save_sim_file']) dlg = MessageDialog( self, text="Do you want to save the changes you made to %s?" % sfname, title="Restart", ok=0, yes_no=1, cancel=1) result = dlg.ShowModal() dlg.Destroy() if result == 'cancel': self.canvas.Show(True) return elif result == 'yes': filename = self.Save_Simulation() if not filename: # cancelled the save self.canvas.Show(True) return self.__load_sim__(self.tmpfile) self.params['continue'] = False self.canvas.Show(True) def Load_Simulation(self, event=None): self.canvas.Show(False) if self.modified: (root, sfname) = os.path.split(self.params['save_sim_file']) dlg = MessageDialog( self, text="Do you want to save the changes you made to %s?" % sfname, title="Load Simulation", ok=0, yes_no=1, cancel=1) result = dlg.ShowModal() dlg.Destroy() if result == 'cancel': pass elif result == 'yes': self.Save_Simulation() lfname = '' dlg = FileDialog(self, "Load Simulation", default_dir=os.getcwd() + "/sims", wildcard='DAT Files|*.dat|All Files|*.*') result = dlg.ShowModal() if result == 'ok': lfname = dlg.GetPaths()[0] dlg.Destroy() if not lfname: self.canvas.Show(True) return self.__load_sim__(lfname) sim = zpickle.load(self.tmpfile) self.Plot(sim) self.canvas.Show(True) def Save_Simulation(self, event=None): if not self.modified: return sfname = self.params['save_sim_file'] def_sfname = default_params()['save_sim_file'] if sfname == def_sfname: filename = self.Save_Simulation_As() else: filename = sfname d = zpickle.load(self.tmpfile) d['params'] = self.params zpickle.save(d, sfname) self.modified = False self.ResetTitle() return filename def Save_Simulation_As(self, event=None): self.canvas.Show(False) dlg = FileDialog(self, "Save Simulation As...", default_dir=os.getcwd() + "/sims/", wildcard='DAT Files|*.dat|All Files|*.*', save=1) result = dlg.ShowModal() if result == 'ok': filename = dlg.GetPaths()[0] else: filename = None dlg.Destroy() if filename: d = zpickle.load(self.tmpfile) self.params['save_sim_file'] = filename d['params'] = self.params zpickle.save(d, filename) self.modified = False self.ResetTitle() self.canvas.Show(True) return filename def Set_Simulation_Parameters(self, event): self.canvas.Show(False) set_simulation_parameters(self.params, self) self.canvas.Show(True) def Set_Input_Parameters(self, event): self.canvas.Show(False) set_input_parameters(self.params, self) self.canvas.Show(True) def Set_Output_Parameters(self, event): self.canvas.Show(False) set_output_parameters(self.params, self) self.canvas.Show(True) def Set_Weight_Parameters(self, event): self.canvas.Show(False) set_weight_parameters(self.params, self) self.canvas.Show(True) def Save_Parameters_As(self, event): save_parameters_as(self.params, self) def Set_Parameter_Structure(self, event): set_parameter_structure(self.params, self) def Load_Parameters(self, event): p = load_parameters(None, self) if p: self.params = p def CreateMenu(self): menubar = MenuBar() menu = Menu(self) menu.Append("L&oad State", self.Load_Simulation, "Load a Complete Simulation", hotkey="Ctrl+O") menu.Append("Load &Parameters", self.Load_Parameters, "Load Simulation Parameters") menu.AppendSeparator() menu.Append("Save Parameters As...", self.Save_Parameters_As, "Save Simulation Parameters") menu.Append("Save State As...", self.Save_Simulation_As, "Save a Complete Simulation") menu.Append("Save State", self.Save_Simulation, "Save a Complete Simulation", hotkey="Ctrl+S") menu.AppendSeparator() menu.Append("&Run/Pause", self.Run_Pause, "Run a Simulation", hotkey="Ctrl+P") menu.Append("Restart from Current State", self.Restart) menu.Append("Reset Simulation", self.Reset_Simulation, hotkey="Ctrl+R") menu.AppendSeparator() menu.Append("Export Figure...", self.Export, "Export the Screen") menu.Append("&Quit", self.Quit, "Quit", hotkey="Ctrl+Q") menubar.Append(menu, "&File") menu = Menu(self) menu.Append("&Simulation Parameters", self.Set_Simulation_Parameters) menu.Append("&Input Parameters", self.Set_Input_Parameters) menu.Append("&Output Neuron Parameters", self.Set_Output_Parameters) menu.Append("&Weight Parameters", self.Set_Weight_Parameters) menu.AppendSeparator() menu.Append("&Display", self.Display) menu.Append("Make &New Input Files", self.Nop) menu.Append("Parameter Structure", self.Set_Parameter_Structure) menubar.Append(menu, "&Edit") menu = Menu(self) menu.Append("&Help", self.Nop) menu.Append("&About", self.About) menubar.Append(menu, "&Help") self.SetMenuBar(menubar) self.CreateStatusBar() def Display(self, event=None): self.canvas.Show(False) dlg = FileDialog(self, "Choose Display Module", default_dir=os.getcwd() + "/", wildcard='Python Plot Files|plot*.py|All Files|*.*') result = dlg.ShowModal() dlg.Destroy() if result == 'ok': lfname = dlg.GetPaths()[0] modulename = os.path.splitext(os.path.split(lfname)[-1])[0] self.params['display_module'] = modulename if os.path.exists(self.tmpfile): sim = zpickle.load(self.tmpfile) self.Plot(sim) self.canvas.Show(True) def About(self, event): win = AboutWindow() win.Show() def Nop(self, event): self.canvas.Show(False) dlg = MessageDialog(self, "Error", "Function Not Implemented", icon='error') dlg.ShowModal() dlg.Destroy() self.canvas.Show(True) def Export(self, event=None): export_fig(self) def Quit(self, event=None): if self.running: self.quitting = True self.stopping = True return self.canvas.Show(False) if self.modified: (root, sfname) = os.path.split(self.params['save_sim_file']) dlg = MessageDialog( self, text="Do you want to save the changes you made to %s?" % sfname, title="Quit", ok=0, yes_no=1, cancel=1) result = dlg.ShowModal() dlg.Destroy() if result == 'cancel': self.canvas.Show(True) return elif result == 'yes': self.Save_Simulation() self.Close() if os.path.exists(self.tmpfile): os.remove(self.tmpfile)
class MainFrame(Frame): def __init__(self, x, y, style, parent=None): self.fig = None Frame.__init__(self, parent, 'Plot', 'H', size=(750, 750)) self.x = x self.y = y self.style = style self.Plot() def Body(self): self.CreateMenu() self.CenterOnScreen() self.fig = Figure(figsize=(7, 5), dpi=100) self.canvas = FigureCanvas(self, -1, self.fig) self.figmgr = FigureManager(self.canvas, 1, self) self.axes = [self.fig.add_subplot(111)] def CreateMenu(self): menubar = MenuBar() menu = Menu(self) menu.Append("&Run", self.Run, "Run", hotkey="Ctrl+R") menu.Append("Export Figure...", self.Export, "Export the Screen") menu.Append("&Quit", self.Quit, "Quit", hotkey="Ctrl+Q") menubar.Append(menu, "&File") self.running = False self.SetMenuBar(menubar) self.CreateStatusBar() def Export(self, event=None): export_fig(self) def Run(self, event=None): if self.running: self.y = self.y_bak self.UpdatePlot() else: t = 0.0 self.y_bak = self.y for t in linspace(0, 2 * pi * 4, 100): self.y = y * cos(t) self.UpdatePlot() self.running = not self.running def UpdatePlot(self): self.h.set_ydata(self.y) self.canvas.draw() self.canvas.gui_repaint() wx.Yield() def Plot(self): self.axes[0].clear() self.h, = self.axes[0].plot(self.x, self.y, self.style, linewidth=3) self.canvas.draw() self.canvas.gui_repaint() def Quit(self, event=None): self.Close()
class MainFrame(Frame): def __init__(self,x,y,style,parent=None): self.fig=None Frame.__init__(self,parent,'Plot','H',size=(750,750)) self.x=x self.y=y self.style=style self.Plot() def Body(self): self.CreateMenu() self.CenterOnScreen() self.fig = Figure(figsize=(7,5),dpi=100) self.canvas = FigureCanvas(self, -1, self.fig) self.figmgr = FigureManager(self.canvas, 1, self) self.axes = [self.fig.add_subplot(111)] def CreateMenu(self): menubar = MenuBar() menu = Menu(self) menu.Append("&Run", self.Run, "Run",hotkey="Ctrl+R") menu.Append("Export Figure...", self.Export, "Export the Screen") menu.Append("&Quit", self.Quit, "Quit",hotkey="Ctrl+Q") menubar.Append(menu, "&File") self.running=False self.SetMenuBar(menubar) self.CreateStatusBar() def Export(self,event=None): export_fig(self) def Run(self,event=None): if self.running: self.y=self.y_bak self.UpdatePlot() else: t=0.0 self.y_bak=self.y for t in linspace(0,2*pi*4,100): self.y=y*cos(t) self.UpdatePlot() self.running=not self.running def UpdatePlot(self): self.h.set_ydata(self.y) self.canvas.draw() self.canvas.gui_repaint() wx.Yield() def Plot(self): self.axes[0].clear() self.h,=self.axes[0].plot(self.x,self.y,self.style,linewidth=3) self.canvas.draw() self.canvas.gui_repaint() def Quit(self,event=None): self.Close()