def newImageVersion(self, oldimagedata, newimagedata, correct):
                ## store EMData to DB to prevent referencing errors
                self.publish(newimagedata['scope'], database=True)
                self.publish(newimagedata['camera'], database=True)

                ## convert CameraImageData to AcquisitionImageData
                newimagedata = leginondata.AcquisitionImageData(initializer=newimagedata)
                ## then add stuff from old imagedata
                newimagedata['preset'] = oldimagedata['preset']
                newimagedata['label'] = oldimagedata['label']
                newimagedata['target'] = oldimagedata['target']
                newimagedata['list'] = oldimagedata['list']
                newimagedata['emtarget'] = oldimagedata['emtarget']
                newimagedata['version'] = oldimagedata['version'] + 1
                dim = newimagedata['camera']['dimension']
                newimagedata['pixels'] = dim['x'] * dim['y']
                newimagedata['pixeltype'] = str(newimagedata['image'].dtype)
                target = newimagedata['target']
                if target is not None and 'grid' in target and target['grid'] is not None:
                        newimagedata['grid'] = target['grid']

                ## set the 'filename' value
                if newimagedata['label'] == 'RCT':
                        rctacquisition.setImageFilename(newimagedata)
                else:
                        acquisition.setImageFilename(newimagedata)

                newimagedata.attachPixelSize()

                self.logger.info('Publishing new version of image...')
                self.publish(newimagedata, database=True, dbforce=True)
                return newimagedata
	def newImageVersion(self, oldimagedata, newimagedata, correct):
		## store EMData to DB to prevent referencing errors
		self.publish(newimagedata['scope'], database=True)
		self.publish(newimagedata['camera'], database=True)

		## convert CameraImageData to AcquisitionImageData
		newimagedata = leginondata.AcquisitionImageData(initializer=newimagedata)
		## then add stuff from old imagedata
		newimagedata['preset'] = oldimagedata['preset']
		newimagedata['label'] = oldimagedata['label']
		newimagedata['target'] = oldimagedata['target']
		newimagedata['list'] = oldimagedata['list']
		newimagedata['emtarget'] = oldimagedata['emtarget']
		newimagedata['version'] = oldimagedata['version'] + 1
		dim = newimagedata['camera']['dimension']
		newimagedata['pixels'] = dim['x'] * dim['y']
		newimagedata['pixeltype'] = str(newimagedata['image'].dtype)
		target = newimagedata['target']
		if target is not None and 'grid' in target and target['grid'] is not None:
			newimagedata['grid'] = target['grid']

		## set the 'filename' value
		if newimagedata['label'] == 'RCT':
			rctacquisition.setImageFilename(newimagedata)
		else:
			acquisition.setImageFilename(newimagedata)

		newimagedata.attachPixelSize()

		self.logger.info('Publishing new version of image...')
		self.publish(newimagedata, database=True, dbforce=True)
		return newimagedata
    def newImageVersion(self, oldimagedata, newimagedata, correct):
        ## store EMData to DB to prevent referencing errors
        self.publish(newimagedata["scope"], database=True)
        self.publish(newimagedata["camera"], database=True)

        ## convert CameraImageData to AcquisitionImageData
        newimagedata = leginondata.AcquisitionImageData(initializer=newimagedata)
        ## then add stuff from old imagedata
        newimagedata["preset"] = oldimagedata["preset"]
        newimagedata["label"] = oldimagedata["label"]
        newimagedata["target"] = oldimagedata["target"]
        newimagedata["list"] = oldimagedata["list"]
        newimagedata["emtarget"] = oldimagedata["emtarget"]
        newimagedata["version"] = oldimagedata["version"] + 1
        dim = newimagedata["camera"]["dimension"]
        newimagedata["pixels"] = dim["x"] * dim["y"]
        newimagedata["pixeltype"] = str(newimagedata["image"].dtype)
        target = newimagedata["target"]
        if target is not None and "grid" in target and target["grid"] is not None:
            newimagedata["grid"] = target["grid"]

            ## set the 'filename' value
        if newimagedata["label"] == "RCT":
            rctacquisition.setImageFilename(newimagedata)
        else:
            acquisition.setImageFilename(newimagedata)

        newimagedata.attachPixelSize()

        self.logger.info("Publishing new version of image...")
        self.publish(newimagedata, database=True, dbforce=True)
        return newimagedata
Example #4
0
	def copyImage(self, oldimage):
		imagedata = leginondata.AcquisitionImageData()
		imagedata.update(oldimage)
		version = self.recentImageVersion(oldimage)
		imagedata['version'] = version + 1
		imagedata['filename'] = None
		imagedata['image'] = oldimage['image']
		## set the 'filename' value
		if imagedata['label'] == 'RCT':
			rctacquisition.setImageFilename(imagedata)
		else:
			acquisition.setImageFilename(imagedata)
		self.logger.info('Publishing new copied image...')
		self.publish(imagedata, database=True)
		return imagedata
 def copyImage(self, oldimage):
         imagedata = leginondata.AcquisitionImageData()
         imagedata.update(oldimage)
         version = self.recentImageVersion(oldimage)
         imagedata['version'] = version + 1
         imagedata['filename'] = None
         imagedata['image'] = oldimage['image']
         ## set the 'filename' value
         if imagedata['label'] == 'RCT':
                 rctacquisition.setImageFilename(imagedata)
         else:
                 acquisition.setImageFilename(imagedata)
         self.logger.info('Publishing new copied image...')
         self.publish(imagedata, database=True)
         return imagedata
	def reacquire(self, targetdata):
		oldimage = None
		targetlist = targetdata['list']
		tquery = leginondata.AcquisitionImageTargetData(session=self.session, list=targetlist, number=targetdata['number'], type=targetdata['type'])
		aquery = leginondata.AcquisitionImageData(target=tquery)
		results = aquery.query(readimages=False, results=1)
		if len(results) > 0:
			oldimage = results[0]
		if oldimage is None:
			print "can not find an image that is acquired with this target"
			print targetdata.dbid
			return None
		oldemtarget = oldimage['emtarget']
		movetype = oldemtarget['movetype']
		try:
			emtarget = self.targetToEMTargetData(targetdata,movetype)
		except InvalidStagePosition:
			self.logger.error('Invalid new emtarget')
			return None
		oldpresetdata = oldimage['preset']
		presetname = oldpresetdata['name']
		channel = int(oldimage['correction channel']==0)
		self.presetsclient.toScope(presetname, emtarget, keep_shift=False)
		targetdata = emtarget['target']
		imagedata = self.acquireCorrectedCameraImageData(channel)
		currentpresetdata = self.presetsclient.getCurrentPreset()
		## convert CameraImageData to AcquisitionImageData
		dim = imagedata['camera']['dimension']
		pixels = dim['x'] * dim['y']
		pixeltype = str(imagedata['image'].dtype)
		## Fix me: Not sure what image list should go in here nor naming of the file
		imagedata = leginondata.AcquisitionImageData(initializer=imagedata, preset=currentpresetdata, label=self.name, target=targetdata, list=oldimage['list'], emtarget=emtarget, pixels=pixels, pixeltype=pixeltype,grid=oldimage['grid'])
		version = self.recentImageVersion(oldimage)
		imagedata['version'] = version + 1
		## set the 'filename' value
		if imagedata['label'] == 'RCT':
			rctacquisition.setImageFilename(imagedata)
		else:
			acquisition.setImageFilename(imagedata)
		## store EMData to DB to prevent referencing errors
		self.publish(imagedata['scope'], database=True)
		self.publish(imagedata['camera'], database=True)
		self.logger.info('Publishing new transformed image...')
		self.publish(imagedata, database=True)
		self.setImage(imagedata['image'], 'Image')
		return imagedata
                        self.logger.error('Reacquire image failed: %s' % (exc,))
                # The preset used does not always have the original preset's parameters such as image shift
                currentpresetdata = self.presetsclient.getCurrentPreset()
                ## convert CameraImageData to AcquisitionImageData
                dim = imagedata['camera']['dimension']
                pixels = dim['x'] * dim['y']
                pixeltype = str(imagedata['image'].dtype)
                ## Fix me: Not sure what image list should go in here nor naming of the file
                # This does not include tilt series nor tilt number.  If included,
                # rct filenaming becomes corrupted
                imagedata = leginondata.AcquisitionImageData(initializer=imagedata, preset=currentpresetdata, label=self.name, target=targetdata, list=oldimage['list'], emtarget=emtarget, pixels=pixels, pixeltype=pixeltype,grid=oldimage['grid'],mover=oldimage['mover'])
                version = self.recentImageVersion(oldimage)
                imagedata['version'] = version + 1
                ## set the 'filename' value
                if imagedata['label'] == 'RCT':
                        rctacquisition.setImageFilename(imagedata)
                else:
                        acquisition.setImageFilename(imagedata)
                ## store EMData to DB to prevent referencing errors
                self.publish(imagedata['scope'], database=True)
                self.publish(imagedata['camera'], database=True)
                self.logger.info('Publishing new transformed image...')
                self.publish(imagedata, database=True)
                self.setImage(imagedata['image'], 'Image')
                return imagedata

        def _moveToLastFocusedStageZ(self):
                '''
                Set stage z to the height of an image acquired by the last focusing.
                This should only be called from inside TrasnformManage
                '''