Source code for pymcxray.FileFormat.Results.BeamParameters

#!/usr/bin/env python
"""
.. py:currentmodule:: FileFormat.Results.BeamParameters
.. moduleauthor:: Hendrix Demers <hendrix.demers@mail.mcgill.ca>

MCXRay beam parameters from results file.
"""

# Script information for the file.
__author__ = "Hendrix Demers (hendrix.demers@mail.mcgill.ca)"
__version__ = ""
__date__ = ""
__copyright__ = "Copyright (c) 2012 Hendrix Demers"
__license__ = ""

# Subversion informations for the file.
__svnRevision__ = "$Revision$"
__svnDate__ = "$Date$"
__svnId__ = "$Id$"

# Standard library modules.

# Third party modules.

# Local modules.

# Project modules

# Globals and constants variables.
KEY_BEAM_PARAMETERS = "Beam Parameters"

KEY_INCIDENT_ENERGY_keV = "Electron incident energy"
KEY_CURRENT_A = "Beam Current"
KEY_ACQUISITION_TIME_s = "Acquisition Time"
KEY_DIAMETER_90_A = "Diameter with 90% of the electrons"
KEY_TILT_ANGLE_deg = "Tilt angle"
KEY_GAUSSIAN_MEAN = "Gaussian Mean"
KEY_GAUSSIAN_SIGMA = "Gaussian Sigma"

[docs]class BeamParameters(object): def __init__(self): self._parameters = {} def _createKeys(self): keys = [] keys.append(KEY_INCIDENT_ENERGY_keV) keys.append(KEY_CURRENT_A) keys.append(KEY_ACQUISITION_TIME_s) keys.append(KEY_DIAMETER_90_A) keys.append(KEY_TILT_ANGLE_deg) keys.append(KEY_GAUSSIAN_MEAN) keys.append(KEY_GAUSSIAN_SIGMA) return keys
[docs] def readFromLines(self, lines): # Skip header line. indexLine = 0 for line in lines: indexLine += 1 if line.strip().startswith(KEY_BEAM_PARAMETERS): break else: message = "Cannot find the section header in the liens: %s" % (KEY_BEAM_PARAMETERS) raise ValueError(message) for key in self._createKeys(): line = lines[indexLine] indexLine += 1 label, value = line.split('=') if label.strip() == key: self._parameters[key] = self._extractValue(value) # Skip comment lines. indexLine += 3 return indexLine
def _extractValue(self, valueText): if '(' in valueText: endIndex = valueText.find('(') return float(valueText[:endIndex]) else: return float(valueText) @property def incidentEnergy_keV(self): return self._parameters[KEY_INCIDENT_ENERGY_keV] @incidentEnergy_keV.setter def incidentEnergy_keV(self, incidentEnergy_keV): self._parameters[KEY_INCIDENT_ENERGY_keV] = incidentEnergy_keV @property def current_A(self): return self._parameters[KEY_CURRENT_A] @current_A.setter def current_A(self, current_A): self._parameters[KEY_CURRENT_A] = current_A @property def acquisitionTime_s(self): return self._parameters[KEY_ACQUISITION_TIME_s] @acquisitionTime_s.setter def acquisitionTime_s(self, acquisitionTime_s): self._parameters[KEY_ACQUISITION_TIME_s] = acquisitionTime_s @property def diameter90_A(self): return self._parameters[KEY_DIAMETER_90_A] @diameter90_A.setter def diameter90_A(self, diameter90_A): self._parameters[KEY_DIAMETER_90_A] = diameter90_A @property def tiltAngle_deg(self): return self._parameters[KEY_TILT_ANGLE_deg] @tiltAngle_deg.setter def tiltAngle_deg(self, tiltAngle_deg): self._parameters[KEY_TILT_ANGLE_deg] = tiltAngle_deg @property def gaussianMean(self): return self._parameters[KEY_GAUSSIAN_MEAN] @gaussianMean.setter def gaussianMean(self, gaussianMean): self._parameters[KEY_GAUSSIAN_MEAN] = gaussianMean @property def gaussianSigma(self): return self._parameters[KEY_GAUSSIAN_SIGMA] @gaussianSigma.setter def gaussianSigma(self, gaussianSigma): self._parameters[KEY_GAUSSIAN_SIGMA] = gaussianSigma