Source code for at.load.allfiles
"""Generic function to save and load python AT lattices. The format is
determined by the file extension
"""
import os.path
from at.lattice import Lattice
__all__ = ['load_lattice', 'save_lattice', 'register_format']
_load_extension = {}
_save_extension = {}
[docs]def load_lattice(filepath: str, **kwargs) -> Lattice:
"""Load a Lattice object from a file
The file format is indicated by the filepath extension.
Parameters:
filepath: Name of the file
Keyword Args:
name (str): Name of the lattice.
Default: taken from the file, or ``''``
energy (float): Energy of the lattice
(default: taken from the file)
periodicity (int]): Number of periods
(default: taken from the file, or 1)
*: All other keywords will be set as :py:class:`.Lattice`
attributes
Specific keywords for .mat files
Keyword Args:
mat_key (str): Name of the Matlab variable containing
the lattice. Default: Matlab variable name if there is only one,
otherwise ``'RING'``
check (bool): Run coherence tests. Default: :py:obj:`True`
quiet (bool): Suppress the warning for non-standard classes.
Default: :py:obj:`False`
keep_all (bool): Keep Matlab RingParam elements as Markers.
Default: :py:obj:`False`
Returns:
lattice (Lattice): New :py:class:`.Lattice` object
See Also:
:py:func:`.load_mat`, :py:func:`.load_m`, :py:func:`.load_repr`,
:py:func:`.load_elegant`, :py:func:`.load_tracy`
.. Admonition:: Known extensions are:
"""
_, ext = os.path.splitext(filepath)
try:
load_func = _load_extension[ext.lower()]
except KeyError:
print("File load failed: unknow extension {}.".format(ext))
else:
return load_func(filepath, **kwargs)
[docs]def save_lattice(ring: Lattice, filepath: str, **kwargs):
"""Save a Lattice object
The file format is indicated by the filepath extension.
Parameters:
ring: Lattice description
filepath: Name of the file
Specific keywords for .mat files
Keyword Args:
mat_key (str): Name of the Matlab variable containing the lattice.
Default: ``'RING'``
See Also:
:py:func:`.save_mat`, :py:func:`.save_m`, :py:func:`.save_repr`
.. Admonition:: Known extensions are:
"""
_, ext = os.path.splitext(filepath)
try:
save_func = _save_extension[ext.lower()]
except KeyError:
print("File save failed: unknow extension {}.".format(ext))
else:
return save_func(ring, filepath, **kwargs)
Lattice.load = staticmethod(load_lattice)
Lattice.save = save_lattice