def on_btnDisconnectivity_graph_clicked(self, clicked=None): """show the disconnectivity graph it is interactive, so that when you click on an end point that minima is selected """ if clicked is None: return if not hasattr(self, "dgraph_dlg"): self.dgraph_dlg = DGraphDialog(self.system.database, parent=self) self.dgraph_dlg.dgraph_widget.minimum_selected.connect( self.on_minimum_picked) self.dgraph_dlg.dgraph_widget.minimum_selected.connect( self.SelectMinimum) self.dgraph_dlg.rebuild_disconnectivity_graph() self.dgraph_dlg.show()
def main(): if len(sys.argv) < 2: usage() exit(1) kwargs = {} outfile = None OPTIM = False opts, args = getopt.gnu_getopt(sys.argv[1:], "ho:", ["help", "nlevels=", "subgraph_size=", "OPTIM", "order_by_basin_size", "order_by_energy", "include_gmin", "center_gmin", "Emax=", ]) for o, a in opts: if o == "-h" or o == "--help": usage() exit(1) if o == "-o": outfile = a elif o == "--nlevels": kwargs["nlevels"] = int(a) elif o == "--Emax": kwargs["Emax"] = float(a) elif o == "--subgraph_size": kwargs["subgraph_size"] = int(a) elif o == "--order_by_basin_size": kwargs["order_by_basin_size"] = True elif o == "--order_by_energy": kwargs["order_by_energy"] = True elif o == "--includer_gmin": kwargs["includer_gmin"] = True elif o == "--center_gmin": kwargs["center_gmin"] = True elif o == "--OPTIM": OPTIM = True else: print "don't understand", o, a print "" usage() exit(1) if OPTIM: #make database from min.data ts.data graph = make_graph_from_files() else: if len(args) == 0: print "you must specify database file" print "" usage() exit() dbfile = args[0] if not os.path.exists(dbfile): print "database file doesn't exist", dbfile exit() db = Database(dbfile) if outfile is None and use_gui: app = QApplication(sys.argv) kwargs["show_minima"] = False md = DGraphDialog(db, params=kwargs) md.rebuild_disconnectivity_graph() md.show() sys.exit(app.exec_()) if not OPTIM: # make graph from database if "Emax" in kwargs and use_gui: graph = reduced_db2graph(db, kwargs['Emax']) else: graph = dg.database2graph(db) # do the disconnectivity graph analysis mydg = dg.DisconnectivityGraph(graph, **kwargs) print "doing disconnectivity graph analysis" sys.stdout.flush() t1 = time.time() mydg.calculate() t2 = time.time() print "d-graph analysis finished in", t2-t1, "seconds" print "number of minima:", mydg.tree_graph.number_of_leaves() print "plotting disconnectivigy graph" sys.stdout.flush() # make the figure and save it mydg.plot() if outfile is None: plt.show() else: plt.savefig(outfile) t3 = time.time() print "plotting finished in", t3-t2, "seconds"