Source code for pymcxray.FileFormat.Results.SimulationParameters

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

MCXRay simulation 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_SIMULATION_PARAMETERS = "Simulation Parameters"
KEY_NUMBER_ELECTRONS = "Total simulated electrons"
KEY_NUMBER_PHOTONS = "Total simulated photons in EDS"
KEY_NUMBER_WINDOWS = "Number of energy windows"
KEY_NUMBER_FILMS_X = "Number of layers in PhiRoX"
KEY_NUMBER_FILMS_Y = "Number of layers in PhiRoY"
KEY_NUMBER_FILMS_Z = "Number of layers in PhiRoZ"
KEY_NUMBER_CHANNELS = "Number of channels in spectras"
KEY_SPECTRA_INTERPOLATION_MODEL = "Spectras interpolation type"
KEY_EDS_MAXIMUM_ENERGY_keV = "EDS spectras maximum energy"
KEY_GENERALIZED_WALK = "Generalized Walk"
KEY_USE_LIVE_TIME_s = "Use Live Time"
KEY_MAXIMUM_LIVE_TIME_s = "Live Time Max"

[docs]class SimulationParameters(object): def __init__(self): self._parameters = {} def _createKeys(self): keys = [] keys.append(KEY_NUMBER_ELECTRONS) keys.append(KEY_NUMBER_PHOTONS) keys.append(KEY_NUMBER_WINDOWS) keys.append(KEY_NUMBER_FILMS_X) keys.append(KEY_NUMBER_FILMS_Y) keys.append(KEY_NUMBER_FILMS_Z) keys.append(KEY_NUMBER_CHANNELS) keys.append(KEY_SPECTRA_INTERPOLATION_MODEL) keys.append(KEY_EDS_MAXIMUM_ENERGY_keV) keys.append(KEY_GENERALIZED_WALK) keys.append(KEY_USE_LIVE_TIME_s) keys.append(KEY_MAXIMUM_LIVE_TIME_s) return keys def _createExtractMdethodList(self): extractMethodList = {} extractMethodList[KEY_NUMBER_ELECTRONS] = int extractMethodList[KEY_NUMBER_PHOTONS] = int extractMethodList[KEY_NUMBER_WINDOWS] = int extractMethodList[KEY_NUMBER_FILMS_X] = int extractMethodList[KEY_NUMBER_FILMS_Y] = int extractMethodList[KEY_NUMBER_FILMS_Z] = int extractMethodList[KEY_NUMBER_CHANNELS] = int extractMethodList[KEY_SPECTRA_INTERPOLATION_MODEL] = int extractMethodList[KEY_EDS_MAXIMUM_ENERGY_keV] = float extractMethodList[KEY_GENERALIZED_WALK] = int extractMethodList[KEY_USE_LIVE_TIME_s] = float extractMethodList[KEY_MAXIMUM_LIVE_TIME_s] = float return extractMethodList
[docs] def readFromLines(self, lines): # Skip header line. indexLine = 0 for line in lines: indexLine += 1 if line.strip().startswith(KEY_SIMULATION_PARAMETERS): break else: message = "Cannot find the section header in the liens: %s" % (KEY_SIMULATION_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 numberElectrons(self): return self._parameters[KEY_NUMBER_ELECTRONS] @numberElectrons.setter def numberElectrons(self, numberElectrons): self._parameters[KEY_NUMBER_ELECTRONS] = numberElectrons @property def numberPhotons(self): return self._parameters[KEY_NUMBER_PHOTONS] @numberPhotons.setter def numberPhotons(self, numberPhotons): self._parameters[KEY_NUMBER_PHOTONS] = numberPhotons @property def numberEnergyWindows(self): return self._parameters[KEY_NUMBER_WINDOWS] @numberEnergyWindows.setter def numberEnergyWindows(self, numberEnergyWindows): self._parameters[KEY_NUMBER_WINDOWS] = numberEnergyWindows @property def numberLayersX(self): return self._parameters[KEY_NUMBER_FILMS_X] @numberLayersX.setter def numberLayersX(self, numberLayersX): self._parameters[KEY_NUMBER_FILMS_X] = numberLayersX @property def numberLayersY(self): return self._parameters[KEY_NUMBER_FILMS_Y] @numberLayersY.setter def numberLayersY(self, numberLayersY): self._parameters[KEY_NUMBER_FILMS_Y] = numberLayersY @property def numberLayersZ(self): return self._parameters[KEY_NUMBER_FILMS_Z] @numberLayersZ.setter def numberLayersZ(self, numberLayersZ): self._parameters[KEY_NUMBER_FILMS_Z] = numberLayersZ @property def numberChannels(self): return self._parameters[KEY_NUMBER_CHANNELS] @numberChannels.setter def numberChannels(self, numberChannels): self._parameters[KEY_NUMBER_CHANNELS] = numberChannels @property def interpolationType(self): return self._parameters[KEY_SPECTRA_INTERPOLATION_MODEL] @interpolationType.setter def interpolationType(self, interpolationType): self._parameters[KEY_SPECTRA_INTERPOLATION_MODEL] = interpolationType @property def edsMaximumEnergy_keV(self): return self._parameters[KEY_EDS_MAXIMUM_ENERGY_keV] @edsMaximumEnergy_keV.setter def edsMaximumEnergy_keV(self, edsMaximumEnergy_keV): self._parameters[KEY_EDS_MAXIMUM_ENERGY_keV] = edsMaximumEnergy_keV @property def generalizedWalk(self): return self._parameters[KEY_GENERALIZED_WALK] @generalizedWalk.setter def generalizedWalk(self, generalizedWalk): self._parameters[KEY_GENERALIZED_WALK] = generalizedWalk @property def useLiveTime_s(self): return self._parameters[KEY_USE_LIVE_TIME_s] @useLiveTime_s.setter def useLiveTime_s(self, useLiveTime_s): self._parameters[KEY_USE_LIVE_TIME_s] = useLiveTime_s @property def maximumLiveTime_s(self): return self._parameters[KEY_MAXIMUM_LIVE_TIME_s] @maximumLiveTime_s.setter def maximumLiveTime_s(self, maximumLiveTime_s): self._parameters[KEY_MAXIMUM_LIVE_TIME_s] = maximumLiveTime_s