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
Exemple #3
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 rejectTiltPairs(self, imgdata):
         tiltdata = apTiltPair.getTiltPair(imgdata)
         if tiltdata is None:
                 apDisplay.printColor("\nrejecting unpaired image: "+apDisplay.short(imgdata['filename']), "red")
                 return False
         tiltassess = apDatabase.getImgCompleteStatus(tiltdata)
         if tiltassess is False:
                 apDisplay.printColor("\nrejecting bad tilt images: "+apDisplay.short(imgdata['filename']), "magenta")
                 return False
         return True
Exemple #5
0
 def rejectTiltPairs(self, imgdata):
     tiltdata = apTiltPair.getTiltPair(imgdata)
     if tiltdata is None:
         apDisplay.printColor(
             "\nrejecting unpaired image: " +
             apDisplay.short(imgdata['filename']), "red")
         return False
     tiltassess = apDatabase.getImgCompleteStatus(tiltdata)
     if tiltassess is False:
         apDisplay.printColor(
             "\nrejecting bad tilt images: " +
             apDisplay.short(imgdata['filename']), "magenta")
         return False
     return True
Exemple #6
0
    def loopProcessImage(self, imgdata):
        """
		Over-writes the particleLoop processImage and uses the appionLoop processImage
		"""
        #GET THE TILT PAIR
        tiltdata = apTiltPair.getTiltPair(imgdata)
        if tiltdata is None:
            return

        ### process images
        procimgpath = os.path.join(self.params['rundir'],
                                   imgdata['filename'] + '.dwn.mrc')
        if not os.path.isfile(procimgpath):
            apDisplay.printMsg("processing mrc for first image")
            apFindEM.processAndSaveImage(imgdata, params=self.params)
        procimg1 = apImage.mrcToArray(procimgpath, msg=False)

        procimgpath = os.path.join(self.params['rundir'],
                                   tiltdata['filename'] + '.dwn.mrc')
        if not os.path.isfile(procimgpath):
            apDisplay.printMsg("processing mrc for second image")
            apFindEM.processAndSaveImage(tiltdata, params=self.params)
        procimg2 = apImage.mrcToArray(procimgpath, msg=False)

        #RUN THE ALIGNER GUI
        result = self.runTiltAligner(imgdata, tiltdata)
        if self.badprocess is True:
            return
        numpeaks = len(self.peaktree1)
        #apDisplay.printMsg("Found "+str(numpeaks)+" particles for "+apDisplay.shortenImageName(imgdata['filename']))
        self.stats['lastpeaks'] = numpeaks

        ### mask the images
        procimg1, procimg2 = apTiltTransform.maskOverlapRegion(
            procimg1, procimg2, self.data)

        #CREATE PEAK JPEG
        if self.threadJpeg is True:
            threading.Thread(target=apPeaks.createTiltedPeakJpeg,
                             args=(imgdata, tiltdata, self.peaktree1,
                                   self.peaktree2, self.params, procimg1,
                                   procimg2)).start()
        else:
            apPeaks.createTiltedPeakJpeg(imgdata, tiltdata, self.peaktree1,
                                         self.peaktree2, self.params, procimg1,
                                         procimg2)

        #EXTRA DONE DICT CALL
        self._writeDoneDict(tiltdata['filename'])
	def loopProcessImage(self, imgdata):
		"""
		Over-writes the particleLoop processImage and uses the appionLoop processImage
		"""
		#GET THE TILT PAIR
		tiltdata = apTiltPair.getTiltPair(imgdata)
		if tiltdata is None:
			return

		### process images
		procimgpath = os.path.join(self.params['rundir'], imgdata['filename']+'.dwn.mrc')
		if not os.path.isfile(procimgpath):
			apDisplay.printMsg("processing mrc for first image")
			apFindEM.processAndSaveImage(imgdata, params=self.params)
		procimg1 = apImage.mrcToArray(procimgpath, msg=False)

		procimgpath = os.path.join(self.params['rundir'], tiltdata['filename']+'.dwn.mrc')
		if not os.path.isfile(procimgpath):
			apDisplay.printMsg("processing mrc for second image")
			apFindEM.processAndSaveImage(tiltdata, params=self.params)
		procimg2 = apImage.mrcToArray(procimgpath, msg=False)

		#RUN THE ALIGNER GUI
		result = self.runTiltAligner(imgdata, tiltdata)
		if self.badprocess is True:
			return
		numpeaks = len(self.peaktree1)
		#apDisplay.printMsg("Found "+str(numpeaks)+" particles for "+apDisplay.shortenImageName(imgdata['filename']))
		self.stats['lastpeaks'] = numpeaks

		### mask the images
		procimg1, procimg2 = apTiltTransform.maskOverlapRegion(procimg1, procimg2, self.data)

		#CREATE PEAK JPEG
		if self.threadJpeg is True:
			threading.Thread(target=apPeaks.createTiltedPeakJpeg, args=(imgdata, tiltdata, self.peaktree1,
				self.peaktree2, self.params, procimg1, procimg2)).start()
		else:
			apPeaks.createTiltedPeakJpeg(imgdata, tiltdata, self.peaktree1, self.peaktree2, self.params,
				procimg1, procimg2)

		#EXTRA DONE DICT CALL
		self._writeDoneDict(tiltdata['filename'])
	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 len(self.peaktree1) < 3 or len(self.peaktree2) < 3:
			apDisplay.printWarning("Not enough particle picks; not commiting transform or particle data")
			return False

		### insert the transform
		transdata = apTiltPair.insertTiltTransform(imgdata, tiltdata, self.data, self.params)
		### insert the particles

		self.insertParticlePeakPairs(imgdata, tiltdata, transdata)
Exemple #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