def getParticlesInImage(self, imgdata):
        if self.params['defocpair'] is True and self.params[
                'selectionid'] is not None:
            # using defocal pairs and particle picks
            partdatas, shiftdata = apParticle.getDefocPairParticles(
                imgdata, self.params['selectionid'],
                self.params['particlelabel'])
        elif self.params['fromstackid'] is not None:
            # using previous stack to make a new stack
            fromstackdata = appiondata.ApStackData.direct_query(
                self.params['fromstackid'])
            partdatas, shiftdata = self.getParticlesFromStack(
                fromstackdata,
                imgdata,
                self.params['defocpair'],
            )
        else:
            # using particle picks
            partdatas = apParticle.getParticles(imgdata,
                                                self.params['selectionid'],
                                                self.params['particlelabel'])
            shiftdata = {'shiftx': 0, 'shifty': 0, 'scale': 1}

        apDisplay.printMsg("Found %d particles" % (len(partdatas)))

        ### apply correlation limits
        if self.params['correlationmin'] or self.params['correlationmax']:
            partdatas = self.eliminateMinMaxCCParticles(partdatas)

        ### apply masks
        if self.params['checkmask']:
            partdatas = self.eliminateMaskedParticles(partdatas, imgdata)
        return partdatas, shiftdata
	def start(self):
		commit = self.params['commit']
		description = self.params['description']
		processdir = self.params['fulltomodir']
		runname = self.params['runname']
		offsetz = self.params['offsetz']
		subbin = self.params['bin']
		invert = self.params['invert']
		fulltomodata = apTomo.getFullTomoData(self.params['fulltomoId'])
		#subvolume making
		if (self.params['selexonId'] is not None or self.params['stackId']) and fulltomodata is not None:
			sessiondata = fulltomodata['session']
			seriesname = fulltomodata['name'].rstrip('_full')
			fullbin = fulltomodata['bin']
			if not fullbin:
				apDisplay.printWarning("no binning in full tomogram, something is wrong, use alignment bin for now")
				fullbin = fulltomodata['aligner']['alignrun']['bin']
			fulltomopath = os.path.join(fulltomodata['reconrun']['path']['path'], seriesname+"_full.rec")
			fulltomoheader = mrc.readHeaderFromFile(fulltomopath)
			fulltomoshape = fulltomoheader['shape']
			if self.params['sizez'] > fulltomoshape[1]*fullbin :
				self.params['sizez'] = fulltomoshape[1]*fullbin
			subrunname = self.params['subrunname']
			volumeindex = apTomo.getLastVolumeIndex(fulltomodata) + 1
			dimension = {'x':int(self.params['sizex']),'y':int(self.params['sizey']),'z':int(self.params['sizez'])}
			zprojimagedata = fulltomodata['zprojection']
			apDisplay.printMsg("getting pixelsize")
			pixelsize = apTomo.getTomoPixelSize(zprojimagedata) * fullbin * subbin
			gtransform = [1,0,0,1,0,0]
			if self.params['selexonId']:
				particles = apParticle.getParticles(zprojimagedata, self.params['selexonId'])
			if self.params['stackId']:
				particles,stackparticles = apStack.getImageParticles(zprojimagedata, self.params['stackId'])
				stackdata = apStack.getOnlyStackData(self.params['stackId'])
			for p, particle in enumerate(particles):
				print particle['xcoord'],particle['ycoord'],fullbin
				center = apTomo.transformParticleCenter(particle,fullbin,gtransform)
				size = (dimension['x']/fullbin,dimension['y']/fullbin,dimension['z']/fullbin)
				volumename = 'volume%d'% (volumeindex,)
				volumedir = os.path.join(processdir,subrunname+'/',volumename+'/')
				apParam.createDirectory(volumedir)
				apImod.trimVolume(processdir, subrunname,seriesname,volumename,center,offsetz,size,True)
				long_volumename = seriesname+'_'+volumename
				subvolumepath = os.path.join(processdir, runname+"/",volumename+"/",long_volumename+".rec")
				if subbin > 1 or invert:
					apTomo.modifyVolume(subvolumepath,subbin,invert)
				if commit:
					subtomorundata = apTomo.insertSubTomoRun(sessiondata,
							self.params['selexonId'],self.params['stackId'],subrunname,invert,subbin)
					subtomodata = apTomo.insertSubTomogram(fulltomodata,subtomorundata,
							particle,offsetz,dimension,
							volumedir,long_volumename,volumeindex,pixelsize,
							description)
					apTomo.makeMovie(subvolumepath)
					apTomo.makeProjection(subvolumepath)
				volumeindex += 1
	def start(self):
		commit = self.params['commit']
		description = self.params['description']
		processdir = self.params['fulltomodir']
		runname = self.params['runname']
		offsetz = self.params['offsetz']
		subbin = self.params['bin']
		invert = self.params['invert']
		fulltomodata = apTomo.getFullTomoData(self.params['fulltomoId'])
		#subvolume making
		if (self.params['selexonId'] is not None or self.params['stackId']) and fulltomodata is not None:
			sessiondata = fulltomodata['session']
			seriesname = fulltomodata['name'].rstrip('_full')
			fullbin = fulltomodata['bin']
			if not fullbin:
				apDisplay.printWarning("no binning in full tomogram, something is wrong, use alignment bin for now")
				fullbin = fulltomodata['aligner']['alignrun']['bin']
			fulltomopath = os.path.join(fulltomodata['reconrun']['path']['path'], seriesname+"_full.rec")
			fulltomoheader = mrc.readHeaderFromFile(fulltomopath)
			fulltomoshape = fulltomoheader['shape']
			if self.params['sizez'] > fulltomoshape[1]*fullbin :
				self.params['sizez'] = fulltomoshape[1]*fullbin
			subrunname = self.params['subrunname']
			volumeindex = apTomo.getLastVolumeIndex(fulltomodata) + 1
			dimension = {'x':int(self.params['sizex']),'y':int(self.params['sizey']),'z':int(self.params['sizez'])}
			zprojimagedata = fulltomodata['zprojection']
			apDisplay.printMsg("getting pixelsize")
			pixelsize = apTomo.getTomoPixelSize(zprojimagedata) * fullbin * subbin
			gtransform = [1,0,0,1,0,0]
			if self.params['selexonId']:
				particles = apParticle.getParticles(zprojimagedata, self.params['selexonId'])
			if self.params['stackId']:
				particles,stackparticles = apStack.getImageParticles(zprojimagedata, self.params['stackId'])
				stackdata = apStack.getOnlyStackData(self.params['stackId'])
			for p, particle in enumerate(particles):
				print particle['xcoord'],particle['ycoord'],fullbin
				center = apTomo.transformParticleCenter(particle,fullbin,gtransform)
				size = (dimension['x']/fullbin,dimension['y']/fullbin,dimension['z']/fullbin)
				volumename = 'volume%d'% (volumeindex,)
				volumedir = os.path.join(processdir,subrunname+'/',volumename+'/')
				apParam.createDirectory(volumedir)
				apImod.trimVolume(processdir, subrunname,seriesname,volumename,center,offsetz,size,True)
				long_volumename = seriesname+'_'+volumename
				subvolumepath = os.path.join(processdir, runname+"/",volumename+"/",long_volumename+".rec")
				if subbin > 1 or invert:
					apTomo.modifyVolume(subvolumepath,subbin,invert)
				if commit:
					subtomorundata = apTomo.insertSubTomoRun(sessiondata,
							self.params['selexonId'],self.params['stackId'],subrunname,invert,subbin)
					subtomodata = apTomo.insertSubTomogram(fulltomodata,subtomorundata,
							particle,offsetz,dimension,
							volumedir,long_volumename,volumeindex,pixelsize,
							description)
					apTomo.makeMovie(subvolumepath)
					apTomo.makeProjection(subvolumepath)
				volumeindex += 1
Exemple #4
0
 def getParticlePicks(self, imgdata):
     particles = []
     if self.params['pickrunids'] is not None:
         self.params['pickrunidlist'] = self.params['pickrunids'].split(",")
         for pickrunid in self.params['pickrunidlist']:
             newparticles = apParticle.getParticles(imgdata, pickrunid)
             particles.extend(newparticles)
     targets = self.particlesToTargets(particles)
     #apDisplay.printMsg("Found "+str(len(targets))+" particles for image "+apDisplay.short(imgdata['filename']))
     return targets
	def getParticlePicks(self, imgdata):
		particles = []
		if self.params['pickrunids'] is not None:
			self.params['pickrunidlist'] = self.params['pickrunids'].split(",")
			for pickrunid in self.params['pickrunidlist']:
				newparticles = apParticle.getParticles(imgdata, pickrunid)
				particles.extend(newparticles)
		targets = self.particlesToTargets(particles)
		#apDisplay.printMsg("Found "+str(len(targets))+" particles for image "+apDisplay.short(imgdata['filename']))
		return targets
Exemple #6
0
	def getParticlePicks(self, imgdata):
		if not self.params['pickrunid']:
			if not self.params['pickrunname']:
				return []
			self.params['pickrunid'] = apParticle.getSelectionRun(imgdata, self.params['pickrunname'])
		if not self.params['pickrunname']:
			rundata = apParticle.getSelectionRunDataFromID(self.params['pickrunid'])
			self.params['pickrunname'] = rundata['name']
		particles = apParticle.getParticles(imgdata, self.params['pickrunid'])
		targets = self.particlesToTargets(particles)
		return targets
	def getParticlesInImage(self,imgdata):
		if self.params['defocpair'] is True and self.params['selectionid'] is not None:
			# using defocal pairs and particle picks
			partdatas, shiftdata = apParticle.getDefocPairParticles(imgdata, self.params['selectionid'], self.params['particlelabel'])
		elif self.params['fromstackid'] is not None:
			# using previous stack to make a new stack
			fromstackdata = appiondata.ApStackData.direct_query(self.params['fromstackid'])
			partdatas, shiftdata = self.getParticlesFromStack(fromstackdata,imgdata,self.params['defocpair'],)
		else:
			# using particle picks
			partdatas = apParticle.getParticles(imgdata, self.params['selectionid'], self.params['particlelabel'])
			shiftdata = {'shiftx':0, 'shifty':0, 'scale':1}

		apDisplay.printMsg("Found %d particles"%(len(partdatas)))

		### apply correlation limits
		if self.params['correlationmin'] or self.params['correlationmax']:
			partdatas = self.eliminateMinMaxCCParticles(partdatas)

		### apply masks
		if self.params['checkmask']:
			partdatas = self.eliminateMaskedParticles(partdatas, imgdata)
		return partdatas,shiftdata
	def getParticles(self,zprojimagedata):
		'''Return a list of ApParticleData	for reconstruction'''
		return apParticle.getParticles(zprojimagedata, self.params['selexonId'])
Exemple #9
0
 def getParticles(self, zprojimagedata):
     '''Return a list of ApParticleData      for reconstruction'''
     return apParticle.getParticles(zprojimagedata,
                                    self.params['selexonId'])