65 TakeStat(Graph, Time, StatFSet, GraphName); }
70 return new TGStat(Time, GraphName); }
72 const TStr& GraphNm=
TStr()) {
return new TGStat(Graph, Time, StatFSet, GraphNm); }
74 const TStr& GraphNm=
TStr()) {
return new TGStat(Graph, Time, StatFSet, GraphNm); }
76 const TStr& GraphNm=
TStr()) {
return new TGStat(Graph, Time, StatFSet, GraphNm); }
78 const TStr& GraphNm=
TStr()) {
return new TGStat(Graph, Time, StatFSet, GraphNm); }
94 void SetNm(
const TStr& GraphName) { GraphNm=GraphName; }
112 template <
class PGraph>
void TakeStat(
const PGraph& Graph,
const TSecTm& Time,
TFSet StatFSet,
const TStr& GraphName);
113 template <
class PGraph>
void TakeBasicStat(
const PGraph& Graph,
const bool& IsMxWcc=
false);
114 template <
class PGraph>
void TakeBasicStat(
const PGraph& Graph,
TFSet FSet,
const bool& IsMxWcc=
false);
115 template <
class PGraph>
void TakeSccStat(
const PGraph& Graph,
TFSet StatFSet);
116 template <
class PGraph>
void TakeBccStat(
const PGraph& Graph,
TFSet StatFSet);
117 template <
class PGraph>
void TakeDegDistr(
const PGraph& Graph);
119 template <
class PGraph>
void TakeDiam(
const PGraph& Graph,
const bool& IsMxWcc=
false);
120 template <
class PGraph>
void TakeDiam(
const PGraph& Graph,
TFSet StatFSet,
const bool& IsMxWcc=
false);
121 template <
class PGraph>
void TakeConnComp(
const PGraph& Graph);
123 template <
class PGraph>
void TakeClustCf(
const PGraph& Graph,
const int& SampleNodes=-1);
124 template <
class PGraph>
void TakeTriadPart(
const PGraph& Graph);
129 void Plot(
const TFSet& FSet,
const TStr& FNmPref,
const TStr& Desc=
TStr(),
bool PowerFit=
false)
const;
186 PGStat At(
const int& ValN)
const {
return GStatV[ValN]; }
189 int GetTime(
const int& ValN)
const {
return At(ValN)->GetTime(TmUnit); }
191 void Del(
const int& ValN) { GStatV.
Del(ValN); }
218 template <
class PGraph>
220 printf(
"**TakeStat: G(%u, %u)\n", Graph->GetNodes(), Graph->GetEdges());
238 PNGraph NGraph = TSnap::ConvertGraph<PNGraph>(Graph,
true);
252 printf(
"**[%s]\n", FullTm.GetTmStr());
256 template <
class PGraph>
261 template <
class PGraph>
268 const int Nodes = Graph->GetNodes();
284 printf(
"basic wcc...");
285 const int Nodes = Graph->GetNodes();
300 template <
class PGraph>
305 template <
class PGraph>
322 printf(
"[%s] ", ExeTm.
GetTmStr()); }
325 template <
class PGraph>
331 template <
class PGraph>
336 printf(
"anf:%druns...", NDiamRuns); }
350 HopsV.
Gen(DistNbrsV.
Len(), 0);
351 for (
int i = 0; i < DistNbrsV.
Len(); i++) {
352 HopsV.Add(
TFltPr(DistNbrsV[i].Key(), DistNbrsV[i].Dat)); }
382 WccHopsV.
Gen(DistNbrsV.
Len(), 0);
383 for (
int i = 0; i < DistNbrsV.
Len(); i++) {
384 WccHopsV.Add(
TFltPr(DistNbrsV[i].Key(), DistNbrsV[i].Dat)); }
391 template <
class PGraph>
396 template <
class PGraph>
404 WccSzCntV.
Gen(WccSzCntV1.
Len(), 0);
405 for (
int i = 0; i < WccSzCntV1.
Len(); i++)
406 WccSzCntV.
Add(
TFltPr(WccSzCntV1[i].Val1(), WccSzCntV1[i].Val2()));
413 SccSzCntV.
Gen(SccSzCntV1.
Len(), 0);
414 for (
int i = 0; i < SccSzCntV1.
Len(); i++)
415 SccSzCntV.
Add(
TFltPr(SccSzCntV1[i].Val1(), SccSzCntV1[i].Val2()));
420 template <
class PGraph>
433 template <
class PGraph>
446 template <
class PGraph>
449 printf(
"clustcf...");
452 const double ClustCf =
TSnap::GetClustCf(Graph, ClustCfV, Close, Open, SampleNodes);
459 template <
class PGraph>
462 printf(
"triadparticip...");
466 TriadCntV.
Gen(CntV.
Len(), 0);
467 for (
int i = 0; i < CntV.
Len(); i++) {
468 TriadCntV.
Add(
TFltPr(CntV[i].Val1(), CntV[i].Val2()));
bool HasVal(const TGStatVal &Stat) const
PGStat GetAvgGStat(const bool &ClipAt1=false)
static const TFltPrV EmptyV
PUNGraph GetMxBiCon(const PUNGraph &Graph, const bool &RenumberNodes)
Returns a graph representing the largest bi-connected component on an undirected Graph.
static TStr GetValStr(const TGStatVal &Val)
static PGStat New(const PNGraph &Graph, const TSecTm &Time, TFSet StatFSet=TFSet(), const TStr &GraphNm=TStr())
void ImposeDistr(const TGStatDistr &Distr, const TStr &FNmPref, TStr Desc=TStr(), const bool &ExpBin=false, const bool &PowerFit=false, const TGpSeriesTy &PlotWith=gpwLinesPoints, const TStr &Style="") const
void GetOutDegCnt(const PGraph &Graph, TIntPrV &DegToCntV)
Returns an out-degree histogram: a set of pairs (out-degree, number of nodes of such out-degree) ...
int GetBfsFullDiam(const PGraph &Graph, const int &NTestNodes, const bool &IsDir=false)
Returns the (approximation of the) Diameter (maximum shortest path length) of a graph (by performing ...
void Del(const TSizeTy &ValN)
Removes the element at position ValN.
PGraph GetMxWcc(const PGraph &Graph)
Returns a graph representing the largest weakly connected component on an input Graph.
void TakeSpectral(const PNGraph &Graph, const int _TakeSngVals=-1)
void Save(TSOut &SOut) const
static PGStat New(const PNEGraph &Graph, const TSecTm &Time, TFSet StatFSet=TFSet(), const TStr &GraphNm=TStr())
bool operator==(const TGStat &GStat) const
static TFSet NoDiamStat()
enum TGStatDistr_ TGStatDistr
TSizeTy Len() const
Returns the number of elements in the vector.
void TakeConnComp(const PGraph &Graph)
void PlotAllVsX(const TGStatVal &XVal, const TStr &OutFNm, TStr Desc=TStr(), const TGpScaleTy &Scale=gpsAuto, const bool &PowerFit=false) const
void GetAnf(const PGraph &Graph, const int &SrcNId, TIntFltKdV &DistNbrsV, const int &MxDist, const bool &IsDir, const int &NApprox=32)
static TFSet NoDistrStat()
void AvgGStat(const PGStatVec &GStatVec, const bool &ClipAt1=false)
TGStatVec & operator=(const TGStatVec &GStat)
uint GetInUnits(const TTmUnit &TmUnit) const
static TStr GetDistrStr(const TGStatDistr &Distr)
int GetTime(const TTmUnit &TimeUnit) const
int CntUniqDirEdges(const PGraph &Graph)
Counts unique directed edges in the graph Graph. Nodes (u,v) (where u!=v) are connected via a directe...
bool HasDistr(const TGStatDistr &Distr) const
void Sort(const TGStatVal &SortBy=gsvNodes, const bool &Asc=true)
bool HasDistr(const TGStatDistr &Stat) const
void GetSccSzCnt(const PGraph &Graph, TIntPrV &SccSzCnt)
Returns a distribution of strongly connected component sizes.
static PGStat New(const PUNGraph &Graph, const TSecTm &Time, TFSet StatFSet=TFSet(), const TStr &GraphNm=TStr())
void SetTakeStat(const TFSet &TakeStatSet)
bool Empty() const
Tests whether the vector is empty.
have explicit edges (multigraph): TNEGraph, TNodeEdgeNet
enum TGStatVal_ TGStatVal
void SaveTxt(const TStr &FNmPref, const TStr &Desc) const
bool operator()(const TGStat &GS1, const TGStat &GS2) const
Graph Statistics Sequence.
int GetTime(const int &ValN) const
const char * GetTmStr() const
static TPlotInfo GetPlotInfo(const TGStatVal &Val)
void TakeStat(const PNGraph &Graph, const TSecTm &Time, TFSet StatFSet, const TStr &GraphName)
TCmpByVal(TGStatVal SortBy, bool Asc)
void Clr(const bool &DoDel=true, const TSizeTy &NoDelLim=-1)
Clears the contents of the vector.
void TakeTriadPart(const PGraph &Graph)
void GetInDegCnt(const PGraph &Graph, TIntPrV &DegToCntV)
Returns an in-degree histogram: a set of pairs (in-degree, number of nodes of such in-degree) ...
void Add(const TFlt &Val, const TFlt &Wgt=1)
THash< TInt, TFltPrV > DistrStatH
Statistics of a Graph Snapshot.
void DelBefore(const TSecTm &Tm)
void TakeClustCf(const PGraph &Graph, const int &SampleNodes=-1)
static PGStat New(const TSecTm &Time=TSecTm(), const TStr &GraphName=TStr())
void DelSmallNodes(const int &MinNodes)
PGStat operator[](const int &ValN) const
TTmUnit GetTmUnit() const
bool HasVal(const TGStatVal &StatVal) const
TGStat(const PGraph &Graph, const TSecTm &Time, TFSet StatFSet=TFSet(), const TStr &GraphName=TStr())
void TakeBccStat(const PGraph &Graph, TFSet StatFSet)
void Del(const int &ValN)
const TVal & Last() const
Returns a reference to the last element of the vector.
PGStat New(const PGraph &Graph, const TSecTm &Time, TFSet StatFSet=TFSet(), const TStr &GraphNm=TStr())
TGStatVec(const TTmUnit &_TmUnit=tmu1Sec)
static uint MinNodesEdges
int CntUniqBiDirEdges(const PGraph &Graph)
Counts unique bidirectional edges in the graph Graph. Edge is bidirectional if there exist directed e...
TPair< TFlt, TFlt > TFltPr
void SetVal(const TGStatVal &StatVal, const double &Val)
void Save(TSOut &SOut) const
int CntInDegNodes(const PGraph &Graph, const int &NodeInDeg)
Returns the number of nodes with in-degree NodeInDeg.
void Add(const PGStat &Growth)
directed graph (TNGraph, TNEGraph), else graph is undirected TUNGraph
void SetNm(const TStr &GraphName)
double CalcEffDiam(const TIntFltKdV &DistNbrsCdfV, const double &Percentile)
Helper function for computing a given Percentile of a (unnormalized) cumulative distribution function...
PGStat At(const int &ValN) const
const TGStatV & GetGStatV() const
void PlotAll(const TStr &FNmPref, TStr Desc=TStr(), bool PowerFit=false) const
TStr GetStr(const TLoc &Loc=lUs) const
TQuad< TStr, TStr, TStr, TGpScaleTy > TPlotInfo
void DelAfter(const TSecTm &Tm)
void GetTriadParticip(const PGraph &Graph, TIntPrV &TriadCntV)
Triangle Participation Ratio: For each node counts how many triangles it participates in and then ret...
void GetValV(const TGStatVal &XVal, const TGStatVal &YVal, TFltPrV &ValV) const
void Plot(const TGStatDistr &Distr, const TStr &FNmPref, TStr Desc=TStr(), bool PowerFit=false) const
TGStat & operator=(const TGStat &GStat)
double GetClustCf(const PGraph &Graph, int SampleNodes=-1)
Computes the average clustering coefficient as defined in Watts and Strogatz, Collective dynamics of ...
void SetTm(const TSecTm &GraphTm)
void SetTmUnit(const TTmUnit &TimeUnit)
void Gen(const TSizeTy &_Vals)
Constructs a vector (an array) of _Vals elements.
TGStat(const TSecTm &GraphTm=TSecTm(), const TStr &GraphName=TStr())
void TakeSccStat(const PGraph &Graph, TFSet StatFSet)
double GetVal(const TGStatVal &StatVal) const
static PGStatVec Load(TSIn &SIn)
int CntDegNodes(const PGraph &Graph, const int &NodeDeg)
Returns the number of nodes with degree NodeDeg.
bool IsKey(const TKey &Key) const
static PGStatVec New(const TTmUnit &_TmUnit=tmu1Sec)
static PGStat Load(TSIn &SIn)
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
void SetDistr(const TGStatDistr &Distr, const TFltPrV &FltPrV)
void DelLast()
Removes the last element of the vector.
TPt< TGStatVec > PGStatVec
TDat & AddDat(const TKey &Key)
void GetWccSzCnt(const PGraph &Graph, TIntPrV &WccSzCnt)
Returns a distribution of weakly connected component sizes.
void Plot(const TGStatVal &XVal, const TGStatVal &YVal, const TStr &OutFNm, TStr &Desc, const TGpScaleTy &Scale=gpsAuto, const bool &PowerFit=false) const
bool operator<(const TGStat &GStat) const
const TFltPrV & GetDistr(const TGStatDistr &Distr) const
int CntOutDegNodes(const PGraph &Graph, const int &NodeOutDeg)
Returns the number of nodes with out-degree NodeOutDeg.
PGraph GetMxScc(const PGraph &Graph)
Returns a graph representing the largest strongly connected component on an input Graph...
void TakeDegDistr(const PGraph &Graph)
void TakeBasicStat(const PGraph &Graph, const bool &IsMxWcc=false)
void TakeDiam(const PGraph &Graph, const bool &IsMxWcc=false)
bool In(const int &FlagN) const