Nemo  2.3.56
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
LCEselection.h
Go to the documentation of this file.
1
30#ifndef LCE_SELECTION_H
31#define LCE_SELECTION_H
32
33#include <cmath>
34#include "lifecycleevent.h"
35#include "filehandler.h"
36#ifdef HAS_GSL
37#include <gsl/gsl_vector.h>
38#include <gsl/gsl_matrix.h>
39#endif
40
41class LCE_SelectionSH;
42class LCE_SelectionFH;
43//CLASS LCE_Selection_base
44//
50class LCE_Selection_base : public virtual LifeCycleEvent
51{
54
55 vector< TMatrix* > _selection_matrix;
56 vector< gsl_matrix* > _gsl_selection_matrix;
57 gsl_vector *_diffs, *_res1;
64 double *_phe;
65
67
70
72 double _Fpedigree[5];
73
77
79
80
82 friend class LCE_SelectionSH;
83 friend class LCE_SelectionFH;
84 friend class LCE_Breed_Selection;
85
86protected:
87
92 double _fitness[5], _survival[5], _ind_cntr[5];
93
96
99
101 vector< double > _selection_variance;
102
106
108 vector< string > _Traits;
109
111 vector< unsigned int > _TraitIndices;
112
114 vector< string > _SelectionModels;
115
118
119 vector< double (LCE_Selection_base::* ) (Individual*, unsigned int, unsigned int) > _getRawFitness;
120
124
129
134
137
138public:
139
141
142 virtual ~LCE_Selection_base ( );
143
144 bool setSelectionMatrix();
146 bool set_sel_model ();
147 bool set_fit_model ();
148 bool set_local_optima ();
150
152 void addPhenotypicSD (unsigned int deme, double *stDev);
153 void changeLocalOptima ();
154
156 void resetCounters ();
157
161 void setMeans (unsigned int tot_ind);
162
165 double getMeanFitness (age_idx age);
166
170 double getMeanPatchFitness (age_idx age, unsigned int p);
171
174 double getMaxFitness (age_idx age);
175
179 double getMaxPatchFitness (age_idx age, unsigned int p);
180
181
184 double setMeanFitness (age_idx age) { return (_mean_fitness = getMeanFitness(age));}
185
190 double getFitness (Individual* ind, unsigned int patch)
191 {
192 return (this->*_getFitness)(ind, patch);
193 }
194
196 double getFitnessFixedEffect (Individual* offsprg, unsigned int patch, unsigned int trait)
197 {
198 return _FitnessFixModel[ offsprg->getPedigreeClass() ];
199 }
200
202 double getFitnessDirect (Individual* offsprg, unsigned int patch, unsigned int trait)
203 {
204 return *(double*)offsprg->getTraitValue(trait);
205 }
207 double getFitnessUnivariateQuadratic ( Individual* ind, unsigned int patch, unsigned int trait);
208
210 double getFitnessMultivariateGaussian (Individual* offsprg, unsigned int patch, unsigned int trait);
211
213 double getFitnessUnivariateGaussian (Individual* offsprg, unsigned int patch, unsigned int trait);
214
216 double getFitnessMultivariateGaussian_VE (Individual* offsprg, unsigned int patch, unsigned int trait);
217
219 double getFitnessUnivariateGaussian_VE (Individual* offsprg, unsigned int patch, unsigned int trait);
220
221
226 double getFitnessAbsolute (Individual* ind, unsigned int patch);
227
235 double getFitnessRelative (Individual* ind, unsigned int patch)
236 {
237 return getFitnessAbsolute(ind, patch) * _scaling_factor;
238 }
239
243 void setScalingFactorLocal (age_idx age, unsigned int p);
244
250 void setScalingFactorGlobal (age_idx age, unsigned int p);
251
255 void setScalingFactorMaxLocal (age_idx age, unsigned int p);
256
262 void setScalingFactorMaxGlobal (age_idx age, unsigned int p);
263
267 void setScalingFactorAbsolute (age_idx age, unsigned int p) { _scaling_factor = 1; }
268
276 void doViabilitySelection (sex_t SEX, age_idx AGE, Patch* patch, unsigned int p);
277
280 virtual bool setParameters ();
281 virtual void execute ();
282 virtual void loadStatServices (StatServices* loader);
283 virtual void loadFileServices (FileServices* loader);
284 virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
285 virtual LifeCycleEvent* clone () {return new LCE_Selection_base();}
286 virtual age_t removeAgeClass () {return NONE;}
287 virtual age_t addAgeClass () {return NONE;}
288 virtual age_t requiredAgeClass () {return OFFSPRG;}
290};
291
292
294class LCE_SelectionSH : public EventStatHandler< LCE_Selection_base, LCE_SelectionSH >
295{
296
297 vector< vector< double > > _phenoTable;
299
300public:
301
304 _table_set_gen(999999), _table_set_age(999999), _table_set_repl(999999)
305 {}
306
307 virtual ~LCE_SelectionSH() {}
308
309 virtual bool setStatRecorders (string& token);
310
311 void addMeanPerPatch (age_t AGE);
312 void addVarPerPatch (age_t AGE);
313 void setDataTable (age_t AGE);
316
317
319 double getFitness (unsigned int i) {return _SHLinkedEvent->_fitness[i];}
320 double getSurvival (unsigned int i) {return _SHLinkedEvent->_survival[i];}
321 double getPedProp (unsigned int i) {return _SHLinkedEvent->_ind_cntr[i];}
322 double getMeanPatchFitness (unsigned int i, unsigned int int_agex);
323 double getMeanPatchFitness (unsigned int i);
324 double getVarPatchFitness (unsigned int i, unsigned int int_agex);
325};
326
327class LCE_SelectionFH : public virtual EventFileHandler< LCE_Selection_base >
328{
329
330 public:
331
333
334 virtual ~LCE_SelectionFH() {}
335
336 virtual void FHwrite();
337
338 virtual void FHread(string& filename) {}
339
340 void print(ofstream& FH, sex_t SEX, age_idx AGE, unsigned int i, Patch* patch, unsigned int ntraits);
341};
342
343
344#endif
345
Template class for the LCEs StatHandler classes.
Definition: filehandler.h:247
Template class for the LCEs StatHandler classes.
Definition: stathandler.h:190
LCE_Selection_base * _SHLinkedEvent
Pointer to the linked LCE.
Definition: stathandler.h:193
A class to manage the files associated with each components of the simulation.
Definition: fileservices.h:52
This class contains traits along with other individual information (sex, pedigree,...
Definition: individual.h:49
void * getTraitValue(IDX T)
Accessor to the value (phenotype) of a particular trait.
Definition: individual.h:271
unsigned int getPedigreeClass()
Returns the pedigree class of the individual, as set during offspring creation.
Definition: individual.h:179
Composite LCE implementing breeding and viability selection on a given trait type.
Definition: LCEcomposite.h:214
Definition: LCEselection.h:328
virtual void FHwrite()
Definition: LCEselection.cc:1391
LCE_SelectionFH(LCE_Selection_base *event)
Definition: LCEselection.h:332
virtual void FHread(string &filename)
Definition: LCEselection.h:338
void print(ofstream &FH, sex_t SEX, age_idx AGE, unsigned int i, Patch *patch, unsigned int ntraits)
Definition: LCEselection.cc:1430
virtual ~LCE_SelectionFH()
Definition: LCEselection.h:334
StatHandler class for the LCE_Selection class.
Definition: LCEselection.h:295
double getVarPatchFitness(unsigned int i, unsigned int int_agex)
Definition: LCEselection.cc:1369
double getSurvival(unsigned int i)
Definition: LCEselection.h:320
unsigned int _table_set_age
Definition: LCEselection.h:298
double getMeanPatchFitness(unsigned int i, unsigned int int_agex)
Definition: LCEselection.cc:1342
void addVarPerPatch(age_t AGE)
Definition: LCEselection.cc:1237
unsigned int _table_set_repl
Definition: LCEselection.h:298
void setOffsprgTable()
Definition: LCEselection.h:315
double getMeanFitness()
Definition: LCEselection.h:318
void setAdultTable()
Definition: LCEselection.h:314
vector< vector< double > > _phenoTable
Definition: LCEselection.h:297
virtual ~LCE_SelectionSH()
Definition: LCEselection.h:307
virtual bool setStatRecorders(string &token)
Definition: LCEselection.cc:1145
void addMeanPerPatch(age_t AGE)
Definition: LCEselection.cc:1203
double getPedProp(unsigned int i)
Definition: LCEselection.h:321
double getFitness(unsigned int i)
Definition: LCEselection.h:319
unsigned int _table_set_gen
Definition: LCEselection.h:298
LCE_SelectionSH(LCE_Selection_base *event)
Definition: LCEselection.h:302
void setDataTable(age_t AGE)
Definition: LCEselection.cc:1271
Base class performing (viability) selection on an arbitrary trait.
Definition: LCEselection.h:51
double getFitnessUnivariateGaussian_VE(Individual *offsprg, unsigned int patch, unsigned int trait)
Returns the fitness of an individual following the Gaussian selection model with several traits under...
Definition: LCEselection.cc:742
int _selectTraitDimension
Number of quantitative traits under selection.
Definition: LCEselection.h:98
double getFitnessRelative(Individual *ind, unsigned int patch)
Returns the relative fitness of the individual, adjusted by a scaling factor.
Definition: LCEselection.h:235
bool setSelectionMatrix()
Definition: LCEselection.cc:440
double _fitness[5]
Fitness counters, one for each pedigree class.
Definition: LCEselection.h:92
double _base_fitness
Definition: LCEselection.h:88
double(LCE_Selection_base::* _getFitness)(Individual *, unsigned int)
Pointer to the function returning the individual fitness.
Definition: LCEselection.h:123
virtual void loadFileServices(FileServices *loader)
Definition: LCEselection.cc:116
double getFitnessFixedEffect(Individual *offsprg, unsigned int patch, unsigned int trait)
Returns the fitness of an individual in the fixed selection model.
Definition: LCEselection.h:196
double getFitnessDirect(Individual *offsprg, unsigned int patch, unsigned int trait)
Returns the fitness of an individual following the direct selection model.
Definition: LCEselection.h:202
void setScalingFactorAbsolute(age_idx age, unsigned int p)
Resets the fitness scaling factor equal to one.
Definition: LCEselection.h:267
double _max_fitness
Definition: LCEselection.h:89
double _FitnessFixModel[5]
Absolute fitness values of the five pedigree class for the fixed selection model (lethal equivalents ...
Definition: LCEselection.h:76
double getMeanFitness(age_idx age)
Computes the mean fitness of the whole population for a given age class.
Definition: LCEselection.cc:791
vector< gsl_matrix * > _gsl_selection_matrix
Definition: LCEselection.h:56
double getFitnessUnivariateQuadratic(Individual *ind, unsigned int patch, unsigned int trait)
Quadratic fitness surface, approximates the Gaussian model for weak selection and/or small deviation ...
Definition: LCEselection.cc:690
void addPhenotypicSD(unsigned int deme, double *stDev)
Definition: LCEselection.cc:1083
void setScalingFactorMaxGlobal(age_idx age, unsigned int p)
Sets the fitness scaling factor equal to the inverse of the maximum population fitness value.
Definition: LCEselection.cc:887
void doViabilitySelection(sex_t SEX, age_idx AGE, Patch *patch, unsigned int p)
Selectively removes individuals in the population depending on their fitness.
Definition: LCEselection.cc:939
vector< double > _selection_variance
Patch-specific selection variance.
Definition: LCEselection.h:101
LCE_SelectionFH * _writer
Definition: LCEselection.h:136
vector< unsigned int > _TraitIndices
The indices of the traits under selection.
Definition: LCEselection.h:111
gsl_vector * _diffs
Definition: LCEselection.h:57
bool set_param_rate_of_change()
Definition: LCEselection.cc:605
void(LCE_Selection_base::* _setScalingFactor)(age_idx, unsigned int)
Pointer to the function used to set the fitness scaling factor when fitness is relative.
Definition: LCEselection.h:128
bool _is_absolute
Definition: LCEselection.h:90
double getMaxFitness(age_idx age)
Computes the maximum fitness value of the whole population for a given age class.
Definition: LCEselection.cc:825
double _eVariance
Evironmental variance.
Definition: LCEselection.h:104
void setScalingFactorMaxLocal(age_idx age, unsigned int p)
Sets the fitness scaling factor equal to the inverse of the maximum local patch fitness value.
Definition: LCEselection.cc:879
TMatrix _rate_of_change_local_optima
Definition: LCEselection.h:59
double _scaling_factor
Definition: LCEselection.h:89
bool _do_change_local_opt
Definition: LCEselection.h:60
bool _is_local
Definition: LCEselection.h:90
double getMeanPatchFitness(age_idx age, unsigned int p)
Computes the mean fitness in a given patch for a given age class.
Definition: LCEselection.cc:809
virtual age_t addAgeClass()
Definition: LCEselection.h:287
virtual void execute()
Definition: LCEselection.cc:897
double getFitness(Individual *ind, unsigned int patch)
Calls the fitness function according to the fitness model.
Definition: LCEselection.h:190
void setMeans(unsigned int tot_ind)
Computes the average fitness of each pedigree class.
Definition: LCEselection.cc:983
virtual ~LCE_Selection_base()
Definition: LCEselection.cc:89
void resetCounters()
Resets the fitness counters.
Definition: LCEselection.cc:972
double getFitnessMultivariateGaussian_VE(Individual *offsprg, unsigned int patch, unsigned int trait)
Returns the fitness of an individual following the Gaussian selection model with one trait under sele...
Definition: LCEselection.cc:758
gsl_vector * _res1
Definition: LCEselection.h:57
bool set_sel_model()
Definition: LCEselection.cc:263
double getFitnessMultivariateGaussian(Individual *offsprg, unsigned int patch, unsigned int trait)
Returns the fitness of an individual following the Gaussian selection model with one trait under sele...
Definition: LCEselection.cc:720
virtual age_t removeAgeClass()
Definition: LCEselection.h:286
double _ind_cntr[5]
Definition: LCEselection.h:92
virtual bool setParameters()
Definition: LCEselection.cc:152
unsigned int _set_std_rate_at_generation
Definition: LCEselection.h:61
double _mean_fitness
Definition: LCEselection.h:89
bool set_fit_model()
Definition: LCEselection.cc:205
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: LCEselection.h:284
LCE_Selection_base()
Definition: LCEselection.cc:46
LCE_SelectionSH * _stater
Definition: LCEselection.h:135
int _std_rate_reference_patch
Definition: LCEselection.h:62
void changeLocalOptima()
Definition: LCEselection.cc:1135
void(LCE_Selection_base::* _setNewLocalOptima)(void)
Pointer to the function used to change the local phenotypic optima or its rate of change.
Definition: LCEselection.h:132
double * _phe
Array to temporarily hold the phenotypic values of an individual, is never allocated.
Definition: LCEselection.h:64
double _Fpedigree[5]
Array of pedigree values used in the fixed-selection model.
Definition: LCEselection.h:72
virtual LifeCycleEvent * clone()
Definition: LCEselection.h:285
vector< double(LCE_Selection_base::*)(Individual *, unsigned int, unsigned int) > _getRawFitness
A vector containing pointers to fitness function related to each trait under selection.
Definition: LCEselection.h:119
bool set_local_optima()
Definition: LCEselection.cc:575
TMatrix * _local_optima
Definition: LCEselection.h:58
double _letheq
Definition: LCEselection.h:88
void setScalingFactorGlobal(age_idx age, unsigned int p)
Sets the fitness scaling factor equal to the inverse of the mean population fitness.
Definition: LCEselection.cc:869
double getMaxPatchFitness(age_idx age, unsigned int p)
Computes the maximum fitness value in a given patch for a given age class.
Definition: LCEselection.cc:841
vector< TMatrix * > _selection_matrix
Definition: LCEselection.h:55
vector< string > _SelectionModels
The selection models associated with each trait under selection.
Definition: LCEselection.h:114
bool _rate_of_change_is_std
Definition: LCEselection.h:60
virtual age_t requiredAgeClass()
Definition: LCEselection.h:288
void setScalingFactorLocal(age_idx age, unsigned int p)
Sets the fitness scaling factor equal to the inverse of the mean local patch fitness.
Definition: LCEselection.cc:861
double _survival[5]
Definition: LCEselection.h:92
vector< string > _Traits
The list of trait types under selection.
Definition: LCEselection.h:108
double getFitnessAbsolute(Individual *ind, unsigned int patch)
Returns the raw fitness of the individual, without adjustment (absolute fitness).
Definition: LCEselection.cc:779
virtual void loadStatServices(StatServices *loader)
Definition: LCEselection.cc:108
void set_std_rate_of_change()
Definition: LCEselection.cc:999
double setMeanFitness(age_idx age)
Sets the _mean_fitness variable to the value of the mean population fitness.
Definition: LCEselection.h:184
double getFitnessUnivariateGaussian(Individual *offsprg, unsigned int patch, unsigned int trait)
Returns the fitness of an individual following the Gaussian selection model with several traits under...
Definition: LCEselection.cc:705
Base class of the Life Cycle Events, declares the LCE interface.
Definition: lifecycleevent.h:73
Second class in the metapopulation design structure, between the Metapop and Individual classes.
Definition: metapop.h:430
Interface to all basic components of a simulation (traits, life cycle events, pop,...
Definition: simcomponent.h:45
The Service class used to manage the StatHandler objects.
Definition: statservices.h:50
A class to handle matrix in params, coerces matrix into a vector of same total size.
Definition: tmatrix.h:49
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:36
#define NONE
No age flag.
Definition: types.h:48
unsigned int age_t
Age class flags.
Definition: types.h:46
#define ADULTS
Adults age class flag (breeders).
Definition: types.h:54
#define OFFSPRG
Offspring age class flag.
Definition: types.h:50
age_idx
Array index of the age classes in the patch sizes and containers arrays.
Definition: types.h:41

Generated for Nemo v2.3.56 by  doxygen 1.9.0 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR