SNAP Library 2.0, User Reference  2013-05-13 16:33:57
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
TMAGNodeBeta Class Reference

#include <mag.h>

List of all members.

Public Member Functions

 TMAGNodeBeta ()
 TMAGNodeBeta (const int &_Dim, const double &Alpha=1, const double &Beta=1)
 TMAGNodeBeta (const TFltV &_AlphaV, const TFltV &_BetaV)
TMAGNodeBetaoperator= (const TMAGNodeBeta &Dist)
void SetBeta (const int &Attr, const double &Alpha, const double &Beta)
void GetBeta (const int &Attr, double &Alpha, double &Beta) const
void SetBetaV (const TFltV &_AlphaV, const TFltV &_BetaV)
void GetBetaV (TFltV &_AlphaV, TFltV &_BetaV) const
bool GetMuV (TFltV &_MuV) const
void LoadTxt (const TStr &InFNm)
void SaveTxt (TStrV &OutStrV) const
void AttrGen (TIntVV &AttrVV, const int &NNodes)

Static Public Attributes

static TRnd Rnd = TRnd(0)

Private Attributes

TFltV AlphaV
TFltV BetaV
TFltV MuV
TInt Dim
TBool Dirty

Detailed Description

Definition at line 115 of file mag.h.


Constructor & Destructor Documentation

Definition at line 125 of file mag.h.

: AlphaV(), BetaV(), MuV(), Dim(-1), Dirty(true) {}
TMAGNodeBeta::TMAGNodeBeta ( const int &  _Dim,
const double &  Alpha = 1,
const double &  Beta = 1 
) [inline]

Definition at line 126 of file mag.h.

: AlphaV(_Dim), BetaV(_Dim), MuV(_Dim), Dim(_Dim), Dirty(true) {  AlphaV.PutAll(Alpha);  BetaV.PutAll(Beta);  }
TMAGNodeBeta::TMAGNodeBeta ( const TFltV _AlphaV,
const TFltV _BetaV 
) [inline]

Definition at line 127 of file mag.h.

: AlphaV(_AlphaV), BetaV(_BetaV), Dirty(true) {  IAssert(_AlphaV.Len() == _BetaV.Len());  Dim = _AlphaV.Len();  MuV.Gen(Dim);  }

Member Function Documentation

void TMAGNodeBeta::AttrGen ( TIntVV AttrVV,
const int &  NNodes 
)

Definition at line 323 of file mag.cpp.

                                                            {
        IAssert(Dim > 0);
        AttrVV.Gen(NNodes, Dim);
        AttrVV.PutAll(0);

//      printf("AlphaV = %d, BetaV = %d, MuV = %d\n", AlphaV.Len(), BetaV.Len(), MuV.Len());
        
        for(int i = 0; i < NNodes; i++) {
                for(int l = 0; l < Dim; l++) {
                        double x = TMAGNodeBeta::Rnd.GetGammaDev((int)AlphaV[l]);
                        double y = TMAGNodeBeta::Rnd.GetGammaDev((int)BetaV[l]);
                        MuV[l] = x / (x + y);
                        if((TMAGNodeBeta::Rnd).GetUniDev() > MuV[l]) {
                                AttrVV.At(i, l) = 1;
                        }
                }
        }
        Dirty = false;
}
void TMAGNodeBeta::GetBeta ( const int &  Attr,
double &  Alpha,
double &  Beta 
) const [inline]

Definition at line 132 of file mag.h.

{  IAssert(Attr < Dim);  Alpha = AlphaV[Attr];  Beta = BetaV[Attr];  }
void TMAGNodeBeta::GetBetaV ( TFltV _AlphaV,
TFltV _BetaV 
) const [inline]

Definition at line 134 of file mag.h.

{  _AlphaV = AlphaV;  _BetaV = BetaV;  }
bool TMAGNodeBeta::GetMuV ( TFltV _MuV) const [inline]

Definition at line 135 of file mag.h.

{  if(!Dirty)  {  _MuV = MuV;  }  return Dirty; }
void TMAGNodeBeta::LoadTxt ( const TStr InFNm)

Definition at line 343 of file mag.cpp.

                                            {
        FILE *fp = fopen(InFNm.CStr(), "r");
        IAssertR(fp != NULL, "File does not exist: " + InFNm);

        Dim = 0;
        AlphaV.Gen(10, 0);
        BetaV.Gen(10, 0);

        char buf[128];
        char *token;
        TStr TokenStr;
        TFlt Val;

        while(fgets(buf, sizeof(buf), fp) != NULL) {
                token = strtok(buf, "&");
                
                token = strtok(token, " \t");
                TokenStr = TStr(token);
                AlphaV.Add(TokenStr.GetFlt(Val));

                token = strtok(NULL, " \t");
                TokenStr = TStr(token);
                BetaV.Add(TokenStr.GetFlt(Val));

                Dim++;
        }

        fclose(fp);
}
TMAGNodeBeta & TMAGNodeBeta::operator= ( const TMAGNodeBeta Dist)

Definition at line 299 of file mag.cpp.

                                                              {
        AlphaV = Dist.AlphaV;
        BetaV = Dist.BetaV;
        Dim = Dist.Dim;
        MuV = Dist.MuV;
        Dirty = Dist.Dirty;
        return (*this);
}
void TMAGNodeBeta::SaveTxt ( TStrV OutStrV) const

Definition at line 373 of file mag.cpp.

                                               {
        OutStrV.Gen(Dim, 0);

        for(int i = 0; i < Dim; i++) {
                OutStrV.Add(TStr::Fmt("%f %f", double(AlphaV[i]), double(BetaV[i])));
        }
}
void TMAGNodeBeta::SetBeta ( const int &  Attr,
const double &  Alpha,
const double &  Beta 
)

Definition at line 308 of file mag.cpp.

                                                                                   {
        IAssert(Attr < Dim);
        AlphaV[Attr] = Alpha;
        BetaV[Attr] = Beta;
        Dirty = true;
}
void TMAGNodeBeta::SetBetaV ( const TFltV _AlphaV,
const TFltV _BetaV 
)

Definition at line 315 of file mag.cpp.

                                                                     {
        IAssert(_AlphaV.Len() == _BetaV.Len());
        AlphaV = _AlphaV;
        BetaV = _BetaV;
        Dim = _AlphaV.Len();
        Dirty = true;
}

Member Data Documentation

Definition at line 119 of file mag.h.

Definition at line 120 of file mag.h.

Definition at line 122 of file mag.h.

Definition at line 123 of file mag.h.

Definition at line 121 of file mag.h.

TRnd TMAGNodeBeta::Rnd = TRnd(0) [static]

Definition at line 117 of file mag.h.


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