def xmippNormStack(self, inStackPath, outStackPath): ### convert stack into single spider files selfile = apXmipp.breakupStackIntoSingleFiles(inStackPath) ### setup Xmipp command xmippexe = apParam.getExecPath("xmipp_normalize", die=True) apDisplay.printMsg("Using Xmipp to normalize particle stack") normtime = time.time() xmippopts = ( " " +" -i %s"%os.path.join(self.params['rundir'],selfile) +" -method Ramp " +" -background circle %i"%(self.stack['boxsize']/self.params['bin']*0.4) +" -remove_black_dust" +" -remove_white_dust" +" -thr_black_dust -%.2f"%(self.params['xmipp-norm']) +" -thr_white_dust %.2f"%(self.params['xmipp-norm']) ) xmippcmd = xmippexe+" "+xmippopts apParam.runCmd(xmippcmd, package="Xmipp", verbose=True, showcmd=True) normtime = time.time() - normtime apDisplay.printMsg("Xmipp normalization time: "+apDisplay.timeString(normtime)) ### recombine particles to a single imagic stack tmpstack = "tmp.xmippStack.hed" apXmipp.gatherSingleFilesIntoStack(selfile,tmpstack) apFile.moveStack(tmpstack,outStackPath) ### clean up directory apFile.removeFile(selfile) apFile.removeDir("partfiles")
def start(self): # Path of the stack stackdata = apStack.getOnlyStackData(self.params['stackid']) fn_oldstack = os.path.join(stackdata['path']['path'], stackdata['name']) # Convert the stack to Xmipp apXmipp.breakupStackIntoSingleFiles(fn_oldstack) # Run sort junk cmd = "xmipp_sort_by_statistics -i partlist.sel" apDisplay.printColor(cmd, "cyan") proc = subprocess.Popen(cmd, shell=True) proc.wait() # Create sorted stack apXmipp.gatherSingleFilesIntoStack("sort_junk.sel", "sorted.hed") # Create average MRC apStack.averageStack("sorted.hed") # Remove intermediate stuff #os.unlink("partlist.sel") #shutil.rmtree("partfiles") # Upload results self.uploadResults() time.sleep(1) return
def xmippNormStack(self, inStackPath, outStackPath): ### convert stack into single spider files selfile = apXmipp.breakupStackIntoSingleFiles(inStackPath) ### setup Xmipp command xmippexe = apParam.getExecPath("xmipp_normalize", die=True) apDisplay.printMsg("Using Xmipp to normalize particle stack") normtime = time.time() xmippopts = (" " + " -i %s" % os.path.join(self.params['rundir'], selfile) + " -method Ramp " + " -background circle %i" % (self.stack['boxsize'] / self.params['bin'] * 0.4) + " -remove_black_dust" + " -remove_white_dust" + " -thr_black_dust -%.2f" % (self.params['xmipp-norm']) + " -thr_white_dust %.2f" % (self.params['xmipp-norm'])) xmippcmd = xmippexe + " " + xmippopts apParam.runCmd(xmippcmd, package="Xmipp", verbose=True, showcmd=True) normtime = time.time() - normtime apDisplay.printMsg("Xmipp normalization time: " + apDisplay.timeString(normtime)) ### recombine particles to a single imagic stack tmpstack = "tmp.xmippStack.hed" apXmipp.gatherSingleFilesIntoStack(selfile, tmpstack) apFile.moveStack(tmpstack, outStackPath) ### clean up directory apFile.removeFile(selfile) apFile.removeDir("partfiles")
def start(self): # Path of the stack stackdata = apStack.getOnlyStackData(self.params['stackid']) fn_oldstack = os.path.join(stackdata['path']['path'], stackdata['name']) # Convert the stack to Xmipp apXmipp.breakupStackIntoSingleFiles(fn_oldstack) # Run sort junk cmd = "xmipp_sort_by_statistics -i partlist.sel" apDisplay.printColor(cmd, "cyan") proc = subprocess.Popen(cmd, shell=True) proc.wait() # Create sorted stack apXmipp.gatherSingleFilesIntoStack("sort_junk.sel","sorted.hed") # Create average MRC apStack.averageStack("sorted.hed") # Remove intermediate stuff #os.unlink("partlist.sel") #shutil.rmtree("partfiles") # Upload results self.uploadResults() time.sleep(1) return
def applyEnvelopeAndCTF(self, stack): ### get defocus lists numpart = self.params['projcount'] cut = int(numpart/80.0)+1 apDisplay.printMsg("%d particles per dot"%(cut)) if len(self.deflist1) == 0: self.getListOfDefoci(numpart) ### break up particles partlistdocfile = apXmipp.breakupStackIntoSingleFiles(stack, filetype="mrc") t0 = time.time() apDisplay.printMsg("Applying CTF and Envelop to particles") ### apply CTF using ACE2 ctfapplydocfile = self.applyCTFToDocFile(partlistdocfile) ### apply Envelop using ACE2 envelopdocfile = self.applyEnvelopToDocFile(ctfapplydocfile) ### correct CTF using ACE2 if self.params['ace2correct'] is True or self.params['ace2correct_rand'] is True: ctfcorrectdocfile = self.correctCTFToDocFile(envelopdocfile) else: ctfcorrectdocfile = envelopdocfile timeper = (time.time()-t0)/float(numpart) apDisplay.printColor("Total time %s"%(apDisplay.timeString(time.time()-t0)), "green") apDisplay.printColor("Time per particle %s"%(apDisplay.timeString(timeper)), "green") ### write corrected particle list to doc file ctfpartlist = [] ctfpartlistfile = os.path.join(self.params['rundir'], "ctfpartlist.lst") inf = open(ctfcorrectdocfile, 'r') outf = open(ctfpartlistfile, "w") for line in inf: ### get filename filename = line.strip().split()[0] if not os.path.isfile(filename): apDisplay.printError("CTF and envelop apply failed") ctfpartlist.append(filename) outf.write(filename+"\t1\n") inf.close() outf.close() ### merge individual files into a common stack ctfstack = os.path.join(self.params['rundir'], "ctfstack.hed") apXmipp.gatherSingleFilesIntoStack(ctfpartlistfile, ctfstack, filetype="mrc") if self.params['pad'] is True: emancmd = "proc2d %s %s.clip.hed clip=%d,%d" % (ctfstack, ctfstack[:-4], self.params['box'], self.params['box']) apParam.runCmd(emancmd, "EMAN") shutil.move("%s.clip.hed" % ctfstack[:-4], "%s.hed" % ctfstack[:-4]) shutil.move("%s.clip.img" % ctfstack[:-4], "%s.img" % ctfstack[:-4]) return ctfstack, ctfpartlist
def createReferenceStack(self): # Create a stack for the class averages at each level Nlevels=len(glob.glob("part"+self.params['timestamp']+"_level_??_.sel")) for level in range(Nlevels): stack=[] for f in glob.glob("part"+self.params['timestamp']+"_level_%02d_[0-9]*.xmp"%level): stack.append(spider.read(f)) apImagicFile.writeImagic(stack, "part"+self.params['timestamp']+"_level_%02d_.hed"%level) if self.params['align']: apXmipp.gatherSingleFilesIntoStack("partlist.sel","alignedStack.hed") return
def createReferenceStack(self): # Create a stack for the class averages at each level Nlevels = len( glob.glob("part" + self.params['timestamp'] + "_level_??_.sel")) for level in range(Nlevels): stack = [] for f in glob.glob("part" + self.params['timestamp'] + "_level_%02d_[0-9]*.xmp" % level): stack.append(spider.read(f)) apImagicFile.writeImagic( stack, "part" + self.params['timestamp'] + "_level_%02d_.hed" % level) if self.params['align']: apXmipp.gatherSingleFilesIntoStack("partlist.sel", "alignedStack.hed") return
def putFilesInStack(self): selfile = os.path.join(self.params["rundir"], "selfile.list") stackfile = os.path.join(self.params["rundir"], "start.hed") apXmipp.gatherSingleFilesIntoStack(selfile, stackfile, filetype="mrc") return stackfile
def putFilesInStack(self): selfile = os.path.join(self.params['rundir'], "selfile.list") stackfile = os.path.join(self.params['rundir'], "start.hed") apXmipp.gatherSingleFilesIntoStack(selfile, stackfile, filetype="mrc") return stackfile