Source code for pymcxray.FileFormat.Results.ElectronParameters

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

MCXRay electron parameters 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_ELECTRON_PARAMETERS = "Electrons Parameters and Results"

KEY_NUMBER_SIMULATED_ELECTRONS = "Total simulated electrons"
KEY_MEAN_NUMBER_COLLISIONS_PER_ELECTRON = "Mean number of collisions per e"
KEY_MEAN_DISTANCE_BETWEEN_COLLISIONS_A = "Mean distance between collisions"
KEY_MEAN_POLAR_ANGLE_COLLISIONS_deg = "Mean polar angle of collision"
KEY_MEAN_AZIMUTHAL_ANGLE_COLLISIONS_deg = "Mean azimuthal angle of collision"
KEY_BACKSCATTERING_RATIO = "Backscattering ratio"
KEY_INTERNAL_RATIO = "Internal ratio"
KEY_THROUGH_RATIO = "Through ratio"
KEY_SKIRT_RATIO = "Skirt ratio"
KEY_E_RATIO = "E_Ratio"

[docs]class ElectronParameters(object): def __init__(self): self._parameters = {} def _createKeys(self): keys = [] keys.append(KEY_NUMBER_SIMULATED_ELECTRONS) keys.append(KEY_MEAN_NUMBER_COLLISIONS_PER_ELECTRON) keys.append(KEY_MEAN_DISTANCE_BETWEEN_COLLISIONS_A) keys.append(KEY_MEAN_POLAR_ANGLE_COLLISIONS_deg) keys.append(KEY_MEAN_AZIMUTHAL_ANGLE_COLLISIONS_deg) keys.append(KEY_BACKSCATTERING_RATIO) keys.append(KEY_INTERNAL_RATIO) keys.append(KEY_THROUGH_RATIO) keys.append(KEY_SKIRT_RATIO) keys.append(KEY_E_RATIO) return keys def _createExtractMdethodList(self): extractMethodList = {} extractMethodList[KEY_NUMBER_SIMULATED_ELECTRONS] = int extractMethodList[KEY_MEAN_NUMBER_COLLISIONS_PER_ELECTRON] = float extractMethodList[KEY_MEAN_DISTANCE_BETWEEN_COLLISIONS_A] = self._extractFloatValue extractMethodList[KEY_MEAN_POLAR_ANGLE_COLLISIONS_deg] = self._extractFloatValue extractMethodList[KEY_MEAN_AZIMUTHAL_ANGLE_COLLISIONS_deg] = self._extractFloatValue extractMethodList[KEY_BACKSCATTERING_RATIO] = float extractMethodList[KEY_INTERNAL_RATIO] = float extractMethodList[KEY_THROUGH_RATIO] = float extractMethodList[KEY_SKIRT_RATIO] = float extractMethodList[KEY_E_RATIO] = float return extractMethodList def _extractFloatValue(self, valueText): if '(' in valueText: endIndex = valueText.find('(') return float(valueText[:endIndex]) else: return float(valueText)
[docs] def readFromLines(self, lines): # Skip header line. indexLine = 0 for line in lines: indexLine += 1 if line.strip().startswith(KEY_ELECTRON_PARAMETERS): break else: message = "Cannot find the section header in the liens: %s" % (KEY_ELECTRON_PARAMETERS) raise ValueError(message) extractMethodList = self._createExtractMdethodList() for key in self._createKeys(): line = lines[indexLine] indexLine += 1 label, value = line.split('=') if label.strip() == key: self._parameters[key] = extractMethodList[key](value) return indexLine
@property def numberSimulatedElectrons(self): return self._parameters[KEY_NUMBER_SIMULATED_ELECTRONS] @numberSimulatedElectrons.setter def numberSimulatedElectrons(self, numberSimulatedElectrons): self._parameters[KEY_NUMBER_SIMULATED_ELECTRONS] = numberSimulatedElectrons @property def meanNumberCollisionPerElectrons(self): return self._parameters[KEY_MEAN_NUMBER_COLLISIONS_PER_ELECTRON] @meanNumberCollisionPerElectrons.setter def meanNumberCollisionPerElectrons(self, meanNumberCollisionPerElectrons): self._parameters[KEY_MEAN_NUMBER_COLLISIONS_PER_ELECTRON] = meanNumberCollisionPerElectrons @property def meanDistanceBetweenCollisions_A(self): return self._parameters[KEY_MEAN_DISTANCE_BETWEEN_COLLISIONS_A] @meanDistanceBetweenCollisions_A.setter def meanDistanceBetweenCollisions_A(self, meanDistanceBetweenCollisions_A): self._parameters[KEY_MEAN_DISTANCE_BETWEEN_COLLISIONS_A] = meanDistanceBetweenCollisions_A @property def meanPolarAngleCollision_deg(self): return self._parameters[KEY_MEAN_POLAR_ANGLE_COLLISIONS_deg] @meanPolarAngleCollision_deg.setter def meanPolarAngleCollision_deg(self, meanPolarAngleCollision_deg): self._parameters[KEY_MEAN_POLAR_ANGLE_COLLISIONS_deg] = meanPolarAngleCollision_deg @property def meanAzimuthalAngleCollision_deg(self): return self._parameters[KEY_MEAN_AZIMUTHAL_ANGLE_COLLISIONS_deg] @meanAzimuthalAngleCollision_deg.setter def meanAzimuthalAngleCollision_deg(self, meanAzimuthalAngleCollision_deg): self._parameters[KEY_MEAN_AZIMUTHAL_ANGLE_COLLISIONS_deg] = meanAzimuthalAngleCollision_deg @property def backscatteredRatio(self): return self._parameters[KEY_BACKSCATTERING_RATIO] @backscatteredRatio.setter def backscatteredRatio(self, backscatteredRatio): self._parameters[KEY_BACKSCATTERING_RATIO] = backscatteredRatio @property def internalRatio(self): return self._parameters[KEY_INTERNAL_RATIO] @internalRatio.setter def internalRatio(self, internalRatio): self._parameters[KEY_INTERNAL_RATIO] = internalRatio @property def throughRatio(self): return self._parameters[KEY_THROUGH_RATIO] @throughRatio.setter def throughRatio(self, throughRatio): self._parameters[KEY_THROUGH_RATIO] = throughRatio @property def skirtRatio(self): return self._parameters[KEY_SKIRT_RATIO] @skirtRatio.setter def skirtRatio(self, skirtRatio): self._parameters[KEY_SKIRT_RATIO] = skirtRatio @property def eRatio(self): return self._parameters[KEY_E_RATIO] @eRatio.setter def eRatio(self, eRatio): self._parameters[KEY_E_RATIO] = eRatio