SNAP Library , Developer Reference
2013-01-07 14:03:36
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
|
#include <mag.h>
Public Member Functions | |
TMAGParam () | |
TMAGParam (const int &NumNodes, const int &NumAttrs) | |
TMAGParam (const int &NumNodes, const TMAGAffMtxV &MtxV) | |
TMAGParam (const int &NumNodes, const TStr &ConfFNm) | |
TMAGParam (const TMAGParam< TNodeAttr > &MAGParam) | |
TMAGParam (const int &NumNodes, const int &NumAttrs, const TNodeAttr &Dist) | |
TMAGParam< TNodeAttr > & | operator= (const TMAGParam< TNodeAttr > &MAGParam) |
void | Clr () |
void | LoadTxt (const TStr &InFNm) |
void | SaveTxt (const TStr &OutFNm) const |
void | SetNodes (const int &Nodes) |
const int | GetNodes () const |
void | SetAttrs (const int &Attrs) |
const int | GetAttrs () const |
void | SetNodeAttr (const TNodeAttr &Dist) |
const TNodeAttr & | GetNodeAttr () const |
const int | GetDim (const int &Attr) const |
void | GetDimV (TIntV &DimV) const |
void | SetMtxVal (const int &Attr, const int &Row, const int &Col, const double &Val) |
void | SetMtx (const int &Attr, const TMAGAffMtx &Mtx) |
void | SetMtxV (const TMAGAffMtxV &MtxV) |
void | SetMtxAll (const TMAGAffMtx &Mtx) |
const double | GetMtxVal (const int &Attr, const int &Row, const int &Col) const |
const TMAGAffMtx & | GetMtx (const int &Attr) const |
void | GetMtxV (TMAGAffMtxV &MtxV) const |
PNGraph | GenMAG (TIntVV &AttrVV, const bool &IsDir=false, const int &Seed=1) |
PNGraph | GenAttrMAG (const TIntVV &AttrVV, const bool &IsDir=false, const int &Seed=1) |
Static Public Attributes | |
static TRnd | Rnd |
Private Attributes | |
TInt | NNodes |
TInt | NAttrs |
TNodeAttr | NodeAttr |
TMAGAffMtxV | AffMtxV |
TMAGParam< TNodeAttr >::TMAGParam | ( | const int & | NumNodes, |
const TMAGAffMtxV & | MtxV | ||
) | [inline] |
PNGraph TMAGParam< TNodeAttr >::GenAttrMAG | ( | const TIntVV & | AttrVV, |
const bool & | IsDir = false , |
||
const int & | Seed = 1 |
||
) |
Definition at line 250 of file mag.h.
References TNGraph::AddEdge(), TNGraph::AddNode(), TVVec< TVal >::At(), TVVec< TVal >::GetYDim(), IAssert, and TNGraph::New().
{ PNGraph Graph = TNGraph::New(NNodes, -1); for(int i = 0; i < NNodes; i++) { Graph->AddNode(i); } if(Seed > 0) { TNodeAttr::Rnd.PutSeed(Seed); } IAssert(AttrVV.GetYDim() == NAttrs); for(int i = 0; i < NNodes; i++) { for(int l = 0; l < NAttrs; l++) { IAssert(AttrVV.At(i, l) < AffMtxV[l].GetDim()); } } for(int i = 0; i < NNodes; i++) { for(int j = i; j < NNodes; j++) { double Prob = 1.0; for(int l = 0; l < NAttrs; l++) { Prob *= AffMtxV[l].At(AttrVV.At(i, l), AttrVV.At(j, l)); } if(TNodeAttr::Rnd.GetUniDev() < Prob) { Graph->AddEdge(i, j); if(! IsDir && i != j) { Graph->AddEdge(j, i); } } if(IsDir && i != j) { Prob = 1.0; for(int l = 0; l < NAttrs; l++) { Prob *= AffMtxV[l].At(AttrVV.At(j, l), AttrVV.At(i, l)); } if(TNodeAttr::Rnd.GetUniDev() < Prob) { Graph->AddEdge(j, i); } } } } return Graph; };
PNGraph TMAGParam< TNodeAttr >::GenMAG | ( | TIntVV & | AttrVV, |
const bool & | IsDir = false , |
||
const int & | Seed = 1 |
||
) |
Definition at line 295 of file mag.h.
References TVVec< TVal >::At(), TVVec< TVal >::GetYDim(), and IAssert.
Referenced by TMAGFitBern::PlotProperties().
{ TNodeAttr::Rnd.PutSeed(Seed); NodeAttr.AttrGen(AttrVV, NNodes); IAssert(AttrVV.GetYDim() == NAttrs); for(int i = 0; i < NNodes; i++) { for(int l = 0; l < NAttrs; l++) { IAssert(AttrVV.At(i, l) < AffMtxV[l].GetDim()); } } PNGraph Graph = GenAttrMAG(AttrVV, IsDir, 0); return Graph; /* for(int i = 0; i < NNodes; i++) { for(int j = i; j < NNodes; j++) { double Prob = 1.0; for(int l = 0; l < NAttrs; l++) { Prob *= AffMtxV[l].At(AttrVV.At(i, l), AttrVV.At(j, l)); } if(TNodeAttr::Rnd.GetUniDev() < Prob) { Graph->AddEdge(i, j); if(! IsDir && i != j) { Graph->AddEdge(j, i); } } if(IsDir && i != j) { Prob = 1.0; for(int l = 0; l < NAttrs; l++) { Prob *= AffMtxV[l].At(AttrVV.At(j, l), AttrVV.At(i, l)); } if(TNodeAttr::Rnd.GetUniDev() < Prob) { Graph->AddEdge(j, i); } } } } return Graph; */ };
Definition at line 174 of file mag.h.
Referenced by TMAGFitBern::ComputeApxAdjLL(), TMAGFitBern::ComputeApxLL(), TMAGFitBern::ComputeJointAdjLL(), TMAGFitBern::ComputeJointLL(), TMAGFitBern::ComputeJointOneLL(), TMAGFitBern::DoEMAlg(), TMAGFitBern::DoEStep(), TMAGFitBern::DoEStepApxOneIter(), TMAGFitBern::DoEStepOneIter(), TMAGFitBern::DoMStep(), TMAGFitBern::GetAttrs(), TMAGFitBern::GetAvgProdLinWeight(), TMAGFitBern::GetAvgProdSqWeight(), TMAGFitBern::GetProdLinWeight(), TMAGFitBern::GetProdSqWeight(), TMAGFitBern::Init(), TMAGFitBern::PlotProperties(), TMAGFitBern::RandomInit(), TMAGFitBern::SaveTxt(), TMAGFitBern::SetPhiVV(), TMAGFitBern::TMAGFitBern(), TMAGFitBern::UpdateAffMtxV(), TMAGFitBern::UpdateApxPhiMI(), and TMAGFitBern::UpdatePhiMI().
{ return NAttrs; }
const TMAGAffMtx& TMAGParam< TNodeAttr >::GetMtx | ( | const int & | Attr | ) | const [inline] |
Definition at line 187 of file mag.h.
Referenced by TMAGFitBern::ComputeApxAdjLL(), TMAGFitBern::ComputeApxLL(), TMAGFitBern::GetAvgSqThetaLL(), TMAGFitBern::GetAvgThetaLL(), TMAGFitBern::GetSqThetaLL(), TMAGFitBern::GetThetaLL(), TMAGFitBern::UpdateAffMtx(), TMAGFitBern::UpdateApxPhiMI(), TMAGFitBern::UpdatePhi(), and TMAGFitBern::UpdatePhiMI().
{ return AffMtxV[Attr]; }
void TMAGParam< TNodeAttr >::GetMtxV | ( | TMAGAffMtxV & | MtxV | ) | const [inline] |
Definition at line 188 of file mag.h.
Referenced by TMAGFitBern::ComputeJointAdjLL(), TMAGFitBern::ComputeJointOneLL(), TMAGFitBern::DoEMAlg(), TMAGFitBern::GetMtxV(), TMAGFitBern::PlotProperties(), TMAGFitBern::SaveTxt(), and TMAGFitBern::UpdateAffMtxV().
{ MtxV = AffMtxV; }
const TNodeAttr& TMAGParam< TNodeAttr >::GetNodeAttr | ( | ) | const [inline] |
Definition at line 177 of file mag.h.
Referenced by TMAGFitBern::ComputeApxAdjLL(), TMAGFitBern::ComputeApxLL(), TMAGFitBern::ComputeJointAdjLL(), TMAGFitBern::ComputeJointOneLL(), TMAGFitBern::DoEMAlg(), TMAGFitBern::GetEstNoEdgeLL(), TMAGFitBern::GetMuV(), TMAGFitBern::GetNodeAttr(), TMAGFitBern::GetProbMu(), TMAGFitBern::PlotProperties(), TMAGFitBern::SetMuV(), TMAGFitBern::UpdateAffMtxV(), TMAGFitBern::UpdateApxPhiMI(), TMAGFitBern::UpdateMu(), TMAGFitBern::UpdatePhi(), and TMAGFitBern::UpdatePhiMI().
{ return NodeAttr; }
Definition at line 171 of file mag.h.
Referenced by TMAGFitBern::ComputeApxAdjLL(), TMAGFitBern::ComputeApxLL(), TMAGFitBern::ComputeJointAdjLL(), TMAGFitBern::ComputeJointLL(), TMAGFitBern::ComputeJointOneLL(), TMAGFitBern::DoEMAlg(), TMAGFitBern::DoEStep(), TMAGFitBern::DoEStepApxOneIter(), TMAGFitBern::DoEStepOneIter(), TMAGFitBern::GetAvgInCoeff(), TMAGFitBern::GetAvgOutCoeff(), TMAGFitBern::GetNodes(), TMAGFitBern::GetProbMu(), TMAGFitBern::GradAffMtx(), TMAGFitBern::GradApxAffMtx(), TMAGFitBern::Init(), TMAGFitBern::NormalizeAffMtxV(), TMAGFitBern::PlotProperties(), TMAGFitBern::PrepareUpdateAffMtx(), TMAGFitBern::PrepareUpdateApxAffMtx(), TMAGFitBern::RandomInit(), TMAGFitBern::SaveTxt(), TMAGFitBern::SetPhiVV(), TMAGFitBern::UnNormalizeAffMtxV(), TMAGFitBern::UpdateAffMtxV(), TMAGFitBern::UpdateApxPhiMI(), TMAGFitBern::UpdateMu(), TMAGFitBern::UpdatePhi(), and TMAGFitBern::UpdatePhiMI().
{ return NNodes; }
Definition at line 205 of file mag.h.
References TStr::CStr(), and TMAGAffMtx::GetMtx().
Referenced by TMAGParam< TMAGNodeBern >::TMAGParam().
{ NodeAttr.LoadTxt(InFNm); char buf[1024]; FILE *fp = fopen(InFNm.CStr(), "r"); NAttrs = 0; AffMtxV.Gen(10, 0); while(fgets(buf, sizeof(buf), fp) != NULL) { strtok(buf, "&"); char *token = strtok(NULL, "\r\n"); NAttrs++; AffMtxV.Add(TMAGAffMtx::GetMtx(TStr(token))); } fclose(fp); };
TMAGParam< TNodeAttr > & TMAGParam< TNodeAttr >::operator= | ( | const TMAGParam< TNodeAttr > & | MAGParam | ) |
Definition at line 195 of file mag.h.
References TMAGParam< TNodeAttr >::AffMtxV, TMAGParam< TNodeAttr >::NAttrs, TMAGParam< TNodeAttr >::NNodes, and TMAGParam< TNodeAttr >::NodeAttr.
Definition at line 222 of file mag.h.
References TStr::CStr(), TStr::GetSubStr(), and TStr::Len().
{ TStrV OutStrV; NodeAttr.SaveTxt(OutStrV); FILE *fp = fopen(OutFNm.CStr(), "w"); fprintf(fp, "# %d nodes with %d attributes\n", NNodes(), NAttrs()); for(int i = 0; i < NAttrs; i++) { TStr MtxStr = AffMtxV[i].GetMtxStr(); fprintf(fp, "%s & %s\n", OutStrV[i].CStr(), MtxStr.GetSubStr(1, MtxStr.Len()-2).CStr()); } fclose(fp); };
void TMAGParam< TNodeAttr >::SetMtx | ( | const int & | Attr, |
const TMAGAffMtx & | Mtx | ||
) | [inline] |
void TMAGParam< TNodeAttr >::SetMtxAll | ( | const TMAGAffMtx & | Mtx | ) | [inline] |
void TMAGParam< TNodeAttr >::SetMtxV | ( | const TMAGAffMtxV & | MtxV | ) | [inline] |
Definition at line 184 of file mag.h.
Referenced by TMAGFitBern::DoEMAlg(), TMAGFitBern::Init(), TMAGFitBern::PlotProperties(), TMAGFitBern::RandomInit(), TMAGFitBern::SetMtxV(), and TMAGFitBern::UpdateAffMtxV().
void TMAGParam< TNodeAttr >::SetNodeAttr | ( | const TNodeAttr & | Dist | ) | [inline] |
Definition at line 176 of file mag.h.
Referenced by TMAGFitBern::Init(), TMAGFitBern::PlotProperties(), TMAGFitBern::RandomInit(), TMAGFitBern::SetMuV(), and TMAGFitBern::UpdateMu().
{ NodeAttr = Dist; }
TMAGAffMtxV TMAGParam< TNodeAttr >::AffMtxV [private] |
Definition at line 153 of file mag.h.
Referenced by TMAGParam< TMAGNodeBern >::Clr(), TMAGParam< TMAGNodeBern >::GetDim(), TMAGParam< TMAGNodeBern >::GetMtx(), TMAGParam< TMAGNodeBern >::GetMtxV(), TMAGParam< TMAGNodeBern >::GetMtxVal(), TMAGParam< TNodeAttr >::operator=(), TMAGParam< TMAGNodeBern >::SetMtx(), TMAGParam< TMAGNodeBern >::SetMtxAll(), TMAGParam< TMAGNodeBern >::SetMtxV(), and TMAGParam< TMAGNodeBern >::SetMtxVal().
Definition at line 151 of file mag.h.
Referenced by TMAGParam< TMAGNodeBern >::GetAttrs(), TMAGParam< TNodeAttr >::operator=(), and TMAGParam< TMAGNodeBern >::SetMtxV().
Definition at line 150 of file mag.h.
Referenced by TMAGParam< TMAGNodeBern >::GetNodes(), TMAGParam< TNodeAttr >::operator=(), and TMAGParam< TMAGNodeBern >::SetNodes().
Definition at line 152 of file mag.h.
Referenced by TMAGParam< TMAGNodeBern >::GetNodeAttr(), TMAGParam< TNodeAttr >::operator=(), and TMAGParam< TMAGNodeBern >::SetNodeAttr().