def process_image(imagefile, params): bin = int(params["bin"]) apix = float(params["apix"]) diam = float(params["diam"]) lowpass = float(params["lp"]) pixrad = int(math.ceil(diam / apix / 2.0 / float(bin))) #READ IMAGES image = apDatabase.getImageData(imagefile)['image'] #image = Mrc.mrc_to_numeric(imagefile) #BIN IMAGES image = bin_img(image, bin) #NORMALIZE #image = normStdev(image) image = PlaneRegression(image) #image = normStdev(image)/2.0 #image = normRange(image)-0.5 #numeric_to_jpg(image,"normimage.jpg") #LOW PASS FILTER image = filterImg(image, apix, bin, lowpass) #image = (image-6990.0)/316.0 #image = image + 8.0 #BLACK OUT DARK AREAS, LESS THAN 2 STDEVS #image = removeCrud(image,imagefile,-2.0,params) #IMAGE MUST HAVE NORMALIZED RANGE OR THE WHOLE THING BREAKS # AND BE POSSITIVE EVERYWHERE image = 5.0 * normRange(image) + 0.000001 return image
def tmpRemoveCrud(params, imagefile): bin = int(params["bin"]) apix = float(params["apix"]) diam = float(params["diam"]) lowpass = float(params["lp"]) pixrad = diam / apix / 2.0 #READ IMAGES #imagefile=imagefile+'.mrc' #image = Mrc.mrc_to_numeric(imagefile) image = apDatabase.getImageData(imagefile)['image'] #BIN IMAGES image = bin_img(image, bin) #NORMALIZE image = normStdev(image) # image = PlaneRegression(image) # image = normStdev(image) #LOW PASS FILTER image = apImage.filterImg(image, apix * float(bin), lowpass) #BLACK OUT DARK AREAS, LESS THAN 2 STDEVS image = removeCrud(image, imagefile, -1.0, params) Mrc.numeric_to_mrc(image, (imagefile.split('.')[0] + '.dwn.mrc')) return ()
def process_image(imagefile,params): bin = int(params["bin"]) apix = float(params["apix"]) diam = float(params["diam"]) lowpass = float(params["lp"]) pixrad = int(math.ceil(diam/apix/2.0/float(bin))) #READ IMAGES image = apDatabase.getImageData(imagefile)['image'] #image = Mrc.mrc_to_numeric(imagefile) #BIN IMAGES image = bin_img(image,bin) #NORMALIZE #image = normStdev(image) image = PlaneRegression(image) #image = normStdev(image)/2.0 #image = normRange(image)-0.5 #numeric_to_jpg(image,"normimage.jpg") #LOW PASS FILTER image = filterImg(image,apix,bin,lowpass) #image = (image-6990.0)/316.0 #image = image + 8.0 #BLACK OUT DARK AREAS, LESS THAN 2 STDEVS #image = removeCrud(image,imagefile,-2.0,params) #IMAGE MUST HAVE NORMALIZED RANGE OR THE WHOLE THING BREAKS # AND BE POSSITIVE EVERYWHERE image = 5.0*normRange(image)+0.000001 return image
def tmpRemoveCrud(params,imagefile): bin = int(params["bin"]) apix = float(params["apix"]) diam = float(params["diam"]) lowpass = float(params["lp"]) pixrad = diam/apix/2.0 #READ IMAGES #imagefile=imagefile+'.mrc' #image = Mrc.mrc_to_numeric(imagefile) image = apDatabase.getImageData(imagefile)['image'] #BIN IMAGES image = bin_img(image,bin) #NORMALIZE image = normStdev(image) # image = PlaneRegression(image) # image = normStdev(image) #LOW PASS FILTER image = apImage.filterImg(image,apix*float(bin),lowpass) #BLACK OUT DARK AREAS, LESS THAN 2 STDEVS image = removeCrud(image,imagefile,-1.0,params) Mrc.numeric_to_mrc(image,(imagefile.split('.')[0]+'.dwn.mrc')) return()
def createJPG2(params, file): #Does NOT use viewit #Resulting in a 2-fold speed up over createJPG() #With more features!!! count = len(params['templatelist']) bin = int(params["bin"]) / 2 diam = float(params["diam"]) apix = float(params["apix"]) if bin < 1: bin = 1 pixrad = diam / apix / 2.0 / float(bin) if not (os.path.exists("jpgs")): os.mkdir("jpgs") #print "Reading MRC: ",mrcfile #mrcfile = file+".mrc" #numer = Mrc.mrc_to_numeric(mrcfile) numer = apDatabase.getImageData(file)['image'] numer = bin_img(numer, bin) numer = filterImg(numer, apix, bin, params["lp"]) #numer = PlaneRegression(numer,bin) #numer = whiteNormalizeImage(numer) #numer = blackNormalizeImage(numer) numer = normalizeImage(numer) image = array2image(numer) image = image.convert("RGB") pikfile = "pikfiles/" + file + ".a.pik" draw = ImageDraw.Draw(image) #blend(image1,image2,0.5) circmult = 1.0 numcircs = 2 circshape = "circle" drawPikFile(pikfile, draw, bin, pixrad, circmult, numcircs, circshape) outfile = "jpgs/" + file + ".prtl.jpg" print " ... writing JPEG: ", outfile image.save(outfile, "JPEG", quality=95) del image, numer, draw return
def createJPG2(params,file): #Does NOT use viewit #Resulting in a 2-fold speed up over createJPG() #With more features!!! count = len(params['templatelist']) bin = int(params["bin"])/2 diam = float(params["diam"]) apix = float(params["apix"]) if bin < 1: bin = 1 pixrad = diam/apix/2.0/float(bin) if not (os.path.exists("jpgs")): os.mkdir("jpgs") #print "Reading MRC: ",mrcfile #mrcfile = file+".mrc" #numer = Mrc.mrc_to_numeric(mrcfile) numer = apDatabase.getImageData(file)['image'] numer = bin_img(numer,bin) numer = filterImg(numer,apix,bin,params["lp"]) #numer = PlaneRegression(numer,bin) #numer = whiteNormalizeImage(numer) #numer = blackNormalizeImage(numer) numer = normalizeImage(numer) image = array2image(numer) image = image.convert("RGB") pikfile="pikfiles/"+file+".a.pik" draw = ImageDraw.Draw(image) #blend(image1,image2,0.5) circmult = 1.0 numcircs = 2 circshape = "circle" drawPikFile(pikfile,draw,bin,pixrad,circmult,numcircs,circshape) outfile="jpgs/"+file+".prtl.jpg" print " ... writing JPEG: ",outfile image.save(outfile, "JPEG", quality=95) del image,numer,draw return
def calc_corrcoeffs(blobs, imfile, bin, template, tmplmask, anglemap): print "Processing correlation coefficients" t1 = time.time() #image = Mrc.mrc_to_numeric(imfile+".mrc") image = apDatabase.getImageData(imfile)['image'] image = bin_img(image, 2) tmplmask = bin_img(tmplmask, 2) tx = (template.shape)[0] / 4 ty = (template.shape)[1] / 4 ix = (image.shape)[0] - tx iy = (image.shape)[1] - ty for blob in blobs: x = int(blob.stats['center'][1]) y = int(blob.stats['center'][0]) if (x > tx and y > ty and x < ix and y < iy): smimage = image[x - tx:x + tx, y - ty:y + ty] angle = anglemap[x / bin, y / bin] template2 = ndimage.rotate(template, angle, reshape=False, mode="wrap") template2 = bin_img(template2, 2) rho = corr_coeff(smimage, template2, tmplmask) blob.stats['corrcoeff'] = rho else: blob.stats['corrcoeff'] = -1.0 initblobs = len(blobs) blobs.sort(blob_compare) i = 0 while i < len(blobs): rho = float(blobs[i].stats['corrcoeff']) if (rho <= 0.1): del blobs[i] i = i - 1 i = i + 1 postblobs = len(blobs) print " ... time %.2f sec" % float(time.time() - t1) print " ... kept", postblobs, "correlating particles of", initblobs, "total particles" return blobs
def calc_corrcoeffs(blobs,imfile,bin,template,tmplmask,anglemap): print "Processing correlation coefficients" t1 = time.time() #image = Mrc.mrc_to_numeric(imfile+".mrc") image = apDatabase.getImageData(imfile)['image'] image = bin_img(image,2) tmplmask = bin_img(tmplmask,2) tx = (template.shape)[0]/4 ty = (template.shape)[1]/4 ix = (image.shape)[0] - tx iy = (image.shape)[1] - ty for blob in blobs: x = int(blob.stats['center'][1]) y = int(blob.stats['center'][0]) if(x > tx and y > ty and x < ix and y < iy): smimage = image[ x-tx:x+tx, y-ty:y+ty ] angle = anglemap[x/bin,y/bin] template2 = ndimage.rotate(template, angle, reshape=False, mode="wrap") template2 = bin_img(template2,2) rho = corr_coeff(smimage,template2,tmplmask) blob.stats['corrcoeff'] = rho else: blob.stats['corrcoeff'] = -1.0 initblobs = len(blobs) blobs.sort(blob_compare) i=0 while i < len(blobs): rho = float(blobs[i].stats['corrcoeff']) if(rho <= 0.1): del blobs[i] i=i-1 i=i+1 postblobs = len(blobs) print " ... time %.2f sec" % float(time.time()-t1) print " ... kept",postblobs,"correlating particles of",initblobs,"total particles" return blobs
#imagelist.sort() #imagelist.reverse() random.shuffle(imagelist) #imagelist = imagelist[:30] random.shuffle(imagelist) for imgfile in imagelist: apDisplay.printMsg(apDisplay.short(os.path.basename(imgfile))) count = 0 for imgfile in imagelist: count += 1 imagename = os.path.basename(imgfile) imagename = imagename.replace(".mrc", "") imgdata = apDatabase.getImageData(imagename) ### change project projid = apProject.getProjectIdFromImageData(imgdata) newdbname = apProject.getAppionDBFromProjectId(projid) sinedon.setConfig('appiondata', db=newdbname) powerspecfile = apDisplay.short(imagename)+"-powerspec.jpg" if os.path.isfile(powerspecfile): apDisplay.printColor("Skipping image %s, already complete"%(apDisplay.short(imagename)), "cyan") continue ctfdata = ctfdb.getBestCtfByResolution(imgdata) #ctfdata, bestconf = ctfdb.getBestCtfValueForImage(imgdata, method="ctffind") #ctfdata, bestconf = ctfdb.getBestCtfValueForImage(imgdata, method="ace2") if ctfdata is None: