Esempio n. 1
0
	def loopCommitToDatabase(self, imgdata):
		"""
		Over-writes the particleLoop commit and uses the appionLoop commit
		"""
		tiltdata = apTiltPair.getTiltPair(imgdata)
		if tiltdata is None:
			apDisplay.printWarning("Tilt data not found; not commiting data")
			return False

		### insert the runid
		self.commitRunToDatabase(imgdata['session'], True)

		if self.assess is not None:
			#note runid is overrided to be 'run1'
			apDatabase.insertImgAssessmentStatus(imgdata, self.params['runname'], self.assess)
			apDatabase.insertImgAssessmentStatus(tiltdata, self.params['runname'], self.assess)

		if len(self.peaktree1) < 3 or len(self.peaktree1) < 3:
			apDisplay.printWarning("Not enough particle picks; not commiting transform or particle data")
			return False

		### insert the transform
		transdata = apTiltPair.insertTiltTransform(imgdata, tiltdata, self.tiltparams, self.params)
		### insert the particles
		self.insertParticlePeakPairs(imgdata, tiltdata, transdata)
    def commitToDatabase(self, imgdata):
        # if a kept mask was created in a previous mask run and the
        # assess flag was used (basically combining the 2 runs) there is
        # nothing new to commit.
        if self.useAcceptedMask: return

        sessiondata = imgdata['session']
        rundir = self.params['rundir']
        maskname = self.params['runname']
        assessname = self.params['assessname']
        bin = self.params['bin']
        maskdir = os.path.join(rundir, "masks")
        maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
            maskname, sessiondata)
        if not maskrundata:
            apMask.insertManualMaskRun(sessiondata, rundir, maskname, bin)
            maskrundata, maskparamsdata = apMask.getMaskParamsByRunName(
                maskname, sessiondata)
            try:
                apParam.createDirectory(maskdir)
            except:
                apDisplay.printWarning('can not create mask directory')
        massessrundata, exist = apMask.insertMaskAssessmentRun(
            sessiondata, maskrundata, assessname)

        mask = self.maskimg
        maskfilename = imgdata['filename'] + '_mask.png'

        image = self.image
        labeled_regions, clabels = nd.label(mask)
        testlog = [False, 0, ""]
        infos = {}
        infos, testlog = apCrud.getLabeledInfo(image, mask, labeled_regions,
                                               range(1, clabels + 1), False,
                                               infos, testlog)
        offset = 1
        for l1 in range(0, len(infos)):

            l = l1 + offset
            info = infos[l]
            info.append(l)
            regiondata = apMask.insertMaskRegion(maskrundata, imgdata, info)
            print "Inserting mask region in database"

        # PIL alpha channel read does not work
        #apImage.arrayMaskToPngAlpha(mask, os.path.join(maskdir,maskfilename))
        apImage.arrayMaskToPng(mask, os.path.join(maskdir, maskfilename))

        allregiondata = apMask.getMaskRegions(maskrundata, imgdata)

        for regiondata in allregiondata:
            apMask.insertMaskAssessment(massessrundata, regiondata, 1)
            print "Inserting mask assessment in database."

        if self.assess != self.assessold and self.assess is not None:
            #imageaccessor run is always named run1
            apDatabase.insertImgAssessmentStatus(imgdata, 'run1', self.assess)
        return
	def commitToDatabase(self,imgdata):
        # if a kept mask was created in a previous mask run and the 
        # assess flag was used (basically combining the 2 runs) there is 
        # nothing new to commit.  
		if self.useAcceptedMask: return
        
		sessiondata = imgdata['session']
		rundir = self.params['rundir']
		maskname = self.params['runname']
		assessname = self.params['assessname']
		bin = self.params['bin']
		maskdir=os.path.join(rundir,"masks")
		maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
		if not maskrundata:
			apMask.insertManualMaskRun(sessiondata,rundir,maskname,bin)
			maskrundata,maskparamsdata = apMask.getMaskParamsByRunName(maskname,sessiondata)
			try:
				apParam.createDirectory(maskdir)
			except:
				apDisplay.printWarning('can not create mask directory')
		massessrundata,exist = apMask.insertMaskAssessmentRun(sessiondata,maskrundata,assessname)
		
		mask = self.maskimg
		maskfilename = imgdata['filename']+'_mask.png'
		
		image = self.image
		labeled_regions,clabels=nd.label(mask)
		testlog = [False,0,""]
		infos={}
		infos,testlog=apCrud.getLabeledInfo(image,mask,labeled_regions,range(1,clabels+1),False,infos,testlog)
		offset=1
		for l1 in range(0,len(infos)):

			l=l1+offset
			info=infos[l]
			info.append(l)
			regiondata= apMask.insertMaskRegion(maskrundata,imgdata,info)
			print "Inserting mask region in database"
		
		# PIL alpha channel read does not work
		#apImage.arrayMaskToPngAlpha(mask, os.path.join(maskdir,maskfilename))
		apImage.arrayMaskToPng(mask, os.path.join(maskdir,maskfilename))

		allregiondata = apMask.getMaskRegions(maskrundata,imgdata)
			
		for regiondata in allregiondata:
			apMask.insertMaskAssessment(massessrundata,regiondata,1)
			print "Inserting mask assessment in database."

		if self.assess != self.assessold and self.assess is not None:
			#imageaccessor run is always named run1
			apDatabase.insertImgAssessmentStatus(imgdata, 'run1', self.assess)
		return
 def commitToDatabase(self, imgdata):
         """
         Uses the appionLoop commit
         """
         msg = not self.params['background']
         ### insert False values
         if self.imgassess is False:
                 time.sleep(0.1)
                 self.reject += 1
                 apDatabase.insertImgAssessmentStatus(imgdata, self.params['runname'], False, msg=True)
                 f = open("imageRejectList-"+self.timestamp+".txt", "a")
                 f.write(imgdata['filename']+"\n")
                 f.close()
Esempio n. 5
0
    def commitToDatabase(self, imgdata):
        """
		Uses the appionLoop commit
		"""
        msg = not self.params['background']
        ### insert False values
        if self.imgassess is False:
            time.sleep(0.1)
            self.reject += 1
            apDatabase.insertImgAssessmentStatus(imgdata,
                                                 self.params['runname'],
                                                 False,
                                                 msg=True)
            f = open("imageRejectList-" + self.timestamp + ".txt", "a")
            f.write(imgdata['filename'] + "\n")
            f.close()
	def commitToDatabase(self, imgdata):
		"""
		Uses the appionLoop commit
		"""
		imgassess = apDatabase.getImgCompleteStatus(imgdata)
		tiltdata = apTiltPair.getTiltPair(imgdata)
		msg = not self.params['background']
		if tiltdata is None:
			if imgassess is not False:
				apDisplay.printColor("\nrejecting unpaired image: "+apDisplay.short(imgdata['filename']), "red")
				apDatabase.insertImgAssessmentStatus(imgdata, self.params['runid'], False, msg=msg)
				self.reject+=1
			return
		if self.params['background'] is False:
			apDisplay.printMsg("tiltpair: "+apDisplay.short(tiltdata['filename']))
		tiltassess = apDatabase.getImgCompleteStatus(tiltdata)
		if imgassess is False or tiltassess is False:
			if imgassess is not False:
				apDisplay.printColor("\nrejecting bad tilt images: "+apDisplay.short(imgdata['filename']), "magenta")
			if tiltassess is not False:
				apDisplay.printColor("\nrejecting bad tilt images: "+apDisplay.short(tiltdata['filename']), "magenta")
			apDatabase.insertImgAssessmentStatus(imgdata, self.params['runid'], False, msg=msg)
			apDatabase.insertImgAssessmentStatus(tiltdata, self.params['runid'], False, msg=msg)
			self.reject+=2
		if self.params['background'] is False:
			print "Assessment:", imgassess, tiltassess
		return
	def commitToDatabase(self, imgdata):
		"""
		Uses the appionLoop commit
		"""
		imgassess = apDatabase.getImgCompleteStatus(imgdata)
		tiltdata = apTiltPair.getTiltPair(imgdata)
		msg = not self.params['background']
		if tiltdata is None:
			if imgassess is not False:
				apDisplay.printColor("\nrejecting unpaired image: "+apDisplay.short(imgdata['filename']), "red")
				apDatabase.insertImgAssessmentStatus(imgdata, self.params['runid'], False, msg=msg)
				self.reject+=1
			return
		if self.params['background'] is False:
			apDisplay.printMsg("tiltpair: "+apDisplay.short(tiltdata['filename']))
		tiltassess = apDatabase.getImgCompleteStatus(tiltdata)
		if imgassess is False or tiltassess is False:
			if imgassess is not False:
				apDisplay.printColor("\nrejecting bad tilt images: "+apDisplay.short(imgdata['filename']), "magenta")
			if tiltassess is not False:
				apDisplay.printColor("\nrejecting bad tilt images: "+apDisplay.short(tiltdata['filename']), "magenta")
			apDatabase.insertImgAssessmentStatus(imgdata, self.params['runid'], False, msg=msg)
			apDatabase.insertImgAssessmentStatus(tiltdata, self.params['runid'], False, msg=msg)
			self.reject+=2
		if self.params['background'] is False:
			print "Assessment:", imgassess, tiltassess
		return
Esempio n. 8
0
	def commitToDatabase(self, imgdata, rundata):
		if self.assess != self.assessold and self.assess is not None:
			#imageaccessor run is always named run1
			apDatabase.insertImgAssessmentStatus(imgdata, 'run1', self.assess)
		return
Esempio n. 9
0
	def processAndSaveAllImages(self):
		print "Pre-processing images before picking\nNow is a good time to go get a candy bar"
		count = 0
		total = len(self.imgtree)
		for imgdata in self.imgtree:
			count += 1
			tiltdata = apTiltPair.getTiltPair(imgdata)
			if tiltdata is None:
				#reject it
				apDatabase.insertImgAssessmentStatus(imgdata, "notiltpair", False)
				continue

			#First the image
			imgpath = os.path.join(self.params['rundir'], imgdata['filename']+'.dwn.mrc')
			if os.path.isfile(imgpath):
				sys.stderr.write(".")
				#print "already processed: ",apDisplay.short(imgdata['filename'])
			else:
				sys.stderr.write("#")
				#print "processing: ",apDisplay.short(imgdata['filename'])
				apFindEM.processAndSaveImage(imgdata, params=self.params)

			#Now for its tilt pair
			tiltpath = os.path.join(self.params['rundir'], tiltdata['filename']+'.dwn.mrc')
			if os.path.isfile(tiltpath):
				sys.stderr.write(".")
				#print "already processed: ",apDisplay.short(tiltdata['filename'])
			else:
				sys.stderr.write("#")
				#print "processing: ",apDisplay.short(tiltdata['filename'])
				apFindEM.processAndSaveImage(tiltdata, params=self.params)

			if count % 30 == 0:
				sys.stderr.write(" %d left\n" % (total-count))

			### check if automation was already run
			outname1 = os.path.basename(imgdata['filename'])+"."+self.getExtension()
			outname2 = os.path.basename(tiltdata['filename'])+"."+self.getExtension()
			outfile1 = os.path.join(self.params['pickdatadir'], outname1)
			outfile2 = os.path.join(self.params['pickdatadir'], outname2)
			if os.path.isfile(outfile1):
				sys.stderr.write(",")
			else:
				### set important parameters
				picks1 =  self.getParticlePicks(imgdata, False)
				picks2 =  self.getParticlePicks(tiltdata, False)
				pixdiam = self.params['diam']/self.params['apix']/self.params['bin']
				tilt1 = apDatabase.getTiltAngleDeg(imgdata)
				tilt2 = apDatabase.getTiltAngleDeg(tiltdata)
				tiltdiff = abs(tilt2) - abs(tilt1)
				tiltaxis = self.params['inittiltaxis']
				### run tilt automation
				if self.params['autopick'] is True and self.params['importalign'] is False:
					if len(picks1) > 0 and len(picks2) > 0:
						autotilter = autotilt.autoTilt()
						result = autotilter.processTiltPair(imgpath, tiltpath, picks1, picks2,
							tiltdiff, outfile1, pixdiam, tiltaxis, msg=False)
						if os.path.isfile(outfile1):
							if os.path.exists(outfile2):
								os.remove(outfile2)
							os.symlink(os.path.basename(outfile1), outfile2)
					sys.stderr.write("%")
		apDisplay.printMsg("done")
		return