from numpy import loadtxt
from pychemia.utils.periodic import atomic_symbol
from pychemia import Structure
[docs]def load(filename):
symbols = loadtxt(filename, skiprows=2, usecols=[0], dtype='|S2', ndmin=1)
symbols = [x.decode('utf-8') for x in symbols]
for i in range(len(symbols)):
if symbols[i].isdigit():
symbols[i] = atomic_symbol(int(symbols[i]))
positions = loadtxt(filename, skiprows=2, usecols=(1, 2, 3), ndmin=2)
natom = len(symbols)
periodicity = 3 * [False]
return Structure(symbols=symbols, positions=positions, periodicity=periodicity, natom=natom)
[docs]def save(structure, filename):
if isinstance(structure, Structure):
sts = [structure]
else:
sts = structure
wf = open(filename, 'w')
for st in sts:
xyz = str(st.natom) + '\n\n'
for i in range(structure.natom):
xyz += " %2s %15.7f %15.7f %15.7f\n" % (structure.symbols[i],
structure.positions[i, 0],
structure.positions[i, 1],
structure.positions[i, 2])
wf.write(xyz)
wf.close()