def getLabel(self, label): sols = parseS.parseS() #adjust maximum label/branch mbr = max([abs(d["BR"]) for d in self] or [None]) mlab = max(self.getLabels() or [None]) for d in self: sols.extend(d.getLabel(None, mbr=mbr, mlab=mlab)) return sols(label)
def plots(sol, **kwargs): colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k'] fig = plt.figure() fig.clf() ax = fig.add_subplot(111) s = parseS.parseS(sol) if kwargs.get('xlim'): ax.set_xlim(kwargs.get('xlim')) if kwargs.get('ylim'): ax.set_ylim(kwargs.get('ylim')) if kwargs.get('x'): x = kwargs.get('x') numx = re.sub('\D', '', x) param = x.strip(numx) if param == 'U': paramx = 'U' if param == 't': paramx = 't' else: paramx = 't' if kwargs.get('y'): y = kwargs.get('y') numy = re.sub('\D', '', y) param = y.strip(numy) if param == 'U': paramy = 'U' if param == 't': paramy = 't' else: paramy = 'U' numy = 1 x = [] y = [] for i in range(len(s)): sdata = s[i] if paramx == 't': xvalue = sdata['t'] else: data = sdata['u'] xvalue = sdata[int(numx) - 1] if paramy == 't': yvalue = sdata['t'] else: data = sdata['u'] yvalue = sdata[int(numy) - 1] x.append(xvalue) y.append(yvalue) ax.set_xlabel(paramx + '(' + numx + ')') ax.set_ylabel(paramy + '(' + numy + ')') ax.plot(x, y, color='k', ls='solid')
def plots(sol, **kwargs): colors=['b', 'g', 'r', 'c', 'm', 'y', 'k'] fig=plt.figure() fig.clf() ax=fig.add_subplot(111) s=parseS.parseS(sol) if kwargs.get('xlim'): ax.set_xlim(kwargs.get('xlim')) if kwargs.get('ylim'): ax.set_ylim(kwargs.get('ylim')) if kwargs.get('x'): x=kwargs.get('x') numx=re.sub('\D', '',x) param=x.strip(numx) if param=='U': paramx='U' if param=='t': paramx='t' else: paramx='t' if kwargs.get('y'): y=kwargs.get('y') numy=re.sub('\D', '',y) param=y.strip(numy) if param=='U': paramy='U' if param=='t': paramy='t' else: paramy='U' numy=1 x=[] y=[] for i in range(len(s)): sdata=s[i] if paramx=='t': xvalue=sdata['t'] else: data=sdata['u'] xvalue=sdata[int(numx)-1] if paramy=='t': yvalue=sdata['t'] else: data=sdata['u'] yvalue=sdata[int(numy)-1] x.append(xvalue) y.append(yvalue) ax.set_xlabel(paramx+'('+numx+')') ax.set_ylabel(paramy+'('+numy+')') ax.plot(x,y,color='k',ls='solid')
def __init__(self, parent=None, cnf={}, **kw): optionDefaults = {} # The kind of diagram (single solution vs. bifur diagram) optionDefaults["type"] = ("bifurcation", self.__optionCallback) # The X column optionDefaults["bifurcation_x"] = ([0], self.__optionCallback) optionDefaults["solution_x"] = (["t"], self.__optionCallback) # The Y column optionDefaults["bifurcation_y"] = ([1], self.__optionCallback) optionDefaults["solution_y"] = ([0], self.__optionCallback) # Sets of labels that the user is likely to want to use optionDefaults["label_defaults"] = (None, self.__optionCallback) # Sets of columns that the user is likely to want to use optionDefaults["bifurcation_column_defaults"] = (None, self.__optionCallback) optionDefaults["solution_column_defaults"] = (None, self.__optionCallback) # The index of the solution we wish to draw optionDefaults["index"] = ([0], self.__optionCallback) # The label of the solution we wish to draw optionDefaults["label"] = ([0], self.__optionCallback) # Already parsed data structures optionDefaults["bifurcation_diagram"] = (parseB.parseB(), self.__optionCallback) optionDefaults["solution"] = (parseS.parseS(), self.__optionCallback) optionDefaults["bifurcation_diagram_filename"] = ("", self.__optionCallback) optionDefaults["solution_filename"] = ("", self.__optionCallback) optionDefaults["runner"] = (None, self.__optionCallback) optionDefaults["mark_t"] = (None, self.__optionCallback) optionDefaults["bifurcation_symbol"] = ("B", self.__optionCallback) optionDefaults["limit_point_symbol"] = ("L", self.__optionCallback) optionDefaults["hopf_symbol"] = ("H", self.__optionCallback) optionDefaults["period_doubling_symbol"] = ("D", self.__optionCallback) optionDefaults["torus_symbol"] = ("T", self.__optionCallback) optionDefaults["user_point_symbol"] = ("U", self.__optionCallback) optionDefaults["error_symbol"] = ("X", self.__optionCallback) optionDefaults["use_labels"] = (1, self.__optionCallback) parser = ConfigParser.ConfigParser() parser.add_section("AUTO_plotter") if os.path.exists(os.path.expandvars("$AUTO_DIR/.autorc")): parser.read(os.path.expandvars("$AUTO_DIR/.autorc")) if os.path.exists(os.path.expandvars("$HOME/.autorc")): parser.read(os.path.expandvars("$HOME/.autorc")) if os.path.exists("./.autorc"): parser.read("./.autorc") for option in parser.options("AUTO_plotter"): optionDefaults[option] = (eval(parser.get("AUTO_plotter", option)), self.__optionCallback) self.__needsPlot = None apply(grapher.GUIGrapher.__init__, (self, parent)) dict = AUTOutil.cnfmerge((cnf, kw)) self.addOptions(optionDefaults) plotter.config(self, dict)
def __init__(self,fort7_filename=None,fort8_filename=None): if (fort8_filename is None) and not(fort8_filename is None): raise AUTORuntimeError("Must set both both filenames") self.diagram = parseB.parseB() self.solution = parseS.parseS() self.dg = self.diagram self.sl = self.solution if not(fort7_filename is None): self.diagram.readFilename(fort7_filename) self.solution.readFilename(fort8_filename)
def __init__(self, fort7_filename=None, fort8_filename=None, fort9_filename=None): self.diagnostics = None if isinstance(fort7_filename, list): self.diagram = None self.solution = parseS.parseS(fort7_filename) elif fort8_filename is None and fort7_filename is not None: raise AUTOExceptions.AUTORuntimeError( "Must set both both filenames") elif isinstance(fort7_filename, str) or fort7_filename is None: self.diagram = parseB.parseB(fort7_filename) self.solution = parseS.parseS(fort8_filename) if not fort9_filename is None: self.diagnostics = parseD.parseD(fort9_filename) else: self.diagram = fort7_filename self.solution = fort8_filename self.diagnostics = fort9_filename if self.diagnostics is None: self.diagnostics = [] self.dg = self.diagram self.sl = self.solution
def getLabel(self, label, mbr=None, mlab=None): sols = [] for idx in self.labels.getIndices(): x = self._gettypelabel(idx)[1] if "solution" in x: br = abs(self["BR"]) pt = idx % 9999 + 1 lab = x["LAB"] ty = x["TY number"] sol = x["solution"] if (sol._mlab != mlab or sol._mbr != mbr or br != sol["BR"] or pt != sol["PT"] or ty != sol["TY number"] or lab != sol["LAB"]): sol = sol.__class__(sol, BR=br, PT=pt, LAB=lab, TY=ty) sol._mlab = mlab sol._mbr = mbr sols.append(sol) return parseS.parseS(sols)(label)
def readFilename(self, fort7_filename, fort8_filename=None, fort9_filename=None): parseB.parseBR.readFilename(self, fort7_filename) for i, d in enumerate(self): self[i] = bifDiagBranch(d) if fort8_filename is not None and isinstance(fort8_filename, str): solution = parseS.parseS(fort8_filename) i = 0 for d in self: for k, x in map(d._gettypelabel, d.labels.getIndices()): if x.get("LAB", 0) != 0: x["solution"] = solution[i] i = i + 1 if not fort9_filename is None: # for now just attach diagnostics information to the first branch self[0].diagnostics = parseD.parseD(fort9_filename)
def read(self, fort7_input, fort8_input=None, fort9_input=None): parseB.parseBR.read(self, fort7_input) for i, d in enumerate(self): self[i] = bifDiagBranch(d) if fort8_input is not None and (isinstance(fort8_input, (file, gzip.GzipFile))): solution = parseS.parseS() solution.read(fort8_input) i = 0 for d in self: for k, x in map(d._gettypelabel, d.labels.getIndices()): if x.get("LAB", 0) != 0: x["solution"] = solution[i] i = i + 1 if fort9_input is not None: diagnostics = parseD.parseD() diagnostics.read(fort9_input) # for now just attach diagnostics information to the first branch self[0].diagnostics = diagnostics
def __init__(self,parent=None,**kw): optionDefaults = {} # The kind of diagram (single solution vs. bifur diagram) optionDefaults["type"] = ("bifurcation",self.__optionCallback) # The X column optionDefaults["bifurcation_x"] = ([0],self.__optionCallback) optionDefaults["solution_x"] = ([-1],self.__optionCallback) # The Y column optionDefaults["bifurcation_y"] = ([1],self.__optionCallback) optionDefaults["solution_y"] = ([0],self.__optionCallback) # The Z column optionDefaults["bifurcation_z"] = (None,self.__optionCallback) optionDefaults["solution_z"] = (None,self.__optionCallback) # The coordinate names optionDefaults["bifurcation_coordnames"] = (None,self.__optionCallback) optionDefaults["solution_indepvarname"] = (None,self.__optionCallback) optionDefaults["solution_coordnames"] = (None,self.__optionCallback) optionDefaults["labelnames"] = (None,self.__optionCallback) # Sets of labels that the user is likely to want to use optionDefaults["label_defaults"] = (None,self.__optionCallback) # Sets of columns that the user is likely to want to use optionDefaults["bifurcation_column_defaults"] = (None,self.__optionCallback) optionDefaults["solution_column_defaults"] = (None,self.__optionCallback) # The index of the solution we wish to draw optionDefaults["index"] = ([0],self.__optionCallback) # The label of the solution we wish to draw optionDefaults["label"] = ([0],self.__optionCallback) # Already parsed data structures optionDefaults["bifurcation_diagram"] = (parseB.parseB(),self.__optionCallback) optionDefaults["solution"] = (parseS.parseS(),self.__optionCallback) optionDefaults["bifurcation_diagram_filename"] = ("",self.__optionCallback) optionDefaults["solution_filename"] = ("",self.__optionCallback) optionDefaults["runner"] = (None,self.__optionCallback) optionDefaults["mark_t"] = (None,self.__optionCallback) optionDefaults["letter_symbols"] = (True,self.__optionCallback) optionDefaults["bifurcation_symbol"] = ("B",self.__optionCallback) optionDefaults["limit_point_symbol"] = ("L",self.__optionCallback) optionDefaults["hopf_symbol"] = ("H",self.__optionCallback) optionDefaults["zero_hopf_symbol"] = ("ZH",self.__optionCallback) optionDefaults["bogdanov_takens_symbol"] = ("BT",self.__optionCallback) optionDefaults["cusp_symbol"] = ("CP",self.__optionCallback) optionDefaults["generalized_hopf_symbol"]= ("GH",self.__optionCallback) optionDefaults["1_1_resonance_symbol"] = ("R1",self.__optionCallback) optionDefaults["1_2_resonance_symbol"] = ("R2",self.__optionCallback) optionDefaults["1_3_resonance_symbol"] = ("R3",self.__optionCallback) optionDefaults["1_4_resonance_symbol"] = ("R4",self.__optionCallback) optionDefaults["fold_flip_symbol"] = ("LPD",self.__optionCallback) optionDefaults["fold_torus_symbol"] = ("LTR",self.__optionCallback) optionDefaults["flip_torus_symbol"] = ("PTR",self.__optionCallback) optionDefaults["torus_torus_symbol"] = ("TTR",self.__optionCallback) optionDefaults["period_doubling_symbol"] = ("D",self.__optionCallback) optionDefaults["torus_symbol"] = ("T",self.__optionCallback) optionDefaults["user_point_symbol"] = ("U",self.__optionCallback) optionDefaults["error_symbol"] = ("X",self.__optionCallback) optionDefaults["ps_colormode"] = ("color",self.__optionCallback) optionDefaults["stability"] = (False,self.__optionCallback) optionDefaults["coloring_method"] = ("curve",self.__optionCallback) parser = AUTOutil.getAUTORC("AUTO_plotter") optionDefaultsRC = {} c = parseC.parseC() for option in parser.options("AUTO_plotter"): optionDefaultsRC[option] = self.parseoption( option,parser.get("AUTO_plotter",option),c) # Let these override the RC options, if specified. for key in ["hide","xlabel","ylabel","zlabel"]: if key in kw: optionDefaultsRC[key] = kw[key] self.__needsPlot = None grapher.GUIGrapher.__init__(self,parent,**optionDefaultsRC) self.addOptions(**optionDefaults) self.addRCOptions(**optionDefaultsRC) for options in [optionDefaultsRC, kw]: if "letter_symbols" in options: self.__optionCallback("letter_symbols", options["letter_symbols"], options) del options["letter_symbols"] plotter._configNoDraw(self,**optionDefaultsRC) plotter._configNoDraw(self,**kw) self._plotNoDraw() self.__needsPlot = None for coord in 'x', 'y', 'z': if "min"+coord not in kw or "max"+coord not in kw: self.computeRange(coord,kw.get("min"+coord), kw.get("max"+coord)) grapher.GUIGrapher.plot(self)
def __realinit(self, fort7_filename, fort8_filename, fort9_filename, constants): ioerrors = [] try: parseB.parseBR.__init__(self, fort7_filename) for i, d in enumerate(self): self[i] = bifDiagBranch(d) except IOError: ioerrors.append(str(sys.exc_info()[1])) parseB.parseBR.__init__(self) fort7_filename = None if isinstance(fort8_filename, parseS.AUTOSolution): fort8_filename = [fort8_filename] try: solution = parseS.parseS(fort8_filename) except IOError: ioerrors.append(str(sys.exc_info()[1])) solution = None if fort7_filename is None: raise AUTOExceptions.AUTORuntimeError('\n'.join(ioerrors)) if fort7_filename is None and fort8_filename is not None: # simulate a bifurcation diagram labels = {} for s in solution: br = s["Branch number"] if labels == {} or br != branch.BR: if labels != {}: branch.labels = Points.PointInfo(labels) branch = bifDiagBranch() self.append(branch) branch.BR = br branch.coordarray = [] branch.coordnames = [] branch.headernames = [] branch.headerlist = [] branch.c = constants labels = {} base = 0 i = 0 pt = s["PT"] lab = s["LAB"] ty = s["TY number"] if i >= base + pt - 1: # point numbers wrapped around base += 9999 i = base + pt - 1 labels[i] = {s["TY"]: {"LAB": lab, "TY number": ty, "PT": pt}} if labels != {}: branch.labels = Points.PointInfo(labels) if fort9_filename is not None and self.data != []: try: # for now just attach diagnostics information to first branch self[0].diagnostics = parseD.parseD(fort9_filename) except IOError: pass i = 0 if solution is not None: for d in self: if constants is None and d.c is not None: constants = d.c constants = parseC.parseC(constants) for k in constants: if k in self.nonekeys: constants[k] = None for ind in d.labels.getIndices(): if i >= len(solution): break x = d._gettypelabel(ind)[1] s = solution[i] if x.get("LAB", 0) != 0 or s["LAB"] == 0: i = i + 1 s = x["solution"] = parseS.AUTOSolution( s, constants=constants) if d.coordnames != []: s.b = d[ind]
def __init__(self,parent=None,cnf={},**kw): optionDefaults={} optionDefaults["problem"] = ("auto_plotter3d",self.__optionCallback) # The kind of diagram (single solution vs. bifur diagram) optionDefaults["type"] = ("bifurcation",self.__optionCallback) # The X column optionDefaults["bifurcation_x"] = ([0],self.__optionCallback) optionDefaults["solution_x"] = (["t"],self.__optionCallback) # The Y column optionDefaults["bifurcation_y"] = ([1],self.__optionCallback) optionDefaults["solution_y"] = ([0],self.__optionCallback) # The Z column optionDefaults["bifurcation_z"] = ([1],self.__optionCallback) optionDefaults["solution_z"] = ([0],self.__optionCallback) # The Color column optionDefaults["bifurcation_color"] = ([1],self.__optionCallback) optionDefaults["solution_color"] = ([0],self.__optionCallback) # Sets of labels that the user is likely to want to use optionDefaults["label_defaults"] = (None,self.__optionCallback) # Sets of columns that the user is likely to want to use optionDefaults["bifurcation_column_defaults"] = (None,self.__optionCallback) optionDefaults["solution_column_defaults"] = (None,self.__optionCallback) # The index of the solution we wish to draw optionDefaults["index"] = ([0],self.__optionCallback) # The label of the solution we wish to draw optionDefaults["label"] = ([0],self.__optionCallback) # Already parsed data structures optionDefaults["bifurcation_diagram"] = (parseB.parseB(),self.__optionCallback) optionDefaults["solution"] = (parseS.parseS(),self.__optionCallback) optionDefaults["bifurcation_diagram_filename"] = ("",self.__optionCallback) optionDefaults["solution_filename"] = ("",self.__optionCallback) optionDefaults["runner"] = (None,self.__optionCallback) optionDefaults["mark_t"] = (None, self.__optionCallback) optionDefaults["mark_t_radius"] = (0.01, self.__optionCallback) optionDefaults["mark_t_color"] = ((1.0,1.0,1.0), self.__optionCallback) # Options for the GUI optionDefaults["bifurcation_x_scale"] = (1.0,None) optionDefaults["bifurcation_y_scale"] = (1.0,None) optionDefaults["bifurcation_z_scale"] = (1.0,None) optionDefaults["bifurcation_x_trans"] = (0.0,None) optionDefaults["bifurcation_y_trans"] = (0.0,None) optionDefaults["bifurcation_z_trans"] = (0.0,None) optionDefaults["solution_x_scale"] = (1.0,None) optionDefaults["solution_y_scale"] = (1.0,None) optionDefaults["solution_z_scale"] = (1.0,None) optionDefaults["solution_x_trans"] = (0.0,None) optionDefaults["solution_y_trans"] = (0.0,None) optionDefaults["solution_z_trans"] = (0.0,None) optionDefaults["line_width"] = (1.0,None) optionDefaults["cylinder"] = (0,None) optionDefaults["geom_comp"] = (7,None) optionDefaults["light_comp"] = (7,None) optionDefaults["write_points_on"] = (0,None) optionDefaults["grid_on"] = (0,None) optionDefaults["grid_lines"] = (6,None) optionDefaults["grid_1_start"] = (-1.0,None) optionDefaults["grid_2_start"] = (-1.0,None) optionDefaults["grid_1_end"] = (1.0,None) optionDefaults["grid_2_end"] = (1.0,None) optionDefaults["grid_width"] = (1.0,None) optionDefaults["grid_R"] = (1.0,None) optionDefaults["grid_G"] = (1.0,None) optionDefaults["grid_B"] = (1.0,None) optionDefaults["grid_cylinder"] = (0,None) optionDefaults["grid_direction"]= (["x","y","z"],None) optionDefaults["cube_on"] = (1,None) optionDefaults["cube_R"] = (1.0,None) optionDefaults["cube_G"] = (1.0,None) optionDefaults["cube_B"] = (1.0,None) optionDefaults["auto_center"]= (1,None) optionDefaults["auto_scale"]= (1,None) parser = ConfigParser.ConfigParser() parser.add_section("AUTO_plotter3D") if(os.path.exists(os.path.expandvars("$AUTO_DIR/.autorc"))): parser.read(os.path.expandvars("$AUTO_DIR/.autorc")) if(os.path.exists(os.path.expandvars("$HOME/.autorc"))): parser.read(os.path.expandvars("$HOME/.autorc")) if(os.path.exists("./.autorc")): parser.read("./.autorc") for option in parser.options("AUTO_plotter3D"): optionDefaults[option] = (eval(parser.get("AUTO_plotter3D",option)),self.__optionCallback) Tkinter.Frame.__init__(self,parent) optionHandler.OptionHandler.__init__(self) self.user_data = {} dict = AUTOutil.cnfmerge((cnf,kw)) self.addOptions(optionDefaults) plotter3D.config(self,dict)
def __init__(self,parent=None,cnf={},**kw): optionDefaults={} optionDefaults["problem"] = ("auto_plotter3d",self.__optionCallback) # The kind of diagram (single solution vs. bifur diagram) optionDefaults["type"] = ("bifurcation",self.__optionCallback) # The X column optionDefaults["bifurcation_x"] = ([0],self.__optionCallback) optionDefaults["solution_x"] = (["t"],self.__optionCallback) # The Y column optionDefaults["bifurcation_y"] = ([1],self.__optionCallback) optionDefaults["solution_y"] = ([0],self.__optionCallback) # The Z column optionDefaults["bifurcation_z"] = ([1],self.__optionCallback) optionDefaults["solution_z"] = ([0],self.__optionCallback) # The Color column optionDefaults["bifurcation_color"] = ([1],self.__optionCallback) optionDefaults["solution_color"] = ([0],self.__optionCallback) # Sets of labels that the user is likely to want to use optionDefaults["label_defaults"] = (None,self.__optionCallback) # Sets of columns that the user is likely to want to use optionDefaults["bifurcation_column_defaults"] = (None,self.__optionCallback) optionDefaults["solution_column_defaults"] = (None,self.__optionCallback) # The index of the solution we wish to draw optionDefaults["index"] = ([0],self.__optionCallback) # The label of the solution we wish to draw optionDefaults["label"] = ([0],self.__optionCallback) # Already parsed data structures optionDefaults["bifurcation_diagram"] = (parseB.parseB(),self.__optionCallback) optionDefaults["solution"] = (parseS.parseS(),self.__optionCallback) optionDefaults["bifurcation_diagram_filename"] = ("",self.__optionCallback) optionDefaults["solution_filename"] = ("",self.__optionCallback) optionDefaults["runner"] = (None,self.__optionCallback) optionDefaults["mark_t"] = (None, self.__optionCallback) optionDefaults["mark_t_radius"] = (0.01, self.__optionCallback) optionDefaults["mark_t_color"] = ((1.0,1.0,1.0), self.__optionCallback) optionDefaults["special_point"] = (None, self.__optionCallback) optionDefaults["special_point_radius"] = (0.005, self.__optionCallback) optionDefaults["special_point_colors"] = ([[0.0,0.0,1.0], #Blue for branch point [0.0,1.0,0.0], #Green for fold [1.0,1.0,0.0], #Yellow for hopf [0.0,1.0,1.0], #Cyan for Period Doubling [1.0,0.0,0.0], #Red for Torus [0.5,0.5,0.5], #Grey for user requested point [0.1,0.1,0.1]], #Dark grey for error self.__optionCallback) # Options for the GUI optionDefaults["bifurcation_x_scale"] = (1.0,None) optionDefaults["bifurcation_y_scale"] = (1.0,None) optionDefaults["bifurcation_z_scale"] = (1.0,None) optionDefaults["bifurcation_x_trans"] = (0.0,None) optionDefaults["bifurcation_y_trans"] = (0.0,None) optionDefaults["bifurcation_z_trans"] = (0.0,None) optionDefaults["solution_x_scale"] = (1.0,None) optionDefaults["solution_y_scale"] = (1.0,None) optionDefaults["solution_z_scale"] = (1.0,None) optionDefaults["solution_x_trans"] = (0.0,None) optionDefaults["solution_y_trans"] = (0.0,None) optionDefaults["solution_z_trans"] = (0.0,None) optionDefaults["line_width"] = (1.0,None) optionDefaults["cylinder"] = (0,None) optionDefaults["geom_comp"] = (7,None) optionDefaults["light_comp"] = (7,None) optionDefaults["write_points_on"] = (0,None) optionDefaults["grid_on"] = (0,None) optionDefaults["grid_lines"] = (6,None) optionDefaults["grid_1_start"] = (-1.0,None) optionDefaults["grid_2_start"] = (-1.0,None) optionDefaults["grid_1_end"] = (1.0,None) optionDefaults["grid_2_end"] = (1.0,None) optionDefaults["grid_width"] = (1.0,None) optionDefaults["grid_R"] = (1.0,None) optionDefaults["grid_G"] = (1.0,None) optionDefaults["grid_B"] = (1.0,None) optionDefaults["grid_cylinder"] = (0,None) optionDefaults["grid_direction"]= (["x","y","z"],None) optionDefaults["cube_on"] = (1,None) optionDefaults["cube_R"] = (1.0,None) optionDefaults["cube_G"] = (1.0,None) optionDefaults["cube_B"] = (1.0,None) optionDefaults["auto_center"]= (1,None) optionDefaults["auto_scale"]= (1,None) parser = ConfigParser.ConfigParser() parser.add_section("AUTO_plotter3D") if(os.path.exists(os.path.expandvars("$AUTO_DIR/.autorc"))): parser.read(os.path.expandvars("$AUTO_DIR/.autorc")) if(os.path.exists(os.path.expandvars("$HOME/.autorc"))): parser.read(os.path.expandvars("$HOME/.autorc")) if(os.path.exists("./.autorc")): parser.read("./.autorc") for option in parser.options("AUTO_plotter3D"): optionDefaults[option] = (eval(parser.get("AUTO_plotter3D",option)),self.__optionCallback) geom.Geometry.__init__(self,parent) optionHandler.OptionHandler.__init__(self,geom.Geometry) self.user_data = {} dict = AUTOutil.cnfmerge((cnf,kw)) self.addOptions(optionDefaults) self.set_problem(self.cget("problem")) plotter3D.config(self,dict) self.zoom_scale = 0.03 self.default_zoom = -10.0 self.bind('<Lock-ButtonPress-3>',self.zoom_mouse_down) self.bind('<Lock-Button3-Motion>',self.zoom_mouse_move) self.zoom(0.15) self.bind('<ButtonPress-3>',self.translate_mouse_down) self.bind('<Button3-Motion>',self.translate_mouse_move) self.bind('<Shift-ButtonPress-2>',self.zoom_mouse_down) self.bind('<Shift-Button2-Motion>',self.zoom_mouse_move) self.bind('<ButtonPress-2>',self.rotate_mouse_down) self.bind('<Button2-Motion>',self.rotate_mouse_move) self.bind('<ButtonRelease-2>',self.spin_mouse) self.tk_focusFollowsMouse() self.bind('<KeyPress-Up>',self.KeyEvent) self.bind('<KeyPress-Down>',self.KeyEvent) self.bind('<KeyPress-Left>',self.KeyEvent) self.bind('<KeyPress-Right>',self.KeyEvent) self.bind('<KeyPress-Next>',self.KeyEvent) self.bind('<KeyPress-Prior>',self.KeyEvent) self.bind('<Control-KeyPress-Up>',self.KeyEvent) self.bind('<Control-KeyPress-Down>',self.KeyEvent) self.bind('<Control-KeyPress-Left>',self.KeyEvent) self.bind('<Control-KeyPress-Right>',self.KeyEvent) self.bind('<Control-KeyPress-Next>',self.KeyEvent) self.bind('<Control-KeyPress-Prior>',self.KeyEvent)