Nemo  2.2.0
Public Member Functions | Private Attributes
MPStatHandler Class Reference

A StatHandler for the Metapop SimComponent. More...

#include <MPStatHandler.h>

+ Inheritance diagram for MPStatHandler:
+ Collaboration diagram for MPStatHandler:

List of all members.

Public Member Functions

 MPStatHandler ()
virtual ~MPStatHandler ()
virtual bool setStatRecorders (std::string &token)
void setStatsForPop ()
void setStatsForPopPerPatch ()
void setStatsForMigrants ()
void setStatsForMigrantsPerPatch ()
Migration
double getMeanEmigrantPerPatch ()
double getMeanImigrantPerPatch ()
double getMeanMigrantRatio ()
double getMeanResidantPerPatch ()
double getMeanKolonisersProportion ()
double getMeanKolonisersPerPatch ()
double getEmigrantInPatch (unsigned int i)
double getResidantInPatch (unsigned int i)
double getImigrateInPatch (unsigned int i)
double getKolonisersInPatch (unsigned int i)
Patch extinction
void setObsrvdExtinctionRate ()
double getObsrvdExtinctionRate ()
double get_isAlive ()
double getMeanOffsprgPopSatLevel ()
double getMeanOffsprgPopSatVar ()
double getMeanAdultsPopSatLevel ()
double getMeanAdultsPopSatVar ()
double getPatchAge (unsigned int i)
double getMeanPatchAge ()
Demography
double getAdultSexRatio ()
double getOffsprgSexRatio ()
double getOffsprgNumber ()
double getFemNumber ()
double getMalNumber ()
double getAdultsNumber ()
double getAdultsNumber (unsigned int i)
double getFemNumber (unsigned int i)
double getMalNumber (unsigned int i)
double getOffspringNumber (unsigned int i)
double getOffFemNumber (unsigned int i)
double getOffMalNumber (unsigned int i)
double getMeanAssignedFecundity (unsigned int sex)
double getMeanMatings (unsigned int sex)
double setReproductiveStats (unsigned int sex)
double getReproductiveVar ()
double getMeanOffsprgFemNumber ()
double getMeanOffsprgMalNumber ()
double getMeanAdultsFemNumber ()
double getMeanAdultsMalNumber ()
Kinship
void setKinship ()
void setKinClassCounter (Individual *I1, Individual *I2)
double getSibProportion (unsigned int i)
Pedegree
void setPedegreeCount ()
double getPedProportion (unsigned int i)

Private Attributes

double meanEmigrant
double meanImigrant
double meanResidant
double meanKolonisers
double meanDeadDisp
double ObservedExtinctionRate
double _sib_prop [5]
double _ped_prop [5]
double _var_reprod_success

Detailed Description

A StatHandler for the Metapop SimComponent.

Definition at line 40 of file MPStatHandler.h.


Constructor & Destructor Documentation

MPStatHandler::MPStatHandler ( ) [inline]

Definition at line 49 of file MPStatHandler.h.

{ }
virtual MPStatHandler::~MPStatHandler ( ) [inline, virtual]

Definition at line 51 of file MPStatHandler.h.

{}

Member Function Documentation

double MPStatHandler::get_isAlive ( )
double MPStatHandler::getAdultSexRatio ( )

Definition at line 619 of file stats_demo.cc.

{return (_pop->size(MAL, ADULTS) != 0 ? (double)_pop->size(FEM, ADULTS)/_pop->size(MAL, ADULTS) : 0);}
double MPStatHandler::getAdultsNumber ( )

Definition at line 626 of file stats_demo.cc.

{return _pop->size(ADULTS);}
double MPStatHandler::getAdultsNumber ( unsigned int  i)

Definition at line 627 of file stats_demo.cc.

{return _pop->size(ADULTS, i);}
double MPStatHandler::getEmigrantInPatch ( unsigned int  i)

Definition at line 128 of file stats_demo.cc.

{
  Patch* patch = _pop->getPatch(i);
  return (patch != 0 ? patch->nbEmigrant : 0);
}
double MPStatHandler::getFemNumber ( )

Definition at line 624 of file stats_demo.cc.

{return _pop->size(FEM, ADULTS);}
double MPStatHandler::getFemNumber ( unsigned int  i)

Definition at line 628 of file stats_demo.cc.

{return _pop->size(FEM, ADULTS, i);}
double MPStatHandler::getImigrateInPatch ( unsigned int  i)

Definition at line 140 of file stats_demo.cc.

{
  Patch* patch = _pop->getPatch(i);
  return (patch != 0 ? (double)patch->nbImigrant/(double)(patch->nbImigrant + patch->nbPhilopat)
          : nanf("NULL"));
}
double MPStatHandler::getKolonisersInPatch ( unsigned int  i)

Definition at line 148 of file stats_demo.cc.

{
  Patch* patch = _pop->getPatch(i);
  int colon = (patch != 0 ? patch->nbKolonisers : 0);
  return (colon != -1 ? colon : nanf("NULL"));
}
double MPStatHandler::getMalNumber ( )

Definition at line 625 of file stats_demo.cc.

{return _pop->size(MAL, ADULTS);}
double MPStatHandler::getMalNumber ( unsigned int  i)

Definition at line 629 of file stats_demo.cc.

{return _pop->size(MAL, ADULTS, i);}
double MPStatHandler::getMeanAdultsFemNumber ( )

Definition at line 261 of file stats_demo.cc.

{
  double mean = 0;
  unsigned int nb_patch = 0;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
    nb_patch += (_pop->size(FEM,ADULTS,i) != 0);
    mean += _pop->size(FEM,ADULTS,i);
  }
  return (nb_patch != 0 ? mean/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanAdultsMalNumber ( )

Definition at line 274 of file stats_demo.cc.

{
  double mean = 0;
  unsigned int nb_patch = 0;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
    nb_patch += (_pop->size(MAL,ADULTS,i) != 0);
    mean += _pop->size(MAL,ADULTS,i);
  }
  return (nb_patch != 0 ? mean/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanAdultsPopSatLevel ( )

Definition at line 287 of file stats_demo.cc.

{
  double mean = 0;
  unsigned int nb_patch = 0;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
    nb_patch += (_pop->size(ADULTS,i) != 0);
    mean += _pop->getPatch(i)->getPatchAdultsSatLevel();
  }
  return (nb_patch != 0 ? mean/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanAdultsPopSatVar ( )

Definition at line 300 of file stats_demo.cc.

{
  unsigned int i,nb_patch;
  vector<double> stat;
  double var = 0, mean = 0, val;

  for(i = 0; i < _pop->getPatchNbr(); i++) {
    if(_pop->size(ADULTS,i) != 0){
      val = _pop->getPatch(i)->getPatchAdultsSatLevel();
      stat.push_back(val);
      mean += val;
    }
  }

  nb_patch = stat.size();
  mean = (nb_patch != 0 ? mean/nb_patch : 0);

  for(i = 0; i < nb_patch; i++)
    var += pow((stat[i]-mean),2);

  return (nb_patch != 0 ? var/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanAssignedFecundity ( unsigned int  sex)

Definition at line 329 of file stats_demo.cc.

{
  double mean = 0, sum = 0;
  unsigned int nbpatch = 0;
  Patch* crnt_patch;

  if((bool)sex) {
    for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
          crnt_patch = _pop->getPatch(i);
      if(crnt_patch->size(FEM, ADLTx) != 0) {
        nbpatch++;
        sum = 0;
        for(unsigned int j = 0; j < crnt_patch->size(FEM, ADLTx);++j)
          sum += crnt_patch->get(FEM, ADLTx, j)->getFecundity();
        mean += sum/crnt_patch->size(FEM, ADLTx);
      }
    }
  } else {
    for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
          crnt_patch = _pop->getPatch(i);
      if(crnt_patch->size(MAL, ADLTx) != 0) {
        nbpatch++;
        sum = 0;
        for(unsigned int j = 0; j < crnt_patch->size(MAL, ADLTx);++j)
          sum += crnt_patch->get(MAL, ADLTx, j)->getFecundity();
        mean += sum/crnt_patch->size(MAL, ADLTx);
      }
    }
  }
  return (nbpatch != 0 ? mean/nbpatch : nanf("NULL"));
}
double MPStatHandler::getMeanEmigrantPerPatch ( )

Definition at line 43 of file stats_demo.cc.

{
  unsigned int meanM = 0;

  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++)
    meanM += _pop->getPatch(i)->nbEmigrant;
  meanEmigrant = (double)meanM/_pop->getPatchNbr();
  return meanEmigrant;
}
double MPStatHandler::getMeanImigrantPerPatch ( )

Definition at line 55 of file stats_demo.cc.

{
  double meanM = 0,nbpatch = 0;
  Patch* current_patch;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
    current_patch = _pop->getPatch(i);
    if(!current_patch->get_isExtinct()){
      meanM += current_patch->nbImigrant;
      nbpatch++;
    }
  }
  meanImigrant = (nbpatch != 0 ? meanM/nbpatch : nanf("NULL"));
  return meanImigrant;
}
double MPStatHandler::getMeanKolonisersPerPatch ( )

Definition at line 113 of file stats_demo.cc.

{
  double mean = 0,nbpatch = 0;
  Patch* current_patch;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++){
    current_patch = _pop->getPatch(i);
    if(current_patch->nbKolonisers >= 0) {
      mean += current_patch->nbKolonisers;
      nbpatch++;
    }
  }
  meanKolonisers = (nbpatch != 0 ? mean/nbpatch : nanf("NULL"));
  return meanKolonisers;
}
double MPStatHandler::getMeanKolonisersProportion ( )

Definition at line 96 of file stats_demo.cc.

{
  double nbpatch = 0, mean = 0;
  Patch* current_patch;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++){
    current_patch = _pop->getPatch(i);
    if(current_patch->nbKolonisers >= 0) {
      mean += fmin((double)current_patch->nbKolonisers / current_patch->get_K(), 1.0);
      nbpatch++;
    }
  }

  return  (nbpatch != 0 ? mean/nbpatch : nanf("NULL"));
}
double MPStatHandler::getMeanMatings ( unsigned int  sex)

Definition at line 363 of file stats_demo.cc.

{
  double mean = 0, sum = 0;
  unsigned int nbpatch = 0;
  Patch* crnt_patch;

  if((bool)sex) {
    for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
          crnt_patch = _pop->getPatch(i);
      if(crnt_patch->size(FEM, ADLTx) != 0) {
        nbpatch++;
        sum = 0;
        for(unsigned int j = 0; j < crnt_patch->size(FEM, ADLTx);++j)
          sum += crnt_patch->get(FEM, ADLTx, j)->getTotMatings();
        mean += sum/crnt_patch->size(FEM, ADLTx);
      }
    }
  } else {
    for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
          crnt_patch = _pop->getPatch(i);
      if(crnt_patch->size(MAL, ADLTx) != 0) {
        nbpatch++;
        sum = 0;
        for(unsigned int j = 0; j < crnt_patch->size(MAL, ADLTx);++j)
          sum += crnt_patch->get(MAL, ADLTx, j)->getTotMatings();
        mean += sum/crnt_patch->size(MAL, ADLTx);
      }
    }
  }
  return (nbpatch != 0 ? mean/nbpatch : nanf("NULL"));
}
double MPStatHandler::getMeanMigrantRatio ( )

Definition at line 72 of file stats_demo.cc.

double MPStatHandler::getMeanOffsprgFemNumber ( )

Definition at line 193 of file stats_demo.cc.

{
  double mean = 0;
  unsigned int nb_patch = 0;

  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
    nb_patch += (_pop->size(FEM,OFFSPRG,i) != 0);
    mean += _pop->size(FEM,OFFSPRG,i);
  }

  return (nb_patch != 0 ? mean/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanOffsprgMalNumber ( )

Definition at line 208 of file stats_demo.cc.

{
  double mean = 0;
  unsigned int nb_patch = 0;

  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
    nb_patch += (_pop->size(MAL,OFFSPRG,i) != 0);
    mean += _pop->size(MAL,OFFSPRG,i);
  }

  return (nb_patch != 0 ? mean/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanOffsprgPopSatLevel ( )

Definition at line 223 of file stats_demo.cc.

{
  double mean = 0;
  unsigned int nb_patch = 0;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++) {
    nb_patch += (_pop->size(OFFSPRG,i) != 0);
    mean += _pop->getPatch(i)->getPatchOffsprgSatLevel();
  }

  return (nb_patch != 0 ? mean/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanOffsprgPopSatVar ( )

Definition at line 237 of file stats_demo.cc.

{
  unsigned int i,nb_patch;
  vector<double> stat;
  double var = 0, mean = 0, val;

  for(i = 0; i < _pop->getPatchNbr(); i++) {
    if(_pop->size(OFFSPRG,i) != 0){
      val = _pop->getPatch(i)->getPatchOffsprgSatLevel();
      stat.push_back(val);
      mean += val;
    }
  }
  nb_patch = stat.size();
  mean = (nb_patch != 0 ? mean/nb_patch : 0);

  for(i = 0; i < nb_patch; i++)
    var += pow((stat[i]-mean),2);

  return (nb_patch != 0 ? var/nb_patch : nanf("NULL"));
}
double MPStatHandler::getMeanPatchAge ( )

Definition at line 178 of file stats_demo.cc.

{
  int mean = 0;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i)
    mean += _pop->getPatch(i)->get_age();
  return mean/_pop->getPatchNbr();
}
double MPStatHandler::getMeanResidantPerPatch ( )

Definition at line 79 of file stats_demo.cc.

{
  double meanR = 0,nbpatch = 0;
  Patch* current_patch;
  for(unsigned int i = 0; i < _pop->getPatchNbr(); i++){
    current_patch = _pop->getPatch(i);
    if(!current_patch->get_isExtinct()){
      meanR += current_patch->nbPhilopat;
      nbpatch++;
    }
  }
  meanResidant = (nbpatch != 0 ? meanR/nbpatch : nanf("NULL"));
  return meanResidant;
}
double MPStatHandler::getObsrvdExtinctionRate ( ) [inline]

Definition at line 75 of file MPStatHandler.h.

References ObservedExtinctionRate.

double MPStatHandler::getOffFemNumber ( unsigned int  i)

Definition at line 622 of file stats_demo.cc.

{return _pop->size(FEM, OFFSPRG,i);}
double MPStatHandler::getOffMalNumber ( unsigned int  i)

Definition at line 623 of file stats_demo.cc.

{return _pop->size(MAL, OFFSPRG,i);}
double MPStatHandler::getOffsprgNumber ( )

Definition at line 620 of file stats_demo.cc.

{return _pop->size(OFFSPRG);}
double MPStatHandler::getOffsprgSexRatio ( )

Definition at line 618 of file stats_demo.cc.

{return (_pop->size(MAL, OFFSPRG)!= 0 ? (double)_pop->size(FEM, OFFSPRG)/_pop->size(MAL, OFFSPRG) : 0);}
double MPStatHandler::getOffspringNumber ( unsigned int  i)

Definition at line 621 of file stats_demo.cc.

{return _pop->size(OFFSPRG, i);}
double MPStatHandler::getPatchAge ( unsigned int  i)

Definition at line 172 of file stats_demo.cc.

{
  Patch* patch = _pop->getPatch(i);
  return (patch != 0 ? patch->get_age() : 0);
}
double MPStatHandler::getPedProportion ( unsigned int  i) [inline]

Definition at line 116 of file MPStatHandler.h.

References _ped_prop.

{return _ped_prop[i];}
double MPStatHandler::getReproductiveVar ( ) [inline]

Definition at line 101 of file MPStatHandler.h.

References _var_reprod_success.

double MPStatHandler::getResidantInPatch ( unsigned int  i)

Definition at line 134 of file stats_demo.cc.

{
  Patch* patch = _pop->getPatch(i);
  return (patch != 0 ? patch->nbPhilopat : 0);
}
double MPStatHandler::getSibProportion ( unsigned int  i) [inline]

Definition at line 111 of file MPStatHandler.h.

References _sib_prop.

{return _sib_prop[i];}
void MPStatHandler::setKinClassCounter ( Individual I1,
Individual I2 
)

Definition at line 558 of file stats_demo.cc.

{
  //non sibs
  if((I1->getMotherID() != I2->getMotherID()) && (I1->getFatherID() != I2->getFatherID()))
    _sib_prop[0]++;
  
  //maternal half sibs
  else if((I1->getMotherID() == I2->getMotherID()) && (I1->getFatherID() != I2->getFatherID()))
    _sib_prop[1]++;
  
  //paternal half sibs
  else if((I1->getMotherID() != I2->getMotherID()) && (I1->getFatherID() == I2->getFatherID()))
    _sib_prop[2]++;
  
  //full sibs
  else if((I1->getMotherID() == I2->getMotherID()) && (I1->getFatherID() == I2->getFatherID()))
    _sib_prop[3]++;
}  
void MPStatHandler::setKinship ( )

Definition at line 469 of file stats_demo.cc.

{
  unsigned int i,j,k;
  unsigned int patchNbr = this->_pop->getPatchNbr(), Msize=0, Fsize=0;
  Patch* current_patch;
  Individual *I1,*I2;
  
  //counters initialization
  for(i = 0; i < 5; ++i) _sib_prop[i] = 0.0;
  
  for( i = 0; i < patchNbr; ++i) {
    
    current_patch = _pop->getPatch(i);
    
    //male-male
        if ( (Msize = current_patch->size(MAL, OFFSx)) != 0) {
      
          for(j = 0; j < Msize -1; ++j) {
        
        I1 = current_patch->get(MAL, OFFSx, j);
        
                for(k = j+1; k < Msize; ++k) {
          
          I2 = current_patch->get(MAL, OFFSx, k);
          
          setKinClassCounter(I1, I2);
          
                } //end for k < size
        
        //selfed offspring counter:
        if(I1->getIsSelfed()) _sib_prop[4]++;
                
          } //end for j < size-1    
      
      //don't forget the last one!
      if(current_patch->get(MAL, OFFSx, Msize -1)->getIsSelfed()) _sib_prop[4]++;
      
        }//endif
    
    //female-female
        if ( (Fsize = current_patch->size(FEM, OFFSx)) != 0) {
      
          for(j = 0; j < Fsize -1; ++j) {
        
        I1 = current_patch->get(FEM, OFFSx, j);
        
                for(k = j+1; k < Fsize; ++k) {
          
          I2 = current_patch->get(FEM, OFFSx, k);
          
          setKinClassCounter(I1, I2);
          
                } //end for k < size  
        
          //selfed offspring counter:
        if(I1->getIsSelfed()) _sib_prop[4]++;
        
          } //end for j < size-1
      
      //don't forget the last one!
      if(current_patch->get(FEM, OFFSx, Fsize -1)->getIsSelfed()) _sib_prop[4]++;

        }//endif
    
    //male-female
    for(j = 0; j < Msize; ++j) {
      
      I1 = current_patch->get(MAL, OFFSx, j);
      
      for(k = 0; k < Fsize; ++k) {
        
        I2 = current_patch->get(FEM, OFFSx, k);
        
        setKinClassCounter(I1, I2);        
      } //end for k
    } //end for j

  } //end for i < patchNbr
  
  //total number of pairwise comparisons:
  double tot = _sib_prop[0] + _sib_prop[1] + _sib_prop[2] + _sib_prop[3];
  
  for(i = 0 ; i < 4; ++i) _sib_prop[i] /= tot;

  _sib_prop[4] /= _pop->size(OFFSPRG);
}
void MPStatHandler::setObsrvdExtinctionRate ( )

Definition at line 162 of file stats_demo.cc.

void MPStatHandler::setPedegreeCount ( )

Definition at line 580 of file stats_demo.cc.

{
  
  unsigned int i,j;
  unsigned int patchNbr = _pop->getPatchNbr();
  Patch* patch;
  
  //counters initialization
  for(i = 0; i < 5; ++i) _ped_prop[i] = 0.0;
  
  for(i = 0; i < patchNbr; ++i) {
    
    patch = _pop->getPatch(i);
    
    //males
    for(j = 0; j < patch->size(MAL, OFFSx); ++j) {
      
      _ped_prop[ patch->get(MAL, OFFSx, j)->getPedigreeClass() ]++;
      
    }  
    
    //females
    for(j = 0; j < patch->size(FEM, OFFSx); ++j) {
      
      _ped_prop[ patch->get(FEM, OFFSx, j)->getPedigreeClass() ]++;
      
    }
    
    
  } //end for i < patchNbr
  
  //total:
  double tot = _ped_prop[0] + _ped_prop[1] + _ped_prop[2] + _ped_prop[3] + _ped_prop[4];
  
  for(i = 0 ; i < 5; ++i) _ped_prop[i] /= tot;
  
}
double MPStatHandler::setReproductiveStats ( unsigned int  sex)

Definition at line 397 of file stats_demo.cc.

{
  double var = 0, mean = 0;
  unsigned int tot_size = _pop->size( (sex_t)sex, ADULTS ), v = 0;
  double *stat;
  Patch *crnt_patch;

  if(tot_size == 0) {
    _var_reprod_success = nanf("NULL");
    return nanf("NULL");
  }
  
  stat = new double [tot_size];
  
  //females
  if((bool)sex) {
    
    for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
          crnt_patch = _pop->getPatch(i);
      for(unsigned int j = 0, size = crnt_patch->size(FEM, ADLTx);
          j < size;
          ++j)
      {
        stat[v] = crnt_patch->get(FEM, ADLTx, j)->getTotRealizedFecundity();
        mean += stat[v];
        v++;
      }
    }
    
    mean /= tot_size;
    
    for(unsigned int i = 0; i < tot_size; ++i)
      var += pow( (stat[i] - mean), 2);
   
    var /= tot_size;
  //males
  } else {
    
    for(unsigned int i = 0; i < _pop->getPatchNbr(); ++i) {
          crnt_patch = _pop->getPatch(i);
      for(unsigned int j = 0, size = crnt_patch->size(MAL, ADLTx);
          j < size;
          ++j)
      {
        stat[v] = crnt_patch->get(MAL, ADLTx, j)->getTotRealizedFecundity();
        mean += stat[v];
        v++;
      }
    }
    
    mean /= tot_size;
    
    for(unsigned int i = 0; i < tot_size; ++i)
      var += pow( (stat[i] - mean), 2);
    
    var /= tot_size;
    
  }
  
  _var_reprod_success = var;
  
  delete [] stat;
  
  return mean;
}
bool MPStatHandler::setStatRecorders ( std::string &  token) [virtual]

Implements StatHandlerBase.

Definition at line 42 of file MPStatHandler.cc.

{
#ifdef _DEBUG_
  message("-MPStatHandler::setStatRecorders ");
#endif
  
  if(token.compare("extrate") == 0) {
    
    add("Extinction rate","extrate",ALL,0,0,&MPStatHandler::getObsrvdExtinctionRate,0,0,
        &MPStatHandler::setObsrvdExtinctionRate);
                
  } else if(token.compare("pop") == 0) {
    
    setStatsForPop();
    
  } else if(token.compare("popperpatch") == 0) {
    
    setStatsForPopPerPatch();
    
  } else if(token.compare("adultsexratio") == 0) {
    
    add("Adults sex ratio","adlt.sexratio",ADULTS,0,0,&MPStatHandler::getAdultSexRatio,0,0,0);
    
  } else if(token.compare("offsexratio") == 0) {
    
    add("Offspring Sex Ratio","off.sexratio",OFFSPRG,0,0,&MPStatHandler::getOffsprgSexRatio,0,0,0);
    
  } else if(token.compare("migrants") == 0) {
    
    setStatsForMigrants();
    
  } else if(token.compare("migrants.perpatch") == 0) {
    
    setStatsForMigrantsPerPatch();
    
  } else if(token.compare("demography") == 0) {
    
    add("Offspring Number","off.nbr",OFFSPRG,0,0,&MPStatHandler::getOffsprgNumber,0,0,0);
    add("Offspring Fem nbr","off.nbfem",OFFSPRG,0,0,&MPStatHandler::getMeanOffsprgFemNumber,0,0,0);
    add("Offspring Mal nbr","off.nbmal",OFFSPRG,0,0,&MPStatHandler::getMeanOffsprgMalNumber,0,0,0);
    add("Offspring Sat var","off.satvar",OFFSPRG,0,0,&MPStatHandler::getMeanOffsprgPopSatVar,0,0,0);
    
    add("Adults Number","adlt.nbr",ADULTS,0,0,&MPStatHandler::getAdultsNumber,0,0,0);
    add("Adults Fem nbr","adlt.nbfem",ADULTS,0,0,&MPStatHandler::getMeanAdultsFemNumber,0,0,0);
    add("Adults Mal nbr","adlt.nbmal",ADULTS,0,0,&MPStatHandler::getMeanAdultsMalNumber,0,0,0);
    add("Adults Sat level","adlt.satlvl",ADULTS,0,0,&MPStatHandler::getMeanAdultsPopSatLevel,0,0,0);
    add("Adults Sat var","adlt.satvar",ADULTS,0,0,&MPStatHandler::getMeanAdultsPopSatVar,0,0,0);
    add("Adults sex ratio","adlt.sexratio",ADULTS,0,0,&MPStatHandler::getAdultSexRatio,0,0,0);    
    
  } else if(token.compare("fecundity") == 0) {
    
    add("Females assigned fecundity","adlt.femfec",ADULTS,1,0,0,&MPStatHandler::getMeanMatings,0,0);
    add("Females realized fecundity","adlt.femrealfec",ADULTS,1,0,0,&MPStatHandler::setReproductiveStats,0,0);
    add("Females reproductive var  ","adlt.femvarfec",ADULTS,0,0,&MPStatHandler::getReproductiveVar,0,0,0);
    add("Males realized fecundity  ","adlt.malrealfec",ADULTS,0,0,0,&MPStatHandler::setReproductiveStats,0,0);   
    add("Males reproductive var    ","adlt.malvarfec",ADULTS,0,0,&MPStatHandler::getReproductiveVar,0,0,0); 
    
  } else if(token.compare("kinship") == 0) {
    
    add("Proportion of full-sib offspring","off.fsib",OFFSPRG,3,0,0,&MPStatHandler::getSibProportion,0,&MPStatHandler::setKinship);
    add("Proportion of paternal half-sib ","off.phsib",OFFSPRG,2,0,0,&MPStatHandler::getSibProportion,0,0);
    add("Proportion of maternal half-sib ","off.mhsib",OFFSPRG,1,0,0, &MPStatHandler::getSibProportion,0,0);
    add("Proportion of non-sib offspring ","off.nsib",OFFSPRG,0,0,0,&MPStatHandler::getSibProportion,0,0);
    add("Proportion of selfed offspring  ","off.self",OFFSPRG,4,0,0,&MPStatHandler::getSibProportion,0,0);
    
  } else if(token == "pedigree") {
    
    add("Proportion of other deme mated","ped.outb",OFFSPRG,0,0,0,&MPStatHandler::getPedProportion,0,&MPStatHandler::setPedegreeCount);
    add("Proportion of same deme mated ","ped.outw",OFFSPRG,1,0,0,&MPStatHandler::getPedProportion,0,0);
    add("Proportion of half-sib mated ","ped.hsib",OFFSPRG,2,0,0, &MPStatHandler::getPedProportion,0,0);
    add("Proportion of full-sib mated ","ped.fsib",OFFSPRG,3,0,0,&MPStatHandler::getPedProportion,0,0);
    add("Proportion of selfed mated ","ped.self",OFFSPRG,4,0,0,&MPStatHandler::getPedProportion,0,0);    
    
  } else
    return false;
  
  return true;
}
void MPStatHandler::setStatsForMigrants ( )

Definition at line 198 of file MPStatHandler.cc.

{
  add("Emigrant nbr","emigrants",ADULTS,0,0,&MPStatHandler::getMeanEmigrantPerPatch,0,0,0);
  add("Imigrant nbr","imigrants",ADULTS,0,0,&MPStatHandler::getMeanImigrantPerPatch,0,0,0);
  add("Residant nbr","residents",ADULTS,0,0,&MPStatHandler::getMeanResidantPerPatch,0,0,0);
  add("Imigration rate","imigrate",ADULTS,0,0,&MPStatHandler::getMeanMigrantRatio,0,0,0);
  add("Coloniser nbr","colonisers",ADULTS,0,0,&MPStatHandler::getMeanKolonisersPerPatch,0,0,0);
  add("Colonisation rate","colonrate",ADULTS,0,0,&MPStatHandler::getMeanKolonisersProportion,0,0,0);
}
void MPStatHandler::setStatsForMigrantsPerPatch ( )

Definition at line 208 of file MPStatHandler.cc.

{  std::ostringstream name, sub_name;
  
  add("Emigrants patch 1","emigr.p1", ADULTS,0,0,0,&MPStatHandler::getEmigrantInPatch,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Emigrants patch "<<i+1;
    sub_name<<"emigr.p"<<i+1;
    add(name.str(),sub_name.str(),ADULTS,i,0,0,&MPStatHandler::getEmigrantInPatch,0,0);
    name.str("");
    sub_name.str("");
  }
  
  add("Residants patch 1","resid.p1", ADULTS,0,0,0,&MPStatHandler::getResidantInPatch,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Residants patch "<<i+1;
    sub_name<<"resid.p"<<i+1;
    add(name.str(),sub_name.str(),ADULTS,i,0,0,&MPStatHandler::getResidantInPatch,0,0);
    name.str("");
    sub_name.str("");
  }
  
  add("Imig. rate patch 1","imrate.p1", ADULTS,0,0,0,&MPStatHandler::getImigrateInPatch,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Imig. rate patch "<<i+1;
    sub_name<<"imrate.p"<<i+1;
    add(name.str(),sub_name.str(),ADULTS,i,0,0,&MPStatHandler::getImigrateInPatch,0,0);
    name.str("");
    sub_name.str("");
  }
  
  add("Colons patch 1","colo.p1", ADULTS,0,0,0,&MPStatHandler::getKolonisersInPatch,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Colons patch "<<i+1;
    sub_name<<"colo.p"<<i+1;
    add(name.str(),sub_name.str(),ADULTS,i,0,0,&MPStatHandler::getKolonisersInPatch,0,0);
    name.str("");
    sub_name.str("");
  }
}
void MPStatHandler::setStatsForPop ( )

Definition at line 121 of file MPStatHandler.cc.

{
  add("Offspring Number","off.nbr",OFFSPRG,0,0,&MPStatHandler::getOffsprgNumber,0,0,0);
  add("Offspring Fem nbr","off.nbfem",OFFSPRG,0,0,&MPStatHandler::getMeanOffsprgFemNumber,0,0,0);
  add("Offspring Mal nbr","off.nbmal",OFFSPRG,0,0,&MPStatHandler::getMeanOffsprgMalNumber,0,0,0);
  add("Offspring Sat var","off.satvar",OFFSPRG,0,0,&MPStatHandler::getMeanOffsprgPopSatVar,0,0,0);
  add("Adults Number","adlt.nbr",ADULTS,0,0,&MPStatHandler::getAdultsNumber,0,0,0);
  add("Adults Fem nbr","adlt.nbfem",ADULTS,0,0,&MPStatHandler::getMeanAdultsFemNumber,0,0,0);
  add("Adults Mal nbr","adlt.nbmal",ADULTS,0,0,&MPStatHandler::getMeanAdultsMalNumber,0,0,0);
  add("Adults Sat level","adlt.satlvl",ADULTS,0,0,&MPStatHandler::getMeanAdultsPopSatLevel,0,0,0);
  add("Adults Sat var","adlt.satvar",ADULTS,0,0,&MPStatHandler::getMeanAdultsPopSatVar,0,0,0);
  add("Adults sex ratio","adlt.sexratio",ADULTS,0,0,&MPStatHandler::getAdultSexRatio,0,0,0);
  
  add("Females assigned fecundity","adlt.femfec",ADULTS,1,0,0,&MPStatHandler::getMeanAssignedFecundity,0,0);
        add("Females realized fecundity","adlt.femrealfec",ADULTS,1,0,0,&MPStatHandler::setReproductiveStats,0,0);
        add("Females reproductive var  ","adlt.femvarfec",ADULTS,0,0,&MPStatHandler::getReproductiveVar,0,0,0);
        add("Males realized fecundity  ","adlt.malrealfec",ADULTS,0,0,0,&MPStatHandler::setReproductiveStats,0,0);   
        add("Males reproductive var    ","adlt.malvarfec",ADULTS,0,0,&MPStatHandler::getReproductiveVar,0,0,0); 
  
  add("Mean patch age","patch.avrg.age",ALL,0,0,&MPStatHandler::getMeanPatchAge,0,0,0);
  add("Extinction rate","extrate",ALL,0,0,&MPStatHandler::getObsrvdExtinctionRate,0,0,
      &MPStatHandler::setObsrvdExtinctionRate);
}
void MPStatHandler::setStatsForPopPerPatch ( )

Definition at line 145 of file MPStatHandler.cc.

{
  std::ostringstream name, sub_name;
  
  add("Offsprg Fem Nbr p1","off.fem.p1", OFFSPRG,0,0,0,&MPStatHandler::getOffFemNumber,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Patch "<<i+1;
    sub_name<<"off.fem.p"<<i+1;
    add(name.str(),sub_name.str(),OFFSPRG,i,0,0,&MPStatHandler::getOffFemNumber,0,0);
    name.str("");
    sub_name.str("");
  }
  add("Offsprg Mal Nbr p1","off.mal.p1", OFFSPRG,0,0,0,&MPStatHandler::getOffMalNumber,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Patch "<<i+1;
    sub_name<<"off.mal.p"<<i+1;
    add(name.str(),sub_name.str(),OFFSPRG,i,0,0,&MPStatHandler::getOffMalNumber,0,0);
    name.str("");
    sub_name.str("");
  }
  
  add("Adult Fem Nbr p1","adlt.fem.p1",ADULTS,0,0,0,&MPStatHandler::getFemNumber,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Patch "<<i+1;
    sub_name<<"adlt.fem.p"<<i+1;
    add(name.str(),sub_name.str(),ADULTS,i,0,0,&MPStatHandler::getFemNumber,0,0);
    name.str("");
    sub_name.str("");
  }
  
  add("Adult Mal Nbr p1","adlt.mal.p1",ADULTS,0,0,0,&MPStatHandler::getMalNumber,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Patch "<<i+1;
    sub_name<<"adlt.mal.p"<<i+1;
    add(name.str(),sub_name.str(),ADULTS,i,0,0,&MPStatHandler::getMalNumber,0,0);
    name.str("");
    sub_name.str("");
  }
  
  add("Patch 1 age","age.patch1",ALL,0,0,0,&MPStatHandler::getPatchAge,0,0);
  for(unsigned int i = 1; i < _pop->getPatchNbr(); i++) {
    name<<"Patch "<<i+1<<" age";
    sub_name<<"age.patch"<<i+1;
    add(name.str(),sub_name.str(),ALL,i,0,0,&MPStatHandler::getPatchAge,0,0);
    name.str("");
    sub_name.str("");
  }
  
  add("Mean patch age","patch.avrg.age",ALL,0,0,&MPStatHandler::getMeanPatchAge,0,0,0);
  add("Extinction rate","extrate",ALL,0,0,&MPStatHandler::getObsrvdExtinctionRate,0,0,
      &MPStatHandler::setObsrvdExtinctionRate);
}

Member Data Documentation

double MPStatHandler::_ped_prop[5] [private]

Definition at line 44 of file MPStatHandler.h.

Referenced by getPedProportion().

double MPStatHandler::_sib_prop[5] [private]

Definition at line 44 of file MPStatHandler.h.

Referenced by getSibProportion().

Definition at line 45 of file MPStatHandler.h.

Referenced by getReproductiveVar().

double MPStatHandler::meanDeadDisp [private]

Definition at line 42 of file MPStatHandler.h.

double MPStatHandler::meanEmigrant [private]

Definition at line 42 of file MPStatHandler.h.

double MPStatHandler::meanImigrant [private]

Definition at line 42 of file MPStatHandler.h.

Definition at line 42 of file MPStatHandler.h.

double MPStatHandler::meanResidant [private]

Definition at line 42 of file MPStatHandler.h.

Definition at line 43 of file MPStatHandler.h.

Referenced by getObsrvdExtinctionRate().


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