def setupImageInfo(self): apDisplay.printMsg("getting imagelist") self.orig_imagelist = apTomo.getImageList(self.tiltdatalist) apDisplay.printMsg("getting pixelsize") self.zerotiltimage = self.orig_imagelist[0] self.pixelsize = apTomo.getTomoPixelSize(self.zerotiltimage) apDisplay.printMsg("getting image shape and center") self.imgshape = apTomo.getTomoImageShape(self.zerotiltimage) self.imgcenter = {'x': self.imgshape[1] / 2, 'y': self.imgshape[0] / 2}
def setupImageInfo(self): apDisplay.printMsg("getting imagelist") self.orig_imagelist = apTomo.getImageList(self.tiltdatalist) apDisplay.printMsg("getting pixelsize") self.zerotiltimage = self.orig_imagelist[0] self.pixelsize = apTomo.getTomoPixelSize(self.zerotiltimage) apDisplay.printMsg("getting image shape and center") self.imgshape = apTomo.getTomoImageShape(self.zerotiltimage) self.imgcenter = {'x':self.imgshape[1]/2,'y':self.imgshape[0]/2}
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
def start(self): commit = self.params['commit'] tiltdatalist = apTomo.getTiltdataList(self.params['tiltseries'],self.params['othertiltseries']) sessiondata = tiltdatalist[0]['session'] description = self.params['description'] alignsample = self.params['sample'] cycle = self.params['cycle'] alignmethod = self.params['alignmethod'] apDisplay.printMsg("getting imagelist") imagelist = apTomo.getImageList(tiltdatalist) tilts,ordered_imagelist,ordered_mrc_files,refimg = apTomo.orderImageList(imagelist) # This parameter is needed for protomo, but not protomo2 if self.params['refimg']: refimg = self.params['refimg'] if alignmethod != 'protomo2': for file in ordered_mrc_files: # protomo can not function with a negative origin # protomo2 CAN function with negative origin apImage.shiftMRCStartToZero(file) apDisplay.printMsg("getting pixelsize") pixelsize = apTomo.getTomoPixelSize(ordered_imagelist[refimg]) if pixelsize is None: apDisplay.printError('Pixel Size not retrieved. Invalid tilt series for processing') imgshape = apTomo.getTomoImageShape(ordered_imagelist[refimg]) corr_bin = apTomo.getCorrelatorBinning(imgshape) center = {'x':imgshape[1]/2,'y':imgshape[0]/2} default_azimuth = apTomo.getDefaultAzimuthFromLeginon(ordered_imagelist[refimg]) processdir = os.path.abspath(self.params['rundir']) imodseriesname = apTomo.getFilename(tiltdatalist) # protomo2 does not write out text files, intermediate info is in memory and the final result is binary seriesname = 'tomo'+ imodseriesname # Write tilt series stack images and tilt angles, not needed for protomo2 if alignmethod != 'protomo2': stackdir = self.params['tiltseriesdir'] stackname = imodseriesname+".st" apTomo.writeTiltSeriesStack(stackdir,stackname,ordered_mrc_files,1e10*pixelsize) apImod.writeRawtltFile(stackdir,imodseriesname,tilts) leginonxcorrlist = [] for tiltdata in tiltdatalist: settingsdata = apTomo.getTomographySettings(sessiondata,tiltdata) leginonxcorrlist.append(settingsdata) # Run protomo2 if alignmethod == 'protomo2': self.runProtomo2(sessiondata, processdir, seriesname, ordered_imagelist, refimg, center, corr_bin, commit, tilts) # protomo2 does not need anything beyond this point, so exit return if cycle != 1 or alignmethod != 'protomo': cycles=[cycle,] else: # also process and commit protomo cycle 0 if doing cycle 1 cycles=[0,1] for cycle in cycles: if alignmethod == 'protomo' or alignmethod == 'leginon': self.params['aligndir'],self.params['imagedir'] = apProTomo.setProtomoDir(self.params['rundir'],cycle) aligndir = self.params['aligndir'] # Link images into rundir/raw rawimagenames = apProTomo.linkImageFiles(ordered_imagelist,self.params['imagedir']) tltfile = os.path.join(aligndir,seriesname+'-%02d-itr.tlt' % (cycle,)) if cycle == 0: # get initial shift alignment from leginon tiltcorrelator # Assume all tiltdata have the same tomography settings shifts = apTomo.getGlobalShift(ordered_imagelist, corr_bin, refimg) tltparams = apProTomo.convertShiftsToParams(tilts,shifts,center,default_azimuth,rawimagenames) apProTomo.writeTiltFile(tltfile,seriesname, tltparams[0], tltparams[1]) refineparamdict=apProTomo.createRefineDefaults(len(tilts), os.path.join(processdir,'raw'),os.path.join(processdir,'out')) refineparamdict = apProTomo.updateRefineParams(refineparamdict,imgshape,alignsample,100,refimg) else: lasttltfile = os.path.join(aligndir,seriesname+'-%02d-fitted.tlt' % (cycle-1,)) if self.params['goodcycle']: if (self.params['goodstart'] == 0 and self.params['goodend'] == len(ordered_imagelist) - 1): # revert goodcycle related params since nothing will be reset self.params['goodcycle'] = None self.params['goodstart'] = None self.params['goodend'] = None if not self.params['goodcycle']: #default uses last cycle shutil.copy(lasttltfile,tltfile) else: if not (self.params['goodstart'] or self.params['goodend']): shutil.copy(lasttltfile,tltfile) else: # Reset bad ending tilts before alignment cycle goodtltfile = os.path.join(aligndir,seriesname+'-%02d-fitted.tlt' % (self.params['goodcycle'],)) goodtltparams = apProTomo.parseTilt(goodtltfile) lasttltparams = apProTomo.parseTilt(lasttltfile) tltparams = apProTomo.resetTiltParams(lasttltparams,goodtltparams,self.params['goodstart'],self.params['goodend']) apProTomo.writeTiltFile(tltfile,seriesname, tltparams[0], tltparams[1]) lastrefineparamfile = os.path.join(aligndir,seriesname+'-%02d.param' % (cycle-1,)) refineparamdict = apProTomo.parseRefineParamFile(lastrefineparamfile) refineparamdict = apProTomo.updateRefineParams(refineparamdict,imgshape,alignsample,self.params['region'],refimg) # Write param file in rundir/align paramfilepath = os.path.join(seriesname+'-%02d.param' % (cycle)) fullparamfilepath = os.path.join(aligndir,paramfilepath) apProTomo.writeRefineParamFile(refineparamdict,fullparamfilepath) # run porjalign script os.chdir(aligndir) if cycle > 0: self.runProjalign(paramfilepath) else: lasttltfile = os.path.join(aligndir,seriesname+'-%02d-itr.tlt' % (cycle,)) newtltfile = os.path.join(aligndir,seriesname+'-%02d-fitted.tlt' % (cycle,)) shutil.copy(lasttltfile,newtltfile) # convert to imod alignment alignpathprefix = os.path.join(processdir, seriesname) centertuple = (center['x'],center['y']) apProTomo.convertGlobalTransformProtomoToImod(seriesname+'-%02d' %(cycle),imodseriesname, centertuple) elif alignmethod == 'imod-shift': # Correlation by Coarse correlation in IMOD aligndir = processdir imodxcorrdata = apImod.coarseAlignment(stackdir, processdir, imodseriesname, commit) # Global Transformation gtransforms = apImod.convertToGlobalAlignment(processdir, imodseriesname) # Create Aligned Stack for record bin = int(math.ceil(min(imgshape) / 512.0)) apImod.createAlignedStack(stackdir, aligndir, imodseriesname,bin) if alignmethod == 'protomo' or alignmethod == 'leginon': alifilename = imodseriesname+'-%02d.ali' % cycle os.rename(imodseriesname+'.ali',alifilename) else: alifilename = imodseriesname+'.ali' alifilepath = os.path.join(aligndir,alifilename) # commit to database if commit: if alignmethod == 'protomo' or alignmethod == 'leginon': # -- Commit Parameters -- protomodata = apProTomo.insertProtomoParams(seriesname) alignrun = apTomo.insertTomoAlignmentRun(sessiondata,leginonxcorrlist[0],None,protomodata,None,1,self.params['runname'],self.params['rundir'],self.params['description']) self.cycle_description = self.params['description'] self.params['cycle'] = cycle if cycle == 0: # temporarily change aligner description on the initial 0 cycle self.params['description'] = 'leginon correlation results' # insert sample and window size and all the other user defined params into ApProtomoRefinementParamsData alignerdata = apProTomo.insertAlignIteration(alignrun, protomodata, self.params, refineparamdict,ordered_imagelist[refimg]) # -- Commit Results -- resulttltfile = os.path.join(aligndir,seriesname+'-%02d-fitted.tlt' % (cycle,)) resulttltparams = apProTomo.parseTilt(resulttltfile) if resulttltparams: # commit the geometry parameters (psi, theta, phi, azimuth) modeldata = apProTomo.insertModel(alignerdata, resulttltparams) # insert results into ApProtomoAlignmentData (also used by imod) for each image for i,imagedata in enumerate(ordered_imagelist): apProTomo.insertTiltAlignment(alignerdata,imagedata,i,resulttltparams[0][i],center) self.params['description'] = self.cycle_description else: alignrun = apTomo.insertTomoAlignmentRun(sessiondata,None,imodxcorrdata,None,None,1,self.params['runname'],self.params['rundir'],self.params['description']) alignerdata = apTomo.insertAlignerParams(alignrun,self.params) #results prexgfile = os.path.join(aligndir,imodseriesname+'.prexg') shifts = apImod.readShiftPrexgFile(aligndir, imodseriesname) resulttltparams = apProTomo.convertShiftsToParams(tilts,shifts,center,default_azimuth) if resulttltparams: modeldata = apProTomo.insertModel(alignerdata, resulttltparams) for i,imagedata in enumerate(ordered_imagelist): apProTomo.insertTiltAlignment(alignerdata,imagedata,i,resulttltparams[0][i],center) # multiple tilt series in one alignrun for i in range(0,len(tiltdatalist)): if i == 0: primary = True else: primary = False apTomo.insertTiltsInAlignRun(alignrun, tiltdatalist[i],leginonxcorrlist[i],primary) apTomo.makeAlignStackMovie(alifilepath) os.chdir(processdir)
def start(self): # set local parameters commit = self.params['commit'] tiltdatalist = apTomo.getTiltdataList(self.params['tiltseries'], self.params['othertiltseries']) sessiondata = tiltdatalist[0]['session'] description = self.params['description'] runname = self.params['runname'] alignmethod = self.params['alignmethod'] reconbin = int(self.params['reconbin']) thickness_pixel = int(self.params['reconthickness']) markersize_nm = int(self.params['markersize']) markernumber = int(self.params['markernumber']) apDisplay.printMsg("getting imagelist") imagelist = apTomo.getImageList(tiltdatalist) tilts, ordered_imagelist, ordered_mrc_files, refimg = apTomo.orderImageList( imagelist) apDisplay.printMsg("getting pixelsize") pixelsize = apTomo.getTomoPixelSize(ordered_imagelist[refimg]) imgshape = apTomo.getTomoImageShape(ordered_imagelist[refimg]) #thickness_binnedpixel = int(thickness_nm * 1e-9 / (pixelsize * reconbin)) markersize_pixel = int(markersize_nm * 1e-9 / pixelsize) processdir = os.path.abspath(self.params['rundir']) imodseriesname = apTomo.getFilename(tiltdatalist) seriesname = imodseriesname # Write tilt series stack images and tilt angles stackdir = self.params['tiltseriesdir'] stackname = imodseriesname + ".st" apTomo.writeTiltSeriesStack(stackdir, stackname, ordered_mrc_files, 1e10 * pixelsize) apRaptor.linkStToMrcExtension(stackdir, imodseriesname) apImod.writeRawtltFile(stackdir, imodseriesname, tilts) # Get Leginon tomography settings leginontomosettingslist = [] for tiltdata in tiltdatalist: settingsdata = apTomo.getTomographySettings(sessiondata, tiltdata) leginontomosettingslist.append(settingsdata) aligndir = processdir # run the script and get alignment results when raptor can output alignment results in the future. raptoraligndata is None for now. returncode, raptoraligndata, raptorfailed = apRaptor.alignAndRecon( stackdir, stackname, processdir, markersize_pixel, reconbin, thickness_pixel, markernumber, commit) # Create Aligned Stack for record, not done in apRaptor yet, currently raptoraligndata is None if not raptorfailed: alifilename = imodseriesname + '.ali' alifilepath = os.path.join(aligndir, 'align', alifilename) print alifilepath # commit to database if commit: # parameters raptorparamsdata = apRaptor.insertRaptorParams( markersize_nm, markernumber) alignrun = apTomo.insertTomoAlignmentRun( sessiondata, None, None, None, raptorparamsdata, 1, self.params['runname'], self.params['rundir'], self.params['description'], raptorfailed) # to accomodate iterative alignment, one alignmentrun may have # used the aligner several times, for this case a single # aligner params data is inserted as in the case of Imod xcorr alignerdata = apTomo.insertAlignerParams(alignrun, self.params) #results if raptoraligndata: # if raptor has alignment result, it is converted to protomo # format which is more parameterized and saved prexgfile = os.path.join(aligndir, imodseriesname + '.prexg') shifts = apImod.readShiftPrexgFile(aligndir, imodseriesname) resulttltparams = apProTomo.convertShiftsToParams( tilts, shifts, center) if resulttltparams: modeldata = apProTomo.insertModel(alignerdata, resulttltparams) for i, imagedata in enumerate(ordered_imagelist): apProTomo.insertTiltAlignment(alignerdata, imagedata, i, resulttltparams[0][i], center) # multiple tilt series in one alignrun for i in range(0, len(tiltdatalist)): if i == 0: primary = True else: primary = False # Record tilts in align run allows more than one tilt series to be # used in one align run. apTomo.insertTiltsInAlignRun(alignrun, tiltdatalist[i], leginontomosettingslist[i], primary) if not raptorfailed: apTomo.makeAlignStackMovie(alifilepath) os.chdir(processdir) # Full tomogram created with raptor is ???? handness????? if not raptorfailed: ''' voltransform = '????' origtomopath = os.path.join(processdir, seriesname+"_full.rec") currenttomopath = apImod.transformVolume(origtomopath,voltransform) shutil.move(currenttomopath, origtomopath) ''' zprojectfile = apImod.projectFullZ(processdir, runname, seriesname, reconbin, False, False) try: zimagedata = apTomo.uploadZProjection( runname, imagelist[0], zprojectfile) except: zimagedata = None fullrundata = apTomo.insertFullTomoRun(sessiondata, processdir, runname, 'imod-wbp') fulltomodata = apTomo.insertFullTomogram( sessiondata, tiltdatalist[0], alignerdata, fullrundata, runname, description, zimagedata, thickness_pixel, reconbin) # if raptor succeeded, upload data and parameters to database session_time = sessiondata.timestamp description = self.params['description'] raptordatabase = apRaptor.commitToJensenDatabase( session_time, fulltomodata, stackdir, processdir, stackname, description) if raptordatabase == 0: apDisplay.printMsg( "RAPTOR and uploading to Jensen database done.") else: apDisplay.printWarning( "Uploading to Jensen database failed.")
def start(self): # set local parameters commit = self.params['commit'] tiltdatalist = apTomo.getTiltdataList(self.params['tiltseries'],self.params['othertiltseries']) sessiondata = tiltdatalist[0]['session'] description = self.params['description'] runname = self.params['runname'] alignmethod = self.params['alignmethod'] reconbin = int(self.params['reconbin']) thickness_pixel = int(self.params['reconthickness']) markersize_nm = int(self.params['markersize']) markernumber = int(self.params['markernumber']) apDisplay.printMsg("getting imagelist") imagelist = apTomo.getImageList(tiltdatalist) tilts,ordered_imagelist,ordered_mrc_files,refimg = apTomo.orderImageList(imagelist) apDisplay.printMsg("getting pixelsize") pixelsize = apTomo.getTomoPixelSize(ordered_imagelist[refimg]) imgshape = apTomo.getTomoImageShape(ordered_imagelist[refimg]) #thickness_binnedpixel = int(thickness_nm * 1e-9 / (pixelsize * reconbin)) markersize_pixel = int(markersize_nm * 1e-9 / pixelsize) processdir = os.path.abspath(self.params['rundir']) imodseriesname = apTomo.getFilename(tiltdatalist) seriesname = imodseriesname # Write tilt series stack images and tilt angles stackdir = self.params['tiltseriesdir'] stackname = imodseriesname+".st" apTomo.writeTiltSeriesStack(stackdir,stackname,ordered_mrc_files,1e10*pixelsize) apRaptor.linkStToMrcExtension(stackdir,imodseriesname) apImod.writeRawtltFile(stackdir,imodseriesname,tilts) # Get Leginon tomography settings leginontomosettingslist = [] for tiltdata in tiltdatalist: settingsdata = apTomo.getTomographySettings(sessiondata,tiltdata) leginontomosettingslist.append(settingsdata) aligndir = processdir # run the script and get alignment results when raptor can output alignment results in the future. raptoraligndata is None for now. returncode, raptoraligndata, raptorfailed = apRaptor.alignAndRecon(stackdir, stackname, processdir, markersize_pixel, reconbin, thickness_pixel, markernumber, commit) # Create Aligned Stack for record, not done in apRaptor yet, currently raptoraligndata is None if not raptorfailed: alifilename = imodseriesname+'.ali' alifilepath = os.path.join(aligndir,'align',alifilename) print alifilepath # commit to database if commit: # parameters raptorparamsdata = apRaptor.insertRaptorParams(markersize_nm,markernumber) alignrun = apTomo.insertTomoAlignmentRun(sessiondata,None,None,None,raptorparamsdata,1,self.params['runname'],self.params['rundir'],self.params['description'],raptorfailed) # to accomodate iterative alignment, one alignmentrun may have # used the aligner several times, for this case a single # aligner params data is inserted as in the case of Imod xcorr alignerdata = apTomo.insertAlignerParams(alignrun,self.params) #results if raptoraligndata: # if raptor has alignment result, it is converted to protomo # format which is more parameterized and saved prexgfile = os.path.join(aligndir,imodseriesname+'.prexg') shifts = apImod.readShiftPrexgFile(aligndir, imodseriesname) resulttltparams = apProTomo.convertShiftsToParams(tilts,shifts,center) if resulttltparams: modeldata = apProTomo.insertModel(alignerdata, resulttltparams) for i,imagedata in enumerate(ordered_imagelist): apProTomo.insertTiltAlignment(alignerdata,imagedata,i,resulttltparams[0][i],center) # multiple tilt series in one alignrun for i in range(0,len(tiltdatalist)): if i == 0: primary = True else: primary = False # Record tilts in align run allows more than one tilt series to be # used in one align run. apTomo.insertTiltsInAlignRun(alignrun, tiltdatalist[i],leginontomosettingslist[i],primary) if not raptorfailed: apTomo.makeAlignStackMovie(alifilepath) os.chdir(processdir) # Full tomogram created with raptor is ???? handness????? if not raptorfailed: ''' voltransform = '????' origtomopath = os.path.join(processdir, seriesname+"_full.rec") currenttomopath = apImod.transformVolume(origtomopath,voltransform) shutil.move(currenttomopath, origtomopath) ''' zprojectfile = apImod.projectFullZ(processdir, runname, seriesname,reconbin,False,False) try: zimagedata = apTomo.uploadZProjection(runname,imagelist[0],zprojectfile) except: zimagedata = None fullrundata = apTomo.insertFullTomoRun(sessiondata,processdir,runname,'imod-wbp') fulltomodata = apTomo.insertFullTomogram(sessiondata,tiltdatalist[0],alignerdata, fullrundata,runname,description,zimagedata,thickness_pixel,reconbin) # if raptor succeeded, upload data and parameters to database session_time = sessiondata.timestamp description = self.params['description'] raptordatabase = apRaptor.commitToJensenDatabase(session_time, fulltomodata, stackdir, processdir, stackname, description) if raptordatabase == 0: apDisplay.printMsg("RAPTOR and uploading to Jensen database done.") else: apDisplay.printWarning("Uploading to Jensen database failed.")