/*! * Copyright (c) 2019 by Contributors * \file graph/serialize/graph_serialize.h * \brief Graph serialization header */ #ifndef DGL_GRAPH_SERIALIZE_GRAPH_SERIALIZE_H_ #define DGL_GRAPH_SERIALIZE_GRAPH_SERIALIZE_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../../c_api_common.h" using dgl::runtime::NDArray; using dgl::ImmutableGraph; using namespace dgl::runtime; namespace dgl { namespace serialize { typedef std::pair NamedTensor; class GraphDataObject : public runtime::Object { public: ImmutableGraphPtr gptr; std::vector node_tensors; std::vector edge_tensors; static constexpr const char *_type_key = "graph_serialize.GraphData"; void SetData(ImmutableGraphPtr gptr, Map node_tensors, Map edge_tensors); void Save(dmlc::Stream *fs) const; bool Load(dmlc::Stream *fs); DGL_DECLARE_OBJECT_TYPE_INFO(GraphDataObject, runtime::Object); }; class GraphData : public runtime::ObjectRef { public: DGL_DEFINE_OBJECT_REF_METHODS(GraphData, runtime::ObjectRef, GraphDataObject); /*! \brief create a new GraphData reference */ static GraphData Create() { return GraphData(std::make_shared()); } }; class StorageMetaDataObject : public runtime::Object { public: dgl_id_t num_graph; Value nodes_num_list; Value edges_num_list; Map labels_list; List graph_data; static constexpr const char *_type_key = "graph_serialize.StorageMetaData"; void SetMetaData(dgl_id_t num_graph, std::vector nodes_num_list, std::vector edges_num_list, std::vector labels_list); void SetGraphData(std::vector gdata); void VisitAttrs(AttrVisitor *v) final { v->Visit("num_graph", &num_graph); v->Visit("nodes_num_list", &nodes_num_list); v->Visit("edges_num_list", &edges_num_list); v->Visit("labels", &labels_list); v->Visit("graph_data", &graph_data); } DGL_DECLARE_OBJECT_TYPE_INFO(StorageMetaDataObject, runtime::Object); }; class StorageMetaData : public runtime::ObjectRef { public: DGL_DEFINE_OBJECT_REF_METHODS(StorageMetaData, runtime::ObjectRef, StorageMetaDataObject); /*! \brief create a new StorageMetaData reference */ static StorageMetaData Create() { return StorageMetaData(std::make_shared()); } }; bool SaveDGLGraphs(std::string filename, List graph_data, std::vector labels_list); StorageMetaData LoadDGLGraphs(const std::string &filename, std::vector idx_list, bool onlyMeta = false); ImmutableGraphPtr ToImmutableGraph(GraphPtr g); } // namespace serialize } // namespace dgl #endif // DGL_GRAPH_SERIALIZE_GRAPH_SERIALIZE_H_