def combine_polished_stacks(self): oldmovieid = None nmic = 0 for part in self.stackparts: self.dd.setImageData(part['particle']['image']) movieid = part['particle']['image'].dbid alignpairdata = self.dd.getAlignImagePairData( None, query_source=not self.dd.getIsAligned()) if alignpairdata is False: apDisplay.printWarning( 'Image not used for nor a result of alignment.') if movieid != oldmovieid: ddstack = orig_dd_file = alignpairdata['source'][ 'filename'] + "_lmbfgs.mrc" particlestack = os.path.join(self.params['rundir'], "Particles", ddstack) a = mrc.read(particlestack) apDisplay.printMsg("appending stack %s" % ddstack) if oldmovieid is None: mrc.write(a, "polished.mrc") else: mrc.append(a, "polished.mrc") oldmovieid = movieid
def makeStack(self, tiltseries, mrc_files): stackname = self.getFilename(tiltseries) + '_stack.mrc' stackname = os.path.join(self.settings['path'], stackname) shutil.copy(mrc_files[0], stackname) for mrcfile in mrc_files: im = mrc.read(mrcfile) mrc.append(im, stackname)
def mergeResults(self): allout = 'all_out.mrc' for proc in range(self.params['nproc']): infilepath = 'proc%03d/out.mrc' % (proc) a = mrc.read(infilepath) if proc == 0: mrc.write(a, allout) else: mrc.append(a, allout) return allout
def mergeResults(self): allout = 'all_out.mrc' for proc in range(self.params['nproc']): infilepath = 'proc%03d/out.mrc' % (proc) a = mrc.read(infilepath) if proc == 0: mrc.write(a,allout) else: mrc.append(a,allout) return allout
def mergeResults(self): allout = "all_out.mrc" for proc in range(self.params["nproc"]): infilepath = "proc%03d/out.mrc" % (proc) a = mrc.read(infilepath) if proc == 0: mrc.write(a, allout) else: mrc.append(a, allout) return allout
def writeMrcStack(path, stackname, mrc_files, binning=1): apDisplay.printMsg("Writing MRC stack file... ") stackname = os.path.join(path, stackname) im = mrc.read(mrc_files[0]) image = imagefun.bin(im, binning) mrc.write(image,stackname) del mrc_files[0] for mrcfile in mrc_files: im = mrc.read(mrcfile) image = imagefun.bin(im, binning) mrc.append(image, stackname)
def writeMrcStack(path, stackname, mrc_files, binning=1): apDisplay.printMsg("Writing MRC stack file... ") stackname = os.path.join(path, stackname) im = mrc.read(mrc_files[0]) image = imagefun.bin(im, binning) mrc.write(image, stackname) del mrc_files[0] for mrcfile in mrc_files: im = mrc.read(mrcfile) image = imagefun.bin(im, binning) mrc.append(image, stackname)
def makeMovie(self,framepaths_wild,moviepath): files = os.listdir(self.params['rundir']) moviepath += '.mrc' for filename in files: bits = framepaths_wild.split('*') if bits[0] in filename: print filename array = mrc.read(os.path.join(self.params['rundir'],filename)) if os.path.isfile(moviepath): mrc.append(array,moviepath) else: mrc.write(array,moviepath)
def makeStack(self, tiltseries, mrc_files): stackname = self.getFilename(tiltseries) + '.st' stackname = os.path.join(self.settings['path'], stackname) im = mrc.read(mrc_files[0]) image = imagefun.bin(im, int(self.settings['binning'])) mrc.write(image, stackname) #shutil.copy(mrc_files[0], stackname) del mrc_files[0] for mrcfile in mrc_files: im = mrc.read(mrcfile) image = imagefun.bin(im, int(self.settings['binning'])) mrc.append(image, stackname)
def makeStack(self, tiltseries, mrc_files): stackname = self.getFilename(tiltseries) + '.st' stackname = os.path.join(self.settings['path'], stackname) im = mrc.read(mrc_files[0]) image = imagefun.bin(im, int(self.settings['binning'])) mrc.write(image,stackname) #shutil.copy(mrc_files[0], stackname) del mrc_files[0] for mrcfile in mrc_files: im = mrc.read(mrcfile) image = imagefun.bin(im, int(self.settings['binning'])) mrc.append(image, stackname)
def appendParticleListToStackFile(self, partlist, filename): """ takes any file type and adds a list of particles use memory mapping (mmap) to prevent memory overloads """ if self.particlesWritten < 1 and os.path.exists(filename) and self.params['append'] is False: if filename.endswith('.hed') or filename.endswith('.img'): root = os.path.splitext(filename)[0] headerfile = root+".hed" datafile = root+".img" os.remove(headerfile) os.remove(datafile) else: os.remove(filename) #Determine extension if filename.endswith('.mrc'): if os.path.exists(filename): partarray = numpy.array(partlist) mrc.append(partarray, filename) else: f = open(filename, "wb+") partarray = numpy.array(partlist) mrc.write(partarray, f) f.close() apix = self.params['apix'] pixeldict = {'x': apix, 'y': apix, 'z': apix, } mrc.updateFilePixelSize(filename, pixeldict) elif filename.endswith('.hed') or filename.endswith('.img'): apImagicFile.appendParticleListToStackFile(partlist, filename, msg=self.params['debug']) elif filename.endswith('.spi'): ### to be implemented apDisplay.printError("SPIDER is not implemented yet") elif filename.endswith('.hdf'): ### to be implemented apDisplay.printError("HDF is not implemented yet") else: apDisplay.printError("unknown stack type") self.particlesWritten += len(partlist) return True
def combine_polished_stacks(self): oldmovieid = None nmic = 0 for part in self.stackparts: self.dd.setImageData(part['particle']['image']) movieid = part['particle']['image'].dbid alignpairdata = self.dd.getAlignImagePairData(None,query_source=not self.dd.getIsAligned()) if alignpairdata is False: apDisplay.printWarning('Image not used for nor a result of alignment.') if movieid != oldmovieid: ddstack = orig_dd_file = alignpairdata['source']['filename']+"_lmbfgs.mrc" particlestack = os.path.join(self.params['rundir'], "Particles", ddstack) a = mrc.read(particlestack) apDisplay.printMsg("appending stack %s" % ddstack) if oldmovieid is None: mrc.write(a, "polished.mrc") else: mrc.append(a, "polished.mrc") oldmovieid = movieid
def _getImage(self): self.custom_setup() if not self.validateGeometry(): raise ValueError('invalid image geometry') for axis in ['x', 'y']: if self.dimension[axis] * self.binning[axis] > self.getCameraSize( )[axis]: raise ValueError('invalid dimension/binning combination') columns = self.dimension['x'] rows = self.dimension['y'] shape = (rows, columns) t0 = time.time() ## exposure time time.sleep(self.exposure_time) t1 = time.time() self.exposure_timestamp = (t1 + t0) / 2.0 nframes = self.getNumberOfFrames() exptime = self.frame_time if self.useframes: useframes = [] for f in self.useframes: if 0 <= f < nframes: useframes.append(f) else: # use all frames in final image useframes = range(nframes) self.useframes = useframes print 'SAVERAWFRAMES', self.save_frames if self.save_frames: self.rawframesname = time.strftime('frames_%Y%m%d_%H%M%S') self.rawframesname += '_%02d' % (idcounter.next(), ) else: return self.getSyntheticImage(shape) sum = numpy.zeros(shape, numpy.float32) for i in range(nframes): if self.exposure_type == 'bias': frame = self._simBias(shape) elif self.exposure_type == 'dark': frame = self._simDark(shape, exptime) elif self.exposure_type == 'normal': frame = self._simNormal(shape, exptime) else: raise RuntimeError('unknown exposure type: %s' % (self.exposure_type, )) #Keep it small frame = self.convertToInt8(frame) mrcname = '.mrc' fname = os.path.join(FRAME_DIR, self.rawframesname + mrcname) if self.save_frames: print 'SAVE', i if i == 0: mrc.write(frame, fname) else: mrc.append(frame, fname) if i in self.useframes: print 'SUM', i sum += frame return sum
def _getImage(self): self.custom_setup() if not self.validateGeometry(): raise ValueError('invalid image geometry') for axis in ['x', 'y']: if self.dimension[axis] * self.binning[axis] > self.getCameraSize()[axis]: raise ValueError('invalid dimension/binning combination') columns = self.dimension['x'] rows = self.dimension['y'] shape = (rows, columns) t0 = time.time() ## exposure time time.sleep(self.exposure_time) t1 = time.time() self.exposure_timestamp = (t1 + t0) / 2.0 nframes = self.getNumberOfFrames() exptime = self.frame_time if self.useframes: useframes = [] for f in self.useframes: if 0 <= f < nframes: useframes.append(f) else: # use all frames in final image useframes = range(nframes) self.useframes = useframes print 'SAVERAWFRAMES', self.save_frames if self.save_frames: self.rawframesname = time.strftime('frames_%Y%m%d_%H%M%S') self.rawframesname += '_%02d' % (idcounter.next(),) else: return self.getSyntheticImage(shape) sum = numpy.zeros(shape, numpy.float32) for i in range(nframes): if self.exposure_type == 'bias': frame = self._simBias(shape) elif self.exposure_type == 'dark': frame = self._simDark(shape, exptime) elif self.exposure_type == 'normal': frame = self._simNormal(shape, exptime) else: raise RuntimeError('unknown exposure type: %s' % (self.exposure_type,)) #Keep it small frame = self.convertToInt8(frame) mrcname = '.mrc' fname = os.path.join(FRAME_DIR,self.rawframesname + mrcname) if self.save_frames: print 'SAVE', i if i == 0: mrc.write(frame, fname) else: mrc.append(frame, fname) if i in self.useframes: print 'SUM', i sum += frame return sum
""" # parameters to change size = (2048,2048) drift = 3.0 number_of_frames = 20 feature_size = 2 import numpy from pyami import mrc zeros = numpy.zeros(size) center_frame = number_of_frames / 2 start_center = (size[0]/2 - center_frame, size[1]/2 - center_frame) for i in range(number_of_frames): print 'writing frame %d' % (i,) a = zeros * 1.0 for p in range(feature_size): for q in range(feature_size): position = (int(round(start_center[0]+p+i*drift)),int(round(start_center[1]+q+i*drift))) a[position] = 5.0 print position if i == 0: mrc.write(a,'frames.mrc') else: mrc.append(a,'frames.mrc')
""" Makes a small and simple stack for testing frame alignment program It writes to local directory """ # parameters to change size = (2048, 2048) drift = 3.0 number_of_frames = 20 feature_size = 2 import numpy from pyami import mrc zeros = numpy.zeros(size) center_frame = number_of_frames / 2 start_center = (size[0] / 2 - center_frame, size[1] / 2 - center_frame) for i in range(number_of_frames): print 'writing frame %d' % (i, ) a = zeros * 1.0 for p in range(feature_size): for q in range(feature_size): position = (int(round(start_center[0] + p + i * drift)), int(round(start_center[1] + q + i * drift))) a[position] = 5.0 print position if i == 0: mrc.write(a, 'frames.mrc') else: mrc.append(a, 'frames.mrc')