|
SNAP Library 2.2, Developer Reference
2014-03-11 19:15:55
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().