SNAP Library 4.0, Developer Reference  2017-07-27 13:18:06
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
timenet.h
Go to the documentation of this file.
1 // Forward declarations
3 class TGrowthStat;
5 class TGStatVec;
7 
8 class TTimeNet;
9 typedef TPt<TTimeNet> PTimeNet;
10 
11 class TTimeNENet;
13 
15 // Time Network
16 class TTimeNet : public TNodeNet<TSecTm> {
17 public:
20 public:
21  class TTmBucket {
22  public:
23  TSecTm BegTm; // start time of the bucket, end time is determined by GroupBy
25  public:
26  TTmBucket() { }
27  TTmBucket(const TSecTm& BucketTm) : BegTm(BucketTm) { }
28  TTmBucket(const TTmBucket& TmBucket) : BegTm(TmBucket.BegTm), NIdV(TmBucket.NIdV) { }
29  TTmBucket& operator = (const TTmBucket& TmBucket) { if (this!=&TmBucket) {
30  BegTm=TmBucket.BegTm; NIdV=TmBucket.NIdV; } return *this; }
31  };
33 public:
34  TTimeNet() { }
35  TTimeNet(const int& Nodes, const int& Edges) : TNet(Nodes, Edges) { }
36  TTimeNet(const TTimeNet& TimeNet) : TNet(TimeNet) { }
37  TTimeNet(TSIn& SIn) : TNet(SIn) { }
38  void Save(TSOut& SOut) const { TNet::Save(SOut); }
39  static PTimeNet New() { return new TTimeNet(); }
40  static PTimeNet New(const int& Nodes, const int& Edges) { return new TTimeNet(Nodes, Edges); }
41  static PTimeNet Load(TSIn& SIn) { return new TTimeNet(SIn); }
42  TTimeNet& operator = (const TTimeNet& TimeNet);
43 
44  PTimeNet GetSubGraph(const TIntV& NIdV) const;
45  PTimeNENet GetTimeNENet() const;
46 
47  void GetNIdByTm(TIntV& NIdV) const;
48  void GetTmBuckets(const TTmUnit& GroupBy, TTmBucketV& TmBucketV) const;
49  void GetNodeBuckets(const int NodesPerBucket, TTimeNet::TTmBucketV& TmBucketV) const;
50 
51  PGStatVec TimeGrowth(const TTmUnit& TmUnit, const TFSet& TakeStat, const TSecTm& StartTm) const;
52  void PlotEffDiam(const TStr& FNmPref, const TStr& Desc, const TTmUnit& GroupBy, const TSecTm& StartTm,
53  const int& NDiamRuns=10, const bool& OnlyWcc=false, const bool& AlsoRewire=false) const;
54  void PlotMissingPast(const TStr& FNmPref, const TStr& Desc, const TTmUnit& GroupBy,
55  const TSecTm& DelPreTmEdges, const TSecTm& PostTmDiam) const;
56  void PlotCCfOverTm(const TStr& FNmPref, TStr Desc, const TTmUnit& TmUnit, const int& NodesBucket=-1) const;
57  void PlotMedianDegOverTm(const TStr& FNmPref, const TTmUnit& TmUnit, const int& NodesPerBucket=-1) const;
58 
59  // networks
60  static PTimeNet LoadBipartite(const TStr& InFNm);
61  static PTimeNet LoadArxiv(const TStr& PaperFNm, const TStr& CiteFNm);
62  static PTimeNet LoadPatents(const TStr& PatentFNm, const TStr& CiteFNm);
63  static PTimeNet LoadAmazon(const TStr& StlFNm);
64 
65  friend class TPt<TTimeNet>;
66 };
67 
68 // set flags
69 namespace TSnap {
70 template <> struct IsDirected<TTimeNet> { enum { Val = 1 }; };
71 template <> struct IsNodeDat<TTimeNet> { enum { Val = 1 }; };
72 }
73 
75 // Time Node-Edge Network
76 class TTimeNENet : public TNodeEdgeNet<TSecTm, TSecTm> {
77 public:
80 public:
81  TTimeNENet() { }
82  TTimeNENet(const int& Nodes, const int& Edges) : TNet(Nodes, Edges) { }
83  TTimeNENet(TSIn& SIn) : TNet(SIn) { }
84  TTimeNENet(const TTimeNENet& TimeNet) : TNet(TimeNet) { }
85  void Save(TSOut& SOut) const { TNet::Save(SOut); }
86  static PTimeNENet New() { return new TTimeNENet(); }
87  static PTimeNENet New(const int& Nodes, const int& Edges) { return new TTimeNENet(Nodes, Edges); }
88  static PTimeNENet Load(TSIn& SIn) { return new TTimeNENet(SIn); }
89  TTimeNENet& operator = (const TTimeNENet& TimeNet);
90 
91  PTimeNet GetTimeNet() const;
92  PTimeNENet Get1stEdgeNet() const;
93  PTimeNENet GetSubGraph(const TIntV& NIdV) const;
94  PTimeNENet GetESubGraph(const TIntV& EIdV) const;
95  PTimeNENet GetGraphUpToTm(const TSecTm& MaxEdgeTm) const;
96 
97  void SortNodeEdgeTimes();
98  void UpdateNodeTimes();
100  void SetRndEdgeTimes(const int& MinTmEdge=0);
101  void DumpTimeStat() const;
102 
103  void GetNIdByTm(TIntV& NIdV) const;
104  void GetEIdByTm(TIntV& EIdV) const;
105  void GetTmBuckets(const TTmUnit& GroupBy, TTimeNet::TTmBucketV& TmBucketV) const;
106  void GetEdgeTmBuckets(const TTmUnit& GroupBy, TTimeNet::TTmBucketV& TmBucketV) const;
107  void GetNodeBuckets(const int NodesPerBucket, TTimeNet::TTmBucketV& TmBucketV) const;
108  void GetEdgeBuckets(const int EdgesPerBucket, TTimeNet::TTmBucketV& TmBucketV) const;
109  int GetTriadEdges(TIntV& TriadEIdV) const;
110 
111  PGStatVec TimeGrowth(const TTmUnit& TimeStep, const TFSet& TakeStat, const TSecTm& StartTm=TSecTm(1)) const;
112  PGStatVec TimeGrowth(const TStr& FNmPref, const TStr& Desc, const TFSet& TakeStat, const int& NDiamRuns,
113  const TTmUnit& TmUnit, const int& TakeNTmUnits, const bool& LinkBWays) const;
114  void PlotEffDiam(const TStr& FNmPref, const TStr& Desc, const TTmUnit& GroupBy, const TSecTm& StartTm,
115  const int& NDiamRuns=10, const bool& OnlyWcc=false) const;
116  void PlotMissingPast(const TStr& FNmPref, const TStr& Desc, const TTmUnit& TmUnit,
117  const TSecTm& DelPreTmEdges, const TSecTm& PostTmDiam, const bool& LinkBWays);
118 
119  void SaveEdgeTm(const TStr& EdgeFNm, const bool& RenumberNId=false, const bool& RelativeTm=false) const;
120  static PTimeNENet GetSmallNet();
121  static PTimeNENet GetGnmRndNet(const int& Nodes, const int& Edges);
122  static PTimeNENet GetPrefAttach(const int& Nodes, const int& Edges, const double& GammaIn, const double& GammaOut);
123  static PTimeNENet GetPrefAttach(const int& Nodes, const int& OutDeg);
124  static PTimeNENet LoadFlickr(const TStr& NodeFNm, const TStr& EdgeFNm);
125  static PTimeNENet LoadEdgeTm(const TStr& EdgeFNm, const int& SrcFld=0, const int& DstFld=1, const int& TimeFld=2, const TSsFmt& Separator=ssfTabSep);
126 
127  friend class TPt<TTimeNENet>;
128 };
129 
130 // set flags
131 namespace TSnap {
132 template <> struct IsMultiGraph<TTimeNENet> { enum { Val = 1 }; };
133 template <> struct IsDirected<TTimeNENet> { enum { Val = 1 }; };
134 template <> struct IsNodeDat<TTimeNENet> { enum { Val = 1 }; };
135 template <> struct IsEdgeDat<TTimeNENet> { enum { Val = 1 }; };
136 }
PTimeNENet GetTimeNENet() const
Definition: timenet.cpp:32
TTimeNet(TSIn &SIn)
Definition: timenet.h:37
Tests (at compile time) if the graph is a network with data on nodes.
Definition: gbase.h:32
void PlotEffDiam(const TStr &FNmPref, const TStr &Desc, const TTmUnit &GroupBy, const TSecTm &StartTm, const int &NDiamRuns=10, const bool &OnlyWcc=false) const
Definition: timenet.cpp:934
TTimeNet(const TTimeNet &TimeNet)
Definition: timenet.h:36
static PTimeNet LoadArxiv(const TStr &PaperFNm, const TStr &CiteFNm)
Definition: timenet.cpp:383
static PTimeNENet GetSmallNet()
Definition: timenet.cpp:1331
static PTimeNet New()
Definition: timenet.h:39
TPt< TGStatVec > PGStatVec
Definition: timenet.h:5
TPt< TNodeEdgeNet< TSecTm, TSecTm > > PNet
Definition: timenet.h:79
PTimeNENet Get1stEdgeNet() const
Definition: timenet.cpp:629
void PlotMissingPast(const TStr &FNmPref, const TStr &Desc, const TTmUnit &GroupBy, const TSecTm &DelPreTmEdges, const TSecTm &PostTmDiam) const
Definition: timenet.cpp:169
Tests (at compile time) if the graph is directed.
Definition: gbase.h:28
void GetNIdByTm(TIntV &NIdV) const
Definition: timenet.cpp:778
TTimeNENet()
Definition: timenet.h:81
void PlotMissingPast(const TStr &FNmPref, const TStr &Desc, const TTmUnit &TmUnit, const TSecTm &DelPreTmEdges, const TSecTm &PostTmDiam, const bool &LinkBWays)
Definition: timenet.cpp:977
void GetEIdByTm(TIntV &EIdV) const
Definition: timenet.cpp:788
Definition: bits.h:119
void PlotCCfOverTm(const TStr &FNmPref, TStr Desc, const TTmUnit &TmUnit, const int &NodesBucket=-1) const
Definition: timenet.cpp:253
PGStatVec TimeGrowth(const TTmUnit &TimeStep, const TFSet &TakeStat, const TSecTm &StartTm=TSecTm(1)) const
Definition: timenet.cpp:878
void GetEdgeBuckets(const int EdgesPerBucket, TTimeNet::TTmBucketV &TmBucketV) const
Definition: timenet.cpp:846
void GetTmBuckets(const TTmUnit &GroupBy, TTmBucketV &TmBucketV) const
Definition: timenet.cpp:59
static PTimeNet LoadPatents(const TStr &PatentFNm, const TStr &CiteFNm)
Definition: timenet.cpp:480
TVec< TTmBucket > TTmBucketV
Definition: timenet.h:32
PTimeNENet GetGraphUpToTm(const TSecTm &MaxEdgeTm) const
Definition: timenet.cpp:685
Node Edge Network (directed multigraph, TNEGraph with data on nodes and edges).
Definition: network.h:1074
virtual void Save(TSOut &SOut) const
Saves the network to a (binary) stream SOut.
Definition: network.h:1284
Definition: fl.h:58
TSsFmt
Spread-Sheet Separator Format.
Definition: ss.h:5
static PTimeNENet New(const int &Nodes, const int &Edges)
Definition: timenet.h:87
void GetEdgeTmBuckets(const TTmUnit &GroupBy, TTimeNet::TTmBucketV &TmBucketV) const
Definition: timenet.cpp:817
static PTimeNENet LoadEdgeTm(const TStr &EdgeFNm, const int &SrcFld=0, const int &DstFld=1, const int &TimeFld=2, const TSsFmt &Separator=ssfTabSep)
Definition: timenet.cpp:1390
void SaveEdgeTm(const TStr &EdgeFNm, const bool &RenumberNId=false, const bool &RelativeTm=false) const
Definition: timenet.cpp:1310
Graph Statistics Sequence.
Definition: gstat.h:155
void PlotEffDiam(const TStr &FNmPref, const TStr &Desc, const TTmUnit &GroupBy, const TSecTm &StartTm, const int &NDiamRuns=10, const bool &OnlyWcc=false, const bool &AlsoRewire=false) const
Definition: timenet.cpp:106
void GetNodeBuckets(const int NodesPerBucket, TTimeNet::TTmBucketV &TmBucketV) const
Definition: timenet.cpp:836
TTimeNENet(TSIn &SIn)
Definition: timenet.h:83
TTimeNet()
Definition: timenet.h:34
static PTimeNet New(const int &Nodes, const int &Edges)
Definition: timenet.h:40
static PTimeNENet GetPrefAttach(const int &Nodes, const int &Edges, const double &GammaIn, const double &GammaOut)
Definition: timenet.cpp:1244
virtual void Save(TSOut &SOut) const
Saves the network to a (binary) stream SOut.
Definition: network.h:168
Tests (at compile time) if the graph is a network with data on edges.
Definition: gbase.h:34
TTmBucket & operator=(const TTmBucket &TmBucket)
Definition: timenet.h:29
TTimeNet(const int &Nodes, const int &Edges)
Definition: timenet.h:35
static PTimeNENet New()
Definition: timenet.h:86
void SetNodeTmToFirstEdgeTm()
Definition: timenet.cpp:725
Tests (at compile time) if the graph is a multigraph with multiple edges between the same nodes...
Definition: gbase.h:30
void DumpTimeStat() const
Definition: timenet.cpp:761
Tab separated.
Definition: ss.h:6
void SetRndEdgeTimes(const int &MinTmEdge=0)
Definition: timenet.cpp:744
PTimeNENet GetSubGraph(const TIntV &NIdV) const
Definition: timenet.cpp:647
void PlotMedianDegOverTm(const TStr &FNmPref, const TTmUnit &TmUnit, const int &NodesPerBucket=-1) const
Definition: timenet.cpp:302
Definition: fl.h:128
static PTimeNet LoadBipartite(const TStr &InFNm)
Definition: timenet.cpp:346
void Save(TSOut &SOut) const
Saves the network to a (binary) stream SOut.
Definition: timenet.h:38
static PTimeNENet LoadFlickr(const TStr &NodeFNm, const TStr &EdgeFNm)
Definition: timenet.cpp:1347
static PTimeNet Load(TSIn &SIn)
Definition: timenet.h:41
PTimeNENet GetESubGraph(const TIntV &EIdV) const
Definition: timenet.cpp:668
Definition: tm.h:81
void GetNodeBuckets(const int NodesPerBucket, TTimeNet::TTmBucketV &TmBucketV) const
Definition: timenet.cpp:77
static PTimeNENet GetGnmRndNet(const int &Nodes, const int &Edges)
Definition: timenet.cpp:1226
TTimeNENet & operator=(const TTimeNENet &TimeNet)
Definition: timenet.cpp:605
void GetNIdByTm(TIntV &NIdV) const
Definition: timenet.cpp:48
TNodeEdgeNet< TSecTm, TSecTm > TNet
Definition: timenet.h:78
Definition: dt.h:412
TPt< TNodeNet< TSecTm > > PNet
Definition: timenet.h:19
int GetTriadEdges(TIntV &TriadEIdV) const
Definition: timenet.cpp:857
void UpdateNodeTimes()
Definition: timenet.cpp:709
TTmBucket(const TSecTm &BucketTm)
Definition: timenet.h:27
void GetTmBuckets(const TTmUnit &GroupBy, TTimeNet::TTmBucketV &TmBucketV) const
Definition: timenet.cpp:798
Definition: bd.h:196
void SortNodeEdgeTimes()
Definition: timenet.cpp:703
TPt< TTimeNet > PTimeNet
Definition: timenet.h:8
PTimeNet GetTimeNet() const
Definition: timenet.cpp:612
TTimeNet & operator=(const TTimeNet &TimeNet)
Definition: timenet.cpp:3
void Save(TSOut &SOut) const
Saves the network to a (binary) stream SOut.
Definition: timenet.h:85
TTmUnit
Definition: tm.h:11
TTmBucket(const TTmBucket &TmBucket)
Definition: timenet.h:28
TTimeNENet(const int &Nodes, const int &Edges)
Definition: timenet.h:82
static PTimeNet LoadAmazon(const TStr &StlFNm)
Definition: timenet.cpp:563
PTimeNet GetSubGraph(const TIntV &NIdV) const
Definition: timenet.cpp:10
static PTimeNENet Load(TSIn &SIn)
Definition: timenet.h:88
TPt< TGrowthStat > PGrowthStat
Definition: timenet.h:3
TTimeNENet(const TTimeNENet &TimeNet)
Definition: timenet.h:84
PGStatVec TimeGrowth(const TTmUnit &TmUnit, const TFSet &TakeStat, const TSecTm &StartTm) const
Definition: timenet.cpp:88
Node Network (directed graph, TNGraph with data on nodes only).
Definition: network.h:17
TNodeNet< TSecTm > TNet
Definition: timenet.h:18
TPt< TTimeNENet > PTimeNENet
Definition: timenet.h:11