Ejemplo n.º 1
0
def test_basis_to_from_json():
    basis = Basis.primitive("X")
    json_data = basis.to_json()
    res = Basis.from_json(json_data)
    assert len(basis) == len(res) == 1
    assert res[0][0] == basis[0][0]
    assert np.array_equal(res[0][1], basis[0][1])
Ejemplo n.º 2
0
    def from_json(cls, s: str) -> 'UnitCell':
        """Initializes from a JSON string."""
        # load dict from JSON string
        data = orjson.loads(s)

        # validate type
        _type = data.pop("type")
        if _type != cls.__name__:
            raise TypeError(f"cannot deserialize from type `{_type}`")

        # process topology
        topology = Topology.from_json(orjson.dumps(data["topology"]))

        # process basis
        basis = Basis.from_json(orjson.dumps(data["basis"]))

        # process lattice parameters
        lattice_parameters = LatticeParameters.from_json(
            orjson.dumps(data["lattice_parameters"]))

        # process spacegroup
        spacegroup = Spacegroup.from_json(orjson.dumps(data["spacegroup"]))

        # return instance
        return cls(basis,
                   lattice_parameters,
                   spacegroup,
                   _graph=topology._graph)