|
Nemo
2.2.0
|
StatHandler of the Wolbachia trait. More...
#include <ttwolbachia.h>
Inheritance diagram for TTWolbachiaSH:
Collaboration diagram for TTWolbachiaSH:Public Member Functions | |
| TTWolbachiaSH (TProtoWolbachia *TT) | |
| virtual | ~TTWolbachiaSH () |
| virtual bool | setStatRecorders (string &token) |
| void | setInfectionStats () |
| double | getMeanInfection (unsigned int sex) |
| double | getMeanOffsprgInfection (unsigned int sex) |
| double | getMeanFemaleInfection_perPatch (unsigned int patch) |
| double | getMeanMaleInfection_perPatch (unsigned int patch) |
| double | getMeanOffsprgFemaleInfection_perPatch (unsigned int patch) |
| double | getMeanOffsprgMaleInfection_perPatch (unsigned int patch) |
| double | getIcompatibleMatingFreq () |
| double | getDemicInfectionVar () |
| double | getDemicExtinctionRate () |
Private Attributes | |
| TProtoWolbachia * | _trait |
| int | _TTidx |
| double | _Fmean |
| double | _Mmean |
| double | _var |
| double | _extrate |
StatHandler of the Wolbachia trait.
Definition at line 150 of file ttwolbachia.h.
| TTWolbachiaSH::TTWolbachiaSH | ( | TProtoWolbachia * | TT | ) | [inline] |
| virtual TTWolbachiaSH::~TTWolbachiaSH | ( | ) | [inline, virtual] |
Definition at line 160 of file ttwolbachia.h.
{ }
| double TTWolbachiaSH::getDemicExtinctionRate | ( | ) | [inline] |
| double TTWolbachiaSH::getDemicInfectionVar | ( | ) | [inline] |
| double TTWolbachiaSH::getIcompatibleMatingFreq | ( | ) |
Definition at line 181 of file stats_wolbachia.cc.
{
// double sum = 0;
// Patch* crnt_patch;
//
// for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
// crnt_patch = _pop->getPatch(i);
// for(unsigned int j = 0; j < crnt_patch->size(FEM, ADLTx);++j)
// sum += crnt_patch->get(FEM, ADLTx, j)->getFecundity();
// }
// return (double)Patch::DeadOffsprgs/sum;
return nanf("NULL");
}
| double TTWolbachiaSH::getMeanFemaleInfection_perPatch | ( | unsigned int | patch | ) |
Definition at line 131 of file stats_wolbachia.cc.
References StatHandlerBase::_pop, _TTidx, ADLTx, FEM, Patch::get(), Metapop::getPatch(), Individual::getTraitValue(), and Patch::size().
| double TTWolbachiaSH::getMeanInfection | ( | unsigned int | sex | ) | [inline] |
| double TTWolbachiaSH::getMeanMaleInfection_perPatch | ( | unsigned int | patch | ) |
Definition at line 143 of file stats_wolbachia.cc.
References StatHandlerBase::_pop, _TTidx, ADLTx, Patch::get(), Metapop::getPatch(), Individual::getTraitValue(), MAL, and Patch::size().
| double TTWolbachiaSH::getMeanOffsprgFemaleInfection_perPatch | ( | unsigned int | patch | ) |
Definition at line 155 of file stats_wolbachia.cc.
References StatHandlerBase::_pop, _TTidx, FEM, Patch::get(), Metapop::getPatch(), Individual::getTraitValue(), OFFSx, and Patch::size().
| double TTWolbachiaSH::getMeanOffsprgInfection | ( | unsigned int | sex | ) |
Definition at line 105 of file stats_wolbachia.cc.
References StatHandlerBase::_pop, _TTidx, FEM, Patch::get(), Metapop::getPatch(), Metapop::getPatchNbr(), Individual::getTraitValue(), MAL, OFFSPRG, OFFSx, Metapop::size(), and Patch::size().
{
unsigned int i,j;
double indNbr = 0, mean = 0;
Patch* crnt_patch;
if(sex) {//females:
for(i = 0; i < _pop->getPatchNbr(); ++i) {
crnt_patch = _pop->getPatch(i);
for(j = 0; j < crnt_patch->size(FEM, OFFSx); ++j)
mean += (double)*(bool*)crnt_patch->get(FEM, OFFSx, j)->getTraitValue(_TTidx);
}
indNbr = _pop->size(FEM, OFFSPRG);
} else { //males
for(i = 0; i < _pop->getPatchNbr(); ++i) {
crnt_patch = _pop->getPatch(i);
for(j = 0; j < crnt_patch->size(MAL, OFFSx); ++j)
mean += (double)*(bool*)crnt_patch->get(MAL, OFFSx, j)->getTraitValue(_TTidx);
}
indNbr = _pop->size(MAL, OFFSPRG);
}
return (indNbr != 0 ? mean/indNbr : nanf("NULL"));
}
| double TTWolbachiaSH::getMeanOffsprgMaleInfection_perPatch | ( | unsigned int | patch | ) |
Definition at line 168 of file stats_wolbachia.cc.
References StatHandlerBase::_pop, _TTidx, Patch::get(), Metapop::getPatch(), Individual::getTraitValue(), MAL, OFFSx, and Patch::size().
| void TTWolbachiaSH::setInfectionStats | ( | ) |
Definition at line 35 of file stats_wolbachia.cc.
References _extrate, _Fmean, _Mmean, StatHandlerBase::_pop, _TTidx, _var, ADLTx, ADULTS, FEM, Patch::get(), Metapop::getPatch(), Metapop::getPatchNbr(), Individual::getTraitValue(), MAL, Metapop::size(), and Patch::size().
{
double Fsize = 0, Msize = 0, val, local_inf;
double *all;
Patch* crnt_patch;
Fsize = _pop->size(FEM, ADULTS);
Msize = _pop->size(MAL, ADULTS);
if( Fsize != 0 )
all = new double [ _pop->getPatchNbr() ];
else {
_Fmean = nanf("NULL");
_Mmean = nanf("NULL");
_extrate = nanf("NULL");
_var = nanf("NULL");
return;
}
_Fmean = _Mmean = 0;
_extrate = 0;
//females:
for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
crnt_patch = _pop->getPatch(i);
local_inf = 0;
all[i] = 0;
unsigned int fsize = crnt_patch->size(FEM, ADLTx);
for(unsigned int j = 0; j < fsize; ++j) {
val = (double)*(bool*)(crnt_patch->get(FEM, ADLTx, j)->getTraitValue(_TTidx));
local_inf += val;
}
if(local_inf != 0) {
all[i] = local_inf / fsize;
_Fmean += all[i];
} else _extrate++;
}
_Fmean = (Fsize != 0 ? _Fmean / (_pop->getPatchNbr() - _extrate) : nanf("NULL"));
_extrate /= _pop->getPatchNbr();
_var = 0;
double local_mean = 0;
for (unsigned int i = 0; i < _pop->getPatchNbr(); i++)
local_mean += all[i];
local_mean /= _pop->getPatchNbr();
//hacked from the GSL:
for (unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
const long double delta = (all[i] - local_mean);
_var += (delta * delta - _var) / (i + 1);
}
//males
for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
crnt_patch = _pop->getPatch(i);
for(unsigned int j = 0, msize = crnt_patch->size(MAL, ADLTx); j < msize; ++j)
_Mmean += (double)*(bool*)(crnt_patch->get(MAL, ADLTx, j)->getTraitValue(_TTidx));
}
_Mmean = (Msize != 0 ? _Mmean / Msize : nanf("NULL"));
delete [] all;
}
| bool TTWolbachiaSH::setStatRecorders | ( | string & | token | ) | [virtual] |
Definition at line 113 of file ttwolbachia.cc.
{
if(token.compare("wolbachia") == 0) {
add("Wolbachia female infection (offsprng)","off.fwoinf",OFFSPRG,1,0,0,&TTWolbachiaSH::getMeanOffsprgInfection,0,0);
add("Wolbachia male infection (offsprng)","off.mwoinf",OFFSPRG,0,0,0,&TTWolbachiaSH::getMeanOffsprgInfection,0,0);
// add("Wolbachia incompatible mating freq ","off.incmating",OFFSPRG,0,&TTWolbachiaSH::getIcompatibleMatingFreq,0,0,0);
add("Wolbachia female infection (adults) ","adlt.fwoinf",ADULTS,1,0,0,&TTWolbachiaSH::getMeanInfection,0,&TTWolbachiaSH::setInfectionStats);
add("Wolbachia male infection (adults) ","adlt.mwoinf",ADULTS,0,0,0,&TTWolbachiaSH::getMeanInfection,0,0);
add("Wolbachia demic infection variance ","wolb.infvar",ADULTS,0,0,&TTWolbachiaSH::getDemicInfectionVar,0,0,0);
add("Wolbachia demic extinction rate ","wolb.extrate",ADULTS,0,0,&TTWolbachiaSH::getDemicExtinctionRate,0,0,0);
} else if(token.compare("wolbachia_perpatch") == 0) {
ostringstream name, sub_name;
// for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
// _name<<"Wolbachia fem infctn: patch "<<i+1;
// sub_name<<"off.p"<<i+1<<"fwoinf";
// add(_name.str(),sub_name.str(),OFFSPRG,i,0,0,&TTWolbachiaSH::getMeanOffsprgFemaleInfection_perPatch,0);
// _name.str("");
// _name<<"Wolbachia mal infctn: patch "<<i+1;
// sub_name.str("");
// sub_name<<"off.p"<<i+1<<"mwoinf";
// add(_name.str(),sub_name.str(),OFFSPRG,i,0,0,&TTWolbachiaSH::getMeanOffsprgMaleInfection_perPatch,0);
// sub_name.str("");
// _name.str("");
// }
for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
name<<"Patch "<<i+1;
sub_name<<"adlt.p"<<i+1<<"fwoinf";
add(name.str(),sub_name.str(),ADULTS,i,0,0,&TTWolbachiaSH::getMeanFemaleInfection_perPatch,0,0);
// sub_name.str("");
// sub_name<<"adlt.p"<<i+1<<"mwoinf";
// add(_name.str(),sub_name.str(),ADULTS,i,0,0,&TTWolbachiaSH::getMeanMaleInfection_perPatch,0);
sub_name.str("");
name.str("");
}
}else
return false;
return true;
}
double TTWolbachiaSH::_extrate [private] |
Definition at line 154 of file ttwolbachia.h.
Referenced by getDemicExtinctionRate(), and setInfectionStats().
double TTWolbachiaSH::_Fmean [private] |
Definition at line 154 of file ttwolbachia.h.
Referenced by getMeanInfection(), and setInfectionStats().
double TTWolbachiaSH::_Mmean [private] |
Definition at line 154 of file ttwolbachia.h.
Referenced by getMeanInfection(), and setInfectionStats().
TProtoWolbachia* TTWolbachiaSH::_trait [private] |
Definition at line 152 of file ttwolbachia.h.
int TTWolbachiaSH::_TTidx [private] |
Definition at line 153 of file ttwolbachia.h.
Referenced by getMeanFemaleInfection_perPatch(), getMeanMaleInfection_perPatch(), getMeanOffsprgFemaleInfection_perPatch(), getMeanOffsprgInfection(), getMeanOffsprgMaleInfection_perPatch(), and setInfectionStats().
double TTWolbachiaSH::_var [private] |
Definition at line 154 of file ttwolbachia.h.
Referenced by getDemicInfectionVar(), and setInfectionStats().
1.7.5.1 -- Nemo is hosted by