| 
    SNAP Library 2.0, Developer Reference
    2013-05-13 16:33:57
    
   SNAP, a general purpose, high performance system for analysis and manipulation of large networks 
   | 
  
  
  
 
Local-Spectral-Clustering for a set of graphs (loads ncp-*.tab files) More...
#include <ncp.h>

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< TFltPrV > | NcpV | 
| TVec< TFltPrV > | RewNcpV | 
| TVec< TFltPrV > | WhiskNcpV | 
Local-Spectral-Clustering for a set of graphs (loads ncp-*.tab files)
| 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.
                                                {
  TStr FNm;
  for (TFFile FFile(FNmWc); FFile.Next(FNm); ) {
    TSsParser Ss(FNm, ssfTabSep, true, false);
    int TrueNcpId=-1, WhiskId=-1, RewBestWhiskId=-1, RewId=-1, BestWhiskId=-1;
    while (Ss.Next()) {
      for (int f = 0; f < Ss.GetFlds(); f++) {
        // load ForestFire parameter (fwd burn prob)
        if (strstr(Ss[f], "FWD:")) { 
          TStr S(Ss[f]); const int x = S.SearchStr("FWD:");
          ParamValV.Add(S.GetSubStr(x+4, S.SearchCh(' ', x+1)-1).GetFlt());
        }
        // extract column names
        if (strstr(Ss[f], "ORIGINAL MIN")!=NULL) { 
          GNmV.Add(TStr::Fmt("%s %s", FNm.GetSubStr(FNm.SearchCh('.')+1, FNm.SearchChBack('.')-1).CStr(), strchr(Ss[f], '('))); 
          int Nodes=0,Edges=0; sscanf(strchr(Ss[f], '(')+1, "%d,%d)", &Nodes, &Edges);
          GSizeV.Add(TIntPr(Nodes, Edges));
          printf("%s: %d %d\n", GNmV.Last().CStr(), Nodes, Edges);
          TrueNcpId=f;
        }
        if (strstr(Ss[f], "ORIGINAL whisker")!=NULL || strstr(Ss[f], "TRUE whisker")!=NULL) { WhiskId=f; } 
        if (strstr(Ss[f], "ORIGINAL Best whisker")!=NULL || strstr(Ss[f], "TRUE Best whisker")!=NULL) { BestWhiskId=f; }
        if (strstr(Ss[f], "REWIRED MIN")!=NULL || strstr(Ss[f], "RAND MIN")!=NULL) { RewId=f; } 
        if (strstr(Ss[f], "REWIRED Best whisker")!=NULL || strstr(Ss[f], "RAND Best whisker")!=NULL) { RewBestWhiskId=f; }
      }
      if (TrueNcpId!=-1 || WhiskId!=-1) { break; }
    }
    if (TrueNcpId < 0) { printf("%s\n", FNm.GetFMid().CStr()); break; }
    if (BestWhiskId < 0) { WhiskerV.Add(TFltPr(1,1)); }
    if (RewBestWhiskId < 0) { RewWhiskerV.Add(TFltPr(1,1)); }
    NcpV.Add(); WhiskNcpV.Add(); RewNcpV.Add();
    TFltPrV& Ncp = NcpV.Last();
    TFltPrV& WhiskNcp = WhiskNcpV.Last();
    TFltPrV& RewNcp = RewNcpV.Last();
    bool Once=false, Once2=false;
    while (Ss.Next()) { 
      if (TrueNcpId < Ss.GetFlds()&& Ss.IsFlt(TrueNcpId)) { Ncp.Add(TFltPr(Ss.GetFlt(TrueNcpId-1), Ss.GetFlt(TrueNcpId))); }
      if (WhiskId>=0 && WhiskId < Ss.GetFlds() && Ss.IsFlt(WhiskId)) { WhiskNcp.Add(TFltPr(Ss.GetFlt(WhiskId-1), Ss.GetFlt(WhiskId))); }
      if (RewId >=0 && RewId < Ss.GetFlds()&& Ss.IsFlt(RewId)) { RewNcp.Add(TFltPr(Ss.GetFlt(RewId-1), Ss.GetFlt(RewId))); }
      if (BestWhiskId>=0 && BestWhiskId < Ss.GetFlds() && ! Once) {  Once=true;
        int W2=BestWhiskId-1;  while (W2 > 0 && Ss.GetFlt(W2)!=(double)int(Ss.GetFlt(W2))) { W2--; }
        WhiskerV.Add(TFltPr(Ss.GetFlt(W2), Ss.GetFlt(BestWhiskId))); }
      if (RewBestWhiskId>=0 && RewBestWhiskId < Ss.GetFlds() && ! Once2) {  Once2=true;
        int W2=RewBestWhiskId-1;  while (W2 > 0 && Ss.GetFlt(W2)!=(double)int(Ss.GetFlt(W2))) { W2--; }
        RewWhiskerV.Add(TFltPr(Ss.GetFlt(W2), Ss.GetFlt(RewBestWhiskId))); }
    }
    printf("  ncp:%d  whisk:%d  rew:%d\n", NcpV.Last().Len(), WhiskNcpV.Last().Len(), RewNcpV.Last().Len());
  }
  IAssert(NcpV.Len() == GSizeV.Len());
}

| TNcpGraphsBase::TNcpGraphsBase | ( | TSIn & | SIn | ) | 
| double TNcpGraphsBase::GetXAtMinY | ( | const TFltPrV & | Ncp, | 
| const int & | NNodes | ||
| ) | 
Definition at line 1133 of file ncp.cpp.
References TVec< TVal, TSizeTy >::Len().
                                                                       {
  double MinX1=1, MinY1=1;
  for (int k = 0; k < Ncp.Len(); k++) {
    if (Ncp[k].Val2<MinY1) { MinX1=Ncp[k].Val1; MinY1=Ncp[k].Val2; } }
  return MinX1<1 ? 1 : MinX1;
  //if (NNodes < 1000) return MinX1;
  // smooth
  /*const int WndSize = 50;
  double MinX=1, MinY=1;
  TFltPrV Ncp2V;
  for (int k = 0; k < Ncp.Len(); k++) {
    int WndSz = k > WndSize ? WndSize : k;
    double SmoothVal=0.0, SmoothCnt=0;
    for (int i = -WndSz; i <= WndSz; i++) {
      if (k+i > -1 && k+i < Ncp.Len()) { SmoothCnt+=pow(1.1, -abs(i));
        SmoothVal+=pow(1.1, -abs(i)) * Ncp[k+i].Val2; }
    }
    SmoothVal = SmoothVal/SmoothCnt;
    Ncp2V.Add(TFltPr(Ncp[k].Val1, SmoothVal));
    if (SmoothVal<MinY) { MinX=Ncp[k].Val1; MinY=SmoothVal; }
  }
  static int cnt = 0;
  if (Ncp2V.Len() > 10 && cnt < 10) { 
    TGnuPlot GP(TStr::Fmt("test-%03d", ++cnt));
    GP.SetScale(gpsLog10XY);
    GP.AddPlot(Ncp, gpwLines, "true");
    GP.AddPlot(Ncp2V, gpwLines, "smooth");
    GP.SavePng();
  }
  if (MinX < 1) { return 1; } else if (MinX > 1000) { return 1000; }
  return MinX;*/
}

| 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().
                                                                        {
  double MinX1=1, MinY1=1;
  for (int k = 0; k < Ncp.Len(); k++) {
    if (Ncp[k].Val2<MinY1) { MinX1=Ncp[k].Val1; MinY1=Ncp[k].Val2; } }
  return TFltPr(MinX1<1?1:MinX1, MinY1);
}


| 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, TVec< TVal, TSizeTy >::Len(), TMath::Mn(), NcpV, TGnuPlot::SavePng(), and TGnuPlot::SetScale().
Referenced by PlotDataset().
                                                                                   { 
  TGnuPlot GP(OutFNm);
  for (int i = 0; i < TMath::Mn(NcpV.Len(), TopN); i++) {
    GP.AddPlot(NcpV[i], gpwLines, GNmV[i], Smooth?"smooth csplines":"");
  }
  GP.SetScale(gpsLog10XY);
  GP.SavePng();
}


| 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().
                                                                                                                        {
  THash<TFlt, TMom> MomH;
  int Cnt=0;
  for (int i = 0; i < NcpVec.Len(); i++) {
    if (GSizeV[i].Val1 < MinSz) { continue; }
    const TFltPrV& Ncp = NcpVec[i];
    double MinX=1, MinY=1;
    for (int k = 0; k < Ncp.Len(); k++){
      if (Ncp[k].Val2<MinY) { MinX=Ncp[k].Val1; MinY=Ncp[k].Val2; } }
    if (MinY > MaxMinY) { continue; }  Cnt++;
    //const double Coef = (1-0.0001)/(1.0-MinY);
    for (int k = 0; k < Ncp.Len(); k++){
      //MomH.AddDat(TMath::Round(exp(TMath::Round(log(Ncp[k].Val1()), 2)),2)).Add(0.0001+(Ncp[k].Val2-MinY)*Coef);
      MomH.AddDat(TMath::Round(exp(TMath::Round(log(Ncp[k].Val1()), 1)),0)).Add(Ncp[k].Val2);
    }
  }
  TGnuPlot::PlotValMomH(MomH, OutFNm, "", "size of the cluster, k", "phi(k)", gpsLog, gpwLines, true, true,true,true);
  printf("  minSz: %d, miny %g\t%d\n", MinSz, MaxMinY, Cnt);
}

| 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().
                                                                             {
  TFltPrV GSzMinK, GSzMinY;
  for (int i = 0; i < GSizeV.Len(); i++) {
    if (WhiskerV[i].Val1()>0) {
      const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
      GSzMinK.Add(TFltPr(X, WhiskerV[i].Val1()));
      GSzMinY.Add(TFltPr(X, WhiskerV[i].Val2()));
    }
  }
  GSzMinK.Sort();  GSzMinY.Sort();
  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
  TGnuPlot::PlotValV(GSzMinK, TStr("bestW-")+OutFNm, "Network", XLabel, "size of best whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestW-")+OutFNm, "Network", XLabel, "conductance of best whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
}


| 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().
                                                                                                                     {
  TNcpGraphsBase NcpBs(InFNmWc);  
  //NcpBs.Save(TFOut(OutFNm+".NcpBase"));
  //TNcpGraphsBase NcpBs(TFIn(OutFNm+".NcpBase"));
  if (ImposeNcp) {
    NcpBs.Impose(OutFNm+"5R", 5, false);  NcpBs.Impose(OutFNm+"5S", 5, true); 
    NcpBs.Impose(OutFNm+"R", 10, false);  NcpBs.Impose(OutFNm+"S", 10, true); 
  }
  NcpBs.PlotNcpMin(OutFNm, VsGraphN);
  //NcpBs.SaveTxtNcpMin(OutFNm, VsGraphN);
  NcpBs.PlotRewNcpMin(OutFNm, VsGraphN);
  NcpBs.PlotBestWhisker(OutFNm, VsGraphN);
  NcpBs.PlotRewBestWhisker(OutFNm, VsGraphN);
  
  //NcpBs.PlotAvgNcp(OutFNm+"AvgNcp", NcpBs.NcpV, 1, 1);
  //NcpBs.PlotAvgNcp(OutFNm+"AvgRewNcp", NcpBs.RewNcpV, 1, 1);
  /*NcpBs.PlotAvgNcp(OutFNm+"AvgNcp2", NcpBs.NcpV, 100, 0.1);
  NcpBs.PlotAvgNcp(OutFNm+"AvgNcp3", NcpBs.NcpV, 100, 0.01);
  NcpBs.PlotAvgNcp(OutFNm+"AvgNcp4", NcpBs.NcpV, 100, 0.001);
  NcpBs.PlotAvgNcp(OutFNm+"AvgNcp5", NcpBs.NcpV, 100, 0.0001);
  NcpBs.PlotAvgNcp(OutFNm+"RewNcp1", NcpBs.RewNcpV, 1000, 1);
  NcpBs.PlotAvgNcp(OutFNm+"RewNcp2", NcpBs.RewNcpV, 100, 0.1);
  NcpBs.PlotAvgNcp(OutFNm+"RewNcp3", NcpBs.RewNcpV, 100, 0.01);
  NcpBs.PlotAvgNcp(OutFNm+"RewNcp4", NcpBs.RewNcpV, 100, 0.001);
  NcpBs.PlotAvgNcp(OutFNm+"RewNcp5", NcpBs.RewNcpV, 100, 0.0001);
  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp1", NcpBs.WhiskNcpV, 1000, 1);
  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp2", NcpBs.WhiskNcpV, 100, 0.1);
  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp3", NcpBs.WhiskNcpV, 100, 0.01);
  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp4", NcpBs.WhiskNcpV, 100, 0.001);
  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp5", NcpBs.WhiskNcpV, 100, 0.0001);
  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp6", NcpBs.WhiskNcpV, 100, 0.00004);
  NcpBs.PlotAvgNcp(OutFNm+"WhiskNcp7", NcpBs.WhiskNcpV, 100, 0.00005);*/
  //NcpBs.SaveTxt(OutFNm+"bestK.txt");
}

| 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, TVec< TVal, TSizeTy >::Len(), NcpV, ParamValV, TGnuPlot::PlotValV(), TVec< TVal, TSizeTy >::Sort(), TPair< TVal1, TVal2 >::Val1, and TPair< TVal1, TVal2 >::Val2.
Referenced by PlotDataset().
                                                                        {
  TFltPrV GSzMinK, GSzMinY;
  for (int i = 0; i < NcpV.Len(); i++) {
    const TFltPr XYAtMinY = GetXYAtMinY(NcpV[i], GSizeV[i].Val1);
    const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
    GSzMinK.Add(TFltPr(X, XYAtMinY.Val1));
    GSzMinY.Add(TFltPr(X, XYAtMinY.Val2));
  }
  GSzMinK.Sort();  GSzMinY.Sort();
  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
  TGnuPlot::PlotValV(GSzMinK, TStr("bestK-")+OutFNm, "Network", XLabel, "size of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestK-")+OutFNm, "Network", XLabel, "conductance of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
}


| 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().
                                                                                {
  TFltPrV GSzMinK, GSzMinY;
  for (int i = 0; i < GSizeV.Len(); i++) {
    if (WhiskerV[i].Val1()>0) {
      const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
      GSzMinK.Add(TFltPr(X, RewWhiskerV[i].Val1()));
      GSzMinY.Add(TFltPr(X, RewWhiskerV[i].Val2()));
    }
  }
  GSzMinK.Sort();  GSzMinY.Sort();
  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
  TGnuPlot::PlotValV(GSzMinK, TStr("bestWR-")+OutFNm, "Rewired network", XLabel, "size of best rewired whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestWR-")+OutFNm, "Rewired network", XLabel, "conductance of best rewired whisker", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
}


| 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, TVec< TVal, TSizeTy >::Len(), NcpV, ParamValV, TGnuPlot::PlotValV(), RewNcpV, TVec< TVal, TSizeTy >::Sort(), TPair< TVal1, TVal2 >::Val1, and TPair< TVal1, TVal2 >::Val2.
Referenced by PlotDataset().
                                                                           {
  TFltPrV GSzMinK, GSzMinY;
  for (int i = 0; i < NcpV.Len(); i++) {
    const TFltPr XYAtMinY = GetXYAtMinY(RewNcpV[i], GSizeV[i].Val1);
    const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
    GSzMinK.Add(TFltPr(X, XYAtMinY.Val1));
    GSzMinY.Add(TFltPr(X, XYAtMinY.Val2));
  }
  GSzMinK.Sort();  GSzMinY.Sort();
  const TStr XLabel = VsGraphN ? (!ParamValV.Empty()?"parameter value":"network number") : "network size";
  TGnuPlot::PlotValV(GSzMinK, TStr("bestR-")+OutFNm, "Rewired network", XLabel, "size of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
  TGnuPlot::PlotValV(GSzMinY, TStr("condAtBestR-")+OutFNm, "Rewired network", XLabel, "conductance of best cluster", VsGraphN?gpsLog10Y:gpsLog, false, gpwLinesPoints);
}


| 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.
                                           { 
  GNmV.Save(SOut); GSizeV.Save(SOut); 
  WhiskerV.Save(SOut);  RewWhiskerV.Save(SOut); NcpV.Save(SOut); 
  RewNcpV.Save(SOut); WhiskNcpV.Save(SOut); 
}

| 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.
                                               {
  FILE *F=fopen(OutFNm.CStr(), "wt");
  fprintf(F, "#Nodes\tEdges\tBestK\tPhi(BestK)\tMaxWhiskN\tPhi(MaxWhisk)\tGraph\n");
  for (int i = 0; i < NcpV.Len(); i++) {
    const TFltPrV& Ncp = NcpV[i];
    double MinX=1, MinY=1;
    for (int k = 0; k < Ncp.Len(); k++){
      if (Ncp[k].Val2<MinY) { MinX=Ncp[k].Val1; MinY=Ncp[k].Val2; } }
    fprintf(F, "%d\t%d\t%d\t%f\t%d\t%f\t%s\n", GSizeV[i].Val1(), GSizeV[i].Val2(), 
      int(MinX), MinY, int(WhiskerV[i].Val1), WhiskerV[i].Val2(), GNmV[i].CStr());
  }
  fclose(F);
}

| 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.
                                                                           {
  TVec<TQuad<TInt, TInt, TFlt, TStr> > GSzMinK;
  for (int i = 0; i < NcpV.Len(); i++) {
    const TFltPr XYAtMinY = GetXYAtMinY(NcpV[i], GSizeV[i].Val1);
    const double X = VsGraphN ? (!ParamValV.Empty()?ParamValV[i]():i+1) : GSizeV[i].Val1();
    GSzMinK.Add(TQuad<TInt, TInt, TFlt, TStr>((int)X, (int)XYAtMinY.Val1(), XYAtMinY.Val2, GNmV[i]));
  }
  GSzMinK.Sort();
  FILE *F = fopen(TStr::Fmt("bestK-%s.txt", OutFNm.CStr()).CStr(), "wt");
  fprintf(F, "#nodes\tbestK\tcondAtBestK\tgraph name\n");
  for (int i = 0; i < GSzMinK.Len(); i++) {
    fprintf(F, "%d\t%d\t%f\t%s\n", GSzMinK[i].Val1(), GSzMinK[i].Val2(), GSzMinK[i].Val3(), GSzMinK[i].Val4.CStr());
  }
  fclose(F);
}

TStrV TNcpGraphsBase::GNmV [private] | 
        
Definition at line 243 of file ncp.h.
Referenced by Impose(), Save(), SaveTxt(), SaveTxtNcpMin(), and TNcpGraphsBase().
TIntPrV TNcpGraphsBase::GSizeV [private] | 
        
Definition at line 245 of file ncp.h.
Referenced by PlotAvgNcp(), PlotBestWhisker(), PlotNcpMin(), PlotRewBestWhisker(), PlotRewNcpMin(), Save(), SaveTxt(), SaveTxtNcpMin(), and TNcpGraphsBase().
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] | 
        
Definition at line 244 of file ncp.h.
Referenced by PlotBestWhisker(), PlotNcpMin(), PlotRewBestWhisker(), PlotRewNcpMin(), SaveTxtNcpMin(), and TNcpGraphsBase().
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().