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
Beispiel #3
0
 def start(self):
     commit = self.params['commit']
     processdir = self.params['fulltomodir']
     runname = self.params['runname']
     subbin = self.params['bin']
     invert = self.params['invert']
     self.fulltomodata = apTomo.getFullTomoData(self.params['fulltomoId'])
     if self.fulltomodata is None:
         return
     #subvolume making
     self.seriesname = self.fulltomodata['name'].rstrip('_full')
     self.fulltomoshape = self.getFullTomoShape()
     sessiondata = self.fulltomodata['session']
     self.fullbin = self.fulltomodata['bin']
     if not self.fullbin:
         apDisplay.printWarning(
             "no binning in full tomogram, something is wrong, use alignment bin for now"
         )
         self.fullbin = self.fulltomodata['aligner']['alignrun']['bin']
     volumeindex = apTomo.getLastVolumeIndex(self.fulltomodata) + 1
     zprojimagedata = self.fulltomodata['zprojection']
     apDisplay.printMsg("getting pixelsize")
     pixelsize = apTomo.getTomoPixelSize(
         zprojimagedata) * self.fullbin * subbin
     particles = self.getParticles(zprojimagedata)
     for p, particle in enumerate(particles):
         size, offsetz = self.recon3D(particle, volumeindex)
         volumedir = os.path.dirname(self.subvolumepath)
         # not include .rec
         long_volumename = os.path.basename(self.subvolumepath)[:-4]
         # size is the subtomogram dimension tuple after full tomogram binning
         if commit:
             subtomorundata = apTomo.insertSubTomoRun(
                 sessiondata, self.getParticleSelectionRunId(),
                 self.getStackId(), self.params['subrunname'], invert,
                 subbin)
             description = self.updateDescription()
             subtomodata = apTomo.insertSubTomogram(
                 self.fulltomodata, subtomorundata, particle, offsetz, {
                     'x': size[0],
                     'y': size[1],
                     'z': size[2]
                 }, volumedir, long_volumename, volumeindex, pixelsize,
                 description)
             apTomo.makeMovie(self.subvolumepath)
             apTomo.makeProjection(self.subvolumepath)
         volumeindex += 1
	def start(self):
		commit = self.params['commit']
		processdir = self.params['fulltomodir']
		runname = self.params['runname']
		subbin = self.params['bin']
		invert = self.params['invert']
		self.fulltomodata = apTomo.getFullTomoData(self.params['fulltomoId'])
		if self.fulltomodata is None:
			return
		#subvolume making
		self.seriesname = self.fulltomodata['name'].rstrip('_full')
		self.fulltomoshape = self.getFullTomoShape()
		sessiondata = self.fulltomodata['session']
		self.fullbin = self.fulltomodata['bin']
		if not self.fullbin:
			apDisplay.printWarning("no binning in full tomogram, something is wrong, use alignment bin for now")
			self.fullbin = self.fulltomodata['aligner']['alignrun']['bin']
		volumeindex = apTomo.getLastVolumeIndex(self.fulltomodata) + 1
		zprojimagedata = self.fulltomodata['zprojection']
		apDisplay.printMsg("getting pixelsize")
		pixelsize = apTomo.getTomoPixelSize(zprojimagedata) * self.fullbin * subbin
		particles = self.getParticles(zprojimagedata)
		for p, particle in enumerate(particles):
			size,offsetz = self.recon3D(particle,volumeindex)
			volumedir = os.path.dirname(self.subvolumepath)
			# not include .rec
			long_volumename = os.path.basename(self.subvolumepath)[:-4]
			# size is the subtomogram dimension tuple after full tomogram binning
			if commit:
				subtomorundata = apTomo.insertSubTomoRun(sessiondata,
						self.getParticleSelectionRunId(),self.getStackId(),self.params['subrunname'],invert,subbin)
				description = self.updateDescription()
				subtomodata = apTomo.insertSubTomogram(self.fulltomodata,subtomorundata,
						particle,offsetz,{'x':size[0],'y':size[1],'z':size[2]},
						volumedir,long_volumename,volumeindex,pixelsize,
						description)
				apTomo.makeMovie(self.subvolumepath)
				apTomo.makeProjection(self.subvolumepath)
			volumeindex += 1