Beispiel #1
0
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
Beispiel #2
0
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()
Beispiel #5
0
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
Beispiel #7
0
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: