8   for (
int i = 1; i < Ss.
GetFlds(); i++) {
 
   22       IntAttrEVals.
AddDat(AttrName, i-1);
 
   24       FltAttrEVals.
AddDat(AttrName, i-1);
 
   26       StrAttrEVals.
AddDat(AttrName, i-1);
 
   41     if (Ss.
GetFlds() == 0) 
continue;
 
   45     if (Ss.
GetFld(0)[0] == 
'#') { 
continue; }
 
   46     if (! Ss.
GetInt(SrcColId, SrcNId) || ! Ss.
GetInt(DstColId, DstNId)) { 
continue; }
 
   47     if (! Graph->IsNode(SrcNId)) { Graph->AddNode(SrcNId); }
 
   48     if (! Graph->IsNode(DstNId)) { Graph->AddNode(DstNId); }
 
   49     int EId = Graph->AddEdge(SrcNId, DstNId);
 
   52       if (Ss.
GetFlt(it.GetDat(), FltAttrVal)) {
 
   53         Graph->AddFltAttrDatE(EId, FltAttrVal, it.GetKey());
 
   58       if (Ss.
GetInt(it.GetDat(), IntAttrVal)) {
 
   59         Graph->AddIntAttrDatE(EId, IntAttrVal, it.GetKey());
 
   64       StrAttrVal = Ss.
GetFld(it.GetDat());
 
   66         Graph->AddStrAttrDatE(EId, 
TStr(StrAttrVal), it.GetKey());
 
   79   for (
int i = 1; i < Ss.
GetFlds(); i++) {
 
   89       IntAttrNVals.
AddDat(AttrName, i-1);
 
   91       FltAttrNVals.
AddDat(AttrName, i-1);
 
   93       StrAttrNVals.
AddDat(AttrName, i-1);
 
  108     if (Ss.
GetFlds() == 0) 
continue;
 
  112     if (Ss.
GetFld(0)[0] == 
'#') { 
continue; }
 
  113     if (! Ss.
GetInt(NColId, NId)) { 
continue; }
 
  114     if (! Graph->IsNode(NId)) { Graph->AddNode(NId); }
 
  117       if (Ss.
GetFlt(it.GetDat(), FltAttrVal)) {
 
  118         Graph->AddFltAttrDatN(NId, FltAttrVal, it.GetKey());
 
  123       if (Ss.
GetInt(it.GetDat(), IntAttrVal)) {
 
  124         Graph->AddIntAttrDatN(NId, IntAttrVal, it.GetKey());
 
  129       StrAttrVal = Ss.
GetFld(it.GetDat());
 
  131         Graph->AddStrAttrDatN(NId, 
TStr(StrAttrVal), it.GetKey());
 
  140   TSsParser Ss(InFNm, Separator, 
true, 
false, 
false);
 
  141   bool isSchemaLine = 
false;
 
  143   while (isSchemaLine || Ss.
Next()) {
 
  144     isSchemaLine = 
false;
 
  145     if (Ss.
GetFlds() == 0) 
continue;
 
  153       isSchemaLine = 
ReadNodesFromFile(Ss, Separator, Graph, NColId, IntAttrNVals, FltAttrNVals, StrAttrNVals);
 
  162       isSchemaLine = 
ReadEdgesFromFile(Ss, Separator, Graph, SrcColId, DstColId, IntAttrEVals, FltAttrEVals, StrAttrEVals);
 
  173   for(
int i = 0; i < IntAttrNNames.
Len(); i++) {
 
  176   for(
int i = 0; i < FltAttrNNames.
Len(); i++) {
 
  179   for(
int i = 0; i < StrAttrNNames.
Len(); i++) {
 
  190     fprintf(F, 
"%d", NI.GetId());
 
  191     for(
int i = 0; i < IntAttrNNames.
Len(); i++) {
 
  192       if (Graph->IsIntAttrDeletedN(NI.GetId(), IntAttrNNames[i])) {
 
  196       int AttrIntVal = Graph->GetIntAttrDatN(NI.GetId(), IntAttrNNames[i]);
 
  197       fprintf(F, 
"\t%d", AttrIntVal);
 
  199     for(
int i = 0; i < FltAttrNNames.
Len(); i++) {
 
  200       if (Graph->IsFltAttrDeletedN(NI.GetId(), FltAttrNNames[i])) {
 
  204       double AttrFltVal = Graph->GetFltAttrDatN(NI.GetId(), FltAttrNNames[i]);
 
  205       fprintf(F, 
"\t%f", AttrFltVal);
 
  207     for(
int i = 0; i < StrAttrNNames.
Len(); i++) {
 
  208       if (Graph->IsStrAttrDeletedN(NI.GetId(), StrAttrNNames[i])) {
 
  212       char * AttrStrVal = Graph->GetStrAttrDatN(NI.GetId(), StrAttrNNames[i]).CStr();
 
  213       fprintf(F, 
"\t%s", AttrStrVal);
 
  223   for(
int i = 0; i < IntAttrENames.
Len(); i++) {
 
  226   for(
int i = 0; i < FltAttrENames.
Len(); i++) {
 
  229   for(
int i = 0; i < StrAttrENames.
Len(); i++) {
 
  240     fprintf(F, 
"%d\t%d", EI.GetSrcNId(), EI.GetDstNId());
 
  241     for(
int i = 0; i < IntAttrENames.
Len(); i++) {
 
  242       if (Graph->IsIntAttrDeletedE(EI.GetId(), IntAttrENames[i])) {
 
  246       int AttrIntVal = Graph->GetIntAttrDatE(EI.GetId(), IntAttrENames[i]);
 
  247       fprintf(F, 
"\t%d", AttrIntVal);
 
  249     for(
int i = 0; i < FltAttrENames.
Len(); i++) {
 
  250       if (Graph->IsFltAttrDeletedE(EI.GetId(), FltAttrENames[i])) {
 
  254       double AttrFltVal = Graph->GetFltAttrDatE(EI.GetId(), FltAttrENames[i]);
 
  255       fprintf(F, 
"\t%f", AttrFltVal);
 
  257     for(
int i = 0; i < StrAttrENames.
Len(); i++) {
 
  258       if (Graph->IsStrAttrDeletedE(EI.GetId(), StrAttrENames[i])) {
 
  262       char * AttrStrVal = Graph->GetStrAttrDatE(EI.GetId(), StrAttrENames[i]).CStr();
 
  263       fprintf(F, 
"\t%s", AttrStrVal);
 
  270   FILE *F = fopen(OutFNm.
CStr(), 
"wt");
 
  271   fprintf(F, 
"# Directed network: %s \n", OutFNm.
CStr());
 
  272   if (! Desc.
Empty()) { fprintf(F, 
"# %s\n", Desc.
CStr()); }
 
  273   fprintf(F, 
"# Nodes: %d Edges: %d\n", Graph->GetNodes(), Graph->GetEdges());
 
  278   Graph->GetAttrNNames(IntAttrNNames, FltAttrNNames, StrAttrNNames);
 
  286   Graph->GetAttrENames(IntAttrENames, FltAttrENames, StrAttrENames);
 
  303       while (XmlLx.
TagNm==
"link") {
 
  304         TStr Str1, Val1, Str2, Val2;
 
  305         XmlLx.
GetArg(0, Str1, Val1);  XmlLx.
GetArg(1, Str2, Val2);
 
  306         IAssert(Str1==
"source" && Str2==
"target");
 
  308         const int src=NIdStr.
GetKeyId(Val1);
 
  309         const int dst=NIdStr.
GetKeyId(Val2);
 
  310         if (! G->IsNode(src)) { G->AddNode(src); }
 
  311         if (! G->IsNode(dst)) { G->AddNode(dst); }
 
  312         G->AddEdge(src, dst);
 
  331       while (XmlLx.
TagNm==
"link") {
 
  332         TStr Str1, Val1, Str2, Val2;
 
  333         XmlLx.
GetArg(0, Str1, Val1);  XmlLx.
GetArg(1, Str2, Val2);
 
  334         IAssert(Str1==
"source" && Str2==
"target");
 
  336         const int src=NIdStr.
GetKeyId(Val1);
 
  337         const int dst=NIdStr.
GetKeyId(Val2);
 
  338         if (! G->IsNode(src)) { G->AddNode(src); }
 
  339         if (! G->IsNode(dst)) { G->AddNode(dst); }
 
  340         G->AddEdge(src, dst);
 
Main namespace for all the Snap global entities. 
 
void GetArg(const int &ArgN, TStr &ArgNm, TStr &ArgVal) const 
 
void SaveEdgeListNet(const PNEANet &Graph, const TStr &OutFNm, const TStr &Desc)
Saves a network into a text file. Each line encodes either an edge or a node, along with its attribut...
 
static PNGraph New()
Static constructor that returns a pointer to the graph. Call: PNGraph Graph = TNGraph::New(). 
 
int GetKeyId(const TKey &Key) const 
 
const TStr STR_TYPE_PREFIX
 
int ReadNodeSchemaFromFile(TSsParser &Ss, const char &Separator, int &NId, TStrIntH &IntAttrNVals, TStrIntH &FltAttrNVals, TStrIntH &StrAttrNVals)
 
static bool IsZipFNm(const TStr &FNm)
Check whether the file extension of FNm is that of a compressed file (.gz, .7z, .rar, .zip, .cab, .arj. bzip2). 
 
TSizeTy Len() const 
Returns the number of elements in the vector. 
 
bool GetInt(const int &FldN, int &Val) const 
If the field FldN is an integer its value is returned in Val and the function returns true...
 
Node iterator. Only forward iteration (operator++) is supported. 
 
int GetFlds() const 
Returns the number of fields in the current line. 
 
bool ReadNodesFromFile(TSsParser &Ss, const char &Separator, PNEANet &Graph, int &NColId, TStrIntH &IntAttrNVals, TStrIntH &FltAttrNVals, TStrIntH &StrAttrNVals)
 
int ReadEdgeSchemaFromFile(TSsParser &Ss, const char &Separator, int &SrcColId, int &DstColId, TStrIntH &IntAttrEVals, TStrIntH &FltAttrEVals, TStrIntH &StrAttrEVals)
 
static PSIn New(const TStr &FNm)
 
const char * GetFld(const int &FldN) const 
Returns the contents of the field at index FldN. 
 
TVec< PNGraph > LoadDyNetGraphV(const TStr &FNm)
For more info see ORA Network Analysis Data (http://www.casos.cs.cmu.edu/computational_tools/data2.php) 
 
void SplitOnCh(TStr &LStr, const char &SplitCh, TStr &RStr) const 
 
const TStr FLT_TYPE_PREFIX
 
static PSIn New(const TStr &FNm)
 
PNEANet LoadEdgeListNet(const TStr &InFNm, const char &Separator)
Loads a network from the text file InFNm with 1 node/edge per line ('Separator' separated columns...
 
void WriteEdgesToFile(FILE *F, const PNEANet &Graph, TStrV &IntAttrENames, TStrV &FltAttrENames, TStrV &StrAttrENames)
 
TPt< TNGraph > PNGraph
Pointer to a directed graph (TNGraph) 
 
int AddKey(const TKey &Key)
 
bool GetFlt(const int &FldN, double &Val) const 
If the field FldN is a float its value is returned in Val and the function returns true...
 
void WriteEdgeSchemaToFile(FILE *F, TStrV &IntAttrENames, TStrV &FltAttrENames, TStrV &StrAttrENames)
 
Edge iterator. Only forward iteration (operator++) is supported. 
 
void WriteNodesToFile(FILE *F, const PNEANet &Graph, TStrV &IntAttrNNames, TStrV &FltAttrNNames, TStrV &StrAttrNNames)
 
bool Next()
Loads next line from the input file. 
 
PNGraph LoadDyNet(const TStr &FNm)
For more info see ORA Network Analysis Data (http://www.casos.cs.cmu.edu/computational_tools/data2.php) 
 
const TStr INT_TYPE_PREFIX
 
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element. 
 
TDat & AddDat(const TKey &Key)
 
bool ReadEdgesFromFile(TSsParser &Ss, const char &Separator, PNEANet &Graph, int &SrcColId, int &DstColId, TStrIntH &IntAttrEVals, TStrIntH &FltAttrEVals, TStrIntH &StrAttrEVals)
 
void WriteNodeSchemaToFile(FILE *F, TStrV &IntAttrNNames, TStrV &FltAttrNNames, TStrV &StrAttrNNames)