SNAP Library 6.0, Developer Reference  2020-12-09 16:24:20
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
TNcpGraphsBase Class Reference

Local-Spectral-Clustering for a set of graphs (loads ncp-*.tab files) More...

#include <ncp.h>

Collaboration diagram for TNcpGraphsBase:

Public Member Functions

 TNcpGraphsBase (const TStr &FNmWc)
 
 TNcpGraphsBase (TSIn &SIn)
 
void Save (TSOut &SOut) const
 
void Impose (const TStr &OutFNm, const int &TopN, const bool &Smooth)
 
double GetXAtMinY (const TFltPrV &Ncp, const int &NNodes)
 
TFltPr GetXYAtMinY (const TFltPrV &Ncp, const int &NNodes)
 
void PlotNcpMin (const TStr &OutFNm, const bool &VsGraphN=false)
 
void SaveTxtNcpMin (const TStr &OutFNm, const bool &VsGraphN=false)
 
void PlotRewNcpMin (const TStr &OutFNm, const bool &VsGraphN=false)
 
void PlotBestWhisker (const TStr &OutFNm, const bool &VsGraphN=false)
 
void PlotRewBestWhisker (const TStr &OutFNm, const bool &VsGraphN=false)
 
void PlotAvgNcp (const TStr &OutFNm, const TVec< TFltPrV > &NcpVec, const int &MinSz, const double &MaxMinY)
 
void SaveTxt (const TStr &OutFNm)
 

Static Public Member Functions

static void PlotDataset (const TStr &InFNmWc, const TStr &OutFNm, const bool &ImposeNcp=false, const bool &VsGraphN=false)
 

Private Attributes

TStrV GNmV
 
TFltV ParamValV
 
TIntPrV GSizeV
 
TFltPrV WhiskerV
 
TFltPrV RewWhiskerV
 
TVec< TFltPrVNcpV
 
TVec< TFltPrVRewNcpV
 
TVec< TFltPrVWhiskNcpV
 

Detailed Description

Local-Spectral-Clustering for a set of graphs (loads ncp-*.tab files)

Definition at line 241 of file ncp.h.

Constructor & Destructor Documentation

TNcpGraphsBase::TNcpGraphsBase ( const TStr FNmWc)

Definition at line 1064 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Add(), TStr::CStr(), TStr::Fmt(), TSsParser::GetFlds(), TSsParser::GetFlt(), TStr::GetFMid(), TStr::GetSubStr(), GNmV, GSizeV, IAssert, TSsParser::IsFlt(), TVec< TVal, TSizeTy >::Last(), TVec< TVal, TSizeTy >::Len(), NcpV, TFFile::Next(), TSsParser::Next(), ParamValV, RewNcpV, RewWhiskerV, TStr::SearchCh(), TStr::SearchChBack(), TStr::SearchStr(), ssfTabSep, WhiskerV, and WhiskNcpV.

1064  {
1065  TStr FNm;
1066  for (TFFile FFile(FNmWc); FFile.Next(FNm); ) {
1067  TSsParser Ss(FNm, ssfTabSep, true, false);
1068  int TrueNcpId=-1, WhiskId=-1, RewBestWhiskId=-1, RewId=-1, BestWhiskId=-1;
1069  while (Ss.Next()) {
1070  for (int f = 0; f < Ss.GetFlds(); f++) {
1071  // load ForestFire parameter (fwd burn prob)
1072  if (strstr(Ss[f], "FWD:")) {
1073  TStr S(Ss[f]); const int x = S.SearchStr("FWD:");
1074  ParamValV.Add(S.GetSubStr(x+4, S.SearchCh(' ', x+1)-1).GetFlt());
1075  }
1076  // extract column names
1077  if (strstr(Ss[f], "ORIGINAL MIN")!=NULL) {
1078  GNmV.Add(TStr::Fmt("%s %s", FNm.GetSubStr(FNm.SearchCh('.')+1, FNm.SearchChBack('.')-1).CStr(), strchr(Ss[f], '(')));
1079  int Nodes=0,Edges=0; sscanf(strchr(Ss[f], '(')+1, "%d,%d)", &Nodes, &Edges);
1080  GSizeV.Add(TIntPr(Nodes, Edges));
1081  printf("%s: %d %d\n", GNmV.Last().CStr(), Nodes, Edges);
1082  TrueNcpId=f;
1083  }
1084  if (strstr(Ss[f], "ORIGINAL whisker")!=NULL || strstr(Ss[f], "TRUE whisker")!=NULL) { WhiskId=f; }
1085  if (strstr(Ss[f], "ORIGINAL Best whisker")!=NULL || strstr(Ss[f], "TRUE Best whisker")!=NULL) { BestWhiskId=f; }
1086  if (strstr(Ss[f], "REWIRED MIN")!=NULL || strstr(Ss[f], "RAND MIN")!=NULL) { RewId=f; }
1087  if (strstr(Ss[f], "REWIRED Best whisker")!=NULL || strstr(Ss[f], "RAND Best whisker")!=NULL) { RewBestWhiskId=f; }
1088  }
1089  if (TrueNcpId!=-1 || WhiskId!=-1) { break; }
1090  }
1091  if (TrueNcpId < 0) { printf("%s\n", FNm.GetFMid().CStr()); break; }
1092  if (BestWhiskId < 0) { WhiskerV.Add(TFltPr(1,1)); }
1093  if (RewBestWhiskId < 0) { RewWhiskerV.Add(TFltPr(1,1)); }
1094  NcpV.Add(); WhiskNcpV.Add(); RewNcpV.Add();
1095  TFltPrV& Ncp = NcpV.Last();
1096  TFltPrV& WhiskNcp = WhiskNcpV.Last();
1097  TFltPrV& RewNcp = RewNcpV.Last();
1098  bool Once=false, Once2=false;
1099  while (Ss.Next()) {
1100  if (TrueNcpId < Ss.GetFlds()&& Ss.IsFlt(TrueNcpId)) { Ncp.Add(TFltPr(Ss.GetFlt(TrueNcpId-1), Ss.GetFlt(TrueNcpId))); }
1101  if (WhiskId>=0 && WhiskId < Ss.GetFlds() && Ss.IsFlt(WhiskId)) { WhiskNcp.Add(TFltPr(Ss.GetFlt(WhiskId-1), Ss.GetFlt(WhiskId))); }
1102  if (RewId >=0 && RewId < Ss.GetFlds()&& Ss.IsFlt(RewId)) { RewNcp.Add(TFltPr(Ss.GetFlt(RewId-1), Ss.GetFlt(RewId))); }
1103  if (BestWhiskId>=0 && BestWhiskId < Ss.GetFlds() && ! Once) { Once=true;
1104  int W2=BestWhiskId-1; while (W2 > 0 && Ss.GetFlt(W2)!=(double)int(Ss.GetFlt(W2))) { W2--; }
1105  WhiskerV.Add(TFltPr(Ss.GetFlt(W2), Ss.GetFlt(BestWhiskId))); }
1106  if (RewBestWhiskId>=0 && RewBestWhiskId < Ss.GetFlds() && ! Once2) { Once2=true;
1107  int W2=RewBestWhiskId-1; while (W2 > 0 && Ss.GetFlt(W2)!=(double)int(Ss.GetFlt(W2))) { W2--; }
1108  RewWhiskerV.Add(TFltPr(Ss.GetFlt(W2), Ss.GetFlt(RewBestWhiskId))); }
1109  }
1110  printf(" ncp:%d whisk:%d rew:%d\n", NcpV.Last().Len(), WhiskNcpV.Last().Len(), RewNcpV.Last().Len());
1111  }
1112  IAssert(NcpV.Len() == GSizeV.Len());
1113 }
#define IAssert(Cond)
Definition: bd.h:262
TFltPrV RewWhiskerV
Definition: ncp.h:246
TPair< TInt, TInt > TIntPr
Definition: ds.h:83
int SearchCh(const char &Ch, const int &BChN=0) const
Definition: dt.cpp:1043
Definition: xfl.h:30
TStr GetFMid() const
Definition: dt.cpp:1403
TVec< TFltPrV > NcpV
Definition: ncp.h:247
int SearchChBack(const char &Ch, int BChN=-1) const
Definition: dt.cpp:1053
TVec< TFltPrV > WhiskNcpV
Definition: ncp.h:249
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575
Definition: ss.h:72
TStr GetSubStr(const int &BChN, const int &EChN) const
Definition: dt.cpp:811
TFltPrV WhiskerV
Definition: ncp.h:246
TStrV GNmV
Definition: ncp.h:243
TVec< TFltPrV > RewNcpV
Definition: ncp.h:248
const TVal & Last() const
Returns a reference to the last element of the vector.
Definition: ds.h:579
Tab separated.
Definition: ss.h:6
TPair< TFlt, TFlt > TFltPr
Definition: ds.h:99
TIntPrV GSizeV
Definition: ncp.h:245
Definition: dt.h:412
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
bool Next(TStr &FNm)
char * CStr()
Definition: dt.h:479
TFltV ParamValV
Definition: ncp.h:244
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:602
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

TNcpGraphsBase::TNcpGraphsBase ( TSIn SIn)

Definition at line 1114 of file ncp.cpp.

1114  : GNmV(SIn), GSizeV(SIn), WhiskerV(SIn),
1115  RewWhiskerV(SIn),NcpV(SIn), RewNcpV(SIn),WhiskNcpV(SIn) {
1116 }
TFltPrV RewWhiskerV
Definition: ncp.h:246
TVec< TFltPrV > NcpV
Definition: ncp.h:247
TVec< TFltPrV > WhiskNcpV
Definition: ncp.h:249
TFltPrV WhiskerV
Definition: ncp.h:246
TStrV GNmV
Definition: ncp.h:243
TVec< TFltPrV > RewNcpV
Definition: ncp.h:248
TIntPrV GSizeV
Definition: ncp.h:245

Member Function Documentation

double TNcpGraphsBase::GetXAtMinY ( const TFltPrV Ncp,
const int &  NNodes 
)

Definition at line 1133 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Len().

1133  {
1134  double MinX1=1, MinY1=1;
1135  for (int k = 0; k < Ncp.Len(); k++) {
1136  if (Ncp[k].Val2<MinY1) { MinX1=Ncp[k].Val1; MinY1=Ncp[k].Val2; } }
1137  return MinX1<1 ? 1 : MinX1;
1138  //if (NNodes < 1000) return MinX1;
1139  // smooth
1140  /*const int WndSize = 50;
1141  double MinX=1, MinY=1;
1142  TFltPrV Ncp2V;
1143  for (int k = 0; k < Ncp.Len(); k++) {
1144  int WndSz = k > WndSize ? WndSize : k;
1145  double SmoothVal=0.0, SmoothCnt=0;
1146  for (int i = -WndSz; i <= WndSz; i++) {
1147  if (k+i > -1 && k+i < Ncp.Len()) { SmoothCnt+=pow(1.1, -abs(i));
1148  SmoothVal+=pow(1.1, -abs(i)) * Ncp[k+i].Val2; }
1149  }
1150  SmoothVal = SmoothVal/SmoothCnt;
1151  Ncp2V.Add(TFltPr(Ncp[k].Val1, SmoothVal));
1152  if (SmoothVal<MinY) { MinX=Ncp[k].Val1; MinY=SmoothVal; }
1153  }
1154  static int cnt = 0;
1155  if (Ncp2V.Len() > 10 && cnt < 10) {
1156  TGnuPlot GP(TStr::Fmt("test-%03d", ++cnt));
1157  GP.SetScale(gpsLog10XY);
1158  GP.AddPlot(Ncp, gpwLines, "true");
1159  GP.AddPlot(Ncp2V, gpwLines, "smooth");
1160  GP.SavePng();
1161  }
1162  if (MinX < 1) { return 1; } else if (MinX > 1000) { return 1000; }
1163  return MinX;*/
1164 }
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575

Here is the call graph for this function:

TFltPr TNcpGraphsBase::GetXYAtMinY ( const TFltPrV Ncp,
const int &  NNodes 
)

Definition at line 1166 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Len().

Referenced by PlotNcpMin(), PlotRewNcpMin(), and SaveTxtNcpMin().

1166  {
1167  double MinX1=1, MinY1=1;
1168  for (int k = 0; k < Ncp.Len(); k++) {
1169  if (Ncp[k].Val2<MinY1) { MinX1=Ncp[k].Val1; MinY1=Ncp[k].Val2; } }
1170  return TFltPr(MinX1<1?1:MinX1, MinY1);
1171 }
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575
TPair< TFlt, TFlt > TFltPr
Definition: ds.h:99

Here is the call graph for this function:

Here is the caller graph for this function:

void TNcpGraphsBase::Impose ( const TStr OutFNm,
const int &  TopN,
const bool &  Smooth 
)

Definition at line 1124 of file ncp.cpp.

References TGnuPlot::AddPlot(), GNmV, gpsLog10XY, gpwLines, TMath::Mn(), NcpV, TGnuPlot::SavePng(), and TGnuPlot::SetScale().

Referenced by PlotDataset().

1124  {
1125  TGnuPlot GP(OutFNm);
1126  for (int i = 0; i < TMath::Mn(NcpV.Len(), TopN); i++) {
1127  GP.AddPlot(NcpV[i], gpwLines, GNmV[i], Smooth?"smooth csplines":"");
1128  }
1129  GP.SetScale(gpsLog10XY);
1130  GP.SavePng();
1131 }
static const T & Mn(const T &LVal, const T &RVal)
Definition: xmath.h:36
TVec< TFltPrV > NcpV
Definition: ncp.h:247
TStrV GNmV
Definition: ncp.h:243

Here is the call graph for this function:

Here is the caller graph for this function:

void TNcpGraphsBase::PlotAvgNcp ( const TStr OutFNm,
const TVec< TFltPrV > &  NcpVec,
const int &  MinSz,
const double &  MaxMinY 
)

Definition at line 1247 of file ncp.cpp.

References TMom::Add(), THash< TKey, TDat, THashFunc >::AddDat(), gpsLog, gpwLines, GSizeV, TVec< TVal, TSizeTy >::Len(), TGnuPlot::PlotValMomH(), and TMath::Round().

1247  {
1248  THash<TFlt, TMom> MomH;
1249  int Cnt=0;
1250  for (int i = 0; i < NcpVec.Len(); i++) {
1251  if (GSizeV[i].Val1 < MinSz) { continue; }
1252  const TFltPrV& Ncp = NcpVec[i];
1253  double MinX=1, MinY=1;
1254  for (int k = 0; k < Ncp.Len(); k++){
1255  if (Ncp[k].Val2<MinY) { MinX=Ncp[k].Val1; MinY=Ncp[k].Val2; } }
1256  if (MinY > MaxMinY) { continue; } Cnt++;
1257  //const double Coef = (1-0.0001)/(1.0-MinY);
1258  for (int k = 0; k < Ncp.Len(); k++){
1259  //MomH.AddDat(TMath::Round(exp(TMath::Round(log(Ncp[k].Val1()), 2)),2)).Add(0.0001+(Ncp[k].Val2-MinY)*Coef);
1260  MomH.AddDat(TMath::Round(exp(TMath::Round(log(Ncp[k].Val1()), 1)),0)).Add(Ncp[k].Val2);
1261  }
1262  }
1263  TGnuPlot::PlotValMomH(MomH, OutFNm, "", "size of the cluster, k", "phi(k)", gpsLog, gpwLines, true, true,true,true);
1264  printf(" minSz: %d, miny %g\t%d\n", MinSz, MaxMinY, Cnt);
1265 }
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575
static void PlotValMomH(const THash< TVal1, TMom > &ValMomH, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const TGpSeriesTy &SeriesTy=gpwLinesPoints, bool PlotAvg=true, bool PlotMed=true, bool PlotMin=false, bool PlotMax=false, bool PlotSDev=false, bool PlotStdErr=true, bool PlotScatter=false)
Definition: gnuplot.h:491
void Add(const TFlt &Val, const TFlt &Wgt=1)
Definition: xmath.h:217
Definition: gnuplot.h:7
static double Round(const double &Val)
Definition: xmath.h:16
TIntPrV GSizeV
Definition: ncp.h:245
Definition: hash.h:97
TDat & AddDat(const TKey &Key)
Definition: hash.h:238
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

void TNcpGraphsBase::PlotBestWhisker ( const TStr OutFNm,
const bool &  VsGraphN = false 
)

Definition at line 1217 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Add(), TVec< TVal, TSizeTy >::Empty(), gpsLog, gpsLog10Y, gpwLinesPoints, GSizeV, TVec< TVal, TSizeTy >::Len(), ParamValV, TGnuPlot::PlotValV(), TVec< TVal, TSizeTy >::Sort(), and WhiskerV.

Referenced by PlotDataset().

1217  {
1218  TFltPrV GSzMinK, GSzMinY;
1219  for (int i = 0; i < GSizeV.Len(); i++) {
1220  if (WhiskerV[i].Val1()>0) {
1221  const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
1222  GSzMinK.Add(TFltPr(X, WhiskerV[i].Val1()));
1223  GSzMinY.Add(TFltPr(X, WhiskerV[i].Val2()));
1224  }
1225  }
1226  GSzMinK.Sort(); GSzMinY.Sort();
1227  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
1228  TGnuPlot::PlotValV(GSzMinK, TStr("bestW-")+OutFNm, "Network", XLabel, "size of best whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1229  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestW-")+OutFNm, "Network", XLabel, "conductance of best whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1230 }
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575
bool Empty() const
Tests whether the vector is empty.
Definition: ds.h:570
TFltPrV WhiskerV
Definition: ncp.h:246
void Sort(const bool &Asc=true)
Sorts the elements of the vector.
Definition: ds.h:1318
Definition: gnuplot.h:7
TPair< TFlt, TFlt > TFltPr
Definition: ds.h:99
TIntPrV GSizeV
Definition: ncp.h:245
Definition: dt.h:412
TFltV ParamValV
Definition: ncp.h:244
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:602
static void PlotValV(const TVec< TVal1 > &ValV, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const bool &PowerFit=false, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
Definition: gnuplot.h:398
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

Here is the caller graph for this function:

void TNcpGraphsBase::PlotDataset ( const TStr InFNmWc,
const TStr OutFNm,
const bool &  ImposeNcp = false,
const bool &  VsGraphN = false 
)
static

Definition at line 1281 of file ncp.cpp.

References Impose(), PlotBestWhisker(), PlotNcpMin(), PlotRewBestWhisker(), and PlotRewNcpMin().

1281  {
1282  TNcpGraphsBase NcpBs(InFNmWc);
1283  //NcpBs.Save(TFOut(OutFNm+".NcpBase"));
1284  //TNcpGraphsBase NcpBs(TFIn(OutFNm+".NcpBase"));
1285  if (ImposeNcp) {
1286  NcpBs.Impose(OutFNm+"5R", 5, false); NcpBs.Impose(OutFNm+"5S", 5, true);
1287  NcpBs.Impose(OutFNm+"R", 10, false); NcpBs.Impose(OutFNm+"S", 10, true);
1288  }
1289  NcpBs.PlotNcpMin(OutFNm, VsGraphN);
1290  //NcpBs.SaveTxtNcpMin(OutFNm, VsGraphN);
1291  NcpBs.PlotRewNcpMin(OutFNm, VsGraphN);
1292  NcpBs.PlotBestWhisker(OutFNm, VsGraphN);
1293  NcpBs.PlotRewBestWhisker(OutFNm, VsGraphN);
1294 
1295  //NcpBs.PlotAvgNcp(OutFNm+"AvgNcp", NcpBs.NcpV, 1, 1);
1296  //NcpBs.PlotAvgNcp(OutFNm+"AvgRewNcp", NcpBs.RewNcpV, 1, 1);
1297  /*NcpBs.PlotAvgNcp(OutFNm+"AvgNcp2", NcpBs.NcpV, 100, 0.1);
1298  NcpBs.PlotAvgNcp(OutFNm+"AvgNcp3", NcpBs.NcpV, 100, 0.01);
1299  NcpBs.PlotAvgNcp(OutFNm+"AvgNcp4", NcpBs.NcpV, 100, 0.001);
1300  NcpBs.PlotAvgNcp(OutFNm+"AvgNcp5", NcpBs.NcpV, 100, 0.0001);
1301  NcpBs.PlotAvgNcp(OutFNm+"RewNcp1", NcpBs.RewNcpV, 1000, 1);
1302  NcpBs.PlotAvgNcp(OutFNm+"RewNcp2", NcpBs.RewNcpV, 100, 0.1);
1303  NcpBs.PlotAvgNcp(OutFNm+"RewNcp3", NcpBs.RewNcpV, 100, 0.01);
1304  NcpBs.PlotAvgNcp(OutFNm+"RewNcp4", NcpBs.RewNcpV, 100, 0.001);
1305  NcpBs.PlotAvgNcp(OutFNm+"RewNcp5", NcpBs.RewNcpV, 100, 0.0001);
1306  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp1", NcpBs.WhiskNcpV, 1000, 1);
1307  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp2", NcpBs.WhiskNcpV, 100, 0.1);
1308  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp3", NcpBs.WhiskNcpV, 100, 0.01);
1309  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp4", NcpBs.WhiskNcpV, 100, 0.001);
1310  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp5", NcpBs.WhiskNcpV, 100, 0.0001);
1311  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp6", NcpBs.WhiskNcpV, 100, 0.00004);
1312  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp7", NcpBs.WhiskNcpV, 100, 0.00005);*/
1313  //NcpBs.SaveTxt(OutFNm+"bestK.txt");
1314 }
Local-Spectral-Clustering for a set of graphs (loads ncp-*.tab files)
Definition: ncp.h:241

Here is the call graph for this function:

void TNcpGraphsBase::PlotNcpMin ( const TStr OutFNm,
const bool &  VsGraphN = false 
)

Definition at line 1173 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Add(), TVec< TVal, TSizeTy >::Empty(), GetXYAtMinY(), gpsLog, gpsLog10Y, gpwLinesPoints, GSizeV, NcpV, ParamValV, TGnuPlot::PlotValV(), TVec< TVal, TSizeTy >::Sort(), TPair< TVal1, TVal2 >::Val1, and TPair< TVal1, TVal2 >::Val2.

Referenced by PlotDataset().

1173  {
1174  TFltPrV GSzMinK, GSzMinY;
1175  for (int i = 0; i < NcpV.Len(); i++) {
1176  const TFltPr XYAtMinY = GetXYAtMinY(NcpV[i], GSizeV[i].Val1);
1177  const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
1178  GSzMinK.Add(TFltPr(X, XYAtMinY.Val1));
1179  GSzMinY.Add(TFltPr(X, XYAtMinY.Val2));
1180  }
1181  GSzMinK.Sort(); GSzMinY.Sort();
1182  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
1183  TGnuPlot::PlotValV(GSzMinK, TStr("bestK-")+OutFNm, "Network", XLabel, "size of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1184  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestK-")+OutFNm, "Network", XLabel, "conductance of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1185 }
TVec< TFltPrV > NcpV
Definition: ncp.h:247
TFltPr GetXYAtMinY(const TFltPrV &Ncp, const int &NNodes)
Definition: ncp.cpp:1166
bool Empty() const
Tests whether the vector is empty.
Definition: ds.h:570
void Sort(const bool &Asc=true)
Sorts the elements of the vector.
Definition: ds.h:1318
Definition: gnuplot.h:7
TPair< TFlt, TFlt > TFltPr
Definition: ds.h:99
TIntPrV GSizeV
Definition: ncp.h:245
Definition: ds.h:32
Definition: dt.h:412
TVal1 Val1
Definition: ds.h:34
TVal2 Val2
Definition: ds.h:35
TFltV ParamValV
Definition: ncp.h:244
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:602
static void PlotValV(const TVec< TVal1 > &ValV, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const bool &PowerFit=false, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
Definition: gnuplot.h:398
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

Here is the caller graph for this function:

void TNcpGraphsBase::PlotRewBestWhisker ( const TStr OutFNm,
const bool &  VsGraphN = false 
)

Definition at line 1232 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Add(), TVec< TVal, TSizeTy >::Empty(), gpsLog, gpsLog10Y, gpwLinesPoints, GSizeV, TVec< TVal, TSizeTy >::Len(), ParamValV, TGnuPlot::PlotValV(), RewWhiskerV, TVec< TVal, TSizeTy >::Sort(), and WhiskerV.

Referenced by PlotDataset().

1232  {
1233  TFltPrV GSzMinK, GSzMinY;
1234  for (int i = 0; i < GSizeV.Len(); i++) {
1235  if (WhiskerV[i].Val1()>0) {
1236  const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
1237  GSzMinK.Add(TFltPr(X, RewWhiskerV[i].Val1()));
1238  GSzMinY.Add(TFltPr(X, RewWhiskerV[i].Val2()));
1239  }
1240  }
1241  GSzMinK.Sort(); GSzMinY.Sort();
1242  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
1243  TGnuPlot::PlotValV(GSzMinK, TStr("bestWR-")+OutFNm, "Rewired network", XLabel, "size of best rewired whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1244  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestWR-")+OutFNm, "Rewired network", XLabel, "conductance of best rewired whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1245 }
TFltPrV RewWhiskerV
Definition: ncp.h:246
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575
bool Empty() const
Tests whether the vector is empty.
Definition: ds.h:570
TFltPrV WhiskerV
Definition: ncp.h:246
void Sort(const bool &Asc=true)
Sorts the elements of the vector.
Definition: ds.h:1318
Definition: gnuplot.h:7
TPair< TFlt, TFlt > TFltPr
Definition: ds.h:99
TIntPrV GSizeV
Definition: ncp.h:245
Definition: dt.h:412
TFltV ParamValV
Definition: ncp.h:244
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:602
static void PlotValV(const TVec< TVal1 > &ValV, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const bool &PowerFit=false, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
Definition: gnuplot.h:398
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

Here is the caller graph for this function:

void TNcpGraphsBase::PlotRewNcpMin ( const TStr OutFNm,
const bool &  VsGraphN = false 
)

Definition at line 1203 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Add(), TVec< TVal, TSizeTy >::Empty(), GetXYAtMinY(), gpsLog, gpsLog10Y, gpwLinesPoints, GSizeV, NcpV, ParamValV, TGnuPlot::PlotValV(), RewNcpV, TVec< TVal, TSizeTy >::Sort(), TPair< TVal1, TVal2 >::Val1, and TPair< TVal1, TVal2 >::Val2.

Referenced by PlotDataset().

1203  {
1204  TFltPrV GSzMinK, GSzMinY;
1205  for (int i = 0; i < NcpV.Len(); i++) {
1206  const TFltPr XYAtMinY = GetXYAtMinY(RewNcpV[i], GSizeV[i].Val1);
1207  const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
1208  GSzMinK.Add(TFltPr(X, XYAtMinY.Val1));
1209  GSzMinY.Add(TFltPr(X, XYAtMinY.Val2));
1210  }
1211  GSzMinK.Sort(); GSzMinY.Sort();
1212  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
1213  TGnuPlot::PlotValV(GSzMinK, TStr("bestR-")+OutFNm, "Rewired network", XLabel, "size of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1214  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestR-")+OutFNm, "Rewired network", XLabel, "conductance of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
1215 }
TVec< TFltPrV > NcpV
Definition: ncp.h:247
TFltPr GetXYAtMinY(const TFltPrV &Ncp, const int &NNodes)
Definition: ncp.cpp:1166
bool Empty() const
Tests whether the vector is empty.
Definition: ds.h:570
void Sort(const bool &Asc=true)
Sorts the elements of the vector.
Definition: ds.h:1318
Definition: gnuplot.h:7
TVec< TFltPrV > RewNcpV
Definition: ncp.h:248
TPair< TFlt, TFlt > TFltPr
Definition: ds.h:99
TIntPrV GSizeV
Definition: ncp.h:245
Definition: ds.h:32
Definition: dt.h:412
TVal1 Val1
Definition: ds.h:34
TVal2 Val2
Definition: ds.h:35
TFltV ParamValV
Definition: ncp.h:244
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:602
static void PlotValV(const TVec< TVal1 > &ValV, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const bool &PowerFit=false, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
Definition: gnuplot.h:398
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

Here is the caller graph for this function:

void TNcpGraphsBase::Save ( TSOut SOut) const

Definition at line 1118 of file ncp.cpp.

References GNmV, GSizeV, NcpV, RewNcpV, RewWhiskerV, TVec< TVal, TSizeTy >::Save(), WhiskerV, and WhiskNcpV.

1118  {
1119  GNmV.Save(SOut); GSizeV.Save(SOut);
1120  WhiskerV.Save(SOut); RewWhiskerV.Save(SOut); NcpV.Save(SOut);
1121  RewNcpV.Save(SOut); WhiskNcpV.Save(SOut);
1122 }
TFltPrV RewWhiskerV
Definition: ncp.h:246
TVec< TFltPrV > NcpV
Definition: ncp.h:247
TVec< TFltPrV > WhiskNcpV
Definition: ncp.h:249
void Save(TSOut &SOut) const
Definition: ds.h:954
TFltPrV WhiskerV
Definition: ncp.h:246
TStrV GNmV
Definition: ncp.h:243
TVec< TFltPrV > RewNcpV
Definition: ncp.h:248
TIntPrV GSizeV
Definition: ncp.h:245

Here is the call graph for this function:

void TNcpGraphsBase::SaveTxt ( const TStr OutFNm)

Definition at line 1267 of file ncp.cpp.

References TStr::CStr(), GNmV, GSizeV, TVec< TVal, TSizeTy >::Len(), NcpV, and WhiskerV.

1267  {
1268  FILE *F=fopen(OutFNm.CStr(), "wt");
1269  fprintf(F, "#Nodes\tEdges\tBestK\tPhi(BestK)\tMaxWhiskN\tPhi(MaxWhisk)\tGraph\n");
1270  for (int i = 0; i < NcpV.Len(); i++) {
1271  const TFltPrV& Ncp = NcpV[i];
1272  double MinX=1, MinY=1;
1273  for (int k = 0; k < Ncp.Len(); k++){
1274  if (Ncp[k].Val2<MinY) { MinX=Ncp[k].Val1; MinY=Ncp[k].Val2; } }
1275  fprintf(F, "%d\t%d\t%d\t%f\t%d\t%f\t%s\n", GSizeV[i].Val1(), GSizeV[i].Val2(),
1276  int(MinX), MinY, int(WhiskerV[i].Val1), WhiskerV[i].Val2(), GNmV[i].CStr());
1277  }
1278  fclose(F);
1279 }
TVec< TFltPrV > NcpV
Definition: ncp.h:247
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575
TFltPrV WhiskerV
Definition: ncp.h:246
TStrV GNmV
Definition: ncp.h:243
TIntPrV GSizeV
Definition: ncp.h:245
char * CStr()
Definition: dt.h:479
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

void TNcpGraphsBase::SaveTxtNcpMin ( const TStr OutFNm,
const bool &  VsGraphN = false 
)

Definition at line 1187 of file ncp.cpp.

References TVec< TVal, TSizeTy >::Add(), TStr::CStr(), TVec< TVal, TSizeTy >::Empty(), TStr::Fmt(), GetXYAtMinY(), GNmV, GSizeV, TVec< TVal, TSizeTy >::Len(), NcpV, ParamValV, TVec< TVal, TSizeTy >::Sort(), TPair< TVal1, TVal2 >::Val1, and TPair< TVal1, TVal2 >::Val2.

1187  {
1189  for (int i = 0; i < NcpV.Len(); i++) {
1190  const TFltPr XYAtMinY = GetXYAtMinY(NcpV[i], GSizeV[i].Val1);
1191  const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
1192  GSzMinK.Add(TQuad<TInt, TInt, TFlt, TStr>((int)X, (int)XYAtMinY.Val1(), XYAtMinY.Val2, GNmV[i]));
1193  }
1194  GSzMinK.Sort();
1195  FILE *F = fopen(TStr::Fmt("bestK-%s.txt", OutFNm.CStr()).CStr(), "wt");
1196  fprintf(F, "#nodes\tbestK\tcondAtBestK\tgraph name\n");
1197  for (int i = 0; i < GSzMinK.Len(); i++) {
1198  fprintf(F, "%d\t%d\t%f\t%s\n", GSzMinK[i].Val1(), GSzMinK[i].Val2(), GSzMinK[i].Val3(), GSzMinK[i].Val4.CStr());
1199  }
1200  fclose(F);
1201 }
TVec< TFltPrV > NcpV
Definition: ncp.h:247
TFltPr GetXYAtMinY(const TFltPrV &Ncp, const int &NNodes)
Definition: ncp.cpp:1166
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:575
bool Empty() const
Tests whether the vector is empty.
Definition: ds.h:570
void Sort(const bool &Asc=true)
Sorts the elements of the vector.
Definition: ds.h:1318
TStrV GNmV
Definition: ncp.h:243
TIntPrV GSizeV
Definition: ncp.h:245
Definition: ds.h:32
Definition: ds.h:219
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
TVal1 Val1
Definition: ds.h:34
TVal2 Val2
Definition: ds.h:35
char * CStr()
Definition: dt.h:479
TFltV ParamValV
Definition: ncp.h:244
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:602
Vector is a sequence TVal objects representing an array that can change in size.
Definition: ds.h:430

Here is the call graph for this function:

Member Data Documentation

TStrV TNcpGraphsBase::GNmV
private

Definition at line 243 of file ncp.h.

Referenced by Impose(), Save(), SaveTxt(), SaveTxtNcpMin(), and TNcpGraphsBase().

TIntPrV TNcpGraphsBase::GSizeV
private
TVec<TFltPrV> TNcpGraphsBase::NcpV
private

Definition at line 247 of file ncp.h.

Referenced by Impose(), PlotNcpMin(), PlotRewNcpMin(), Save(), SaveTxt(), SaveTxtNcpMin(), and TNcpGraphsBase().

TFltV TNcpGraphsBase::ParamValV
private
TVec<TFltPrV> TNcpGraphsBase::RewNcpV
private

Definition at line 248 of file ncp.h.

Referenced by PlotRewNcpMin(), Save(), and TNcpGraphsBase().

TFltPrV TNcpGraphsBase::RewWhiskerV
private

Definition at line 246 of file ncp.h.

Referenced by PlotRewBestWhisker(), Save(), and TNcpGraphsBase().

TFltPrV TNcpGraphsBase::WhiskerV
private

Definition at line 246 of file ncp.h.

Referenced by PlotBestWhisker(), PlotRewBestWhisker(), Save(), SaveTxt(), and TNcpGraphsBase().

TVec<TFltPrV> TNcpGraphsBase::WhiskNcpV
private

Definition at line 249 of file ncp.h.

Referenced by Save(), and TNcpGraphsBase().


The documentation for this class was generated from the following files: