def saveMagnifications(self, instance, tem_name): self.logger.info('Saving...') instrumentdata = leginondata.InstrumentData() instrumentdata['name'] = tem_name instrumentdata['hostname'] = instance.getHostname() instrumentdata['cs'] = instance.getCs() magnificationsdata = leginondata.MagnificationsData() magnificationsdata['instrument'] = instrumentdata magnificationsdata['magnifications'] = instance.getMagnifications() self.publish(magnificationsdata, database=True, dbforce=True) self.logger.info('Magnifications saved.') return magnificationsdata
def getMagnifications(self, name): try: instance = self.instruments[name] except KeyError: raise ValueError('no instrument %s' % name) self.logger.info('Getting magnifications from the instrument...') instance.findMagnifications() self.logger.info('Saving...') instrumentdata = leginondata.InstrumentData() instrumentdata['name'] = name instrumentdata['hostname'] = instance.getHostname() instrumentdata['cs'] = instance.getCs() magnificationsdata = leginondata.MagnificationsData() magnificationsdata['instrument'] = instrumentdata magnificationsdata['magnifications'] = instance.getMagnifications() self.publish(magnificationsdata, database=True, dbforce=True) self.logger.info('Magnifications saved.') self.panel.onGetMagnificationsDone()
def initializeMagnifications(self, name): try: instance = self.instruments[name] except KeyError: raise ValueError('no instrument %s' % name) if instance.getMagnificationsInitialized(): return instrumentdata = leginondata.InstrumentData() instrumentdata['name'] = name instrumentdata['hostname'] = instance.getHostname() queryinstance = leginondata.MagnificationsData() queryinstance['instrument'] = instrumentdata try: result = self.research(queryinstance, results=1)[0] except IndexError: self.logger.warning('No magnifications saved for %s' % name) return instance.setMagnifications(result['magnifications'])
if len(scopes) > 1: print '' print "There are more than one instrument using jeolcom class" jeolcom_hostname = format_input( 'Enter the hostname where the magnifications need registering: ') scopes = leginondata.InstrumentData(name=jeolcom_classname, hostname=jeolcom_hostname).query() if not scopes: msg = "Error: Can not find a scope matching the description" msgExit(msg) # There should be only one scope now. j = jeolcom.Jeol() j.findMagnifications() new_mags = j.getMagnifications() answer = 'n' while answer.lower() != 'y': print new_mags answer = format_input('O.K. to insert ? (Y/N) ') if answer.lower()[0] != 'y': mags_str = format_input('Enter all magnifications, separated by ",":') new_mags = mags_str.split(',') new_mags = map((lambda x: int(x)), new_mags) q = leginondata.MagnificationsData(instrument=scopes[0], magnifications=new_mags) q.insert(force=True) msgExit(ok_msg)
def importCalibrations(self, source_cam, source_tem, high_tension): print "Importing calibrations...." simumags = [50, 100, 500, 1000, 5000, 25000, 50000] matrixtypes = ('image shift', 'stage position', 'defocus', 'stigx', 'stigy', 'beam shift', 'beam-tilt coma', 'image-shift coma') sinedon.setConfig('leginondata', db=self.source_dbname) #magnifications # magnifications is not insession data mags = leginondata.MagnificationsData(instrument=source_tem).query( results=1) if mags: magnifications = mags[0]['magnifications'] else: # simulator magnifications magnifications = simumags #camera sensitivity calibrations senses = self.researchCalibration('CameraSensitivityCalibrationData', tem=source_tem, ccdcamera=source_cam, high_tension=high_tension) #beam size calibrations beamsizes = [] for probe in ('micro', 'nano'): beamsizes.extend( self.researchCalibration('BeamSizeCalibrationData', tem=source_tem, probe_mode=probe)) #Modeled Stage calibrations model = {} for axis in ('x', 'y'): model[axis] = self.researchCalibration('StageModelCalibrationData', tem=source_tem, ccdcamera=source_cam, axis=axis) pixel = {} matrix = {} modelmag = {} ucenter = {} rcenter = {} for mag in magnifications: #pixelsize calibrations q = leginondata.PixelSizeCalibrationData(tem=source_tem, ccdcamera=source_cam, magnification=mag) pixel[mag] = self.researchCalibration('PixelSizeCalibrationData', tem=source_tem, ccdcamera=source_cam, magnification=mag) #matrix calibrations matrix[mag] = {} for matrixtype in matrixtypes: matrix[mag][matrixtype] = self.researchCalibration( 'MatrixCalibrationData', tem=source_tem, ccdcamera=source_cam, magnification=mag, type=matrixtype, high_tension=high_tension) #Modeled Mag Stage calibrations modelmag[mag] = {} for axis in ('x', 'y'): modelmag[mag][axis] = self.researchCalibration( 'StageModelMagCalibrationData', tem=source_tem, ccdcamera=source_cam, magnification=mag, axis=axis, high_tension=high_tension) #eucenter focus calibrations ucenter[mag] = {} ucenter[mag] = self.researchCalibration('EucentricFocusData', tem=source_tem, magnification=mag) #eucenter focus calibrations rcenter[mag] = {} rcenter[mag] = self.researchCalibration('RotationCenterData', tem=source_tem, magnification=mag) sinedon.setConfig('leginondata', db=self.destination_dbname) #magnifications for m in mags: m.insert(archive=True) #camera sensitivity calibrations for sense in senses: sense.insert(archive=True) #beam size calibrations for beamsize in beamsizes: beamsize.insert(archive=True) #Modeled Stage calibrations for axis in ('x', 'y'): if model[axis]: for m in model[axis]: m.insert(archive=True) for mag in magnifications: #pixelsize calibrations if pixel[mag]: for p in pixel[mag]: p.insert(archive=True) #matrix calibrations for matrixtype in matrixtypes: if matrix[mag][matrixtype]: for m in matrix[mag][matrixtype]: m.insert(archive=True) #Modeled Mag Stage calibrations for axis in ('x', 'y'): if modelmag[mag][axis]: for m in modelmag[mag][axis]: m.insert(archive=True) #eucentric focus if ucenter[mag]: for u in ucenter[mag]: u.insert(archive=True) #rotation center if rcenter[mag]: for r in rcenter[mag]: r.insert(archive=True)