void node2vec(PNEANet& InNet, double& ParamP, double& ParamQ, int& Dimensions, int& WalkLen, int& NumWalks, int& WinSize, int& Iter, bool& Verbose, TIntFltVH& EmbeddingsHV) { TVVec <TInt, int64> WalksVV; bool OutputWalks = 0; node2vec(InNet, ParamP, ParamQ, Dimensions, WalkLen, NumWalks, WinSize, Iter, Verbose, OutputWalks, WalksVV, EmbeddingsHV); }
void node2vec(PNEANet& InNet, double& ParamP, double& ParamQ, int& Dimensions, int& WalkLen, int& NumWalks, int& WinSize, int& Iter, bool& Verbose, TIntFltVH& EmbeddingsHV) { PWNet NewNet = PWNet::New(); for (TNEANet::TEdgeI EI = InNet->BegEI(); EI < InNet->EndEI(); EI++) { if (!NewNet->IsNode(EI.GetSrcNId())) { NewNet->AddNode(EI.GetSrcNId()); } if (!NewNet->IsNode(EI.GetDstNId())) { NewNet->AddNode(EI.GetDstNId()); } NewNet->AddEdge(EI.GetSrcNId(), EI.GetDstNId(), InNet->GetFltAttrDatE(EI,"weight")); } node2vec(NewNet, ParamP, ParamQ, Dimensions, WalkLen, NumWalks, WinSize, Iter, Verbose, EmbeddingsHV); }
void node2vec(PNGraph& InNet, double& ParamP, double& ParamQ, int& Dimensions, int& WalkLen, int& NumWalks, int& WinSize, int& Iter, bool& Verbose, bool& OutputWalks, TVVec<TInt, int64>& WalksVV, TIntFltVH& EmbeddingsHV) { PWNet NewNet = PWNet::New(); for (TNGraph::TEdgeI EI = InNet->BegEI(); EI < InNet->EndEI(); EI++) { if (!NewNet->IsNode(EI.GetSrcNId())) { NewNet->AddNode(EI.GetSrcNId()); } if (!NewNet->IsNode(EI.GetDstNId())) { NewNet->AddNode(EI.GetDstNId()); } NewNet->AddEdge(EI.GetSrcNId(), EI.GetDstNId(), 1.0); } node2vec(NewNet, ParamP, ParamQ, Dimensions, WalkLen, NumWalks, WinSize, Iter, Verbose, OutputWalks, WalksVV, EmbeddingsHV); }
void Loader::parseHeader(fs::DataFile &datafile, const conftree::Node &header) { // Load subresources, if defined. conftree::Node includes = header.opt("include"); if(includes.type() != conftree::Node::BLANK) { std::vector<string> subresources = node2vec(includes); for(const string &sr : subresources) { Loader subloader(datafile, sr); for(const string &key : subloader.m_node.itemSet()) m_node.insert(key, subloader.m_node.at(key)); } } // Autoload specified resources conftree::Node autoloads = header.opt("autoload"); if(autoloads.type() != conftree::Node::BLANK) { std::vector<string> loads = node2vec(autoloads); for(const string &al : loads) load(al); } }
int main(int argc, char* argv[]) { TStr InFile,OutFile; int Dimensions, WalkLen, NumWalks, WinSize, Iter; double ParamP, ParamQ; bool Directed, Weighted, Verbose, OutputWalks; ParseArgs(argc, argv, InFile, OutFile, Dimensions, WalkLen, NumWalks, WinSize, Iter, Verbose, ParamP, ParamQ, Directed, Weighted, OutputWalks); PWNet InNet = PWNet::New(); TIntFltVH EmbeddingsHV; TVVec <TInt, int64> WalksVV; ReadGraph(InFile, Directed, Weighted, Verbose, InNet); node2vec(InNet, ParamP, ParamQ, Dimensions, WalkLen, NumWalks, WinSize, Iter, Verbose, OutputWalks, WalksVV, EmbeddingsHV); WriteOutput(OutFile, EmbeddingsHV, WalksVV, OutputWalks); return 0; }