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

Generated for Nemo v2.4.2 by  doxygen 1.9.1

Catalogued on GSR