Coverage for eminus/io/__init__.py: 80.95%
42 statements
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-18 08:43 +0000
« prev ^ index » next coverage.py v7.6.9, created at 2024-12-18 08:43 +0000
1# SPDX-FileCopyrightText: 2021 The eminus developers
2# SPDX-License-Identifier: Apache-2.0
3"""File input and output functionalities."""
5from .cube import read_cube, write_cube
6from .gth import read_gth
7from .json import read_json, write_json
8from .pdb import create_pdb_str, write_pdb
9from .poscar import read_poscar, write_poscar
10from .traj import read_traj, write_traj
11from .xyz import read_xyz, write_xyz
13__all__ = [
14 "create_pdb_str",
15 "read",
16 "read_cube",
17 "read_gth",
18 "read_json",
19 "read_poscar",
20 "read_traj",
21 "read_xyz",
22 "write",
23 "write_cube",
24 "write_json",
25 "write_pdb",
26 "write_poscar",
27 "write_traj",
28 "write_xyz",
29]
32def read(filename, *args, **kwargs):
33 """Unified file reader function.
35 Args:
36 filename: Input file path/name.
37 *args: Pass-through arguments.
39 Keyword Args:
40 **kwargs: Pass-through keyword arguments.
42 Returns:
43 Read file information.
44 """
45 if filename.endswith(".json"):
46 return read_json(filename, *args, **kwargs)
47 if filename.endswith((".h5", ".hdf", ".hdf5")):
48 from ..extras import read_hdf5
50 return read_hdf5(filename, *args, **kwargs)
51 if filename.endswith(".xyz"):
52 return read_xyz(filename, *args, **kwargs)
53 if "POSCAR" in filename:
54 return read_poscar(filename, *args, **kwargs)
55 if filename.endswith((".trj", ".traj")):
56 return read_traj(filename, *args, **kwargs)
57 if filename.endswith((".cub", ".cube")):
58 return read_cube(filename, *args, **kwargs)
59 msg = "File ending not recognized."
60 raise NotImplementedError(msg)
63def write(obj, filename, *args, **kwargs): # noqa: PLR0911
64 """Unified file writer function.
66 Args:
67 obj: Class object.
68 filename: Input file path/name.
69 *args: Pass-through arguments.
71 Keyword Args:
72 **kwargs: Pass-through keyword arguments.
74 Returns:
75 None.
76 """
77 if filename.endswith(".json"):
78 return write_json(obj, filename, *args, **kwargs)
79 if filename.endswith((".h5", ".hdf", ".hdf5")):
80 from ..extras import write_hdf5
82 return write_hdf5(obj, filename, *args, **kwargs)
83 if filename.endswith(".xyz"):
84 return write_xyz(obj, filename, *args, **kwargs)
85 if "POSCAR" in filename:
86 return write_poscar(obj, filename, *args, **kwargs)
87 if filename.endswith((".trj", ".traj")):
88 return write_traj(obj, filename, *args, **kwargs)
89 if filename.endswith((".cub", ".cube")):
90 return write_cube(obj, filename, *args, **kwargs)
91 if filename.endswith(".pdb"):
92 return write_pdb(obj, filename, *args, **kwargs)
93 msg = "File ending not recognized."
94 raise NotImplementedError(msg)