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
|
#include <mag.h>
Public Member Functions | |
TMAGAffMtx () | |
TMAGAffMtx (const int &Dim) | |
TMAGAffMtx (const TFltV &SeedMatrix) | |
TMAGAffMtx (const TMAGAffMtx &Kronecker) | |
TMAGAffMtx & | operator= (const TMAGAffMtx &Kronecker) |
bool | operator== (const TMAGAffMtx &Kronecker) const |
int | GetPrimHashCd () const |
int | GetSecHashCd () const |
int | GetDim () const |
int | Len () const |
bool | Empty () const |
bool | IsProbMtx () const |
TFltV & | GetMtx () |
const TFltV & | GetMtx () const |
void | SetMtx (const TFltV &ParamV) |
void | SetRndMtx (TRnd &Rnd, const int &PrmMtxDim=2, const double &MinProb=0.0) |
void | PutAllMtx (const double &Val) |
void | GenMtx (const int &Dim) |
void | SetEpsMtx (const double &Eps1, const double &Eps0, const int &Eps1Val=1, const int &Eps0Val=0) |
void | AddRndNoise (TRnd &Rnd, const double &SDev) |
TStr | GetMtxStr () const |
const double & | At (const int &Row, const int &Col) const |
double & | At (const int &Row, const int &Col) |
const double & | At (const int &ValN) const |
double & | At (const int &ValN) |
double | GetMtxSum () const |
double | GetRowSum (const int &RowId) const |
double | GetColSum (const int &ColId) const |
double | Normalize () |
void | GetLLMtx (TMAGAffMtx &LLMtx) |
void | GetProbMtx (TMAGAffMtx &ProbMtx) |
void | Swap (TMAGAffMtx &Mtx) |
void | Dump (const TStr &MtxNm=TStr(), const bool &Sort=false) const |
Static Public Member Functions | |
static double | GetAvgAbsErr (const TMAGAffMtx &Mtx1, const TMAGAffMtx &Mtx2) |
static double | GetAvgFroErr (const TMAGAffMtx &Mtx1, const TMAGAffMtx &Mtx2) |
static TMAGAffMtx | GetMtx (TStr MatlabMtxStr) |
static TMAGAffMtx | GetRndMtx (TRnd &Rnd, const int &Dim=2, const double &MinProb=0.0) |
Private Attributes | |
TInt | MtxDim |
TFltV | SeedMtx |
Static Private Attributes | |
static const double | NInf = -DBL_MAX |
TMAGAffMtx::TMAGAffMtx | ( | ) | [inline] |
TMAGAffMtx::TMAGAffMtx | ( | const int & | Dim | ) | [inline] |
TMAGAffMtx::TMAGAffMtx | ( | const TFltV & | SeedMatrix | ) |
TMAGAffMtx::TMAGAffMtx | ( | const TMAGAffMtx & | Kronecker | ) | [inline] |
void TMAGAffMtx::AddRndNoise | ( | TRnd & | Rnd, |
const double & | SDev | ||
) |
Definition at line 52 of file mag.cpp.
References At(), Dump(), TRnd::GetNrmDev(), and Len().
{ Dump("before"); double NewVal; int c =0; for (int i = 0; i < Len(); i++) { for(c = 0; ((NewVal = At(i)*Rnd.GetNrmDev(1, SDev, 0.8, 1.2)) < 0.01 || NewVal>0.99) && c <1000; c++) { } if (c < 999) { At(i) = NewVal; } else { printf("XXXXX\n"); } } Dump("after"); }
const double& TMAGAffMtx::At | ( | const int & | Row, |
const int & | Col | ||
) | const [inline] |
Definition at line 41 of file mag.h.
References MtxDim, and SeedMtx.
Referenced by AddRndNoise(), TMAGFitBern::ComputeApxAdjLL(), TMAGFitBern::GetAvgInCoeff(), TMAGFitBern::GetAvgOutCoeff(), TMAGFitBern::GetAvgSqThetaLL(), TMAGFitBern::GetAvgThetaLL(), GetColSum(), TMAGFitBern::GetInCoeff(), GetLLMtx(), GetMtx(), GetMtxStr(), GetMtxSum(), TMAGFitBern::GetOutCoeff(), GetProbMtx(), GetRowSum(), TMAGFitBern::GetSqThetaLL(), TMAGFitBern::GetThetaLL(), TMAGFitBern::GradAffMtx(), TMAGFitBern::GradApxAffMtx(), IsProbMtx(), Normalize(), SetEpsMtx(), TMAGFitBern::UpdateAffMtx(), TMAGFitBern::UpdateApxPhiMI(), TMAGFitBern::UpdatePhi(), and TMAGFitBern::UpdatePhiMI().
double& TMAGAffMtx::At | ( | const int & | Row, |
const int & | Col | ||
) | [inline] |
const double& TMAGAffMtx::At | ( | const int & | ValN | ) | const [inline] |
double& TMAGAffMtx::At | ( | const int & | ValN | ) | [inline] |
void TMAGAffMtx::Dump | ( | const TStr & | MtxNm = TStr() , |
const bool & | Sort = false |
||
) | const |
Definition at line 128 of file mag.cpp.
References TStr::CStr(), TStr::Empty(), GetDim(), TVec< TVal, TSizeTy >::Len(), SeedMtx, and TVec< TVal, TSizeTy >::Sort().
Referenced by AddRndNoise().
{ /*printf("%s: %d x %d\n", MtxNm.Empty()?"Mtx":MtxNm.CStr(), GetDim(), GetDim()); for (int r = 0; r < GetDim(); r++) { for (int c = 0; c < GetDim(); c++) { printf(" %8.2g", At(r, c)); } printf("\n"); }*/ if (! MtxNm.Empty()) printf("%s\n", MtxNm.CStr()); double Sum=0.0; TFltV ValV = SeedMtx; if (Sort) { ValV.Sort(false); } for (int i = 0; i < ValV.Len(); i++) { printf(" %10.4g", ValV[i]()); Sum += ValV[i]; if ((i+1) % GetDim() == 0) { printf("\n"); } } printf(" (sum:%.4f)\n", Sum); }
bool TMAGAffMtx::Empty | ( | ) | const [inline] |
void TMAGAffMtx::GenMtx | ( | const int & | Dim | ) | [inline] |
Definition at line 36 of file mag.h.
References TVec< TVal, TSizeTy >::Gen(), MtxDim, and SeedMtx.
Referenced by GetLLMtx(), and GetProbMtx().
double TMAGAffMtx::GetAvgAbsErr | ( | const TMAGAffMtx & | Mtx1, |
const TMAGAffMtx & | Mtx2 | ||
) | [static] |
Definition at line 147 of file mag.cpp.
References GetMtx(), IAssert, TVec< TVal, TSizeTy >::Len(), and TVec< TVal, TSizeTy >::Sort().
{ TFltV P1 = Mtx1.GetMtx(); TFltV P2 = Mtx2.GetMtx(); IAssert(P1.Len() == P2.Len()); P1.Sort(); P2.Sort(); double delta = 0.0; for (int i = 0; i < P1.Len(); i++) { delta += fabs(P1[i] - P2[i]); } return delta/P1.Len(); }
double TMAGAffMtx::GetAvgFroErr | ( | const TMAGAffMtx & | Mtx1, |
const TMAGAffMtx & | Mtx2 | ||
) | [static] |
Definition at line 160 of file mag.cpp.
References GetMtx(), IAssert, TVec< TVal, TSizeTy >::Len(), and TVec< TVal, TSizeTy >::Sort().
{ TFltV P1 = Mtx1.GetMtx(); TFltV P2 = Mtx2.GetMtx(); IAssert(P1.Len() == P2.Len()); P1.Sort(); P2.Sort(); double delta = 0.0; for (int i = 0; i < P1.Len(); i++) { delta += pow(P1[i] - P2[i], 2); } return sqrt(delta/P1.Len()); }
double TMAGAffMtx::GetColSum | ( | const int & | ColId | ) | const |
int TMAGAffMtx::GetDim | ( | ) | const [inline] |
Definition at line 26 of file mag.h.
References MtxDim.
Referenced by Dump(), GetColSum(), GetMtxStr(), and GetRowSum().
{ return MtxDim; }
void TMAGAffMtx::GetLLMtx | ( | TMAGAffMtx & | LLMtx | ) |
Definition at line 74 of file mag.cpp.
References At(), GenMtx(), Len(), MtxDim, and NInf.
Referenced by TMAGFitBern::ComputeApxAdjLL(), TMAGFitBern::ComputeApxLL(), TMAGFitBern::UpdateApxPhiMI(), TMAGFitBern::UpdatePhi(), and TMAGFitBern::UpdatePhiMI().
{ LLMtx.GenMtx(MtxDim); for (int i = 0; i < Len(); i++) { if (At(i) != 0.0) { LLMtx.At(i) = log(At(i)); } else { LLMtx.At(i) = NInf; } } }
TFltV& TMAGAffMtx::GetMtx | ( | ) | [inline] |
Definition at line 31 of file mag.h.
References SeedMtx.
Referenced by GetAvgAbsErr(), GetAvgFroErr(), and TMAGParam< TNodeAttr >::LoadTxt().
{ return SeedMtx; }
const TFltV& TMAGAffMtx::GetMtx | ( | ) | const [inline] |
TMAGAffMtx TMAGAffMtx::GetMtx | ( | TStr | MatlabMtxStr | ) | [static] |
Definition at line 173 of file mag.cpp.
References At(), TStr::ChangeChAll(), TVec< TVal, TSizeTy >::Empty(), IAssert, TVec< TVal, TSizeTy >::Len(), and TStr::SplitOnAllCh().
{ TStrV RowStrV, ColStrV; MatlabMtxStr.ChangeChAll(',', ' '); MatlabMtxStr.SplitOnAllCh(';', RowStrV); IAssert(! RowStrV.Empty()); RowStrV[0].SplitOnWs(ColStrV); IAssert(! ColStrV.Empty()); const int Rows = RowStrV.Len(); const int Cols = ColStrV.Len(); IAssert(Rows == Cols); TMAGAffMtx Mtx(Rows); for (int r = 0; r < Rows; r++) { RowStrV[r].SplitOnWs(ColStrV); IAssert(ColStrV.Len() == Cols); for (int c = 0; c < Cols; c++) { Mtx.At(r, c) = (double) ColStrV[c].GetFlt(); } } return Mtx; }
TStr TMAGAffMtx::GetMtxStr | ( | ) | const |
Definition at line 63 of file mag.cpp.
References At(), TStr::Fmt(), GetDim(), and Len().
Referenced by TMAGFitBern::UpdateAffMtx().
{ TChA ChA("["); for (int i = 0; i < Len(); i++) { ChA += TStr::Fmt("%g", At(i)); if ((i+1)%GetDim()==0 && (i+1<Len())) { ChA += "; "; } else if (i+1<Len()) { ChA += " "; } } ChA += "]"; return TStr(ChA); }
double TMAGAffMtx::GetMtxSum | ( | ) | const |
int TMAGAffMtx::GetPrimHashCd | ( | ) | const [inline] |
Definition at line 22 of file mag.h.
References TVec< TVal, TSizeTy >::GetPrimHashCd(), and SeedMtx.
{ return SeedMtx.GetPrimHashCd(); }
void TMAGAffMtx::GetProbMtx | ( | TMAGAffMtx & | ProbMtx | ) |
TMAGAffMtx TMAGAffMtx::GetRndMtx | ( | TRnd & | Rnd, |
const int & | Dim = 2 , |
||
const double & | MinProb = 0.0 |
||
) | [static] |
Definition at line 191 of file mag.cpp.
References SetRndMtx().
{ TMAGAffMtx Mtx; Mtx.SetRndMtx(Rnd, Dim, MinProb); return Mtx; }
double TMAGAffMtx::GetRowSum | ( | const int & | RowId | ) | const |
int TMAGAffMtx::GetSecHashCd | ( | ) | const [inline] |
Definition at line 23 of file mag.h.
References TVec< TVal, TSizeTy >::GetSecHashCd(), and SeedMtx.
{ return SeedMtx.GetSecHashCd(); }
bool TMAGAffMtx::IsProbMtx | ( | ) | const |
int TMAGAffMtx::Len | ( | ) | const [inline] |
Definition at line 27 of file mag.h.
References TVec< TVal, TSizeTy >::Len(), and SeedMtx.
Referenced by AddRndNoise(), GetLLMtx(), GetMtxStr(), GetMtxSum(), GetProbMtx(), IsProbMtx(), Normalize(), SetEpsMtx(), TMAGFitBern::UpdateApxPhiMI(), TMAGFitBern::UpdatePhi(), and TMAGFitBern::UpdatePhiMI().
double TMAGAffMtx::Normalize | ( | ) |
TMAGAffMtx & TMAGAffMtx::operator= | ( | const TMAGAffMtx & | Kronecker | ) |
bool TMAGAffMtx::operator== | ( | const TMAGAffMtx & | Kronecker | ) | const [inline] |
void TMAGAffMtx::PutAllMtx | ( | const double & | Val | ) | [inline] |
void TMAGAffMtx::SetEpsMtx | ( | const double & | Eps1, |
const double & | Eps0, | ||
const int & | Eps1Val = 1 , |
||
const int & | Eps0Val = 0 |
||
) |
void TMAGAffMtx::SetMtx | ( | const TFltV & | ParamV | ) | [inline] |
void TMAGAffMtx::SetRndMtx | ( | TRnd & | Rnd, |
const int & | PrmMtxDim = 2 , |
||
const double & | MinProb = 0.0 |
||
) |
Definition at line 34 of file mag.cpp.
References TVec< TVal, TSizeTy >::Gen(), TRnd::GetUniDev(), TVec< TVal, TSizeTy >::Len(), MtxDim, and SeedMtx.
Referenced by GetRndMtx().
{ MtxDim = PrmMtxDim; SeedMtx.Gen(MtxDim*MtxDim); for (int p = 0; p < SeedMtx.Len(); p++) { do { SeedMtx[p] = Rnd.GetUniDev(); } while (SeedMtx[p] < MinProb); } }
void TMAGAffMtx::Swap | ( | TMAGAffMtx & | Mtx | ) |
TInt TMAGAffMtx::MtxDim [private] |
Definition at line 13 of file mag.h.
Referenced by At(), GenMtx(), GetDim(), GetLLMtx(), GetProbMtx(), operator=(), SetRndMtx(), Swap(), and TMAGAffMtx().
const double TMAGAffMtx::NInf = -DBL_MAX [static, private] |
Definition at line 11 of file mag.h.
Referenced by GetLLMtx(), and GetProbMtx().
TFltV TMAGAffMtx::SeedMtx [private] |
Definition at line 14 of file mag.h.
Referenced by At(), Dump(), Empty(), GenMtx(), GetMtx(), GetPrimHashCd(), GetSecHashCd(), Len(), operator=(), operator==(), PutAllMtx(), SetMtx(), SetRndMtx(), Swap(), and TMAGAffMtx().