コード例 #1
0
        def reseachCorrectorPlan(self, cameradata):
                qcamera = leginondata.CameraEMData()
                # Fix Me: Ignore gain index for now because camera setting does not have it when theplan is saved.
                for key in ('ccdcamera','dimension','binning','offset'):
                        qcamera[key] = cameradata[key]
                qplan = leginondata.CorrectorPlanData()
                qplan['camera'] = qcamera
                plandatalist = qplan.query()

                if plandatalist:
                        return plandatalist[0]
                else:
                        return None
コード例 #2
0
    def upgradeLeginonDB(self):
        if not self.leginon_dbupgrade.columnExists(
                'AcquisitionImageData',
                'REF|CorrectorPlanData|corrector plan'):
            self.leginon_dbupgrade.addColumn(
                'AcquisitionImageData', 'REF|CorrectorPlanData|corrector plan',
                self.leginon_dbupgrade.int)

        results = leginondata.InstrumentData(name='DE12').query(results=1)
        if not results:
            return
        decameradata = results[0]

        dim = {'x': 4096, 'y': 3072}
        camq = leginondata.CameraEMData(ccdcamera=decameradata, dimension=dim)
        plans = leginondata.CorrectorPlanData(camera=camq).query()
        pairs = {}
        ordered_keys = []
        for i, plan in enumerate(plans):
            if i == 0:
                ordered_keys.append(i)
                pairs[i] = (plan.timestamp.now(), plan.timestamp)
            else:
                ordered_keys.append(i)
                pairs[i] = (plans[i - 1].timestamp, plan.timestamp)
        camq = leginondata.CameraEMData(ccdcamera=decameradata, dimension=dim)
        camq['save frames'] = True
        imageq = leginondata.AcquisitionImageData(camera=camq)
        print 'Query all DE12 images.  This may take some time...'
        images = imageq.query()
        print 'Total of %d images' % (len(images), )
        for image in images:
            if image['corrector plan']:
                continue
            for key in ordered_keys:
                if image.timestamp > pairs[key][1] and image.timestamp < pairs[
                        key][0]:
                    print key, image.dbid, image['filename'], image.timestamp
                    status = self.leginon_dbupgrade.updateColumn(
                        'AcquisitionImageData',
                        'REF|CorrectorPlanData|corrector plan',
                        '%d' % plans[key].dbid, '`DEF_id`=%d' % image.dbid,
                        True)
                    if not status:
                        print break_from_failed_update
コード例 #3
0
 def storeCorrectorPlan(self, plan):
         # import instrument here so that wx is not required unless Leginon is running
         import instrument
         camsettings = self.settings['camera settings']
         ccdname = self.settings['instruments']['ccdcamera']
         ccdcamera = self.instrument.getCCDCameraData(ccdname)
         cameradata = leginondata.CameraEMData()
         cameradata.update(self.settings['camera settings'])
         cameradata['ccdcamera'] = ccdcamera
         plandata = leginondata.CorrectorPlanData()
         plandata['session'] = self.session
         plandata['camera'] = cameradata
         plandata['bad_rows'] = plan['rows']
         plandata['bad_cols'] = plan['columns']
         plandata['bad_pixels'] = plan['pixels']
         plandata['despike'] = plan['despike']
         plandata['despike size'] = plan['despike size']
         plandata['despike threshold'] = plan['despike threshold']
         plandata.insert(force=True)
コード例 #4
0
        self.stopTimer('Corrector.displayImage')

    def storePlan(self, plan):
        newcamstate = leginondata.CorrectorCamstateData()
        newcamstate['session'] = self.session
        if self.instrument is None or self.instrument.ccdcamera is None:
            self.logger.error('Plan not saved: no camera to associate it with')
            return
        try:
            self.instrument.ccdcamera.Settings = self.settings[
                'camera settings']
            newcamstate.friendly_update(self.instrument.ccdcamera.Geometry)
        except Exception, e:
            self.logger.error('Plan not saved: %s' % e)
            return
        plandata = leginondata.CorrectorPlanData()
        plandata['session'] = self.session
        plandata['camstate'] = newcamstate
        plandata['bad_rows'] = plan['rows']
        plandata['bad_cols'] = plan['columns']
        plandata['bad_pixels'] = plan['pixels']
        plandata['ccdcamera'] = self.instrument.getCCDCameraData()
        self.publish(plandata, database=True, dbforce=True)

    def acquireSeries(self, n):
        series = []
        for i in range(n):
            self.logger.info('Acquiring reference image (%s of %s)' %
                             (i + 1, n))
            image = self.instrument.ccdcamera.Image
            series.append(image)