def test_as_dict(self): s = self.get_structure("SiO2") en = EnvironmentNode(central_site=s[2], i_central_site=2, ce_symbol="T:4") en_from_dict = EnvironmentNode.from_dict(en.as_dict()) assert en.everything_equal(en_from_dict) if bson is not None: bson_data = bson.BSON.encode(en.as_dict()) en_from_bson = EnvironmentNode.from_dict(bson_data.decode()) assert en.everything_equal(en_from_bson)
def from_dict(cls, d): """ Reconstructs the ConnectedComponent object from a dict representation of the ConnectedComponent object created using the as_dict method. Args: d (dict): dict representation of the ConnectedComponent object Returns: ConnectedComponent: The connected component representing the links of a given set of environments. """ nodes_map = { inode_str: EnvironmentNode.from_dict(nodedict) for inode_str, (nodedict, nodedata) in d["nodes"].items() } nodes_data = {inode_str: nodedata for inode_str, (nodedict, nodedata) in d["nodes"].items()} dod = {} for e1, e1dict in d["graph"].items(): dod[e1] = {} for e2, e2dict in e1dict.items(): dod[e1][e2] = { cls._edgedictkey_to_edgekey(ied): cls._retuplify_edgedata(edata) for ied, edata in e2dict.items() } graph = nx.from_dict_of_dicts(dod, create_using=nx.MultiGraph, multigraph_input=True) nx.set_node_attributes(graph, nodes_data) nx.relabel_nodes(graph, nodes_map, copy=False) return cls(graph=graph)