Source code for radtools.io.internal

r"""
Input-output for the files related with this package.
"""

from radtools.exchange.template import ExchangeTemplate


[docs] def read_template(filename): r""" Read template from the template file. See :ref:`template-draft` for the description of the template file format. Parameters ---------- filename : str Path to the template file. Returns ------- template : :py:class:`.ExchangeTemplate` Exchange template. Notes ----- See also :ref:`Template specification <api>`. """ # Constants major_sep = "=" * 20 minor_sep = "-" * 20 neighbors_flag = "Neighbors template:" template = ExchangeTemplate() with open(filename) as file: line = True while line: line = file.readline() # Read the neighbors names if line and neighbors_flag in line: while line and major_sep not in line: if line and minor_sep in line: line = file.readline() name = line.split()[0] try: latex_name = line.split()[1] except IndexError: latex_name = name template.names[name] = [] template.latex_names[name] = latex_name line = file.readline() while line and minor_sep not in line and major_sep not in line: atom1 = line.split()[0] atom2 = line.split()[1] R = tuple(map(int, line.split()[2:])) template.names[name].append((atom1, atom2, R)) line = file.readline() if line and major_sep in line: break if line and minor_sep not in line: line = file.readline() return template