Nemo  2.2.0
Public Member Functions | Private Attributes
TTWolbachiaSH Class Reference

StatHandler of the Wolbachia trait. More...

#include <ttwolbachia.h>

+ Inheritance diagram for TTWolbachiaSH:
+ Collaboration diagram for TTWolbachiaSH:

List of all members.

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

Detailed Description

StatHandler of the Wolbachia trait.

Definition at line 150 of file ttwolbachia.h.


Constructor & Destructor Documentation

TTWolbachiaSH::TTWolbachiaSH ( TProtoWolbachia TT) [inline]

Definition at line 157 of file ttwolbachia.h.

  : _trait(TT), _TTidx(TT->get_index()), _Fmean(0), _Mmean(0), _var(0), _extrate(0) {}
virtual TTWolbachiaSH::~TTWolbachiaSH ( ) [inline, virtual]

Definition at line 160 of file ttwolbachia.h.

{ }

Member Function Documentation

double TTWolbachiaSH::getDemicExtinctionRate ( ) [inline]

Definition at line 173 of file ttwolbachia.h.

References _extrate.

{return _extrate;}
double TTWolbachiaSH::getDemicInfectionVar ( ) [inline]

Definition at line 172 of file ttwolbachia.h.

References _var.

{return _var;}
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 indNbr = 0, mean = 0;
  Patch* crnt_patch = _pop->getPatch(i);
  
  indNbr = crnt_patch->size(FEM, ADLTx);
  for(unsigned int j = 0; j < indNbr; ++j)
    mean += (double)*(bool*)crnt_patch->get(FEM, ADLTx, j)->getTraitValue(_TTidx);
  
  return (indNbr != 0 ? mean/indNbr : nanf("NULL"));
}
double TTWolbachiaSH::getMeanInfection ( unsigned int  sex) [inline]

Definition at line 165 of file ttwolbachia.h.

References _Fmean, and _Mmean.

{return ((bool)sex ? _Fmean : _Mmean);}
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 indNbr = 0, mean = 0;
  Patch* crnt_patch = _pop->getPatch(i);
  
  indNbr = crnt_patch->size(MAL, ADLTx);
  for(unsigned int j = 0; j < indNbr; ++j)
    mean += (double)*(bool*)crnt_patch->get(MAL, ADLTx, j)->getTraitValue(_TTidx);
  
  return (indNbr != 0 ? mean/indNbr : nanf("NULL"));
}
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 indNbr = 0, mean = 0;
  Patch* crnt_patch = _pop->getPatch(i);
  
  indNbr = crnt_patch->size(FEM, OFFSx);
  
  for(unsigned int j = 0; j < indNbr; ++j)
      mean += (double)*(bool*)crnt_patch->get(FEM, OFFSx, j)->getTraitValue(_TTidx);

  return (indNbr != 0 ? mean/indNbr : nanf("NULL"));
}
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().

{
  double indNbr = 0, mean = 0;
  Patch* crnt_patch = _pop->getPatch(i);
  
  indNbr = crnt_patch->size(MAL, OFFSx);
  
  for(unsigned int j = 0; j < indNbr; ++j)
    mean += (double)*(bool*)crnt_patch->get(MAL, OFFSx, j)->getTraitValue(_TTidx);

  return (indNbr != 0 ? mean/indNbr : nanf("NULL"));
}
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;
}

Member Data Documentation

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().

Definition at line 152 of file ttwolbachia.h.

int TTWolbachiaSH::_TTidx [private]
double TTWolbachiaSH::_var [private]

Definition at line 154 of file ttwolbachia.h.

Referenced by getDemicInfectionVar(), and setInfectionStats().


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

Generated for Nemo v2.2.0 by  doxygen 1.7.5.1 -- Nemo is hosted by  SourceForge.net Logo