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)