Nemo  2.4.0
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
ttdispersal.h
Go to the documentation of this file.
1 
29 #ifndef TTDISPERSALGENE_H
30 #define TTDISPERSALGENE_H
31 
32 #include "ttrait.h"
33 #include "types.h"
34 #include "stathandler.h"
35 #include "metapop.h"
36 #include "binarystoragebuffer.h"
37 
38 class TTDispersalSH;
39 class TProtoDispersal;
40 
42 class TTDispersal : public TTrait
43 {
46  double _mut_rate;
48  double _mut_mean;
53 
55 
59 // trait_t _type;
61  double _sequence[2];
62  double _phenotype;
63 
64 public:
66  TTDispersal (sex_t sex);
69  _init_rate_mal(TP._init_rate_mal), _myProto(TP._myProto), _gender(TP._gender), _phenotype(0) //, _type(TP._type)
70  {}
71  virtual ~TTDispersal () { }
72 
75  void set_mut_rate (double val) {_mut_rate = val;}
76  void set_mut_mean (double val) {_mut_mean = val;}
77  void set_init_rate_fem (double val) {_init_rate_fem = val;}
78  void set_init_rate_mal (double val) {_init_rate_mal = val;}
79  void set_gender (sex_t val) {_gender = val;}
80 // void set_type (trait_t val) {_type = val;}
85  virtual void init ( ) { _sequence[0] = 0.0; _sequence[1] = 0.0; }
86  virtual void init_sequence ( );
87  virtual void reset ( ) {init();}
88  virtual void inherit (const TTrait* mother, const TTrait* father);
89  virtual void mutate ( );
90  virtual trait_t get_type ( ) const {return (_gender == FEM ? FDISP : MDISP);}
91  virtual void set_value ( ) {_phenotype = (_sequence[0] + _sequence[1])/2.0;}
93  virtual void* getValue ( ) const {return (void*)&_phenotype;}
95  virtual void** get_sequence ( ) const {return 0;}
96  virtual unsigned int get_allele (int loc, int all) const {return ( !(all<2) ? 0 : _sequence[all] );}
97  virtual double get_allele_value (int loc, int all) const {return ( !(all<2) ? 0 : _sequence[all] );}
98  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value)
99  {assert(allele < 2); _sequence[allele] = value;}
100  virtual void set_sequence (void** seq) { }
101  virtual void* set_trait (void* value) {return value;}
102  virtual void show_up ( );
103  virtual TTDispersal* clone ( ) {return new TTDispersal(*this);}
104  virtual TTDispersal& operator= (const TTrait& TP);
105  virtual bool operator== (const TTrait& TP);
106  virtual bool operator!= (const TTrait& TP);
107 
108  //implements StorableComponent:
109  virtual void store_data (BinaryStorageBuffer* saver) {saver->store(&_sequence, 2 * sizeof(double));}
110  virtual bool retrieve_data (BinaryStorageBuffer* reader) {reader->read(&_sequence, 2 * sizeof(double));return true;}
112 };
113 // ------------------------------------------------------------------------------
114 
115 // TProtoDispersal
116 
117 // ------------------------------------------------------------------------------
120 
121 public:
122  TProtoDispersal(sex_t sex);
123 
124  TProtoDispersal(const TProtoDispersal& TP);
125 
126  virtual ~TProtoDispersal();
127 
130  virtual void init (){}
131  virtual void reset (){}
132  virtual TTDispersal* hatch ();
133  virtual TProtoDispersal* clone () {return new TProtoDispersal(*this);}
134  virtual trait_t get_type () const {return (_gender == FEM ? FDISP : MDISP);}
136  virtual int get_phenotype_dimension () {return 1;}
138  virtual int get_allele_number () {return 3;} // 3 > 2 means it's not di-allelic
140  virtual int get_locus_number () {return 2;}
142  virtual bool is_mappable () {return false;}
144  virtual bool is_mapped () {return false;}
146  virtual vector< unsigned int > get_locus_map_positions () {return vector<unsigned int>(2,0);}
150  virtual void store_data (BinaryStorageBuffer* saver) {saver->store(&_gender, sizeof(sex_t));}
151  virtual bool retrieve_data (BinaryStorageBuffer* reader) {reader->read(&_gender, sizeof(sex_t));return true;}
155  virtual bool setParameters();
156  virtual void loadFileServices ( FileServices* loader ) {}
157  virtual void loadStatServices ( StatServices* loader );
158  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
160 
161  bool setNonRandom ();
162  bool setRandom ();
163 
164  bool get_init_mode () {return _init_random;}
166  string get_init_dist () {return _init_dist;}
167 
168 private:
170  double _mut_rate;
172  double _mut_mean;
177 
178  string _init_dist;
181 
185 // trait_t _type;
188 };
189 
190 // ------------------------------------------------------------------------------
191 
192 // TTDispersalSH
193 
194 // ------------------------------------------------------------------------------
196 class TTDispersalSH: public StatHandler<TTDispersalSH> {
197 
199 
201 
203 
204 public:
205 
208 
209  virtual ~TTDispersalSH ( ) { }
210  virtual void init ( )
211  {
215  }
216 
217  virtual bool setStatRecorders (std::string& token);
218 
219  void addDispPerPatch (sex_t SEX, age_t AGE);
220 
221  double getmeanOFD () {return _meanOffFemDisp;}
222  double getmeanOMD () {return _meanOffMalDisp;}
223  double getmeanFD () {return _meanFemDisp;}
224  double getmeanMD () {return _meanMalDisp;}
225  double getMeanDispRate ();
226  double getOffsprgMeanDispRate ();
227  double getMeanDispRate (sex_t sex);
228  double getOffsprgMeanDispRate (sex_t sex);
229  double getMeanFemDispRate ();
230  double getMeanMalDispRate ();
231  double getMeanDispRateInPatch (sex_t SEX, age_idx age, unsigned int traitidx, unsigned int i);
232 
233  double getPatchDisp_OF (unsigned int patch)
234  {
235  return getMeanDispRateInPatch(FEM, OFFSx, _fdispIdx, patch);
236  }
237 
238  double getPatchDisp_OM (unsigned int patch)
239  {
240  return getMeanDispRateInPatch(MAL, OFFSx, _mdispIdx, patch);
241  }
242 
243  double getPatchDisp_AF (unsigned int patch)
244  {
245  return getMeanDispRateInPatch(FEM, ADLTx, _fdispIdx, patch);
246  }
247 
248  double getPatchDisp_AM (unsigned int patch)
249  {
250  return getMeanDispRateInPatch(MAL, ADLTx, _mdispIdx, patch);
251  }
252 };
253 #endif //TTDISPERSALGENE_H
254 
A class to store any kind of data in a char buffer before unloading it in a binary data file.
Definition: binarystoragebuffer.h:43
void read(void *out, unsigned int nb_bytes)
Definition: binarystoragebuffer.h:220
void store(void *stream, unsigned int nb_bytes)
Definition: binarystoragebuffer.cc:37
A class to manage the files associated with each components of the simulation.
Definition: fileservices.h:51
int getTraitIndex(trait_t type)
Gives the index of trait with type.
Definition: indfactory.cc:127
Interface to all basic components of a simulation (traits, life cycle events, pop,...
Definition: simcomponent.h:44
virtual void init()
Definition: stathandler.cc:38
Metapop * _pop
Link to the current population, set through the link to the StatService.
Definition: stathandler.h:60
A class to compute and store the summary statistics associated with a SimComponent.
Definition: stathandler.h:109
The Service class used to manage the StatHandler objects.
Definition: statservices.h:49
A class to handle matrix in params, coerces matrix into a vector of same total size.
Definition: tmatrix.h:49
Prototype of the evolving dispersal trait, defines the sex-specific trait type.
Definition: ttdispersal.h:119
TTDispersalSH * _stats
The trait's type.
Definition: ttdispersal.h:187
double _init_rate_mal
Initial allele for male dispersal.
Definition: ttdispersal.h:176
bool get_init_mode()
Definition: ttdispersal.h:164
virtual void loadFileServices(FileServices *loader)
Definition: ttdispersal.h:156
string _init_dist
Definition: ttdispersal.h:178
bool setNonRandom()
Definition: ttdispersal.cc:119
virtual vector< unsigned int > get_locus_map_positions()
Returns the map positions of the loci in vector.
Definition: ttdispersal.h:146
virtual int get_allele_number()
Returns the number of allele per locus.
Definition: ttdispersal.h:138
string get_init_dist()
Definition: ttdispersal.h:166
sex_t _gender
The gender of the trait, will determine its type.
Definition: ttdispersal.h:183
virtual void reset()
Definition: ttdispersal.h:131
double _mut_mean
Mean mutation step.
Definition: ttdispersal.h:172
virtual TTDispersal * hatch()
Definition: ttdispersal.cc:189
bool _init_random
Definition: ttdispersal.h:180
double _init_rate_fem
Initial allele for female dispersal.
Definition: ttdispersal.h:174
virtual bool is_mapped()
Checks if the trait's loci are placed on a genetic map.
Definition: ttdispersal.h:144
TProtoDispersal(sex_t sex)
Definition: ttdispersal.cc:43
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: ttdispersal.h:158
virtual int get_phenotype_dimension()
Returns the dimension of the phenotype of the trait (size of the array accessed with TTrait::getValue...
Definition: ttdispersal.h:136
TMatrix _init_dist_param
Definition: ttdispersal.h:179
virtual trait_t get_type() const
Definition: ttdispersal.h:134
virtual bool setParameters()
Definition: ttdispersal.cc:77
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttdispersal.h:150
virtual TProtoDispersal * clone()
Definition: ttdispersal.h:133
bool setRandom()
Definition: ttdispersal.cc:150
virtual int get_locus_number()
Returns the number of locus.
Definition: ttdispersal.h:140
virtual bool is_mappable()
Checks if the trait is mappable, i.e., if the loci can be placed on a genetic map.
Definition: ttdispersal.h:142
virtual void loadStatServices(StatServices *loader)
Definition: ttdispersal.cc:179
virtual ~TProtoDispersal()
Definition: ttdispersal.cc:70
TMatrix * get_init_dist_params()
Definition: ttdispersal.h:165
double _mut_rate
The allelic mutation rate.
Definition: ttdispersal.h:170
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttdispersal.h:151
virtual void init()
Definition: ttdispersal.h:130
The StatHandler for the evolving dispersal traits.
Definition: ttdispersal.h:196
double getMeanMalDispRate()
Definition: stats_disp.cc:188
virtual ~TTDispersalSH()
Definition: ttdispersal.h:209
int _mdispIdx
Definition: ttdispersal.h:202
int _fdispIdx
Definition: ttdispersal.h:202
double getPatchDisp_AF(unsigned int patch)
Definition: ttdispersal.h:243
double getMeanDispRate()
Definition: stats_disp.cc:55
double getPatchDisp_OF(unsigned int patch)
Definition: ttdispersal.h:233
double _meanOffMalDisp
Definition: ttdispersal.h:200
virtual bool setStatRecorders(std::string &token)
Definition: ttdispersal.cc:357
TProtoDispersal * _trait
Definition: ttdispersal.h:198
void addDispPerPatch(sex_t SEX, age_t AGE)
Definition: ttdispersal.cc:418
double getOffsprgMeanDispRate()
Definition: stats_disp.cc:104
double getmeanOFD()
Definition: ttdispersal.h:221
double _meanMalDisp
Definition: ttdispersal.h:200
double getmeanFD()
Definition: ttdispersal.h:223
double _meanOffFemDisp
Definition: ttdispersal.h:200
double getMeanDispRateInPatch(sex_t SEX, age_idx age, unsigned int traitidx, unsigned int i)
Definition: stats_disp.cc:38
double getMeanFemDispRate()
Definition: stats_disp.cc:169
double getmeanOMD()
Definition: ttdispersal.h:222
virtual void init()
Definition: ttdispersal.h:210
double getPatchDisp_AM(unsigned int patch)
Definition: ttdispersal.h:248
double getPatchDisp_OM(unsigned int patch)
Definition: ttdispersal.h:238
double getmeanMD()
Definition: ttdispersal.h:224
TTDispersalSH(TProtoDispersal *TT)
Definition: ttdispersal.h:206
double _meanFemDisp
Definition: ttdispersal.h:200
Evolving dispersal trait, codes for female (_type = FDISP) or male (_type = MDISP) sex-specific dispe...
Definition: ttdispersal.h:43
void set_mut_mean(double val)
Definition: ttdispersal.h:76
virtual double get_allele_value(int loc, int all) const
Definition: ttdispersal.h:97
void set_init_rate_fem(double val)
Definition: ttdispersal.h:77
void set_proto(TProtoDispersal *P)
Definition: ttdispersal.h:81
double _mut_mean
The mean mutation step.
Definition: ttdispersal.h:48
virtual ~TTDispersal()
Definition: ttdispersal.h:71
double _phenotype
Definition: ttdispersal.h:62
virtual TTDispersal * clone()
Definition: ttdispersal.h:103
void set_mut_rate(double val)
Definition: ttdispersal.h:75
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttdispersal.h:110
virtual void * getValue() const
Definition: ttdispersal.h:93
TTDispersal(sex_t sex)
Definition: ttdispersal.cc:210
virtual void ** get_sequence() const
Definition: ttdispersal.h:95
virtual void init_sequence()
Definition: ttdispersal.cc:261
virtual void reset()
Definition: ttdispersal.h:87
virtual void inherit(const TTrait *mother, const TTrait *father)
Definition: ttdispersal.cc:305
double _mut_rate
The allelic mutation rate.
Definition: ttdispersal.h:46
double _init_rate_fem
Initial allele for female dispersal.
Definition: ttdispersal.h:50
virtual void mutate()
Definition: ttdispersal.cc:316
virtual TTDispersal & operator=(const TTrait &TP)
Definition: ttdispersal.cc:220
double _sequence[2]
The trait's type.
Definition: ttdispersal.h:61
sex_t _gender
the gender of the trait, will determine its type.
Definition: ttdispersal.h:57
virtual bool operator==(const TTrait &TP)
Definition: ttdispersal.cc:237
TTDispersal(const TTDispersal &TP)
Definition: ttdispersal.h:67
void set_gender(sex_t val)
Definition: ttdispersal.h:79
virtual trait_t get_type() const
Definition: ttdispersal.h:90
void set_init_rate_mal(double val)
Definition: ttdispersal.h:78
virtual void set_sequence(void **seq)
Definition: ttdispersal.h:100
virtual unsigned int get_allele(int loc, int all) const
Definition: ttdispersal.h:96
virtual void set_value()
Definition: ttdispersal.h:91
virtual void * set_trait(void *value)
Definition: ttdispersal.h:101
double _init_rate_mal
Initial allele for male dispersal.
Definition: ttdispersal.h:52
virtual bool operator!=(const TTrait &TP)
Definition: ttdispersal.cc:251
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttdispersal.h:109
TProtoDispersal * _myProto
Definition: ttdispersal.h:54
virtual void init()
Definition: ttdispersal.h:85
virtual void show_up()
Definition: ttdispersal.cc:341
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttdispersal.h:98
Interface for all trait types, declares all basic trait operations.
Definition: ttrait.h:45
TTrait setter.
Definition: ttrait.h:130
Nemo2.
Nemo2.
Nemo2.
std::string trait_t
Trait types.
Definition: types.h:62
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:35
@ FEM
Definition: types.h:36
@ MAL
Definition: types.h:36
#define MDISP
Definition: types.h:68
unsigned int age_t
Age class flags.
Definition: types.h:45
age_idx
Array index of the age classes in the patch sizes and containers arrays.
Definition: types.h:40
@ OFFSx
Definition: types.h:41
@ ADLTx
Definition: types.h:41
#define FDISP
Definition: types.h:67

Generated for Nemo v2.4.0 by  doxygen 1.9.1 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR