if __name__ == "__main__": if len(sys.argv) == 1: print("Usage: graphDFT-SP slurmFile/nodeKey") elif len(sys.argv) == 2: slurmFile = sys.argv[1] currentDir = getcwd() gaussianFile = getGaussianInpFromSlurmFile(slurmFile) gaussianLog = gaussianFile.replace("inp", "log") sm = GraphManager() graph = sm.isGraphHere(currentDir) if not graph: jobGraph = nx.DiGraph() newNode = GaussianNode(gaussianFile, currentDir) newNode.slurmFile = slurmFile newNode.status = "finished" jobGraph.add_node(currentDir, data=newNode) addManySPcorrections(jobGraph, currentDir) result = sm.addGraph(jobGraph, currentDir) if result: sm.buildGraphDirectories(jobGraph) sm.saveGraphs() print("Created new graph") else: addManySPcorrections(graph, currentDir) sm.buildGraphDirectories(graph) sm.saveGraphs() print("Added nodes to existing graph")
if len(sys.argv) == 7: additionalName = sys.argv[6] if isfile(whamLog): tsReactionCoord = getTScoords(whamLog) else: tsReactionCoord = float(whamLog) print("Found reaction coordinate: ", tsReactionCoord) data = parseFDynamoCompileScript(compileScript) definedAtoms = data["definedAtoms"] atoms = atomsFromAtomSelection(definedAtoms) currentDir = abspath(dirname(compileScript)) graphDir = join(getcwd(), "multiTSsearch-" + method + additionalName) sm = GraphManager() graph = sm.isGraphHere(graphDir) if not graph: newGraph = jobGraph = buildGraph(tsReactionCoord, atoms, graphDir, data, currentDir, TSno, method, basis) result = sm.addGraph(newGraph, graphDir) if result: sm.buildGraphDirectories(newGraph) sm.saveGraphs() print("Created new graph") else: print("Cannot create more than one graph in the same directory")
rmsdDir = join(currentDir, "rmsd") rmsdNode = CppTrajNode("rmsd.slurm", rmsdDir, topologyFile, md1Dir) rmsdNode.time = "1:00:00" rmsdNode.partition = "plgrid-short" jobGraph.add_node(rmsdDir, data = rmsdNode) jobGraph.add_edge(md1Dir, rmsdDir) return jobGraph if __name__ == "__main__": if len(sys.argv) != 3: print("graphAmberDyn topology file, coordinates") else: sm = GraphManager() currentDir = getcwd() graph = sm.isGraphHere(currentDir) topology = sys.argv[1] coordinates = sys.argv[2] if not graph: newGraph = generateGraph(topology, coordinates) result = sm.addGraph(newGraph, currentDir) if result: sm.buildGraphDirectories(newGraph) sm.saveGraphs() print("Created new graph") else: print("Cannot create more than one graph in the same directory")
def addTSsearch (jobGraph, rootDir, currentDir, baseData, initialGeom, index): newNode = FDynamoNode("tsSearch.f90", currentDir) newNode.verification = ["Opt" , "Freq"] newNode.noOfExcpectedImaginaryFrequetions = 1 newNode.templateKey = "QMMM_opt_mopac" newNode.additionalKeywords = { "ts_search" : "true" } newNode.coordsIn = "coordsIn.crd" makedirs(currentDir) saveCrdFromDCD( join(currentDir, "coordsIn.crd"), initialGeom ) newNode.coordsOut = "coordsDone.crd" newNode.getCoordsFromParent = False newNode.fDynamoPath = baseData["fDynamoPath"] newNode.charge = baseData["charge"] newNode.method = baseData["method"] newNode.forceField = data["forceField"] copyfile( join(baseData["filesDir"], baseData["forceField"]), join(currentDir, newNode.forceField) ) newNode.flexiblePart = data["flexiblePart"] copyfile( join(baseData["filesDir"], baseData["flexiblePart"]), join(currentDir, newNode.flexiblePart) ) newNode.sequence = data["sequence"] copyfile( join(baseData["filesDir"], baseData["sequence"]), join(currentDir, newNode.sequence) ) newNode.qmSele = data["qmSele"] jobGraph.add_node(currentDir, data = newNode) jobGraph.add_edge(rootDir, currentDir) newDir = join(currentDir, "irc_reverse") newNode = FDynamoNode("irc_reverse.f90", newDir) newNode.verification = ["SP"] newNode.templateKey = "QMMM_irc_mopac" newNode.additionalKeywords = { "IRC_dir" : "-1" } newNode.coordsIn = "coordsStart.crd" newNode.coordsOut = "coordsDone.crd" jobGraph.add_node(newDir, data = newNode) jobGraph.add_edge(currentDir, newDir) optDir = join(newDir, "opt") newNode = FDynamoNode("opt.f90", optDir) newNode.verification = ["Opt", "Freq"] newNode.noOfExcpectedImaginaryFrequetions = 0 newNode.templateKey = "QMMM_opt_mopac" newNode.additionalKeywords = { "ts_search" : "false" , "definedAtoms" : baseData["definedAtoms"]} newNode.coordsIn = "coordsStart.crd" newNode.coordsOut = "coordsDone"+str(index)+".crd" newNode.measureRCinOutput = True jobGraph.add_node(optDir, data = newNode) jobGraph.add_edge( newDir, optDir) newDir = join(currentDir, "irc_forward") newNode = FDynamoNode("irc_forward.f90", newDir) newNode.verification = ["SP"] newNode.templateKey = "QMMM_irc_mopac" newNode.additionalKeywords = { "IRC_dir" : "1" } newNode.coordsIn = "coordsStart.crd" newNode.coordsOut = "coordsDone.crd" jobGraph.add_node(newDir, data = newNode) jobGraph.add_edge(currentDir, newDir) optDir = join(newDir, "opt") newNode = FDynamoNode("opt.f90", optDir) newNode.verification = ["Opt", "Freq"] newNode.noOfExcpectedImaginaryFrequetions = 0 newNode.templateKey = "QMMM_opt_mopac" newNode.additionalKeywords = { "ts_search" : "false" , "definedAtoms" : baseData["definedAtoms"]} newNode.coordsIn = "coordsStart.crd" newNode.coordsOut = "coordsDone"+str(index)+".crd" newNode.measureRCinOutput = True jobGraph.add_node(optDir, data = newNode) jobGraph.add_edge( newDir, optDir) if len(sys.argv) < 4: print("Usage: graphTSsearchWHAM wham.log/RC compileScanScript.sh numberOfTS2find addName") else: whamLog = sys.argv[1] compileScript = sys.argv[2] TSno = int(sys.argv[3]) addName = "" if len(sys.argv) > 4: addName = sys.argv[4] if isfile(whamLog): tsReactionCoord = getTScoords(whamLog) else: tsReactionCoord = float(whamLog) print("Found reaction coordinate: ", tsReactionCoord) data = parseFDynamoCompileScript(compileScript) definedAtoms = data["definedAtoms"] atoms = atomsFromAtomSelection( definedAtoms) currentDir = abspath(dirname(compileScript)) graphDir = join( getcwd(), "multiTSsearch"+addName ) sm = GraphManager() graph = sm.isGraphHere(graphDir) if not graph: newGraph = jobGraph = buildGraph(tsReactionCoord, atoms, graphDir, data, currentDir, TSno) result = sm.addGraph(newGraph, graphDir) if result: sm.buildGraphDirectories(newGraph) sm.saveGraphs() print("Created new graph") else: print("Cannot create more than one graph in the same directory")