int main(int argc, char* argv[]) { TEnv Env(argc, argv); TStr PrefixPath = Env.GetArgs() > 1 ? Env.GetArg(1) : TStr(""); double ts1 = Tick(); TTableContext Context; TVec<TPair<PTable,TStr> > NodeTblV = TVec<TPair<PTable,TStr> >(); TVec<TPair<PTable, int> > EdgeTblV = TVec<TPair<PTable, int> >(); Schema NodeSchema = Schema(); Schema EdgeSchema = Schema(); LoadFlickrTables(PrefixPath, Context, NodeTblV, NodeSchema, EdgeTblV, EdgeSchema); double ts2 = Tick(); THash<TStr,TStrH> NStrH; TIntStrH NIdH; CreateIdHashes(NodeTblV, NStrH, NIdH); double ts3 = Tick(); PSVNet Graph = LoadGraphMNet<PSVNet>(NodeTblV, EdgeTblV, NStrH, NIdH); double ts4 = Tick(); int nExps = 10; int nTriads = 0; for (int i = 0; i < nExps; i++) { nTriads = TSnap::GetTriads(Graph); } double ts5 = Tick(); StdOut->PutStrFmtLn("Triads %d", nTriads); PSOut TimeOut = TFOut::New(PrefixPath + TStr("time.txt"), true); TimeOut->PutStrFmtLn("===== Triad Counting - PSVNet ====="); TimeOut->PutStrLn(Env.GetCmLn()); TimeOut->PutStrFmtLn("Input Time = %f", GetCPUTimeUsage(ts1, ts2)); TimeOut->PutStrFmtLn("Preprocessing Time = %f", GetCPUTimeUsage(ts2, ts3)); TimeOut->PutStrFmtLn("Conversion Time = %f", GetCPUTimeUsage(ts3, ts4)); TimeOut->PutStrFmtLn("Computing Time = %f", GetCPUTimeUsage(ts4, ts5)/nExps); return 0; }
int main(int argc, char* argv[]) { // PSVNet PGraph = PSVNet::New(); // PCVNet PGraph = PCVNet::New(); PMVNet PGraph = PMVNet::New(); int NTypeId1 = PGraph->AddNType(TStr("Photo")); int NTypeId2 = PGraph->AddNType(TStr("User")); int NTypeId3 = PGraph->AddNType(TStr("Tag")); int ETypeId1 = PGraph->AddEType(TStr("EType1"), TStr("Photo"), TStr("User")); int ETypeId2 = PGraph->AddEType(TStr("EType2"), TStr("User"), TStr("Photo")); int ETypeId3 = PGraph->AddEType(TStr("EType3"), TStr("User"), TStr("Photo")); int ETypeId4 = PGraph->AddEType(TStr("EType4"), TStr("Photo"), TStr("Tag")); StdOut->PutStrFmtLn("EdgeTypeId %d - %d - %d", ETypeId1, ETypeId2, ETypeId4); StdOut->PutStrFmtLn("TypeId %d - %d - %d", PGraph->AddNType(TStr("User")), PGraph->GetNTypeId(TStr("Photo")), PGraph->GetNTypeId(TStr("User"))); int NId1 = PGraph->AddNode(1, 0); int NId2 = PGraph->AddNode(1, 1); int NId3 = PGraph->AddNode(0, 1); int NId4 = PGraph->AddNode(1, 2); int NId5 = PGraph->AddNode(0, 0); int NId6 = PGraph->AddNode(2, 1); StdOut->PutStrFmtLn("Nodes %d %d %d %d %d %d", NId1, NId2, NId3, NId4, NId5, NId6); StdOut->PutStrFmtLn("Size = %d", PGraph->GetNodes()); for (TMVNet::TNodeI Iter = PGraph->BegNI(); Iter < PGraph->EndNI(); Iter++) { StdOut->PutStrFmtLn("Iter = %d, %d", Iter.GetTypeId(), Iter.GetId()); } // StdOut->PutStrFmtLn("Edges %d", EId1); // StdOut->PutStrFmtLn("IsEdge(%d) = %d", EId1, PGraph->IsEdge(EId1)); // StdOut->PutStrFmtLn("IsEdge(%d) = %d", 1, PGraph->IsEdge(1)); // int EId; // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d", NId1, NId2, PGraph->IsEdge(NId1, NId2, true)); // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d - %d", NId1, NId2, PGraph->IsEdge(NId1, NId2, EId, true), EId); // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d", NId1, NId3, PGraph->IsEdge(NId1, NId3, true)); // StdOut->PutStrFmtLn("IsEdge(%d, %d) = %d - %d", NId1, NId3, PGraph->IsEdge(NId1, NId3, EId, true), EId); int EId1 = PGraph->AddEdge(NId1, NId3, ETypeId2); int EId2 = PGraph->AddEdge(NId3, NId2, ETypeId1); int EId3 = PGraph->AddEdge(NId5, NId2, ETypeId1); int EId4 = PGraph->AddEdge(NId1, NId5, ETypeId2, 10); int EId5 = PGraph->AddEdge(NId3, NId1, ETypeId1); int EId6 = PGraph->AddEdge(NId3, NId6, ETypeId4); int EId7 = PGraph->AddEdge(NId3, NId6, ETypeId4); for (TMVNet::TEdgeI Iter = PGraph->BegEI(); Iter < PGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); StdOut->PutStrFmtLn("Degree %d-%d", PGraph->GetNI(NId3).GetInDeg(), PGraph->GetNI(NId3).GetOutDeg()); for (int i = 0; i < PGraph->GetNI(NId3).GetOutDeg(); i++) { StdOut->PutStrFmtLn("Edge %d", PGraph->GetNI(NId3).GetOutEId(i)); } TStrV NTypeNameV; NTypeNameV.Add(TStr("Photo")); NTypeNameV.Add(TStr("User")); PMVNet PSubGraph = PGraph->GetSubGraph(NTypeNameV); StdOut->PutStrFmtLn("Size = %d", PSubGraph->GetNodes()); StdOut->PutStrFmtLn("Edge Size = %d", PSubGraph->GetEdges()); for (TMVNet::TEdgeI Iter = PSubGraph->BegEI(); Iter < PSubGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } PGraph->DelEdge(EId5); PGraph->DelEdge(EId3); StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); PGraph->DelEdge(NId3, NId6, true); for (TSVNet::TEdgeI Iter = PGraph->BegEI(); Iter < PGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); PGraph->DelNode(NId2); StdOut->PutStrFmtLn("Size = %d", PGraph->GetNodes()); for (TSVNet::TNodeI Iter = PGraph->BegNI(); Iter < PGraph->EndNI(); Iter++) { StdOut->PutStrFmtLn("Node = %d:%d", Iter.GetTypeId(), Iter.GetId()); } for (TSVNet::TEdgeI Iter = PGraph->BegEI(); Iter < PGraph->EndEI(); Iter++) { StdOut->PutStrFmtLn("Edge = %d:%d", Iter.GetTypeId(), Iter.GetId()); } StdOut->PutStrFmtLn("Edge Size = %d", PGraph->GetEdges()); TIntV ShortestDists; StdOut->PutStrFmtLn("Depth = %d", TSnap::GetShortestDistances(PGraph, NId1, false, false, ShortestDists)); for (TSVNet::TNodeI Iter = PGraph->BegNI(); Iter < PGraph->EndNI(); Iter++) { int NId = Iter.GetId(); StdOut->PutStrFmtLn("Shortest Dist = %d:%d", NId, ShortestDists[NId]); } TIntFltH PageRankH; TSnap::GetPageRankMNetMP(PGraph, PageRankH, 0.849999999999998, 0.0001, 10); }
int main(int argc, char* argv[]) { TEnv Env(argc, argv); TStr PrefixPath = Env.GetArgs() > 1 ? Env.GetArg(1) : TStr(""); double ts1 = Tick(); TTableContext Context; TVec<PTable> NodeTblV = TVec<PTable>(); TVec<PTable> EdgeTblV = TVec<PTable>(); Schema NodeSchema = Schema(); Schema EdgeSchema = Schema(); LoadFlickrTables(PrefixPath, Context, NodeTblV, NodeSchema, EdgeTblV, EdgeSchema); double ts2 = Tick(); int ExpectedSz = 0; for (TVec<PTable>::TIter it = NodeTblV.BegI(); it < NodeTblV.EndI(); it++) { PTable Table = *it; ExpectedSz += Table->GetNumRows(); } THash<TStr, TInt> Hash(ExpectedSz); TStrV OriNIdV(ExpectedSz); MergeNodeTables(NodeTblV, NodeSchema, Hash, OriNIdV); PTable EdgeTable = MergeEdgeTables(EdgeTblV, EdgeSchema, Hash, Context); double ts3 = Tick(); TStrV V; TStrV VE; VE.Add(EdgeSchema.GetVal(2).GetVal1()); PNEANet Graph = TSnap::ToNetwork<PNEANet>(EdgeTable, EdgeSchema.GetVal(0).GetVal1(), EdgeSchema.GetVal(1).GetVal1(), V, V, VE, aaLast); double ts4 = Tick(); //int nExps = 1; int nExps = 40; TIntFltH PageRankResults; for (int i = 0; i < nExps; i++) { PageRankResults = TIntFltH(ExpectedSz); #ifdef USE_OPENMP TSnap::GetWeightedPageRankMP2(Graph, PageRankResults, EdgeSchema.GetVal(2).GetVal1(), 0.849999999999998, 0.0001, 10); #else TSnap::GetWeightedPageRank(Graph, PageRankResults, EdgeSchema.GetVal(2).GetVal1(), 0.849999999999998, 0.0001, 10); #endif } double ts5 = Tick(); PSOut ResultOut = TFOut::New(PrefixPath + TStr("page-rank-results.tsv")); for (TIntFltH::TIter it = PageRankResults.BegI(); it < PageRankResults.EndI(); it++) { ResultOut->PutStrFmtLn("%s\t%f9", OriNIdV[it.GetKey()].CStr(), it.GetDat().Val); } double ts6 = Tick(); bool isPar = false; #ifdef USE_OPENMP isPar = true; #endif // PSOut FeaturesOut = TFOut::New(PrefixPath + "features.txt"); // FeaturesOut->PutStrFmtLn("Photo %d", PPhotoTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Users %d", PUserTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Tags %d", PTagTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Comments %d", PCommentTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Locations %d", PLocationTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Photo - Owner %d", PPhotoOwnerTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Photo - Comment %d", PPhotoCommentTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Photo - Location %d", PPhotoLocationTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Comment - User %d", PCommentUserTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Comment - User %d", PCommentUserTbl->GetNumRows().Val); //// FeaturesOut->PutStrFmtLn("Photo - Tagger %d", PPhotoTaggerTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Tagger - Tag %d", PTaggerTagTbl->GetNumRows().Val); // FeaturesOut->PutStrFmtLn("Total number of nodes = %d", Graph->GetNodes()); // FeaturesOut->PutStrFmtLn("Total number of edges = %d", Graph->GetEdges()); PSOut TimeOut = TFOut::New(PrefixPath + TStr("time.txt"), true); TimeOut->PutStrFmtLn("Experiment Weighted - %s - %s", PrefixPath.CStr(), (isPar ? "Parallel" : "Sequential")); TimeOut->PutStrFmtLn("Input Time = %f", GetCPUTimeUsage(ts1, ts2)); TimeOut->PutStrFmtLn("Preprocessing Time = %f", GetCPUTimeUsage(ts2, ts3)); TimeOut->PutStrFmtLn("Conversion Time = %f", GetCPUTimeUsage(ts3, ts4)); TimeOut->PutStrFmtLn("Computing Time = %f", GetCPUTimeUsage(ts4, ts5)/nExps); TimeOut->PutStrFmtLn("Output Time = %f", GetCPUTimeUsage(ts5, ts6)); return 0; }