Source code for

"""Module to read atoms in chemical json file format.
import json
import numpy as np

from ase import Atoms
from ase.cell import Cell

# contract and lower case string
def contract(dictionary):
    dcopy = {}
    for key in dictionary:
        dcopy[key.replace(' ', '').lower()] = dictionary[key]
    return dcopy

[docs]def read_cjson(fileobj): """Read a Chemical Json file as written by avogadro2 (>=1.93.0) See """ data = contract(json.load(fileobj)) atoms = Atoms() datoms = data['atoms'] atoms = Atoms(datoms['elements']['number']) if 'unitcell' in data: cell = data['unitcell'] a = cell['a'] b = cell['b'] c = cell['c'] alpha = cell['alpha'] beta = cell['beta'] gamma = cell['gamma'] atoms.cell = Cell.fromcellpar([a, b, c, alpha, beta, gamma]) atoms.pbc = True coords = contract(datoms['coords']) if '3d' in coords: positions = np.array(coords['3d']).reshape(len(atoms), 3) atoms.set_positions(positions) else: positions = np.array(coords['3dfractional']).reshape(len(atoms), 3) atoms.set_scaled_positions(positions) yield atoms