def showAssessedMask(self,imgfile,imgdata): self.filename = imgfile image = pyami.mrc.read(imgfile) sessiondata = self.params['sessionname'] maskassessname = self.params['checkMask'] mask,maskbin = apMask.makeInspectedMask(sessiondata,maskassessname,imgdata) overlay = apMask.overlayMask(image,mask) self.app.panel.setImage(overlay.astype(numpy.float32))
def processAndSaveAllImages(self): sys.stderr.write("Pre-processing images before picking\n") count = 0 total = len(self.imgtree) # if we are masking based on a previous mask run, and only want to process images with rejected masks, # remove any images with accepted masks from the imgtree. newImageTree = [] for imgdata in self.imgtree: count += 1 # useAccecepted mask is true when the assess flag is used, and an # accepted mask is found in the indicated mask run that should be retained self.useAcceptedMask = False # check to see if this image # 1. Does not have a mask region # 2. Has only mask regions that have been rejected # If both are true, continue, otherwise we do not need to display this image. filename = imgdata['filename'] maskAssessRunName = self.params['assessname'] sessiondata = apDatabase.getSessionDataFromSessionName( self.params['sessionname']) maskimg, maskbin = apMask.makeInspectedMask( sessiondata, maskAssessRunName, imgdata) if maskimg is not None and maskimg.size: apDisplay.printMsg("Skipping image with accepted mask region.") maskimg = apMask.reshapeMask(imgdata['image'], maskimg) self.maskimg = maskimg self.image = imgdata['image'] self.useAcceptedMask = True self.commitToDatabase(imgdata) continue imgpath = os.path.join(self.params['rundir'], imgdata['filename'] + '.dwn.mrc') if self.params['continue'] is True and os.path.isfile(imgpath): sys.stderr.write(".") #print "already processed: ",apDisplay.short(imgdata['filename']) else: if os.path.isfile(imgpath): os.remove(imgpath) sys.stderr.write("#") apFindEM.processAndSaveImage(imgdata, params=self.params) newImageTree.append(imgdata) if count % 60 == 0: sys.stderr.write(" %d left\n" % (total - count)) self.imgtree = newImageTree
def processAndSaveAllImages(self): sys.stderr.write("Pre-processing images before picking\n") count = 0 total = len(self.imgtree) # if we are masking based on a previous mask run, and only want to process images with rejected masks, # remove any images with accepted masks from the imgtree. newImageTree = [] for imgdata in self.imgtree: count += 1 # useAccecepted mask is true when the assess flag is used, and an # accepted mask is found in the indicated mask run that should be retained self.useAcceptedMask = False # check to see if this image # 1. Does not have a mask region # 2. Has only mask regions that have been rejected # If both are true, continue, otherwise we do not need to display this image. filename = imgdata['filename'] maskAssessRunName = self.params['assessname'] sessiondata = apDatabase.getSessionDataFromSessionName(self.params['sessionname']) maskimg,maskbin = apMask.makeInspectedMask( sessiondata, maskAssessRunName, imgdata ) if maskimg is not None and maskimg.size: apDisplay.printMsg("Skipping image with accepted mask region.") maskimg = apMask.reshapeMask( imgdata['image'], maskimg ) self.maskimg = maskimg self.image = imgdata['image'] self.useAcceptedMask = True self.commitToDatabase(imgdata) continue imgpath = os.path.join(self.params['rundir'], imgdata['filename']+'.dwn.mrc') if self.params['continue'] is True and os.path.isfile(imgpath): sys.stderr.write(".") #print "already processed: ",apDisplay.short(imgdata['filename']) else: if os.path.isfile(imgpath): os.remove(imgpath) sys.stderr.write("#") apFindEM.processAndSaveImage(imgdata, params=self.params) newImageTree.append(imgdata) if count % 60 == 0: sys.stderr.write(" %d left\n" % (total-count)) self.imgtree = newImageTree
def eliminateMaskedParticles(self, particles, imgdata): newparticles = [] eliminated = 0 sessiondata = apDatabase.getSessionDataFromSessionName(self.params['sessionname']) if self.params['defocpair']: imgdata = apDefocalPairs.getTransformedDefocPair(imgdata,2) maskimg,maskbin = apMask.makeInspectedMask(sessiondata,self.params['maskassess'],imgdata) if maskimg is not None: for prtl in particles: binnedcoord = (int(prtl['ycoord']/maskbin),int(prtl['xcoord']/maskbin)) if maskimg[binnedcoord] != 0: eliminated += 1 else: newparticles.append(prtl) apDisplay.printMsg("%i particle(s) eliminated due to masking"%eliminated) else: apDisplay.printMsg("no masking") newparticles = particles return newparticles
def eliminateMaskedParticles(self, particles, imgdata): newparticles = [] eliminated = 0 sessiondata = apDatabase.getSessionDataFromSessionName( self.params['sessionname']) if self.params['defocpair']: imgdata = apDefocalPairs.getTransformedDefocPair(imgdata, 2) maskimg, maskbin = apMask.makeInspectedMask(sessiondata, self.params['maskassess'], imgdata) if maskimg is not None: for prtl in particles: binnedcoord = (int(prtl['ycoord'] / maskbin), int(prtl['xcoord'] / maskbin)) if maskimg[binnedcoord] != 0: eliminated += 1 else: newparticles.append(prtl) apDisplay.printMsg("%i particle(s) eliminated due to masking" % eliminated) else: apDisplay.printMsg("no masking") newparticles = particles return newparticles