2016-02-04 3 views
0

Est-il possible de stocker un objet Networkx Graph dans un objet CBOR (sérialiser les données via CBOR)? J'ai des graphes NetworkX assez volumineux et j'ai besoin de sérialiser et de stocker pour d'autres analyses. Pickle semble trop lent et crée trop de fichier. Je ne vois pas assez de documentation sur CBOR pour déterminer correctement si ma tâche est possible.Python - CBOR avec le graphe NetworkX

Répondre

1

Je ne connais pas les performances de CBOR. D'après ce que j'ai lu, il semble être très efficace avec JSON. J'ai donc testé la sérialisation et cela fonctionne parfaitement:

from networkx.readwrite import json_graph 
import cbor 

G = nx.Graph() 
G.add_weighted_edges_from([('a1', 'a2', 1.0), ('a2', 'a3', 0.5), 
          ('a3', 'a5', 1.0), ('a4', 'a8', 1.0), ('a8', 'a9', 0.8)]) 

# Serialize graph 
res = json_graph.node_link_data(G) # export Networkx to JSON 
serialized = cbor.dumps(res) # serialize in binary format 

deserialized = cbor.loads(serialized) # deserialize 
H = json_graph.node_link_graph(deserialized) # Get back to original graph