def printCtfData(self, ctfvalue): if ctfvalue is None: return defocusratio = ctfvalue['defocus2']/ctfvalue['defocus1'] if 'acerun' in ctfvalue: method = getCtfMethod(ctfvalue) runname = ctfvalue['acerun']['name'] sys.stderr.write("[%s] method: %s | runname %s\n"% (apDisplay.colorString("CTF run", "blue"), method, runname)) sys.stderr.write("[%s] def1: %.2e | def2: %.2e | angle: %.1f | ampcontr %.2f | defratio %.3f\n"% (apDisplay.colorString("CTF param", "blue"), ctfvalue['defocus1'], ctfvalue['defocus2'], ctfvalue['angle_astigmatism'], ctfvalue['amplitude_contrast'], defocusratio)) if 'resolution_80_percent' in ctfvalue.keys() and ctfvalue['resolution_80_percent'] is not None: sys.stderr.write("[%s] conf_30-10: %s | conf_5peak: %s | res_0.8: %.1fA | res_0.5 %.1fA\n"% (apDisplay.colorString("CTF stats", "blue"), apDisplay.colorProb(ctfvalue['confidence_30_10']), apDisplay.colorProb(ctfvalue['confidence_5_peak']), ctfvalue['resolution_80_percent'], ctfvalue['resolution_50_percent'])) #sys.stderr.write("[%s] conf: %s | conf_d: %s\n"% # (apDisplay.colorString("CTF stats", "blue"), apDisplay.colorProb(ctfvalue['confidence']), # apDisplay.colorProb(ctfvalue['confidence_d']))) #apDisplay.colorProb(numlist[i]) #time.sleep(3) return
def runCommand(self, cmd): t0 = time.time() if self.params['showcmd'] is True: apDisplay.printColor("###################################", "magenta") sys.stderr.write( apDisplay.colorString("COMMAND: \n","magenta") +apDisplay.colorString(cmd, "cyan")+"\n") apDisplay.printColor("###################################", "cyan") try: if self.params['verbose'] is False: logf = open('testsuite-programs.log' ,'a') proc = subprocess.Popen(cmd, shell=True, stdout=logf, stderr=logf) else: proc = subprocess.Popen(cmd, shell=True) proc.wait() except: apDisplay.printError("could not run command: "+cmd) runtime = time.time() - t0 if self.params['showcmd'] is True: apDisplay.printColor("###################################", "cyan") apDisplay.printColor("command ran in "+apDisplay.timeString(runtime), "cyan") if runtime < 1: apDisplay.printError("command runtime was too short: " +apDisplay.timeString(runtime)) elif runtime < 10: apDisplay.printWarning("command runtime was very short: " +apDisplay.timeString(runtime)) return False if self.params['verbose'] is False: logf.close() return True
def runCommand(self, cmd): t0 = time.time() if self.params['showcmd'] is True: apDisplay.printColor("###################################", "magenta") sys.stderr.write( apDisplay.colorString("COMMAND: \n","magenta") +apDisplay.colorString(cmd, "cyan")+"\n") apDisplay.printColor("###################################", "cyan") try: if self.params['verbose'] is False: proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)#, stderr=subprocess.PIPE) else: proc = subprocess.Popen(cmd, shell=True) proc.wait() except: apDisplay.printWarning("could not run command: "+cmd) sys.exit(1) return False runtime = time.time() - t0 if self.params['showcmd'] is True: apDisplay.printColor("###################################", "cyan") apDisplay.printColor("command ran in "+apDisplay.timeString(runtime), "cyan") if runtime < 10: apDisplay.printWarning("command runtime was very short: " +apDisplay.timeString(runtime)) sys.exit(1) return False #self.timestamp = apParam.makeTimestamp() return True
def setImgViewerStatus(imgdata, status=None, msg=True): """ Function that sets the image status in the viewer False: Image was hidden True: Image is an exemplar None: Image is visible see 'ViewerImageStatus' table in dbemdata """ if status is False: statusVal = 'hidden' elif status is True: statusVal = 'exemplar' else: print "skipping set viewer status" return currentstatus = getImgViewerStatus(imgdata) if currentstatus is None: #insert new statusq = leginon.leginondata.ViewerImageStatus() statusq['image'] = imgdata statusq['status'] = statusVal statusq.insert() elif currentstatus != status: #update column dbconf=sinedon.getConfig('leginondata') db=sinedon.sqldb.sqlDB(**dbconf) q= ( "UPDATE "+dbconf['db']+".`ViewerImageStatus` " +"SET status = '"+statusVal + ("' WHERE `REF|AcquisitionImageData|image`=%d" % (imgdata.dbid,))) db.execute(q) #check assessment if msg is True: finalassess = getImgViewerStatus(imgdata) imgname = apDisplay.short(imgdata['filename']) if finalassess is True: astr = apDisplay.colorString("exemplar", "green") elif finalassess is False: astr = apDisplay.colorString("hidden", "red") elif finalassess is None: astr = apDisplay.colorString("none", "yellow") apDisplay.printMsg("Final image assessment: "+astr+" ("+imgname+")") return
def getSymmetryFromReconRunId(reconrunid, msg=True): """ get the symmetry from the last iteration of a refinement """ refrundata = appiondata.ApRefineRunData.direct_query(reconrunid) refdataq = appiondata.ApRefineIterData() refdataq['refineRun'] = refrundata refdata = refdataq.query() uniqsym = refdata[0]['symmetry'] if uniqsym is None: apDisplay.printWarning("symmetry is not saved during reconstruction!") apDisplay.printWarning("Using the symmetry of the initial model") modeldata = refrundata['initialModel'] uniqsym = modeldata['symmetry'] else: for data in refdata: if uniqsym != data['symmetry']: apDisplay.printWarning("symmetry is not consistent throughout reconstruction!") apDisplay.printWarning("Using symmetry of last iteration") uniqsym = data['symmetry'] if msg is True: apDisplay.printMsg("selected symmetry group: " +apDisplay.colorString("'"+uniqsym['eman_name']+"'", "cyan") +" for recon run: "+str(reconrunid)) return uniqsym
def executeAce2Cmd(self, ace2cmd, verbose=False, showcmd=True, logfile=None): """ executes an EMAN command in a controlled fashion """ waited = False if showcmd is True: os.sys.stderr.write(apDisplay.colorString("ACE2: ","magenta")+ace2cmd+"\n") t0 = time.time() try: if logfile is not None: logf = open(logfile, 'a') ace2proc = subprocess.Popen(ace2cmd, shell=True, stdout=logf, stderr=logf) elif verbose is False: ace2proc = subprocess.Popen(ace2cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) else: ace2proc = subprocess.Popen(ace2cmd, shell=True) if verbose is True: ace2proc.wait() else: ### continuous check waittime = 2.0 while ace2proc.poll() is None: if waittime > 10: waited = True os.sys.stderr.write(".") waittime *= 1.1 time.sleep(waittime) except: apDisplay.printWarning("could not run ace2 command: "+ace2cmd) raise tdiff = time.time() - t0 if tdiff > 20: apDisplay.printMsg("completed in "+apDisplay.timeString(tdiff)) elif waited is True: print ""
def getSymmetryDataFromID(symid, msg=True): symdata = appiondata.ApSymmetryData.direct_query(int(symid)) if not symdata: printSymmetries() apDisplay.printError("no symmetry associated with this id: "+str(symid)) if msg is True: apDisplay.printMsg("Selected symmetry group: " +apDisplay.colorString("%s -- %s"%(symdata['eman_name'].upper(), symdata['symmetry']), "cyan")) return symdata
def executeEmanCmd(emancmd, verbose=False, showcmd=True, logfile=None, fail=False): """ executes an EMAN command in a controlled fashion """ waited = False if showcmd is True: sys.stderr.write(apDisplay.colorString("EMAN: ","magenta")+emancmd+"\n") t0 = time.time() try: if logfile is not None: logf = open(logfile, 'a') emanproc = subprocess.Popen(emancmd, shell=True, stdout=logf, stderr=logf) elif verbose is False: devnull = open('/dev/null', 'w') emanproc = subprocess.Popen(emancmd, shell=True, stdout=devnull, stderr=devnull) else: emanproc = subprocess.Popen(emancmd, shell=True) if verbose is True: #emanproc.wait() out, err = emanproc.communicate() if out is not None and err is not None: print "EMAN error", out, err else: out, err = emanproc.communicate() ### continuous check waittime = 2.0 while emanproc.poll() is None: if waittime > 10: waited = True sys.stderr.write(".") waittime *= 1.1 time.sleep(waittime) except: apDisplay.printWarning("could not run eman command: "+emancmd) raise tdiff = time.time() - t0 if tdiff > 20: apDisplay.printMsg("completed in "+apDisplay.timeString(tdiff)) elif waited is True: print "" proc_code = emanproc.returncode if proc_code != 0: if proc_code == -11: if fail is True: apDisplay.printError("EMAN failed with Segmentation Fault") else: apDisplay.printWarning("EMAN failed with Segmentation Fault") else: if fail is True: apDisplay.printError("EMAN failed with subprocess error code %d" % proc_code) else: apDisplay.printWarning("EMAN failed with subprocess error code %d" % proc_code)
def getSymmetryDataFromID(symid, msg=True): symdata = appiondata.ApSymmetryData.direct_query(int(symid)) if not symdata: printSymmetries() apDisplay.printError("no symmetry associated with this id: " + str(symid)) if msg is True: apDisplay.printMsg("Selected symmetry group: " + apDisplay.colorString( "%s -- %s" % (symdata['eman_name'].upper(), symdata['symmetry']), "cyan")) return symdata
def insertImgAssessmentStatus(imgdata, runname="run1", assessment=None, msg=True): """ Insert the assessment status keep = True reject = False unassessed = None """ if assessment is True or assessment is False: assessrun = appiondata.ApAssessmentRunData() assessrun['session'] = imgdata['session'] #override to ALWAYS be 'run1' #assessrun['name'] = runname assessrun['name'] = "run1" assessquery = appiondata.ApAssessmentData() assessquery['image'] = imgdata assessquery['assessmentrun'] = assessrun assessquery['selectionkeep'] = assessment assessquery.insert() else: apDisplay.printWarning("No image assessment made, invalid data: " + str(assessment)) #check assessment if msg is True: finalassess = getImgAssessmentStatus(imgdata) imgname = apDisplay.short(imgdata['filename']) if finalassess is True: astr = apDisplay.colorString("keep", "green") elif finalassess is False: astr = apDisplay.colorString("reject", "red") elif finalassess is None: astr = apDisplay.colorString("none", "yellow") apDisplay.printMsg("Final image assessment: " + astr + " (" + imgname + ")") return True
def printSymmetries(): symq = appiondata.ApSymmetryData() syms = symq.query() sys.stderr.write("ID NAME DESCRIPTION\n") sys.stderr.write("-- ---- -----------\n") syms.sort(compSymm) for s in syms: name = s['eman_name'] name = re.sub('Icosahedral', 'Icos', name) sys.stderr.write( apDisplay.colorString(apDisplay.rightPadString(s.dbid, 3), "green") + " " + apDisplay.rightPadString(name, 5) + " " + apDisplay.rightPadString(s['description'], 60) + "\n")
def printSymmetries(): symq = appiondata.ApSymmetryData() syms = symq.query() sys.stderr.write("ID NAME DESCRIPTION\n") sys.stderr.write("-- ---- -----------\n") syms.sort(compSymm) for s in syms: name = s['eman_name'] name = re.sub('Icosahedral', 'Icos', name) sys.stderr.write( apDisplay.colorString(apDisplay.rightPadString(s.dbid,3),"green")+" " +apDisplay.rightPadString(name,5)+" " +apDisplay.rightPadString(s['description'],60)+"\n" )
def insertImgAssessmentStatus(imgdata, runname="run1", assessment=None, msg=True): """ Insert the assessment status keep = True reject = False unassessed = None """ if assessment is True or assessment is False: assessrun = appiondata.ApAssessmentRunData() assessrun['session'] = imgdata['session'] #override to ALWAYS be 'run1' #assessrun['name'] = runname assessrun['name'] = "run1" assessquery = appiondata.ApAssessmentData() assessquery['image'] = imgdata assessquery['assessmentrun'] = assessrun assessquery['selectionkeep'] = assessment assessquery.insert() else: apDisplay.printWarning("No image assessment made, invalid data: "+str(assessment)) #check assessment if msg is True: finalassess = getImgAssessmentStatus(imgdata) imgname = apDisplay.short(imgdata['filename']) if finalassess is True: astr = apDisplay.colorString("keep", "green") elif finalassess is False: astr = apDisplay.colorString("reject", "red") elif finalassess is None: astr = apDisplay.colorString("none", "yellow") apDisplay.printMsg("Final image assessment: "+astr+" ("+imgname+")") return True
def runCmd(cmd, package="", verbose=False, showcmd=True, logfile=None, fail=False): """ executes a command from any processing package in a controlled fashion """ waited = False if showcmd is True: sys.stderr.write( apDisplay.colorString(str(package) + ": ", "magenta") + cmd + "\n") t0 = time.time() try: if logfile is not None: logf = open(logfile, 'a') proc = subprocess.Popen(cmd, shell=True, stdout=logf, stderr=logf) elif verbose is False: devnull = open('/dev/null', 'w') proc = subprocess.Popen(cmd, shell=True, stdout=devnull, stderr=devnull) else: proc = subprocess.Popen(cmd, shell=True) if verbose is True: out, err = proc.communicate() if out is not None and err is not None: print "error", out, err else: out, err = proc.communicate() ### continuous check waittime = 2.0 while proc.poll() is None: if waittime > 10: waited = True sys.stderr.write(".") waittime *= 1.1 time.sleep(waittime) except: apDisplay.printWarning("could not run command: " + cmd) raise tdiff = time.time() - t0 if tdiff > 20: apDisplay.printMsg("completed in " + apDisplay.timeString(tdiff)) elif waited is True: print ""
def getSymmetryDataFromName(symtext='c1', msg=True): # find the symmetry entry (full symmetry name) in the database if len(symtext.split()) > 1: symdataq = appiondata.ApSymmetryData(symmetry=symtext.strip()) else: # based on the text version from EMAN # first convert to lower case symtext = symtext.lower().strip() if symtext == "i": symtext = "icos" symdataq = appiondata.ApSymmetryData(eman_name=symtext) symdatas = symdataq.query() if not symdatas: apDisplay.printError("No symmetry named %s was found"%(symtext)) # select oldest match symdata = symdatas[len(symdatas)-1] if msg is True: apDisplay.printMsg("Selected symmetry group: " +apDisplay.colorString("%s -- %s"%(symdata['eman_name'].upper(), symdata['symmetry']), "cyan")) return symdata
def runCmd(cmd, package="", verbose=False, showcmd=True, logfile=None, fail=False): """ executes a command from any processing package in a controlled fashion """ waited = False if showcmd is True: sys.stderr.write(apDisplay.colorString(str(package)+": ","magenta")+cmd+"\n") t0 = time.time() try: if logfile is not None: logf = open(logfile, 'a') proc = subprocess.Popen(cmd, shell=True, stdout=logf, stderr=logf) elif verbose is False: devnull = open('/dev/null', 'w') proc = subprocess.Popen(cmd, shell=True, stdout=devnull, stderr=devnull) else: proc = subprocess.Popen(cmd, shell=True) if verbose is True: out, err = proc.communicate() if out is not None and err is not None: print "error", out, err else: out, err = proc.communicate() ### continuous check waittime = 2.0 while proc.poll() is None: if waittime > 10: waited = True sys.stderr.write(".") waittime *= 1.1 time.sleep(waittime) except: apDisplay.printWarning("could not run command: "+cmd) raise tdiff = time.time() - t0 if tdiff > 20: apDisplay.printMsg("completed in "+apDisplay.timeString(tdiff)) elif waited is True: print ""
def executeEmanCmd(emancmd, verbose=False, showcmd=True, logfile=None, fail=False): """ executes an EMAN command in a controlled fashion """ waited = False if showcmd is True: sys.stderr.write( apDisplay.colorString("EMAN: ", "magenta") + emancmd + "\n") t0 = time.time() try: if logfile is not None: logf = open(logfile, 'a') emanproc = subprocess.Popen(emancmd, shell=True, stdout=logf, stderr=logf) elif verbose is False: devnull = open('/dev/null', 'w') emanproc = subprocess.Popen(emancmd, shell=True, stdout=devnull, stderr=devnull) else: emanproc = subprocess.Popen(emancmd, shell=True) if verbose is True: #emanproc.wait() out, err = emanproc.communicate() if out is not None and err is not None: print "EMAN error", out, err else: out, err = emanproc.communicate() ### continuous check waittime = 2.0 while emanproc.poll() is None: if waittime > 10: waited = True sys.stderr.write(".") waittime *= 1.1 time.sleep(waittime) except: apDisplay.printWarning("could not run eman command: " + emancmd) raise tdiff = time.time() - t0 if tdiff > 20: apDisplay.printMsg("completed in " + apDisplay.timeString(tdiff)) elif waited is True: print "" proc_code = emanproc.returncode if proc_code != 0: if proc_code == -11: if fail is True: apDisplay.printError("EMAN failed with Segmentation Fault") else: apDisplay.printWarning("EMAN failed with Segmentation Fault") else: if fail is True: apDisplay.printError( "EMAN failed with subprocess error code %d" % proc_code) else: apDisplay.printWarning( "EMAN failed with subprocess error code %d" % proc_code)