Source code for pymcxray.FileFormat.Results.ModelParameters

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

MCXRay model 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
import pymcxray.FileFormat.MCXRayModel as MCXRayModel

# Globals and constants variables.
KEY_MODEL_PARAMETERS = "Model Parameters"

KEY_ATOM_ENERGY_LOSS_MODEL = "Atom Energy Loss"
KEY_ATOM_MEAN_IONIZATION_POTENTIAL_MODEL = "Atom Mean Ionization Potential"
KEY_ATOM_SCREENING_MODEL = "Atom Screening"
KEY_ATOM_CROSS_SECTION_MODEL = "Atom Cross Section"
KEY_ATOM_CROSS_SECTION_SCREENING_MODEL = "Atom Screening"
KEY_ATOM_COLLISION_MODEL = "Atom Collision"
KEY_ATOM_COLLISION_SCREENING_MODEL = "Atom Screening"
KEY_ATOM_ELECTRON_RANGE_MODEL = "Atom Electron Range"
KEY_SAMPLE_ENERGY_LOSS_MODEL = "Region Energy Loss"
KEY_XRAY_CS_CHARACTERISTIC_MODEL = "XRay Characteristic Cross Section"
KEY_XRAY_CS_BREMSSTRAHLUNG_MODEL = "XRay Bremsstrahlung Cross Section"

[docs]class ModelParameters(object): def __init__(self): self._parameters = {} def _createKeys(self): keys = [] keys.append(KEY_ATOM_ENERGY_LOSS_MODEL) keys.append(KEY_ATOM_MEAN_IONIZATION_POTENTIAL_MODEL) keys.append(KEY_ATOM_SCREENING_MODEL) keys.append(KEY_ATOM_CROSS_SECTION_MODEL) keys.append(KEY_ATOM_CROSS_SECTION_SCREENING_MODEL) keys.append(KEY_ATOM_COLLISION_MODEL) keys.append(KEY_ATOM_COLLISION_SCREENING_MODEL) keys.append(KEY_ATOM_ELECTRON_RANGE_MODEL) keys.append(KEY_SAMPLE_ENERGY_LOSS_MODEL) keys.append(KEY_XRAY_CS_CHARACTERISTIC_MODEL) keys.append(KEY_XRAY_CS_BREMSSTRAHLUNG_MODEL) return keys def _createModelList(self): modelList = {} modelList[KEY_ATOM_ENERGY_LOSS_MODEL] = MCXRayModel.AtomEnergyLossModel() modelList[KEY_ATOM_MEAN_IONIZATION_POTENTIAL_MODEL] = MCXRayModel.AtomMeanIonizationPotentialModel() modelList[KEY_ATOM_SCREENING_MODEL] = MCXRayModel.AtomScreeningModel() modelList[KEY_ATOM_CROSS_SECTION_MODEL] = MCXRayModel.AtomCrossSectionModel() modelList[KEY_ATOM_CROSS_SECTION_SCREENING_MODEL] = MCXRayModel.AtomCrossSectionScreeningModel() modelList[KEY_ATOM_COLLISION_MODEL] = MCXRayModel.AtomCollisionModel() modelList[KEY_ATOM_COLLISION_SCREENING_MODEL] = MCXRayModel.AtomCollisionScreeningModel() modelList[KEY_ATOM_ELECTRON_RANGE_MODEL] = MCXRayModel.AtomElectronRangeModel() modelList[KEY_SAMPLE_ENERGY_LOSS_MODEL] = MCXRayModel.SampleEnergyLossModel() modelList[KEY_XRAY_CS_CHARACTERISTIC_MODEL] = MCXRayModel.XRayCSCharacteristicModel() modelList[KEY_XRAY_CS_BREMSSTRAHLUNG_MODEL] = MCXRayModel.XRayCSBremsstrahlungModel() return modelList
[docs] def readFromLines(self, lines): # Skip header line. indexLine = 0 for line in lines: indexLine += 1 if line.strip().startswith(KEY_MODEL_PARAMETERS): break else: message = "Cannot find the section header in the liens: %s" % (KEY_MODEL_PARAMETERS) raise ValueError(message) modelList = self._createModelList() for key in self._createKeys(): line = lines[indexLine] indexLine += 1 label, value = line.split(':') if label.strip() == key: modelList[key].setModelFromString(value) self._parameters[key] = modelList[key].getModel() return indexLine
@property def atomEnergyLossModel(self): return self._parameters[KEY_ATOM_ENERGY_LOSS_MODEL] @atomEnergyLossModel.setter def atomEnergyLossModel(self, atomEnergyLossModel): self._parameters[KEY_ATOM_ENERGY_LOSS_MODEL] = atomEnergyLossModel @property def atomMeanIonizationPotentialModel(self): return self._parameters[KEY_ATOM_MEAN_IONIZATION_POTENTIAL_MODEL] @atomMeanIonizationPotentialModel.setter def atomMeanIonizationPotentialModel(self, atomMeanIonizationPotentialModel): self._parameters[KEY_ATOM_MEAN_IONIZATION_POTENTIAL_MODEL] = atomMeanIonizationPotentialModel @property def atomScreeningModel(self): return self._parameters[KEY_ATOM_SCREENING_MODEL] @atomScreeningModel.setter def atomScreeningModel(self, atomScreeningModel): self._parameters[KEY_ATOM_SCREENING_MODEL] = atomScreeningModel @property def atomCrossSectionModel(self): return self._parameters[KEY_ATOM_CROSS_SECTION_MODEL] @atomCrossSectionModel.setter def atomCrossSectionModel(self, atomCrossSectionModel): self._parameters[KEY_ATOM_CROSS_SECTION_MODEL] = atomCrossSectionModel @property def atomCrossSectionScreeningModel(self): return self._parameters[KEY_ATOM_CROSS_SECTION_SCREENING_MODEL] @atomCrossSectionScreeningModel.setter def atomCrossSectionScreeningModel(self, atomCrossSectionScreeningModel): self._parameters[KEY_ATOM_CROSS_SECTION_SCREENING_MODEL] = atomCrossSectionScreeningModel @property def atomCollisionModel(self): return self._parameters[KEY_ATOM_COLLISION_MODEL] @atomCollisionModel.setter def atomCollisionModel(self, atomCollisionModel): self._parameters[KEY_ATOM_COLLISION_MODEL] = atomCollisionModel @property def atomCollisionScreeningModel(self): return self._parameters[KEY_ATOM_COLLISION_SCREENING_MODEL] @atomCollisionScreeningModel.setter def atomCollisionScreeningModel(self, atomCollisionScreeningModel): self._parameters[KEY_ATOM_COLLISION_SCREENING_MODEL] = atomCollisionScreeningModel @property def atomElectronRangeModel(self): return self._parameters[KEY_ATOM_ELECTRON_RANGE_MODEL] @atomElectronRangeModel.setter def atomElectronRangeModel(self, atomElectronRangeModel): self._parameters[KEY_ATOM_ELECTRON_RANGE_MODEL] = atomElectronRangeModel @property def regionEnergyLossModel(self): return self._parameters[KEY_SAMPLE_ENERGY_LOSS_MODEL] @regionEnergyLossModel.setter def regionEnergyLossModel(self, regionEnergyLossModel): self._parameters[KEY_SAMPLE_ENERGY_LOSS_MODEL] = regionEnergyLossModel @property def characterisitcCrossSectionModel(self): return self._parameters[KEY_XRAY_CS_CHARACTERISTIC_MODEL] @characterisitcCrossSectionModel.setter def characterisitcCrossSectionModel(self, characterisitcCrossSectionModel): self._parameters[KEY_XRAY_CS_CHARACTERISTIC_MODEL] = characterisitcCrossSectionModel @property def bremsstrahlungCrossSectionModel(self): return self._parameters[KEY_XRAY_CS_BREMSSTRAHLUNG_MODEL] @bremsstrahlungCrossSectionModel.setter def bremsstrahlungCrossSectionModel(self, bremsstrahlungCrossSectionModel): self._parameters[KEY_XRAY_CS_BREMSSTRAHLUNG_MODEL] = bremsstrahlungCrossSectionModel