TFileInfo::TFileInfo(const TString& path_) :path(path_), size(0), time(0), hash(path.GetCrc32()), m_actual(AD_UNDEFINED) { WIN32_FILE_ATTRIBUTE_DATA fileAttributeData; if(GetFileAttributesEx(path_.c_str(), GetFileExInfoStandard, &fileAttributeData)) { size = TUInt64(fileAttributeData.nFileSizeLow) + TUInt64(fileAttributeData.nFileSizeHigh)*0x100000000; time = *(TUInt64*)&fileAttributeData.ftLastWriteTime; m_actual = 1; } else { m_actual = 0; } }
void PrintGraphStatTable(const PGraph& G, TStr OutFNm, TStr Desc="") { TFltPrV DegCCfV; int64 ClosedTriads, OpenTriads; int FullDiam; double EffDiam; TSnap::PrintInfo(G, OutFNm); TExeTm ExeTm; printf("C"); const double CCF = TSnap::GetClustCf(G, DegCCfV, ClosedTriads, OpenTriads); printf("[%s]D", ExeTm.GetStr()); TSnap::GetBfsEffDiam(G, 1000, false, EffDiam, FullDiam); printf("[%s]CC", ExeTm.GetStr()); PGraph WCC = TSnap::GetMxWcc(G); PGraph SCC = TSnap::GetMxScc(G); printf("[%s]\n", ExeTm.GetStr()); FILE* F = stdout; if (! OutFNm.Empty()) { F = fopen(TStr::Fmt("%s.html", OutFNm.CStr()).CStr(), "wt"); } fprintf(F, "\n"); fprintf(F, "<table id=\"datatab\" summary=\"Dataset statistics\">\n"); fprintf(F, " <tr> <th colspan=\"2\">Dataset statistics</th> </tr>\n"); fprintf(F, " <tr><td>Nodes</td> <td>%d</td></tr>\n", G->GetNodes()); fprintf(F, " <tr><td>Edges</td> <td>%d</td></tr>\n", G->GetEdges()); fprintf(F, " <tr><td>Nodes in largest WCC</td> <td>%d (%.3f)</td></tr>\n", WCC->GetNodes(), WCC->GetNodes()/double(G->GetNodes())); fprintf(F, " <tr><td>Edges in largest WCC</td> <td>%d (%.3f)</td></tr>\n", WCC->GetEdges(), WCC->GetEdges()/double(G->GetEdges())); fprintf(F, " <tr><td>Nodes in largest SCC</td> <td>%d (%.3f)</td></tr>\n", SCC->GetNodes(), SCC->GetNodes()/double(G->GetNodes())); fprintf(F, " <tr><td>Edges in largest SCC</td> <td>%d (%.3f)</td></tr>\n", SCC->GetEdges(), SCC->GetEdges()/double(G->GetEdges())); fprintf(F, " <tr><td>Average clustering coefficient</td> <td>%.4f</td></tr>\n", CCF); fprintf(F, " <tr><td>Number of triangles</td> <td>%s</td></tr>\n", TUInt64(ClosedTriads).GetStr().CStr()); fprintf(F, " <tr><td>Fraction of closed triangles</td> <td>%.4g</td></tr>\n", ClosedTriads/double(ClosedTriads+OpenTriads)); fprintf(F, " <tr><td>Diameter (longest shortest path)</td> <td>%d</td></tr>\n", FullDiam); fprintf(F, " <tr><td>90-percentile effective diameter</td> <td>%.2g</td></tr>\n", EffDiam); fprintf(F, "</table>\n"); fprintf(F, "<br>\n"); if (! OutFNm.Empty()) { fprintf(F, "\n<table id=\"datatab\" summary=\"Table of datasets\">\n"); fprintf(F, "<tr>\n"); fprintf(F, " <th>File</th>\n"); fprintf(F, " <th>Description</th>\n"); fprintf(F, "</tr>\n"); fprintf(F, "<tr>\n"); fprintf(F, " <td><a href=\"%s.txt.gz\">%s.txt.gz</a></td>\n", OutFNm.CStr(), OutFNm.CStr()); fprintf(F, " <td>%s</td>\n", Desc.CStr()); fprintf(F, "</tr>\n"); fprintf(F, "</table>\n"); fclose(F); TSnap::SaveEdgeList(G, OutFNm+".txt", Desc); } }
void PrintGraphStat(const PNGraph& G) { PNGraph WCC = TSnap::GetMxWcc(G); PNGraph SCC = TSnap::GetMxScc(G); TFltPrV DegCCfV; int64 ClosedTriads, OpenTriads; int FullDiam; double EffDiam; printf("Nodes\t%d\n", G->GetNodes()); printf("Edges\t%d\n", G->GetEdges()); printf("Nodes in largest WCC\t%d (%.3f)\n", WCC->GetNodes(), WCC->GetNodes()/double(G->GetNodes())); printf("Edges in largest WCC\t%d (%.3f)\n", WCC->GetEdges(), WCC->GetEdges()/double(G->GetEdges())); printf("Nodes in largest SCC\t%d (%.3f)\n", SCC->GetNodes(), SCC->GetNodes()/double(G->GetNodes())); printf("Edges in largest SCC\t%d (%.3f)\n", SCC->GetEdges(), SCC->GetEdges()/double(G->GetEdges())); const double CCF = TSnap::GetClustCf(G, DegCCfV, ClosedTriads, OpenTriads); printf("Average clustering coefficient\t%.4f\n", CCF); printf("Number of triangles\t%s\n", TUInt64(ClosedTriads).GetStr().CStr()); printf("Fraction of closed triangles\t%.4g\n", ClosedTriads/double(ClosedTriads+OpenTriads)); TSnap::GetBfsEffDiam(G, 1000, false, EffDiam, FullDiam); printf("Diameter (longest shortest path)\t%d\n", FullDiam); printf("90-percentile effective diameter\t%.2g\n", EffDiam); }
uint64 TSAppSrvFun::GetFldUInt64(const TStrKdV& FldNmValPrV, const TStr& FldNm, const uint64& DefVal) { TStr IntStr = GetFldVal(FldNmValPrV, FldNm, TUInt64(DefVal).GetStr()); EAssertR(IntStr.IsUInt64(), "Parameter '" + FldNm + "' not a number"); return IntStr.GetUInt64(); }