コード例 #1
0
    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
コード例 #2
0
	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)
コード例 #3
0
 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
コード例 #4
0
 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
コード例 #5
0
 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
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
	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)
コード例 #9
0
 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)
コード例 #10
0
 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)
コード例 #11
0
	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)
コード例 #12
0
	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
コード例 #13
0
	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
コード例 #14
0
    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
コード例 #15
0
	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
コード例 #16
0
"""
# 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')

	
コード例 #17
0
"""
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')