Source code for pymcxray.FileFormat.Results.PhirhozGenerated

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

MCXRay phirhoz generated result 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
import pymcxray.FileFormat.Results.ModelParameters as ModelParameters
import pymcxray.FileFormat.Results.SimulationParameters as SimulationParameters
import pymcxray.FileFormat.Results.MicroscopeParameters as MicroscopeParameters
import pymcxray.FileFormat.Results.ElectronParameters as ElectronParameters
import pymcxray.FileFormat.Results.PhirhozRegion as PhirhozRegion

# Globals and constants variables.

KEY_PHIRHOZ_GENERATED = "phirhozGenerated"

KEY_NUMBER_REGIONS = "Number of Regions"

KEY_PHIRHOZ_CHARACTERISTIC = "Characteristic"

[docs]class PhirhozGenerated(object): def __init__(self): self._parameters = {}
[docs] def read(self, filepath): lines = open(filepath, 'r').readlines() lineIndex = 0 lineIndex += self.readSolidSimulationModels(lines[lineIndex:]) lineIndex += self.readSimulationParameters(lines[lineIndex:]) lineIndex += self.readMicroscope(lines[lineIndex:]) lineIndex += self.readElectron(lines[lineIndex:]) lineIndex += self.readRegions(lines[lineIndex:])
[docs] def readSolidSimulationModels(self, lines): self.modelParameters = ModelParameters.ModelParameters() lineIndex = self.modelParameters.readFromLines(lines) return lineIndex
[docs] def readSimulationParameters(self, lines): self.simulationParameters = SimulationParameters.SimulationParameters() lineIndex = self.simulationParameters.readFromLines(lines) return lineIndex
[docs] def readMicroscope(self, lines): self.microscopeParameters = MicroscopeParameters.MicroscopeParameters() lineIndex = self.microscopeParameters.readFromLines(lines) return lineIndex
[docs] def readElectron(self, lines): self.electronParameters = ElectronParameters.ElectronParameters() lineIndex = self.electronParameters.readFromLines(lines) return lineIndex
[docs] def readRegions(self, lines): indexLine = 0 for line in lines: indexLine += 1 if line.strip().startswith(KEY_NUMBER_REGIONS): indexNumberRegions = len(KEY_NUMBER_REGIONS) self.numberRegions = int(line[indexNumberRegions:]) break else: message = "Cannot find the section header in the liens: %s" % (KEY_NUMBER_REGIONS) raise ValueError(message) self._regions = {} for _indexRegion in range(self.numberRegions): region = PhirhozRegion.PhirhozRegion(self.simulationParameters.numberEnergyWindows, self.simulationParameters.numberLayersZ) indexLine += region.readFromLines(lines[indexLine:]) self._regions[region.regionID] = region assert len(self._regions) == self.numberRegions return indexLine
[docs] def getCharacteristicPhiRhoZ(self, regionID): return self._regions[regionID].characteristicPhirhoz
@property def modelParameters(self): return self._parameters[ModelParameters.KEY_MODEL_PARAMETERS] @modelParameters.setter def modelParameters(self, modelParameters): self._parameters[ModelParameters.KEY_MODEL_PARAMETERS] = modelParameters @property def simulationParameters(self): return self._parameters[SimulationParameters.KEY_SIMULATION_PARAMETERS] @simulationParameters.setter def simulationParameters(self, simulationParameters): self._parameters[SimulationParameters.KEY_SIMULATION_PARAMETERS] = simulationParameters @property def microscopeParameters(self): return self._parameters[MicroscopeParameters.KEY_MICROSCOPE_PARAMETERS] @microscopeParameters.setter def microscopeParameters(self, microscopeParameters): self._parameters[MicroscopeParameters.KEY_MICROSCOPE_PARAMETERS] = microscopeParameters @property def electronParameters(self): return self._parameters[ElectronParameters.KEY_ELECTRON_PARAMETERS] @electronParameters.setter def electronParameters(self, electronParameters): self._parameters[ElectronParameters.KEY_ELECTRON_PARAMETERS] = electronParameters @property def numberRegions(self): return self._parameters[KEY_NUMBER_REGIONS] @numberRegions.setter def numberRegions(self, numberRegions): self._parameters[KEY_NUMBER_REGIONS] = numberRegions