Source code for omfit_classes.omfit_namelist
try:
# framework is running
from .startup_choice import *
except ImportError as _excp:
# class is imported by itself
if (
'attempted relative import with no known parent package' in str(_excp)
or 'No module named \'omfit_classes\'' in str(_excp)
or "No module named '__main__.startup_choice'" in str(_excp)
):
from startup_choice import *
else:
raise
from omfit_classes.omfit_ascii import OMFITascii
from omfit_classes import namelist
from omfit_classes.namelist import fortran_environment, sparray
__all__ = ['OMFITnamelist', 'OMFITfortranNamelist', 'fortran_environment', 'sparray']
[docs]class OMFITnamelist(namelist.NamelistFile, OMFITascii):
r"""
OMFIT class used to interface with FORTRAN namelist files
"""
__doc__ += '\n'.join(namelist.NamelistFile.__doc__.strip().split('\n')[1:])
def __init__(self, filename, **kw):
kw.setdefault('collect_arrays', True)
# convert int/float to 0 or 0.0 to allow correct save of OMFITproperties
if isinstance(kw['collect_arrays'], dict):
for item in kw['collect_arrays']:
if (
isinstance(kw['collect_arrays'][item], dict)
and 'dtype' in kw['collect_arrays'][item]
and callable(kw['collect_arrays'][item]['dtype'])
):
kw['collect_arrays'][item]['dtype'] = kw['collect_arrays'][item]['dtype'](0.0)
# we can delete 'collect_arrays' if True, because this is the default for the namelist.NamelistFile class
if kw['collect_arrays'] is True:
del kw['collect_arrays']
# write `input_string` or `fromString` to file
fromString = kw.pop('fromString', kw.pop('input_string', None))
# place (1) in front of arrays/lists 1 element long so that they can be reloaded as such
explicit_arrays = kw.pop('explicit_arrays', 1)
OMFITascii.__init__(self, filename, fromString=fromString, **kw)
namelist.NamelistFile.__init__(self, self.filename, explicit_arrays=explicit_arrays, **kw)
[docs] @dynaLoad
def load(self):
"""
Method used to load the content of the file specified in the .filename attribute
:return: None
"""
return namelist.NamelistFile.load(self)
@property
def equals(self):
return self._equals
@equals.setter
def equals(self, value):
# force namelist parse if the namelist output format has changed from the default
list(self.keys())
self._equals = value
[docs] @dynaSave
def save(self):
"""
Method used to save the content of the object to the file specified in the .filename attribute
:return: None
"""
return namelist.NamelistFile.save(self)
[docs]class OMFITfortranNamelist(OMFITnamelist):
r"""
OMFIT class used to interface with FORTRAN namelist files with arrays indexed according to FORTRAN indexing convention
"""
__doc__ += '\n'.join(OMFITnamelist.__doc__.strip().split('\n')[1:])
def __init__(self, *args, **kw):
kw['index_offset'] = True
OMFITnamelist.__init__(self, *args, **kw)
############################################
if '__main__' == __name__:
test_classes_main_header()
foo = OMFITnamelist(os.path.dirname(__file__) + '/../../samples/k139817.00109')
foo.load()
print(foo)