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'] 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