Source code for pymcxray.FileFormat.SimulationInputs

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

MCXRay simulation inputs file.
"""

# Script information for the file.
__author__ = "Hendrix Demers (hendrix.demers@mail.mcgill.ca)"
__version__ = ""
__date__ = ""
__copyright__ = "Copyright (c) 2012 Hendrix Demers"
__license__ = ""

# Standard library modules.
import os.path
import copy

# Third party modules.

# Local modules.

# Project modules
import pymcxray.FileFormat.Version as Version

# Globals and constants variables.

KEY_SPECIMEN = "specimen"
KEY_MODEL = "model"
KEY_MICROSCOPE = "microscope"
KEY_PARAMETERS = "parameters"
KEY_MAP = "map"
KEY_SNR = "snr"
KEY_RESULTS = "results"

[docs]class SimulationInputs(object): def __init__(self): self._keys = self._createKeys() self._filenames = {} self._title = "" self.version = copy.deepcopy(Version.CURRENT_VERSION) def _createKeys(self): keys = [] keys.append(KEY_SPECIMEN) keys.append(KEY_MODEL) keys.append(KEY_MICROSCOPE) keys.append(KEY_PARAMETERS) keys.append(KEY_MAP) keys.append(KEY_RESULTS) #keys.append(KEY_SNR) return keys
[docs] def read(self, filepath): self.version.readFromFile(filepath) self._title = self._extractTitleFromFilepath(filepath) lines = open(filepath, 'r').readlines() for line in lines: line = line.strip() for key in self._keys: if line.startswith(key): items = line.split('=') self._filenames[key] = str(items[-1])
[docs] def write(self, filepath): title = self._extractTitleFromFilepath(filepath) outputFile = open(filepath, 'w') self.version.writeLine(outputFile) keys = self._createKeys() if self.version < Version.VERSION_1_4_0: keys.remove(KEY_RESULTS) for key in keys: if key not in self._filenames: extension = self.getExtension(key) filename = "%s.%s" % (title, extension) self._filenames[key] = filename if self._filenames[key] is not None: line = "%s=%s\n" % (key, self._filenames[key]) outputFile.write(line)
def _extractTitleFromFilepath(self, filepath): filename = os.path.basename(filepath) title, _extension = os.path.splitext(filename) return title
[docs] def getExtension(self, key): if key == KEY_SPECIMEN: return "sam" elif key == KEY_MODEL: return "mdl" elif key == KEY_MICROSCOPE: return "mic" elif key == KEY_PARAMETERS: return "par" elif key == KEY_MAP: return "mpp" elif key == KEY_RESULTS: return "rp" elif key == KEY_SNR: return "snp"
@property def version(self): return self._version @version.setter def version(self, version): self._version = version @property def title(self): return self._title @title.setter def title(self, title): self._title = title @property def specimenFilename(self): return self._filenames[KEY_SPECIMEN] @specimenFilename.setter def specimenFilename(self, specimenFilename): self._filenames[KEY_SPECIMEN] = specimenFilename @property def modelFilename(self): return self._filenames[KEY_MODEL] @modelFilename.setter def modelFilename(self, modelFilename): self._filenames[KEY_MODEL] = modelFilename @property def microsopeFilename(self): return self._filenames[KEY_MICROSCOPE] @microsopeFilename.setter def microsopeFilename(self, microsopeFilename): self._filenames[KEY_MICROSCOPE] = microsopeFilename @property def simulationParametersFilename(self): return self._filenames[KEY_PARAMETERS] @simulationParametersFilename.setter def simulationParametersFilename(self, simulationParametersFilename): self._filenames[KEY_PARAMETERS] = simulationParametersFilename @property def mapFilename(self): return self._filenames[KEY_MAP] @mapFilename.setter def mapFilename(self, mapFilename): self._filenames[KEY_MAP] = mapFilename @property def snrFilename(self): return self._filenames[KEY_SNR] @snrFilename.setter def snrFilename(self, snrFilename): self._filenames[KEY_SNR] = snrFilename @property def resultParametersFilename(self): return self._filenames[KEY_RESULTS] @resultParametersFilename.setter def resultParametersFilename(self, resultParametersFilename): self._filenames[KEY_RESULTS] = resultParametersFilename