Source code for pymcxray.FileFormat.Results.XraySpectraRegionEmitted

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

Read XraySpectraRegionEmitted mcxray result file.
"""

# Script information for the file.
__author__ = "Hendrix Demers (hendrix.demers@mail.mcgill.ca)"
__version__ = "0.1"
__date__ = "Feb 12, 2015"
__copyright__ = "Copyright (c) 2015 Hendrix Demers"
__license__ = "GPL 3"

# Standard library modules.
import os.path
import csv

# Third party modules.

# Local modules.

# Project modules
import pymcxray.FileFormat.Results.BaseResults as BaseResults

# Globals and constants variables.
FIELD_ENERGY = "Energy (keV)"
FIELD_TOTAL = " Spectrum Total"
FIELD_CHARACTERISTIC = " Spectrum Lines"
FIELD_BREMSSTRAHLUNG = " Spectrum Bremsstrahlung"

[docs]class XraySpectraRegionEmitted(BaseResults.BaseResults): def __init__(self): super(XraySpectraRegionEmitted, self).__init__() self.fieldnames = None
[docs] def read(self, regionID=0): self.energies_keV = [] self.total_1_ekeVsr = [] self.characteristic_1_ekeVsr = [] self.bremsstrahlung_1_ekeVsr = [] suffix = "_SpectraPerElectron_1_srkeV_Region_%i.csv" % (regionID) filename = self.basename + suffix filepath = os.path.join(self.path, filename) if not os.path.isfile(filepath): raise ValueError self._read_fast(filepath)
def _read(self, filepath): with open(filepath, 'r') as csvFile: reader = csv.DictReader(csvFile) fieldnames = reader.fieldnames assert fieldnames[0] == FIELD_ENERGY assert fieldnames[1] == FIELD_TOTAL assert fieldnames[2] == FIELD_CHARACTERISTIC assert fieldnames[3] == FIELD_BREMSSTRAHLUNG self.fieldnames = fieldnames for row in reader: self.energies_keV.append(float(row[FIELD_ENERGY])) self.total_1_ekeVsr.append(float(row[FIELD_TOTAL])) self.characteristic_1_ekeVsr.append(float(row[FIELD_CHARACTERISTIC])) self.bremsstrahlung_1_ekeVsr.append(float(row[FIELD_BREMSSTRAHLUNG])) def _read_fast(self, filepath): with open(filepath, 'r') as csvFile: reader = csv.reader(csvFile) next(reader) for items in reader: self.energies_keV.append(float(items[0])) self.total_1_ekeVsr.append(float(items[1])) self.characteristic_1_ekeVsr.append(float(items[2])) self.bremsstrahlung_1_ekeVsr.append(float(items[3])) def _indice(self, energy_keV): energy_keV = float(energy_keV) delta_eV = self.energies_keV[0] for index, E_keV in enumerate(self.energies_keV): # if E_keV - delta_eV <= energy_keV < E_keV + delta_eV: if energy_keV > E_keV + delta_eV: continue else: return index raise IndexError
[docs] def totalValue_1_ekeVsr(self, energy_keV): index = self._indice(energy_keV) return self._total_1_ekeVsr[index]
[docs] def characteristicValue_1_ekeVsr(self, energy_keV): index = self._indice(energy_keV) return self.characteristic_1_ekeVsr[index]
[docs] def bremsstrahlungValue_1_ekeVsr(self, energy_keV): index = self._indice(energy_keV) return self.bremsstrahlung_1_ekeVsr[index]
@property def fieldnames(self): return self._fieldnames @fieldnames.setter def fieldnames(self, fieldnames): self._fieldnames = fieldnames @property def energies_keV(self): return self._energies_keV @energies_keV.setter def energies_keV(self, energies_keV): self._energies_keV = energies_keV @property def total_1_ekeVsr(self): return self._total_1_ekeVsr @total_1_ekeVsr.setter def total_1_ekeVsr(self, total_1_ekeVsr): self._total_1_ekeVsr = total_1_ekeVsr @property def characteristic_1_ekeVsr(self): return self._characteristic_1_ekeVsr @characteristic_1_ekeVsr.setter def characteristic_1_ekeVsr(self, characteristic_1_ekeVsr): self._characteristic_1_ekeVsr= characteristic_1_ekeVsr @property def bremsstrahlung_1_ekeVsr(self): return self._bremsstrahlung_1_ekeVsr @bremsstrahlung_1_ekeVsr.setter def bremsstrahlung_1_ekeVsr(self, bremsstrahlung_1_ekeVsr): self._bremsstrahlung_1_ekeVsr = bremsstrahlung_1_ekeVsr
[docs]def run(): pass
if __name__ == '__main__': #pragma: no cover run()