def readCgTrajectories(self, atomList, flexibleAtoms): cgFileName = self.getParam("cg_output_file") bestCgScore = 10000000 bestCgScoreFile = "" bestCgRmsd = 10000000 bestCgRmsdFile = "" outputDir = self.getParam("output_directory") trajectoryFile = self.getParam("md_trajectory_output_file") fullFile = os.path.join(outputDir, trajectoryFile) rh = RMF.open_rmf_file(fullFile) IMP.rmf.set_hierarchies(rh, [self.protein]) framesToRead = atomicDominoUtilities.getMdIntervalFrames(rh, int(self.getParam("cg_interval")), self.protein) skipCgDomino = int(self.getParam("skip_cg_domino")) if (len(framesToRead) > 0): for cgNumber in framesToRead: #Open next cg trajectory outputDir = self.getParam("output_directory") fullCgFileName = os.path.join(outputDir, "%s%s" % (cgFileName, cgNumber)) rh = RMF.open_rmf_file(fullCgFileName) IMP.rmf.set_hierarchies(rh, [self.protein]) #Only look at the bottom 20 frames frameCount = IMP.rmf.get_number_of_frames(rh, self.protein) cgFrames = [] startFrameCount = 0 if (frameCount > 20): startFrameCount = frameCount - 20 for i in range(startFrameCount, frameCount): cgFrames.append(i) #Process trajectory cgScoreOutputFile = os.path.join(outputDir, "%s%s" % (self.getParam("cg_score_output_file"), cgNumber)) [cgScore, cgScoreFrame, cgRmsd, cgRmsdFrame] = self.readTrajectoryFile(atomList, rh, cgFrames, cgScoreOutputFile, skipCgDomino, flexibleAtoms) print "cg number %s rmsd %s score %s" % (cgNumber, cgRmsd, cgScore) #Update best score if (cgScore < bestCgScore): bestCgScore = cgScore bestCgScoreFile = fullCgFileName if (cgRmsd < bestCgRmsd): bestCgRmsd = cgRmsd bestCgRmsdFile = fullCgFileName #output best score information self.singlePdbResults(bestCgScoreFile, -1, self.getParam("best_cg_score_output_file")) self.singlePdbResults(bestCgRmsdFile, -1, self.getParam("best_cg_rmsd_output_file")) self.singlePdbResults("%s%s" % (cgFileName, framesToRead[-1]), -1, self.getParam("final_cg_frame_output_file")) finalCgRmsd = self.calculateNativeRmsd(flexibleAtoms) print "final cg rmsd is %s " % finalCgRmsd self.bestCgScore = round(bestCgScore, 2) self.bestCgRmsd = round(bestCgRmsd, 2) self.bestCgScoreFile = bestCgScoreFile self.bestCgRmsdFile = bestCgRmsdFile
def runAllCg(self): cgInterval = int(self.getParam("cg_interval")) outputDir = self.getParam("output_directory") trajectoryFile = self.getParam("md_trajectory_output_file") fullFile = os.path.join(outputDir, trajectoryFile) print "open rmf %s" % fullFile rh = RMF.open_rmf_file(fullFile) IMP.rmf.set_hierarchies(rh, [self.protein]) framesToRead = atomicDominoUtilities.getMdIntervalFrames(rh, cgInterval, self.protein) for i in framesToRead: cgFileName = "%s%s" % (self.getParam("cg_output_file"), i) self.applyCg(i, cgFileName)
def readTrajectories(self): cgFileName = self.getParam("cg_output_file") bestCgScore = 10000000 bestCgScoreFile = "" bestCgRmsd = 10000000 bestCgRmsdFile = "" outputDir = self.getParam("output_directory") trajectoryFile = self.getParam("md_trajectory_output_file") fullFile = os.path.join(outputDir, trajectoryFile) rh = RMF.open_rmf_file(fullFile) IMP.rmf.set_hierarchies(rh, [self.protein]) framesToRead = atomicDominoUtilities.getMdIntervalFrames(rh, int(self.getParam("cg_interval")), self.protein) if (len(framesToRead) > 0): for cgNumber in framesToRead: #Open next cg trajectory outputDir = self.getParam("output_directory") fullCgFileName = os.path.join(outputDir, "%s%s" % (cgFileName, cgNumber)) rh = RMF.open_rmf_file(fullCgFileName) IMP.rmf.set_hierarchies(rh, [self.protein]) frameCount = IMP.rmf.get_number_of_frames(rh, self.protein) IMP.rmf.load_frame(rh, frameCount - 1, self.protein) score = self.model.evaluate(False) rmsd = self.calculateNativeRmsd(self.flexibleAtoms) print "cg number %s has score %s rmsd %s" % (cgNumber, score, rmsd) if (score < bestCgScore): bestCgScore = score bestCgScoreFile = fullCgFileName if (rmsd < bestCgRmsd): bestCgRmsd = rmsd bestCgRmsdFile = fullCgFileName #output best score information self.singlePdbResults(bestCgScoreFile, -1, self.getParam("best_cg_score_output_file")) self.singlePdbResults(bestCgRmsdFile, -1, self.getParam("best_cg_rmsd_output_file")) self.singlePdbResults("%s%s" % (cgFileName, framesToRead[-1]), -1, self.getParam("final_cg_frame_output_file")) finalCgRmsd = self.calculateNativeRmsd(self.flexibleAtoms) self.bestCgScore = bestCgScore self.bestCgRmsd = bestCgRmsd self.finalCgRmsd = finalCgRmsd
def readMdTrajectory(self, atomList, flexibleAtoms): #open trajectory file outputDir = self.getParam("output_directory") trajectoryFile = self.getParam("md_trajectory_output_file") fullFile = os.path.join(outputDir, trajectoryFile) rh = RMF.open_rmf_file(fullFile) IMP.rmf.set_hierarchies(rh, [self.protein]) framesToRead = atomicDominoUtilities.getMdIntervalFrames(rh, int(self.getParam("md_interval")), self.protein) print "preparing to read md frames %s" % framesToRead #prepare data structures for tracking particleInfo = {} #for each particle, list where each entry corresponds to an md step, and its value [domino state, coordinates] particleStatesSeen = {} #for each particle, dictionary where the key is the grid index and value is domino state for atomName in atomList: particle = self.namesToParticles[atomName] particleInfo[atomName] = [] particleStatesSeen[atomName] = {} self.particleStatesSeen = particleStatesSeen self.particleInfo = particleInfo #read trajectory file mdScoreOutputFile = os.path.join(outputDir, "%s" % self.getParam("md_score_output_file")) [bestMdScore, bestScoreFrame, bestRmsd, bestRmsdFrame] = self.readTrajectoryFile(atomList, rh, framesToRead, mdScoreOutputFile, 0, flexibleAtoms) #output best score information #print "try loading bad frame" self.singlePdbResults(fullFile, bestScoreFrame, self.getParam("best_md_score_output_file")) #self.singlePdbResults(fullFile, 10000, self.getParam("best_md_score_output_file")) self.singlePdbResults(fullFile, bestRmsdFrame, self.getParam("best_md_rmsd_output_file")) self.singlePdbResults(fullFile, -1, self.getParam("final_md_frame_output_file")) self.bestMdScore = round(bestMdScore, 2) self.bestMdRmsd = round(bestRmsd, 2) self.bestMdScoreFrame = bestScoreFrame self.bestMdRmsdFrame = bestRmsdFrame