Nemo  2.4.2
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
LCEmisc.h
Go to the documentation of this file.
1 
28 #ifndef LCEMISC_H
29 #define LCEMISC_H
30 
31 #include <iostream>
32 #include <string>
33 #include <map>
34 #include "types.h"
35 #include "lifecycleevent.h"
36 #include "fileservices.h"
37 #include "statservices.h"
38 #include "filehandler.h"
39 #include "stathandler.h"
40 #include "Uniform.h"
41 
42 // LCE_Regulation
43 //
49 {
50 public:
51 
52  LCE_Regulation( ) : LifeCycleEvent("regulation","") {}
53 
54  virtual ~LCE_Regulation( ) { }
55 
56  void regulatePatch (Patch* patch, age_idx age, sex_t sex);
57 
58  //implementations:
59  virtual bool setParameters () {return true;}
60  virtual void execute ();
61  virtual LCE_Regulation* clone ( ) {return new LCE_Regulation();}
62  virtual void loadFileServices ( FileServices* loader ) {}
63  virtual void loadStatServices ( StatServices* loader ) {}
64  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
65  virtual age_t removeAgeClass ( ) {return NONE;}
66  virtual age_t addAgeClass ( ) {return NONE;}
67  virtual age_t requiredAgeClass () {return NONE;}
68 };
69 
70 // LCE_Aging
71 //
78 {
79 public:
80 
81  LCE_Aging( ) : LifeCycleEvent("aging","") {}
82 
83  virtual ~LCE_Aging( ) { }
84 
85  //implementations:
86  virtual bool setParameters () {return true;}
87  virtual void execute ();
88  virtual LCE_Aging* clone ( ) {return new LCE_Aging();}
89  virtual void loadFileServices ( FileServices* loader ) {}
90  virtual void loadStatServices ( StatServices* loader ) {}
91  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
92  virtual age_t removeAgeClass ( ) {return OFFSPRG;}
93  virtual age_t addAgeClass ( ) {return ADULTS;}
94  virtual age_t requiredAgeClass () {return OFFSPRG;}
95 };
96 
97 // LCE_Patch_Extinction
98 //
102 {
119 
120  unsigned int (LCE_Patch_Extinction:: *_rand_size_fct) (double);
121 
122  unsigned int rand_uniform (double max) {return RAND::Uniform((unsigned int)max);}
123  unsigned int rand_poisson (double mean){return (unsigned int)RAND::Poisson(mean);}
124  unsigned int rand_gaussian (double mean){return (unsigned int)abs(mean + RAND::Gaussian(_harvest_dist_stdev));}
125  unsigned int rand_exp (double mean){return (unsigned int)(-1.0 * mean * log(1.0-RAND::Uniform()));}
126  unsigned int rand_lognormal (double mean){return (unsigned int)RAND::LogNormal(mean, _harvest_dist_stdev);}
127 
128 public:
129 
132  {
133  if(_Xtion_rate) delete _Xtion_rate;
134  if(_harvest_size) delete _harvest_size;
136  }
137 
138  bool set_matrix_param (TMatrix* mat, string name);
139  void do_flush (Patch *patch);
140  void do_remove (age_idx AGE, Patch *patch);
141  unsigned int get_harvest_size (age_idx AGE, Patch *patch);
142 
143  //LifeCycleEvent interface:
144  virtual bool setParameters ();
145  virtual void execute ();
146  virtual LifeCycleEvent* clone ( ) {return new LCE_Patch_Extinction();}
147 
148  //SimComponent interface:
149  virtual void loadFileServices ( FileServices* loader ) {}
150  virtual void loadStatServices ( StatServices* loader ) {}
151  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
152  virtual age_t removeAgeClass ( ) {return 0;}
153  virtual age_t addAgeClass ( ) {return 0;}
154  virtual age_t requiredAgeClass () {return 0;}
155 };
156 
157 class FHPedigreeReader;
158 
159 //CROSSING
160 //
162 class LCE_Cross : public LifeCycleEvent
163 {
164  unsigned int _nSire, _nDam;
165  unsigned int _nOffspring;
166  unsigned int _atGeneration;
168 
171  map<unsigned long, Individual* > _pedigree_pop;
172 
173 public:
174 
175  LCE_Cross( );
176  virtual ~LCE_Cross( ) { }
177 
178  void sampleAmongPop(Patch* patch, deque<Individual*>& males, unsigned int nsire);
179  void sampleWithinPop(Patch* patch, deque<Individual*>& males, deque<Individual*>& females, unsigned int nsire);
180  void generatePedigree ();
182 
183  //LifeCycleEvent interface:
184  virtual bool setParameters ();
185  virtual void execute ();
186  virtual LifeCycleEvent* clone ( ) {return new LCE_Cross();}
187 
188  //SimComponent interface:
189  virtual void loadFileServices ( FileServices* loader );
190  virtual void loadStatServices ( StatServices* loader ) {}
191  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
192  virtual age_t removeAgeClass ( ) {return 0;}
193  virtual age_t addAgeClass ( ) {return OFFSPRG;}
194  virtual age_t requiredAgeClass () {return ADULTS;}
195 
196 };
197 
198 //CROSSING FILE READER
199 //
201 class FHPedigreeReader : public EventFileHandler<LCE_Cross> {
202 public:
203  FHPedigreeReader(LCE_Cross* event); // : EventFileHandler< LCE_Cross > (event, ".ped");
204  virtual ~FHPedigreeReader(){}
205 
206  virtual void FHwrite () {}
207  virtual void FHread (string& filename);
208 
209  vector< unsigned long * >& getPedigree() {return _pedigree;}
210 
211 private:
212  vector< unsigned long * > _pedigree;
213 };
214 
215 
216 //RESIZE POP
217 //
220 {
221  list< int >::const_iterator _genITER;
223  list< int > _generations;
228 public:
229 
230  LCE_Resize( );
231  virtual ~LCE_Resize( ) { if(_patchBackup) delete _patchBackup;}
232 
235  void removeDesignatedPatch(bool do_backup);
236  void updatePatchCapacities();
237  void fillPop ( void (LCE_Resize:: *fillFuncPtr) (unsigned int p, age_idx age));
238  void fillPatchNoBackup(unsigned int p, age_idx age);
239  void fillPatchWithBackup(unsigned int p, age_idx age);
240  void regulate( void (LCE_Resize::* regFuncPtr) (Patch *patch, age_idx age));
241  void regulateAgeClassWithBackup(Patch *patch, age_idx age);
242  void regulateAgeClassNoBackup(Patch *patch, age_idx age);
243 
244  //LifeCycleEvent interface:
245  virtual bool setParameters ();
246  bool updateParameters ();
247  virtual void execute ();
248  virtual LifeCycleEvent* clone ( ) {return new LCE_Resize();}
249 
250  //SimComponent interface:
251  virtual void loadFileServices ( FileServices* loader ) {}
252  virtual void loadStatServices ( StatServices* loader ) {}
253  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
254  virtual age_t removeAgeClass ( ) {return 0;}
255  virtual age_t addAgeClass ( ) {return 0;}
256  virtual age_t requiredAgeClass () {return 0;}
257 
258 };
259 
260 
261 #endif //LCEMISC_H
Nemo2.
Template class for the LCEs StatHandler classes.
Definition: filehandler.h:256
A class to read a pedigree from a file.
Definition: LCEmisc.h:201
virtual void FHwrite()
Definition: LCEmisc.h:206
virtual ~FHPedigreeReader()
Definition: LCEmisc.h:204
vector< unsigned long * > _pedigree
Definition: LCEmisc.h:212
vector< unsigned long * > & getPedigree()
Definition: LCEmisc.h:209
FHPedigreeReader(LCE_Cross *event)
Definition: LCEmisc.cc:721
virtual void FHread(string &filename)
Definition: LCEmisc.cc:726
A class to manage the files associated with each components of the simulation.
Definition: fileservices.h:50
This class contains traits along with other individual information (sex, pedigree,...
Definition: individual.h:47
Removes all adults from the patches and randomly moves the offspring to the adults age class.
Definition: LCEmisc.h:78
virtual ~LCE_Aging()
Definition: LCEmisc.h:83
virtual bool setParameters()
Definition: LCEmisc.h:86
virtual age_t requiredAgeClass()
Definition: LCEmisc.h:94
virtual void loadFileServices(FileServices *loader)
Definition: LCEmisc.h:89
LCE_Aging()
Definition: LCEmisc.h:81
virtual age_t addAgeClass()
Definition: LCEmisc.h:93
virtual age_t removeAgeClass()
Definition: LCEmisc.h:92
virtual void execute()
Definition: LCEmisc.cc:43
virtual void loadStatServices(StatServices *loader)
Definition: LCEmisc.h:90
virtual LCE_Aging * clone()
Definition: LCEmisc.h:88
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: LCEmisc.h:91
A class to perform crosses within patches, implements the NC1 mating design.
Definition: LCEmisc.h:163
void sampleAmongPop(Patch *patch, deque< Individual * > &males, unsigned int nsire)
Definition: LCEmisc.cc:639
void sampleWithinPop(Patch *patch, deque< Individual * > &males, deque< Individual * > &females, unsigned int nsire)
Definition: LCEmisc.cc:678
virtual void loadStatServices(StatServices *loader)
Definition: LCEmisc.h:190
virtual void loadFileServices(FileServices *loader)
Definition: LCEmisc.cc:432
virtual LifeCycleEvent * clone()
Definition: LCEmisc.h:186
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: LCEmisc.h:191
unsigned int _nDam
Definition: LCEmisc.h:164
bool _doWithinPop
Definition: LCEmisc.h:167
FHPedigreeReader * _reader
Definition: LCEmisc.h:169
bool _doAmongPop
Definition: LCEmisc.h:167
virtual ~LCE_Cross()
Definition: LCEmisc.h:176
virtual age_t requiredAgeClass()
Definition: LCEmisc.h:194
virtual age_t removeAgeClass()
Definition: LCEmisc.h:192
map< unsigned long, Individual * > _pedigree_pop
Definition: LCEmisc.h:171
unsigned int _atGeneration
Definition: LCEmisc.h:166
unsigned int _nSire
Definition: LCEmisc.h:164
bool _doReplace
Definition: LCEmisc.h:167
unsigned int _nOffspring
Definition: LCEmisc.h:165
virtual void execute()
Definition: LCEmisc.cc:451
bool create_individual_ancestors(Individual *ind)
Definition: LCEmisc.cc:573
LCE_Cross()
Definition: LCEmisc.cc:380
virtual age_t addAgeClass()
Definition: LCEmisc.h:193
string _pedigree_file
Definition: LCEmisc.h:170
virtual bool setParameters()
Definition: LCEmisc.cc:398
void generatePedigree()
Definition: LCEmisc.cc:508
Randomly removes individuals from the patches according to the extinction rate parameter.
Definition: LCEmisc.h:102
TMatrix * _harvest_proportion
Proportion of the patch size to remove.
Definition: LCEmisc.h:108
LCE_Patch_Extinction()
Definition: LCEmisc.cc:130
void do_remove(age_idx AGE, Patch *patch)
Definition: LCEmisc.cc:326
unsigned int(LCE_Patch_Extinction::* _rand_size_fct)(double)
Definition: LCEmisc.h:120
void do_flush(Patch *patch)
Definition: LCEmisc.cc:317
virtual void loadFileServices(FileServices *loader)
Definition: LCEmisc.h:149
bool _by_proportion
Definition: LCEmisc.h:112
unsigned int rand_exp(double mean)
Definition: LCEmisc.h:125
double _harvest_dist_shape
shape variable to use with the gamma dist.
Definition: LCEmisc.h:116
virtual ~LCE_Patch_Extinction()
Definition: LCEmisc.h:131
double _harvest_dist_stdev
Standard deviate to use with the Gaussian dist.
Definition: LCEmisc.h:114
virtual age_t addAgeClass()
Definition: LCEmisc.h:153
unsigned int rand_lognormal(double mean)
Definition: LCEmisc.h:126
unsigned int rand_uniform(double max)
Definition: LCEmisc.h:122
virtual bool setParameters()
Definition: LCEmisc.cc:148
string _harvest_distribution
Name of the distribution to use.
Definition: LCEmisc.h:110
virtual age_t requiredAgeClass()
Definition: LCEmisc.h:154
virtual age_t removeAgeClass()
Definition: LCEmisc.h:152
virtual LifeCycleEvent * clone()
Definition: LCEmisc.h:146
unsigned int rand_poisson(double mean)
Definition: LCEmisc.h:123
bool set_matrix_param(TMatrix *mat, string name)
Definition: LCEmisc.cc:253
unsigned int get_harvest_size(age_idx AGE, Patch *patch)
Definition: LCEmisc.cc:355
unsigned int rand_gaussian(double mean)
Definition: LCEmisc.h:124
double _extinction_threshold
Patch extinction threshold in % of total size of the patch.
Definition: LCEmisc.h:118
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: LCEmisc.h:151
bool _harvest_size_varies
Flags.
Definition: LCEmisc.h:112
bool _by_size
Definition: LCEmisc.h:112
TMatrix * _harvest_size
Number of individual to remove per patch.
Definition: LCEmisc.h:106
virtual void execute()
Definition: LCEmisc.cc:282
TMatrix * _Xtion_rate
Patch extinction probability.
Definition: LCEmisc.h:104
virtual void loadStatServices(StatServices *loader)
Definition: LCEmisc.h:150
Regulates the patches to their carrying capacity, acts on each age class separately.
Definition: LCEmisc.h:49
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: LCEmisc.h:64
virtual age_t requiredAgeClass()
Definition: LCEmisc.h:67
virtual void loadFileServices(FileServices *loader)
Definition: LCEmisc.h:62
virtual age_t removeAgeClass()
Definition: LCEmisc.h:65
virtual bool setParameters()
Definition: LCEmisc.h:59
LCE_Regulation()
Definition: LCEmisc.h:52
void regulatePatch(Patch *patch, age_idx age, sex_t sex)
Definition: LCEmisc.cc:116
virtual void execute()
Definition: LCEmisc.cc:89
virtual void loadStatServices(StatServices *loader)
Definition: LCEmisc.h:63
virtual ~LCE_Regulation()
Definition: LCEmisc.h:54
virtual LCE_Regulation * clone()
Definition: LCEmisc.h:61
virtual age_t addAgeClass()
Definition: LCEmisc.h:66
A class to change the size of the population/patches during a simulation.
Definition: LCEmisc.h:220
virtual age_t addAgeClass()
Definition: LCEmisc.h:255
age_t _setAge
Definition: LCEmisc.h:226
void fillPatchWithBackup(unsigned int p, age_idx age)
Definition: LCEmisc.cc:1102
void fillPatchNoBackup(unsigned int p, age_idx age)
Definition: LCEmisc.cc:1089
void fillPop(void(LCE_Resize::*fillFuncPtr)(unsigned int p, age_idx age))
Definition: LCEmisc.cc:1072
Patch * _patchBackup
Definition: LCEmisc.h:227
void regulateAgeClassNoBackup(Patch *patch, age_idx age)
Definition: LCEmisc.cc:1149
virtual void loadStatServices(StatServices *loader)
Definition: LCEmisc.h:252
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: LCEmisc.h:253
virtual LifeCycleEvent * clone()
Definition: LCEmisc.h:248
TMatrix _patch2keep
Definition: LCEmisc.h:225
int _atGeneration
Definition: LCEmisc.h:222
bool _do_fill
Definition: LCEmisc.h:224
bool _do_regulate
Definition: LCEmisc.h:224
bool updateParameters()
Definition: LCEmisc.cc:835
void regulate(void(LCE_Resize::*regFuncPtr)(Patch *patch, age_idx age))
Definition: LCEmisc.cc:1117
void buildNewPatchArrayNoBackup()
Definition: LCEmisc.cc:998
virtual void execute()
Definition: LCEmisc.cc:880
void updatePatchCapacities()
Definition: LCEmisc.cc:983
list< int > _generations
Definition: LCEmisc.h:223
LCE_Resize()
Definition: LCEmisc.cc:791
void regulateAgeClassWithBackup(Patch *patch, age_idx age)
Definition: LCEmisc.cc:1129
void buildNewPatchArrayWithBackup()
Definition: LCEmisc.cc:1011
virtual bool setParameters()
Definition: LCEmisc.cc:810
void removeDesignatedPatch(bool do_backup)
Definition: LCEmisc.cc:1034
virtual age_t requiredAgeClass()
Definition: LCEmisc.h:256
list< int >::const_iterator _genITER
Definition: LCEmisc.h:221
virtual void loadFileServices(FileServices *loader)
Definition: LCEmisc.h:251
virtual age_t removeAgeClass()
Definition: LCEmisc.h:254
virtual ~LCE_Resize()
Definition: LCEmisc.h:231
bool _do_flush
Definition: LCEmisc.h:224
Base class of the Life Cycle Events, declares the LCE interface.
Definition: lifecycleevent.h:71
Second class in the metapopulation design structure, between the Metapop and Individual classes.
Definition: metapop.h:430
static double Poisson(double mean)
From the Numerical Recieps.
Definition: Uniform.h:229
static double Gaussian(double sigma)
Definition: Uniform.h:271
static double Uniform()
Generates a random number from [0.0, 1.0[ uniformly distributed.
Definition: Uniform.h:125
static double LogNormal(double zeta, double sigma)
Definition: Uniform.h:367
Interface to all basic components of a simulation (traits, life cycle events, pop,...
Definition: simcomponent.h:43
The Service class used to manage the StatHandler objects.
Definition: statservices.h:48
A class to handle matrix in params, coerces matrix into a vector of same total size.
Definition: tmatrix.h:48
Nemo2.
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:34
#define NONE
No age flag.
Definition: types.h:46
unsigned int age_t
Age class flags.
Definition: types.h:44
#define ADULTS
Adults age class flag (breeders).
Definition: types.h:52
#define OFFSPRG
Offspring age class flag.
Definition: types.h:48
age_idx
Array index of the age classes in the patch sizes and containers arrays.
Definition: types.h:39

Generated for Nemo v2.4.2 by  doxygen 1.9.1

Catalogued on GSR