Module genice_core.serialize
Deals with serialization/deserialization of a directed graph.
Expand source code
"""
Deals with serialization/deserialization of a directed graph.
"""
import networkx as nx
def serialize(dg: nx.DiGraph) -> str:
"""Encode a digraph
Args:
dg (nx.DiGraph): the directed graph to be encoded.
Returns:
str: a string representing the digraph.
"""
def encode1(v):
return "+".join(f"{x}" for x in sorted(dg.successors(v)))
return ".".join(encode1(v) for v in sorted(dg.nodes()))
def deserialize(s:str) -> nx.Graph:
"""Decode a string into a digraph
Args:
s (str): encoded string of a graph
Returns:
nx.Graph: the recovered digraph.
"""
dg = nx.DiGraph()
for i, neis in enumerate(s.split(".")):
if neis == "":
continue
for j in neis.split("+"):
dg.add_edge(i, int(j))
return dg
Functions
def deserialize(s: str) ‑> networkx.classes.graph.Graph-
Decode a string into a digraph
Args
s:str- encoded string of a graph
Returns
nx.Graph- the recovered digraph.
Expand source code
def deserialize(s:str) -> nx.Graph: """Decode a string into a digraph Args: s (str): encoded string of a graph Returns: nx.Graph: the recovered digraph. """ dg = nx.DiGraph() for i, neis in enumerate(s.split(".")): if neis == "": continue for j in neis.split("+"): dg.add_edge(i, int(j)) return dg def serialize(dg: networkx.classes.digraph.DiGraph) ‑> str-
Encode a digraph
Args
dg:nx.DiGraph- the directed graph to be encoded.
Returns
str- a string representing the digraph.
Expand source code
def serialize(dg: nx.DiGraph) -> str: """Encode a digraph Args: dg (nx.DiGraph): the directed graph to be encoded. Returns: str: a string representing the digraph. """ def encode1(v): return "+".join(f"{x}" for x in sorted(dg.successors(v))) return ".".join(encode1(v) for v in sorted(dg.nodes()))