Nemo  2.4.0
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
ttwolbachia.h
Go to the documentation of this file.
1 
30 #ifndef TTWOLBACHIA_H
31 #define TTWOLBACHIA_H
32 
33 #include "ttrait.h"
34 #include "lifecycleevent.h"
35 #include "filehandler.h"
36 #include "stathandler.h"
37 #include "binarystoragebuffer.h"
38 #include "Uniform.h"
39 #include "LCEbreed.h"
40 
41 class TTWolbachiaSH;
42 
43 // ------------------------------------------------------------------------------
44 
45 // TTWolbachia
46 
47 // ------------------------------------------------------------------------------
52 class TTWolbachia : public TTrait
53 {
54 private:
55  double _transmit_rate;
57 
58 public:
59 
61  : _transmit_rate(0), _is_infected(0) { }
62 
65 
66 
67  virtual ~TTWolbachia () {}
68 
69  void set_transmit_rate (double val) {_transmit_rate = val;}
70 
71  virtual void init () {_is_infected = 0;}
72  virtual void init_sequence () {_is_infected = 0;}
73  virtual void reset () {_is_infected = 0;}
74  virtual void inherit (const TTrait* mother, const TTrait* father)
75  { _is_infected = *(bool*)mother->getValue(); }
76  virtual void mutate ()
78  virtual void* set_trait (void* value)
79  { _is_infected = *(bool*)value; return &_is_infected; }
80  virtual void set_sequence (void** seq) { }
81  virtual void set_value () { }
82  virtual void* getValue () const {return (void*)&_is_infected;}
83  virtual trait_t get_type () const {return WOLB;}
84  virtual void** get_sequence () const {return NULL;}
85  virtual unsigned int get_allele (int loc, int all) const {return _is_infected;}
86  virtual double get_allele_value(int loc, int all) const {return _is_infected;}
87  virtual void set_allele_value(unsigned int locus, unsigned int allele, double value) {_is_infected=(bool)value;}
88  virtual void show_up () {}
89  virtual TTWolbachia* clone () {return new TTWolbachia(*this);}
90  virtual TTWolbachia& operator= (const TTrait& T);
91  virtual bool operator== (const TTrait& T);
92  virtual bool operator!= (const TTrait& T);
93 
94  virtual void store_data (BinaryStorageBuffer* saver)
95  {
96  unsigned char dummy = static_cast<unsigned char>(_is_infected);
97  saver->store(&dummy, 1);
98  }
99  virtual bool retrieve_data (BinaryStorageBuffer* reader)
100  {
101  unsigned char dummy;
102  reader->read(&dummy, 1);
103  _is_infected = dummy;
104  return true;
105  }
106 
107 };
108 
109 // ------------------------------------------------------------------------------
110 
111 // TProtoWolbachia
112 
113 // ------------------------------------------------------------------------------
116 public:
117  TProtoWolbachia();
120 
121  virtual void init(){}
122  virtual void reset(){}
123  virtual bool setParameters()
124  { _transmit_rate = get_parameter_value("wolbachia_transmission_rate"); return true;}
125 
126  virtual TTWolbachia* hatch()
127  {
128  TTWolbachia* new_trait = new TTWolbachia();
129  new_trait->set_transmit_rate(_transmit_rate);
130  return new_trait;
131  }
132 
133  virtual TProtoWolbachia* clone() {return new TProtoWolbachia(*this);}
134 
135  virtual trait_t get_type ( ) const {return WOLB;}
137  virtual int get_phenotype_dimension () {return 1;}
139  virtual int get_allele_number () {return 2;}
141  virtual int get_locus_number () {return 1;}
143  virtual bool is_mappable () {return false;}
145  virtual bool is_mapped () {return false;}
147  virtual vector< unsigned int > get_locus_map_positions () {return vector<unsigned int>(1,0);}
148 
149 
150  virtual void store_data (BinaryStorageBuffer* saver) {/*we have nothing to save...*/}
151  virtual bool retrieve_data (BinaryStorageBuffer* reader) {return true;}
152 
153  virtual void loadFileServices ( FileServices* loader ) {}
154  virtual void loadStatServices ( StatServices* loader );
155  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
156 
157 
158 private:
159 
162 };
163 
164 // ------------------------------------------------------------------------------
165 
166 // TTWolbachiaSH
167 
168 // ------------------------------------------------------------------------------
170 class TTWolbachiaSH : public TraitStatHandler<TProtoWolbachia, TTWolbachiaSH> {
171 
173  int _TTidx;
175 public:
176 
179  _trait(TT), _TTidx(TT->get_index()), _Fmean(0), _Mmean(0), _var(0), _extrate(0) {}
180 
181  virtual ~TTWolbachiaSH ( ) { }
182 
183  virtual bool setStatRecorders (string& token);
184 
185  void setInfectionStats ( );
186  double getMeanInfection (unsigned int sex) {return ((bool)sex ? _Fmean : _Mmean);}
187  double getMeanOffsprgInfection (unsigned int sex);
188  double getMeanFemaleInfection_perPatch (unsigned int patch);
189  double getMeanMaleInfection_perPatch (unsigned int patch);
190  double getMeanOffsprgFemaleInfection_perPatch (unsigned int patch);
191  double getMeanOffsprgMaleInfection_perPatch (unsigned int patch);
192  double getIcompatibleMatingFreq ( );
193  double getDemicInfectionVar ( ) {return _var;}
194  double getDemicExtinctionRate ( ) {return _extrate;}
195 };
196 
197 
198 
199 class TTWolbachiaFH;
200 
201 
205 class LCE_Breed_Wolbachia : public virtual LCE_Breed_base {
206 
207  double _incomp_cost;
208  double _fec_cost;
211  unsigned int _inoculum_time;
212  unsigned int _model;
213 
215 
217 
218  void inoculate_wolbachia();
219  double hasInfectedFemale ();
220 
221 public:
222 
224 
225  virtual ~LCE_Breed_Wolbachia ( );
226 
227  void wolbachia_model_1 ();
228  void wolbachia_model_2 ();
229 
230  virtual bool setParameters ();
231  virtual void execute ();
232 
233  virtual LifeCycleEvent* clone ( )
234  { return new LCE_Breed_Wolbachia(); }
235 
236 
237  virtual void loadFileServices ( FileServices* loader );
238  virtual void loadStatServices ( StatServices* loader ) {}
239  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
240  virtual age_t removeAgeClass ( ) {return 0;}
241  virtual age_t addAgeClass ( ) {return OFFSPRG;}
242  virtual age_t requiredAgeClass () {return ADULTS;}
243 };
244 
245 // ------------------------------------------------------------------------------
246 
247 // ****** TTWolbachiaFH ******
248 
249 // ------------------------------------------------------------------------------
254 class TTWolbachiaFH: public EventFileHandler<LCE_Breed_Wolbachia> {
255 
256  map< unsigned int, unsigned int > _times;
257  vector< double > _rate;
258 
259 public:
260 
262  : EventFileHandler<LCE_Breed_Wolbachia> (TP, ".wolb")
263  { }
264 
265  //TTWolbachiaFH ( ) { }
266  virtual ~TTWolbachiaFH ( ) { }
267 
268  void record (unsigned int repl, unsigned int gen, double infection);
269 
270  virtual void FHwrite ();
271 
272  virtual void FHread (string& filename) {}
273 
274 };
275 
276 #endif //TTWOLBACHIA_H
277 
Nemo2.
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
Template class for the LCEs StatHandler classes.
Definition: filehandler.h:257
A class to manage the files associated with each components of the simulation.
Definition: fileservices.h:51
Breeding LCE when individuals carry the Wolbachia endosymbiotic parasite.
Definition: ttwolbachia.h:205
unsigned int _model
Definition: ttwolbachia.h:212
virtual void loadFileServices(FileServices *loader)
Definition: ttwolbachia.cc:232
double _fec_cost
Definition: ttwolbachia.h:208
virtual void execute()
Definition: ttwolbachia.cc:246
virtual ~LCE_Breed_Wolbachia()
Definition: ttwolbachia.cc:183
TTWolbachiaFH * _writer
Definition: ttwolbachia.h:216
TMatrix * _inoculum_size
Definition: ttwolbachia.h:210
LCE_Breed_Wolbachia()
Definition: ttwolbachia.cc:169
void inoculate_wolbachia()
Definition: ttwolbachia.cc:377
double hasInfectedFemale()
Definition: ttwolbachia.cc:403
double _incomp_cost
Definition: ttwolbachia.h:207
virtual age_t addAgeClass()
Definition: ttwolbachia.h:241
virtual LifeCycleEvent * clone()
Definition: ttwolbachia.h:233
virtual bool setParameters()
Definition: ttwolbachia.cc:190
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: ttwolbachia.h:239
void wolbachia_model_1()
Definition: ttwolbachia.cc:283
double _infected_fec
Definition: ttwolbachia.h:209
unsigned int _inoculum_time
Definition: ttwolbachia.h:211
virtual void loadStatServices(StatServices *loader)
Definition: ttwolbachia.h:238
void wolbachia_model_2()
Definition: ttwolbachia.cc:329
virtual age_t removeAgeClass()
Definition: ttwolbachia.h:240
virtual age_t requiredAgeClass()
Definition: ttwolbachia.h:242
void(LCE_Breed_Wolbachia::* _breed_func_ptr)()
Definition: ttwolbachia.h:214
Base class for the breeding (and mating) life cycle events.
Definition: LCEbreed.h:45
Base class of the Life Cycle Events, declares the LCE interface.
Definition: lifecycleevent.h:72
static double Uniform()
Generates a random number from [0.0, 1.0[ uniformly distributed.
Definition: Uniform.h:126
Interface to all basic components of a simulation (traits, life cycle events, pop,...
Definition: simcomponent.h:44
virtual double get_parameter_value(std::string name)
Param value getter.
Definition: simcomponent.h:142
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 Wolbachia trait.
Definition: ttwolbachia.h:115
virtual void loadStatServices(StatServices *loader)
Definition: ttwolbachia.cc:64
double _transmit_rate
Definition: ttwolbachia.h:160
virtual TTWolbachia * hatch()
Definition: ttwolbachia.h:126
virtual bool is_mappable()
Checks if the trait is mappable, i.e., if the loci can be placed on a genetic map.
Definition: ttwolbachia.h:143
virtual int get_allele_number()
Returns the number of allele per locus.
Definition: ttwolbachia.h:139
virtual void reset()
Definition: ttwolbachia.h:122
virtual void init()
Definition: ttwolbachia.h:121
TTWolbachiaSH * _stats
Definition: ttwolbachia.h:161
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: ttwolbachia.h:155
virtual bool is_mapped()
Checks if the trait's loci are placed on a genetic map.
Definition: ttwolbachia.h:145
virtual vector< unsigned int > get_locus_map_positions()
Returns the map positions of the loci in vector.
Definition: ttwolbachia.h:147
~TProtoWolbachia()
Definition: ttwolbachia.cc:57
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttwolbachia.h:150
virtual bool setParameters()
Definition: ttwolbachia.h:123
virtual int get_locus_number()
Returns the number of locus.
Definition: ttwolbachia.h:141
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttwolbachia.h:151
virtual void loadFileServices(FileServices *loader)
Definition: ttwolbachia.h:153
virtual trait_t get_type() const
Definition: ttwolbachia.h:135
virtual int get_phenotype_dimension()
Returns the dimension of the phenotype of the trait (size of the array accessed with TTrait::getValue...
Definition: ttwolbachia.h:137
virtual TProtoWolbachia * clone()
Definition: ttwolbachia.h:133
TProtoWolbachia()
Definition: ttwolbachia.cc:40
FileHandler of the Wolbachia trait.
Definition: ttwolbachia.h:254
TTWolbachiaFH(LCE_Breed_Wolbachia *TP)
Definition: ttwolbachia.h:261
virtual void FHwrite()
Definition: ttwolbachia.cc:434
virtual ~TTWolbachiaFH()
Definition: ttwolbachia.h:266
void record(unsigned int repl, unsigned int gen, double infection)
Definition: ttwolbachia.cc:426
virtual void FHread(string &filename)
Definition: ttwolbachia.h:272
map< unsigned int, unsigned int > _times
Definition: ttwolbachia.h:256
vector< double > _rate
Definition: ttwolbachia.h:257
StatHandler of the Wolbachia trait.
Definition: ttwolbachia.h:170
double _Mmean
Definition: ttwolbachia.h:174
int _TTidx
Definition: ttwolbachia.h:173
double _extrate
Definition: ttwolbachia.h:174
virtual bool setStatRecorders(string &token)
Definition: ttwolbachia.cc:113
double getDemicExtinctionRate()
Definition: ttwolbachia.h:194
double getDemicInfectionVar()
Definition: ttwolbachia.h:193
double getMeanInfection(unsigned int sex)
Definition: ttwolbachia.h:186
double getMeanOffsprgFemaleInfection_perPatch(unsigned int patch)
Definition: stats_wolbachia.cc:154
double _Fmean
Definition: ttwolbachia.h:174
double getMeanMaleInfection_perPatch(unsigned int patch)
Definition: stats_wolbachia.cc:142
virtual ~TTWolbachiaSH()
Definition: ttwolbachia.h:181
double _var
Definition: ttwolbachia.h:174
double getMeanFemaleInfection_perPatch(unsigned int patch)
Definition: stats_wolbachia.cc:130
double getIcompatibleMatingFreq()
Definition: stats_wolbachia.cc:180
double getMeanOffsprgMaleInfection_perPatch(unsigned int patch)
Definition: stats_wolbachia.cc:167
TTWolbachiaSH(TProtoWolbachia *TT)
Definition: ttwolbachia.h:177
TProtoWolbachia * _trait
Definition: ttwolbachia.h:172
double getMeanOffsprgInfection(unsigned int sex)
Definition: stats_wolbachia.cc:104
void setInfectionStats()
Definition: stats_wolbachia.cc:34
Trait used to study the dynamics of spread of Wolbachia, an endosymbiotic parasite causing cytoplasmi...
Definition: ttwolbachia.h:53
virtual bool operator==(const TTrait &T)
Definition: ttwolbachia.cc:86
virtual TTWolbachia * clone()
Definition: ttwolbachia.h:89
virtual bool operator!=(const TTrait &T)
Definition: ttwolbachia.cc:98
bool _is_infected
Definition: ttwolbachia.h:56
virtual void * getValue() const
Definition: ttwolbachia.h:82
virtual void init_sequence()
Definition: ttwolbachia.h:72
virtual double get_allele_value(int loc, int all) const
Definition: ttwolbachia.h:86
virtual void * set_trait(void *value)
Definition: ttwolbachia.h:78
TTWolbachia()
Definition: ttwolbachia.h:60
virtual void set_value()
Definition: ttwolbachia.h:81
virtual void mutate()
Definition: ttwolbachia.h:76
virtual void show_up()
Definition: ttwolbachia.h:88
virtual void init()
Definition: ttwolbachia.h:71
TTWolbachia(const TTWolbachia &T)
Definition: ttwolbachia.h:63
void set_transmit_rate(double val)
Definition: ttwolbachia.h:69
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttwolbachia.h:99
virtual trait_t get_type() const
Definition: ttwolbachia.h:83
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttwolbachia.h:87
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttwolbachia.h:94
virtual void inherit(const TTrait *mother, const TTrait *father)
Definition: ttwolbachia.h:74
virtual TTWolbachia & operator=(const TTrait &T)
Definition: ttwolbachia.cc:74
virtual void reset()
Definition: ttwolbachia.h:73
virtual void ** get_sequence() const
Definition: ttwolbachia.h:84
virtual void set_sequence(void **seq)
Definition: ttwolbachia.h:80
virtual ~TTWolbachia()
Definition: ttwolbachia.h:67
double _transmit_rate
Definition: ttwolbachia.h:55
virtual unsigned int get_allele(int loc, int all) const
Definition: ttwolbachia.h:85
Interface for all trait types, declares all basic trait operations.
Definition: ttrait.h:45
virtual void * getValue() const =0
Genotype to phenotype mapper.
TTrait setter.
Definition: ttrait.h:130
Template class for the trait's StatHandler.
Definition: stathandler.h:167
Nemo2.
std::string trait_t
Trait types.
Definition: types.h:62
#define WOLB
Definition: types.h:72
unsigned int age_t
Age class flags.
Definition: types.h:45
#define ADULTS
Adults age class flag (breeders).
Definition: types.h:53
#define OFFSPRG
Offspring age class flag.
Definition: types.h:49

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