Nemo  2.4.0b
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
ttquanti.h
Go to the documentation of this file.
1 
30 #ifndef TTQUANTI_H
31 #define TTQUANTI_H
32 
33 #include <cmath>
34 #include <vector>
35 #include <set>
36 #include "ttrait_with_map.h"
37 #include "filehandler.h"
38 #include "stathandler.h"
39 #include "metapop.h"
40 #include "datatable.h"
41 
42 #ifdef HAS_GSL
43 #include <gsl/gsl_vector.h>
44 #include <gsl/gsl_matrix.h>
45 #include <gsl/gsl_eigen.h>
46 #endif
47 
48 class TTQuantiSH;
49 class TTQuantiFH;
50 class TTQFreqExtractor;
51 class TTQOhtaStats;
52 class TProtoQuanti;
53 
54 // ------------------------------------------------------------------------------
58 // ------------------------------------------------------------------------------
59 class TTQuanti : public TTrait {
60 
61 public:
63  {
64 // message("CONSTRUCTOR::TTQuanti::CONSTRUCTOR\n");
65  }
66 
68 // { message("COPY CONSTRUCTOR::TTQuanti::COPY CONSTRUCTOR\n"); }
69 
70  virtual ~TTQuanti () {}
71 
72  virtual trait_t get_type () const {return QUANT;}
73  virtual void mutate ();
74  virtual void inherit (const TTrait* mother, const TTrait* father);
75  virtual void* set_trait (void* value) {return value;}
76  virtual void set_value ();
77  virtual void* getValue () const {return _phenotypes;}
78 
79  // TTQuanti interface:
80  virtual double get_additive_genotype (const unsigned int trait) const = 0;
81  virtual double get_dominant_genotype (const unsigned int trait) const = 0;
82  virtual double get_full_genotype (unsigned int trait) = 0;
83  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_pos,
84  unsigned int to_pos, const TTQuanti *parent) = 0;
85  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
86  const TTQuanti *parent) = 0;
87  virtual void mutate_add (unsigned int position, unsigned int allele, double value) = 0;
88  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value) = 0;
89 
90  // interface to di-allelic architecture
91  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const = 0;
92  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value) = 0;
93 
94  //accessors
95  void set_proto (TProtoQuanti* proto) {_myProto = proto;}
97  double get_phenotype (unsigned int trai);
98  void set_phenotype (unsigned int trait, double value);
99 
100 protected:
101 
102  double *_phenotypes;
104 };
105 // ------------------------------------------------------------------------------
109 // ------------------------------------------------------------------------------
111 
112 public:
113 
115  {
116 // message("CONSTRUCTOR::TTQuanti_continuous::CONSTRUCTOR\n");
117  }
118 
120  {
121 // message("COPY CONSTRUCTOR::TTQuanti_continuous::COPY CONSTRUCTOR\n");
122  }
123 
124  virtual ~TTQuanti_continuous () {
125 // message("DESTRUCTOR::TTQuanti_continuous::DESTRUCTOR\n");
126  reset();
127  }
128 
129  //implements TTrait:
130  virtual void reset ();
131  virtual void init ();
132  virtual void set_sequence (void** seq);
133  virtual void** get_sequence () const {return (void**)_sequence;}
134  virtual double get_allele_value (int loc, int all) const;
135  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
136 
137  virtual TTQuanti_continuous& operator= (const TTrait& T);
138  virtual bool operator== (const TTrait& T);
139  virtual bool operator!= (const TTrait& T);
140 
141  //implements StorableComponent:
142  virtual void store_data ( BinaryStorageBuffer* saver );
143  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
144 
145  //implements TTQuanti:
146  virtual double get_full_genotype (unsigned int trait);
147  virtual void set_allele (int locus, int allele, double value) {_sequence[allele][locus] = value;}
148  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
149  {_sequence[allele][position] += value;}
150  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
151  {_sequence[allele][position] = value;}
152  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const {return false;}
153  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value) {}
154 
155 
156 protected:
157 
158  double **_sequence;
159 };
160 // Deriving specialized classes
161 // ------------------------------------------------------------------------------
165 // ------------------------------------------------------------------------------
167 
168 public:
170 
172 
174 
175  //TTtrait implementation:
176  virtual void init_sequence ();
178  virtual void show_up();
179 
180  //TTQuanti implementation:
181  virtual double get_additive_genotype (const unsigned int trait) const;
182  virtual double get_dominant_genotype (const unsigned int trait) const;
183  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
184  unsigned int to_locus, const TTQuanti *parent);
185  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
186  const TTQuanti *parent);
187 };
188 // ------------------------------------------------------------------------------
192 // ------------------------------------------------------------------------------
194 
195 public:
197 
199 
201 
202  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
203 
204  //TTtrait implementation:
205  virtual void init_sequence ();
207  virtual void show_up();
208 
209  //TTQuanti implementation:
210  virtual double get_additive_genotype (const unsigned int trait) const;
211  virtual double get_dominant_genotype (const unsigned int trait) const;
212  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
213  unsigned int to_locus, const TTQuanti *parent);
214  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
215  const TTQuanti *parent);
216 };
217 // ------------------------------------------------------------------------------
221 // ------------------------------------------------------------------------------
223 
224 public:
226 
228 
230 
231  //TTtrait implementation:
232  virtual void init_sequence ();
234  virtual void show_up();
235 
236  //TTQuanti implementation:
237  virtual double get_additive_genotype (const unsigned int trait) const;
238  virtual double get_dominant_genotype (const unsigned int trait) const;
239  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
240  unsigned int to_locus, const TTQuanti *parent);
241  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
242  const TTQuanti *parent);
243 };
244 // ------------------------------------------------------------------------------
248 // ------------------------------------------------------------------------------
250 
251 public:
253 
255 
257 
258  //TTtrait implementation:
259  virtual void init_sequence ();
261  virtual void show_up();
262 
263  //TTQuanti implementation:
264  virtual double get_additive_genotype (const unsigned int trait) const;
265  virtual double get_dominant_genotype (const unsigned int trait) const;
266  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
267  unsigned int to_locus, const TTQuanti *parent);
268  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
269  const TTQuanti *parent);
270 };
271 // ------------------------------------------------------------------------------
275 // ------------------------------------------------------------------------------
276 class TTQuanti_diallelic : public TTQuanti {
277 
278 public:
279 
281 
283 
284  virtual ~TTQuanti_diallelic () {reset();}
285 
286  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const;
287  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value);
288  void inherit_free (const TTrait* mother, const TTrait* father);
289 
290  //implements TTrait:
291  virtual void reset ();
292  virtual void init ();
293  virtual void set_sequence (void** seq);
294  virtual void** get_sequence () const {return (void**)_sequence;}
295  virtual double get_allele_value (int locus, int allele) const;
296  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
297 
298  virtual TTQuanti_diallelic& operator= (const TTrait& T);
299  virtual bool operator== (const TTrait& T);
300  virtual bool operator!= (const TTrait& T);
301 
302  //implements StorableComponent:
303  virtual void store_data ( BinaryStorageBuffer* saver );
304  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
305 
306  //implements TTQuanti:
307  virtual double get_full_genotype (unsigned int trait);
308  virtual void set_allele (int locus, int allele, double value) {_sequence[allele][locus] = bool(value);}
309  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
310  {_sequence[allele][position] = bool(value);}
311  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
312  {_sequence[allele][position] ^= 1;}
313 
314 protected:
315 
316  unsigned char** _sequence;
317 };
318 // ------------------------------------------------------------------------------
322 // ------------------------------------------------------------------------------
324 
325 public:
327 
329 
331 
332  //TTtrait implementation:
333  virtual void init_sequence ();
335  virtual void show_up();
336 
337  //TTQuanti implementation:
338  virtual double get_additive_genotype (const unsigned int trait) const;
339  virtual double get_dominant_genotype (const unsigned int trait) const;
340  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
341  unsigned int to_locus, const TTQuanti *parent);
342  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
343  const TTQuanti *parent);
344 };
345 // ------------------------------------------------------------------------------
349 // ------------------------------------------------------------------------------
351 
352 public:
354 
356 
358 
359  //TTtrait implementation:
360  virtual void init_sequence ();
362  virtual void show_up();
363 
364  //TTQuanti implementation:
365  virtual double get_additive_genotype (const unsigned int trait) const;
366  virtual double get_dominant_genotype (const unsigned int trait) const;
367  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
368  unsigned int to_locus, const TTQuanti *parent);
369  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
370  const TTQuanti *parent);
371 };
372 // ------------------------------------------------------------------------------
376 // ------------------------------------------------------------------------------
378 
379 public:
381 
383 
385 
386  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
387 
388  //TTtrait implementation:
389  virtual void init_sequence ();
391  virtual void show_up();
392 
393  //TTQuanti implementation:
394  virtual double get_additive_genotype (const unsigned int trait) const;
395  virtual double get_dominant_genotype (const unsigned int trait) const;
396  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
397  unsigned int to_locus, const TTQuanti *parent);
398 
399  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
400  const TTQuanti *parent);
401 };
402 
403 
404 // ------------------------------------------------------------------------------
408 // ------------------------------------------------------------------------------
409 class TProtoQuanti : public TTProtoWithMap {
410 
411 public:
412 
413  TProtoQuanti ();
414  TProtoQuanti (const TProtoQuanti& T);
415  virtual ~TProtoQuanti ();
416 
417  unsigned int get_num_traits() {return _num_traits;}
418  unsigned int get_num_locus() {return _num_locus;}
419  unsigned int get_num_locus (unsigned int trait) {return _trait_table[trait].size();}
420  unsigned int get_pleiotropy_type() {return _pleio_type;}
421  unsigned int get_seq_length () {return _seq_length;}
424  vector<double> get_env_var () {return _eVariance;}
425  vector<double> get_heritability () {return _h2;}
426  unsigned int get_h2_setTime () {return _h2_setTime;}
427  bool get_h2_isBroad () {return _h2_isBroad;}
428  unsigned int get_allele_model () {return _allele_model;}
430  double get_diallele_value (unsigned int locus, unsigned int allele)
431  {return _allele_value.get(locus, allele);}
432  double get_seq_diallele_value (unsigned int position, unsigned int allele)
433  {return _sequence_diallele_values[allele][position];}
434  double get_init_value (unsigned int i) {return _init_value.get(0,i); }
435  double get_init_variance (unsigned int i) {return _init_variance.get(0,i);}
436  unsigned int get_doInitMutation () {return _doInitMutation;}
438 
440  unsigned int get_locus_seq_pos (unsigned int loc, unsigned int trait)
441  {return _trait_table[trait][loc];}
442  unsigned int get_locus_ID (unsigned int locus, unsigned int trait)
443  {return _trait_locus_table[trait][locus];}
444  unsigned int get_locus_PD (unsigned int locus) {return _locus_table[locus][1];}
445  unsigned int get_locus_start_pos (unsigned int locus) {return _locus_table[locus][0];}
446 
447  void set_eVarianceSD (unsigned int trait, double SD);
448  void set_init_values (const double *values, unsigned int nval);
449  void set_trait_value_func_ptr (bool withVe);
450  double set_trait_value_VE (const TTQuanti* ind, const unsigned int trait);
451  double set_trait_value_noVE (const TTQuanti* ind, const unsigned int trait);
452 
453  double set_genotype_value_additive (const TTQuanti* ind, const unsigned int trait);
454  double set_genotype_value_dominance (const TTQuanti* ind, const unsigned int trait);
455 
456  int get_allele_position (const unsigned int locus, const unsigned int trait);
457  double get_allele_value (const TTQuanti* ind, const unsigned int allele, const unsigned int locus, const unsigned int trait);
458  double get_genotype_with_dominance (const double a1, const double a2, const unsigned int locus, const unsigned int trait);
459  double get_genotype_dominance_h (double a1, double a2, double h);
460  double get_genotype_dominance_k (double a1, double a2, double k);
461  unsigned int get_dominance_model () {return _dominance_model;}
462  double get_dominance (unsigned int locus, unsigned int trait)
463  {return _dominance_effects.get(trait, locus); }
464 // TMatrix get_dominance_effects () {return _dominance_effects;}
465 
466  double get_trait_mutation_variance (unsigned int trait);
467 
468  double get_genotypic_value (const TTQuanti* ind, const unsigned int trait) {
469  return (this->*_set_genotype_func_ptr)(ind, trait);
470  }
471 
472  double get_phenotypic_value (const TTQuanti* ind, const unsigned int trait) {
473  return (this->*_set_trait_value_func_ptr)(ind, trait);
474  }
475 
476 
477  // Parameter setters
478  bool setHeritabilityParams ();
479  bool setInitialValuesParams ();
480  bool setGeneticMapParams ();
481  unsigned int setAlleleModel ();
487  bool setMutationCorrelation ();
488  bool setDominanceParameters ();
489 
491 
494  bool readMatrixFromQuantiMutationMatrix (vector<vector<double>>& varmat);
498  void allocate_gsl_mutation_matrix_space (unsigned int num_locus);
500  gsl_matrix* set_gsl_mutation_matrix_from_sigma (unsigned int loc, unsigned int pleio_deg);
501  gsl_matrix* set_gsl_mutation_matrix (unsigned int pleio_deg, const vector<double>& varcov);
502  void set_mutation_matrix_decomposition (unsigned int loc, unsigned int pleio_deg);
503 
504  // mutation generation functions
505  // first set for continuum-of-allele model with a single mutation matrix across all loci:
506  double* getMutationEffectMultivariateGaussian (unsigned int loc);
507  double* getMutationEffectBivariateGaussian (unsigned int loc);
508  double* getMutationEffectUnivariateGaussian (unsigned int loc);
509  // different implementation for locus-specific mutation matrices:
510  double* getMutationEffectMultivariateGaussianLocSpec (unsigned int loc);
511  double* getMutationEffectBivariateGaussianLocSpec (unsigned int loc);
512  double* getMutationEffectUnivariateGaussianLocSpec (unsigned int loc);
513 
514  double* getMutationEffectUnivariateDiallelic (unsigned int loc);
515  double* getMutationEffectBivariateDiallelic (unsigned int loc);
516  double* getMutationEffects (unsigned int loc) {
517  return (this->* _getMutationValues)(loc);
518  }
519  double* getMutationEffectsVarPleio (unsigned int loc) {
520  return (this->* _getMutationValuesVarPleio[loc]) (loc);
521  }
522  void inherit (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
523  void inherit_free (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
524  void inherit_low (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
525 
526  void mutate (TTQuanti* ind);
527  void mutate_nill (TTQuanti* ind);
528  void mutate_full_pleio (TTQuanti* ind);
529  void mutate_var_pleio (TTQuanti* ind);
530  void mutate_no_pleio (TTQuanti* ind);
533  void mutate_inplace_no_pleio (TTQuanti* ind);
534 
535  void mutate_diallelic_pleio (TTQuanti* ind);
538 
539  // EPISTASIS
540  bool setEpistasisParameters ();
541 // double get_epistatic_mean () {return _epistatic_mean;}
542 // double get_epistatic_variance () {return _epistatic_variance;}
543 // double get_epistatic_prop_large () {return _epistatic_prop_large;}
544 // double get_epistatic_large_mean () {return _epistatic_large_mean;}
545 // double get_epistatic_large_variance () {return _epistatic_large_variance;}
546  unsigned int get_num_epi_coefs () {return _num_epi_coefs;}
547  bool do_epistasis () {return _epistasis;}
550 
551  //implements TraitPrototype:
552  virtual void reset () {TTProtoWithMap::reset();}
553  virtual TTQuanti* hatch ();
554  virtual TProtoQuanti* clone () {return new TProtoQuanti(*this);}
555  virtual trait_t get_type () const {return QUANT;}
556 
557  //implementation of SimComponent:
558  virtual bool setParameters();
559  virtual void loadFileServices ( FileServices* loader );
560  virtual void loadStatServices ( StatServices* loader );
561  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
562 
563 
564  //implementation of StorableComponent:
565  virtual void store_data ( BinaryStorageBuffer* saver )
566  {saver->store(&_seq_length,sizeof(int));}
567 
568  virtual bool retrieve_data ( BinaryStorageBuffer* reader )
569  {reader->read(&_seq_length,sizeof(int));return true;}
570 
571 protected:
572 
574  unsigned int _num_locus;
576  unsigned int _num_traits;
578  unsigned int _seq_length;
579  unsigned int _allele_model;
581 
582  //mutations:
585 
586  //Pleiotropy type: 0 = "no pleio", 1 = "full", 2 = "variable"
587  unsigned int _pleio_type;
588 
589 private:
590 
591  TMatrix _allele_value; // num locus x 2
593  TMatrix _init_value; // initial value of each trait
594  TMatrix _init_variance; // initial variance of each trait
595  double* _phenotypes; // num traits
596 
597  //mutations:
598  TMatrix _mutation_correlation; // 1 x n_locus, one correlation per locus, applied to all trait pairs
599  TMatrix _mutation_sigma; // n_locus x n_trait, variance per locus, used in the bivariate case, and to initialize the m-matrix
600  gsl_matrix **_gsl_mutation_matrix; // one mutation matrix per locus
601  gsl_matrix **_evect;
602  gsl_vector **_eval;
603  gsl_vector **_effects_multivar;
604  gsl_vector **_ws;
605  double _effects_bivar[2];
606  unsigned int _doInitMutation;
607  bool _mutationVarianceIsLocusSpecific; // a single mutation matrix for all loci
608  bool _mutationEffectIsFixedDiAllele; // bitstring sequence not storing effects
609 
610  // dominance
611  unsigned int _dominance_model;
613 
614  //recombination:
618 
619  //heritability
620  vector<double> _eVariance;
621  vector<double> _h2;
622  unsigned int _h2_setTime;
624 
625  //variable pleiotropy
626 
629 
631  vector< vector<unsigned int> > _trait_table;
632 
634  vector< vector<unsigned int> > _trait_locus_table;
635 
639  vector< vector<unsigned int> > _locus_table;
640 
641 
642  // EPISTASIS
644 // double _epistatic_mean,
645 // _epistatic_variance,
646 // _epistatic_prop_large,
647 // _epistatic_large_mean,
648 // _epistatic_large_variance;
649  unsigned int _num_epi_coefs;
652 
653 
654  // function pointers
655 
658 
661 
663  double* (TProtoQuanti::* _getMutationValues) (unsigned int);
664 
666  vector< double* (TProtoQuanti::* ) (unsigned int) > _getMutationValuesVarPleio;
667 
669  double (TProtoQuanti::* _getGenotypeWithDominance) (double, double, double);
670 
671 
675  double (TProtoQuanti::* _set_trait_value_func_ptr) (const TTQuanti*, const unsigned int);
676 
677 
681  double (TProtoQuanti::* _set_genotype_func_ptr) (const TTQuanti*, const unsigned int);
682 
683  friend class TTQuanti;
684  friend class TTQuanti_continuous;
689 
695 };
696 
697 // ------------------------------------------------------------------------------
701 // ------------------------------------------------------------------------------
702 class TTQuantiSH : public TraitStatHandler<TProtoQuanti, TTQuantiSH> {
703 
704  double _VaH;
706  double **_pmeanP, **_pmeanG, **_pVa, **_pVp, **_pcovar, **_peigval, **_peigvect;
707  double **_pmeanL, **_pVaL, **_pmeanEpiL;
708 
709 
712 
713  set< long int > *_uniqueEffectSizes;
714  map<long int, int> *_countUniqueEffects;
715 
716  gsl_matrix *_G, *_evec;
717  gsl_vector *_eval;
718  gsl_eigen_symmv_workspace *_ws;
719 
722 
723 public:
724 
727  _VaH(0), _meanP(0), _meanG(0), _Va(0), _Vg(0), _Vb(0), _Vp(0), _covar(0), _eigval(0), _eigvect(0), _meanEffectSize(0),
728  _pmeanP(0), _pmeanG(0), _pVa(0), _pVp(0), _pcovar(0), _peigval(0), _peigvect(0), _pmeanL(0), _pVaL(0), _pmeanEpiL(0),
731  _G(0), _evec(0),_eval(0),_ws(0),
732  _table_set_gen(999999), _table_set_age(999999), _table_set_repl(999999)
733  {}
734 
735  virtual ~TTQuantiSH() {resetPtrs();}
736 
737  void resetPtrs();
738 
739  virtual void init ( );
740 
741  virtual bool setStatRecorders (std::string& token);
742 
743  void addQuanti (age_t AGE);
744  void addEigen (age_t AGE);
745  void addEigenValues (age_t AGE);
746  void addEigenVect1 (age_t AGE);
747  void addQuantiPerPatch (age_t AGE);
748  void addAvgPerPatch (age_t AGE);
749  void addGenotPerPatch (age_t AGE);
750  void addVarPerPatch (age_t AGE);
751  void addCovarPerPatch (age_t AGE);
752  void addEigenPerPatch (age_t AGE);
753  void addEigenValuesPerPatch (age_t AGE);
754  void addEigenVect1PerPatch (age_t AGE);
756  void addSkewPerPatch (age_t AGE);
757  void addQuantiEpistasis (age_t AGE);
758  void addEffectStats (age_t AGE);
759 
760  void setDataTables (age_t AGE);
763  void setStats (age_t AGE);
764  double getMeanGenot (unsigned int i) {return _meanG[i];}
765  double getMeanPhenot (unsigned int i) {return _meanP[i];}
766  double getVa (unsigned int i) {return _Va[i];}
767  double getVg (unsigned int i) {return _Vg[i];}
768  double getVb (unsigned int i) {return _Vb[i];}
769  double getVp (unsigned int i) {return _Vp[i];}
770  double getQst (unsigned int i) {return _Vb[i]/(_Vb[i]+2*_Va[i]);}
771  double getCovar (unsigned int i) {return _covar[i];}
772  double getEigenValue (unsigned int i) {return _eigval[i];}
773  double getEigenVectorElt (unsigned int t1, unsigned int t2) {return _eigvect[t2][t1];}//eigenvectors arranged column-wise
774  double getVaH () {return _VaH;}
775  double getNbAlleles (unsigned int i) {return double(_uniqueEffectSizes[i].size()/_num_locus);}
776  double getMeanEffectSize (unsigned int i) {return _meanEffectSize[i];}
777 
778  double getMeanGenotPerPatch (unsigned int i, unsigned int p) {return _pmeanG[i][p];}
779  double getMeanPhenotPerPatch (unsigned int i, unsigned int p) {return _pmeanP[i][p];}
780  double getVaPerPatch (unsigned int i, unsigned int p) {return _pVa[i][p];}
781  double getVpPerPatch (unsigned int i, unsigned int p) {return _pVp[i][p];}
782  double getEigenValuePerPatch (unsigned int i, unsigned int p) {return _peigval[i][p];}
783  double getCovarPerPatch (unsigned int p, unsigned int i) {return _pcovar[p][i];}
784  double getEigenVectorEltPerPatch (unsigned int p, unsigned int v) {return _peigvect[p][v];}
785  double getSkewPerPatch (unsigned int i, unsigned int p);
786 
787  vector<double> getSNPalleleFreqInPatch (Patch* patch, const age_idx AGE);
788  vector<double> getVaWithDominance (Patch* curPop, const age_idx AGE);
789  vector<double> getVaNoDominance (Patch* curPop, const age_idx AGE);
790 
791 };
792 // ------------------------------------------------------------------------------
796 // ------------------------------------------------------------------------------
797 class TTQuantiFH : public TraitFileHandler<TProtoQuanti> {
798 
801 
802 public:
804  _has_genetic_map(0) {}
805  virtual ~TTQuantiFH(){}
806 
807  void setOutputOption (string opt);
808 
809  virtual void FHwrite ();
810  void write_TABLE ();
811  void print(ofstream& FH, Patch* patch, sex_t SEX, age_idx Ax, unsigned int print_gene, bool print_genotype, bool print_additive_genotype);
812  void write_PLINK ();
813  void print_PLINK_PED(ofstream& FH, age_idx Ax, Patch *patch);
814  void print_PLINK_FAM(ofstream& FH, age_idx Ax, Patch *patch);
815 
816  virtual void FHread (string& filename);
817 };
818 // ------------------------------------------------------------------------------
822 // ------------------------------------------------------------------------------
823 class TTQFreqExtractor : public TraitFileHandler<TProtoQuanti> {
824 
825  vector< string > _records;
826 
827 public:
829 
830  void resetTable();
831 
832  virtual ~TTQFreqExtractor () {}
833  virtual void FHwrite ();
834  virtual void FHread (string& filename) {}
835 };
836 
837 // ------------------------------------------------------------------------------
841 // ------------------------------------------------------------------------------
842 class TTQOhtaStats : public TraitFileHandler<TProtoQuanti> {
843 
845 
846 public:
848 
849  virtual ~TTQOhtaStats () {}
850  virtual void FHwrite ();
851  virtual void FHread (string& filename) {}
852 };
853 #endif
854 
A class to store any kind of data in a char buffer before unloading it in a binary data file.
Definition: binarystoragebuffer.h:44
void read(void *out, unsigned int nb_bytes)
Definition: binarystoragebuffer.h:162
void store(void *stream, unsigned int nb_bytes)
Definition: binarystoragebuffer.cc:16
A class to manage the files associated with each components of the simulation.
Definition: fileservices.h:52
Second class in the metapopulation design structure, between the Metapop and Individual classes.
Definition: metapop.h:432
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:50
double get(unsigned int i, unsigned int j) const
Accessor to element at row i and column j.
Definition: tmatrix.h:193
TProtoQuanti.
Definition: ttquanti.h:409
bool setMutationSigmaFromQuantiMutationVariance()
Definition: ttquanti.cc:1898
vector< double > _eVariance
Definition: ttquanti.h:620
double * getMutationEffectMultivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2355
unsigned int setAlleleModel()
Definition: ttquanti.cc:819
double set_genotype_value_dominance(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2497
bool do_epistasis()
Definition: ttquanti.h:547
unsigned int _allele_model
Definition: ttquanti.h:579
TMatrix _dominance_effects
Definition: ttquanti.h:612
bool _epistasis
Definition: ttquanti.h:643
size_t _sizeofLocusType
Definition: ttquanti.h:617
void set_mutation_matrix_decomposition(unsigned int loc, unsigned int pleio_deg)
Definition: ttquanti.cc:2235
unsigned int _doInitMutation
Definition: ttquanti.h:606
unsigned int get_locus_PD(unsigned int locus)
Definition: ttquanti.h:444
void mutate_inplace_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2768
double set_genotype_value_additive(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2490
void setTraitAndLocusTables_full_pleio()
Definition: ttquanti.cc:1271
virtual ~TProtoQuanti()
Definition: ttquanti.cc:230
double set_trait_value_VE(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2476
void mutate_diallelic_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2827
void mutate_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2687
bool setContinuousMutationModel_var_pleio()
Definition: ttquanti.cc:1645
unsigned int _dominance_model
Definition: ttquanti.h:611
TMatrix _mutation_correlation
Definition: ttquanti.h:598
double * getMutationEffectUnivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2398
gsl_matrix * set_gsl_mutation_matrix_from_sigma(unsigned int loc, unsigned int pleio_deg)
Definition: ttquanti.cc:2199
bool setMutationModel_var_pleio()
Definition: ttquanti.cc:962
double get_allele_value(const TTQuanti *ind, const unsigned int allele, const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2452
void(TProtoQuanti::* _inherit_fun_ptr)(sex_t, TTQuanti *, const TTQuanti *)
Pointer to inheritance functions: either inherit_free() (r=0.5), or inherit_low() (r<0....
Definition: ttquanti.h:657
bool setMutationModel_no_pleio()
Definition: ttquanti.cc:1152
bool _h2_isBroad
Definition: ttquanti.h:623
const TMatrix & get_diallele_values()
Definition: ttquanti.h:429
const TMatrix & get_pleio_matrix()
Definition: ttquanti.h:439
TTQuantiFH * _reader
Definition: ttquanti.h:692
bool setDominanceParameters()
Definition: ttquanti.cc:2287
double * getMutationEffectUnivariateDiallelic(unsigned int loc)
Definition: ttquanti.cc:2414
unsigned int _h2_setTime
Definition: ttquanti.h:622
unsigned int _seq_length
Total number of loci, same as _num_locus.
Definition: ttquanti.h:578
double _mutation_rate
Definition: ttquanti.h:583
gsl_matrix ** _evect
Definition: ttquanti.h:601
void mutate_nill(TTQuanti *ind)
Definition: ttquanti.cc:2629
bool setContinuousMutationModel_no_pleio()
Definition: ttquanti.cc:1802
gsl_vector ** _ws
Definition: ttquanti.h:604
TMatrix _mutation_sigma
Definition: ttquanti.h:599
double get_dominance(unsigned int locus, unsigned int trait)
Definition: ttquanti.h:462
bool setInitialValuesParams()
Definition: ttquanti.cc:613
bool _mutationVarianceIsLocusSpecific
Definition: ttquanti.h:607
double * _phenotypes
Definition: ttquanti.h:595
const TMatrix & get_epi_coefs() const
Definition: ttquanti.h:548
bool readMatrixFromQuantiMutationMatrix(vector< vector< double >> &varmat)
Definition: ttquanti.cc:2034
TMatrix _allele_value
Definition: ttquanti.h:591
bool setGeneticMapParams()
Definition: ttquanti.cc:668
double * getMutationEffects(unsigned int loc)
Definition: ttquanti.h:516
double * getMutationEffectBivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2379
void set_trait_value_func_ptr(bool withVe)
Definition: ttquanti.cc:698
TTQuantiSH * get_stater()
Definition: ttquanti.h:437
vector< double > _h2
Definition: ttquanti.h:621
unsigned int _num_epi_coefs
Definition: ttquanti.h:649
size_t get_locus_byte_size()
Definition: ttquanti.h:423
void mutate_diallelic_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2858
double get_genotypic_value(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.h:468
unsigned int _num_traits
Number of traits.
Definition: ttquanti.h:576
double * _sequence_diallele_values[2]
Definition: ttquanti.h:592
double get_init_value(unsigned int i)
Definition: ttquanti.h:434
void mutate_inplace_full_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2740
size_t get_size_locus_type()
Definition: ttquanti.h:422
unsigned int get_locus_ID(unsigned int locus, unsigned int trait)
Definition: ttquanti.h:442
TTQuantiSH * _stats
Definition: ttquanti.h:690
virtual TTQuanti * hatch()
Definition: ttquanti.cc:2878
void set_init_values(const double *values, unsigned int nval)
Definition: ttquanti.cc:2466
void(TProtoQuanti::* _mutation_func_ptr)(TTQuanti *)
Pointer to mutation function, which depends on allele on model (HC, noHC, diallelic)
Definition: ttquanti.h:660
gsl_vector ** _effects_multivar
Definition: ttquanti.h:603
double(TProtoQuanti::* _set_genotype_func_ptr)(const TTQuanti *, const unsigned int)
Pointer to functions get_genotype_value_additive() or get_genotype_value_dominance() computing the ge...
Definition: ttquanti.h:681
void inherit(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2560
TMatrix _pleio_matx
Pleiotropy matrix provided in input (num locu X num trait).
Definition: ttquanti.h:628
unsigned int get_num_epi_coefs()
Definition: ttquanti.h:546
string _diallele_datatype
Definition: ttquanti.h:580
double get_seq_diallele_value(unsigned int position, unsigned int allele)
Definition: ttquanti.h:432
double _genomic_mutation_rate
Definition: ttquanti.h:584
gsl_matrix ** _gsl_mutation_matrix
Definition: ttquanti.h:600
double * getMutationEffectBivariateDiallelic(unsigned int loc)
Definition: ttquanti.cc:2422
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.h:568
double get_diallele_value(unsigned int locus, unsigned int allele)
Definition: ttquanti.h:430
vector< vector< unsigned int > > _trait_locus_table
Table storing the locus id of each locus affecting each trait (num trait X (variable length/trait)).
Definition: ttquanti.h:634
unsigned int get_allele_model()
Definition: ttquanti.h:428
double get_init_variance(unsigned int i)
Definition: ttquanti.h:435
bool * _all_chooser
Definition: ttquanti.h:615
bool setMutationSigmaFromQuantiMutationVariance_no_pleio()
Definition: ttquanti.cc:1968
double(TProtoQuanti::* _getGenotypeWithDominance)(double, double, double)
Pointer to either dominance_h() or dominance_k() function computing the genotypic value with dominanc...
Definition: ttquanti.h:669
void allocate_gsl_mutation_matrix_space(unsigned int num_locus)
Definition: ttquanti.cc:2093
TMatrix _epistatic_coefs_matrix
Definition: ttquanti.h:650
TMatrix _init_variance
Definition: ttquanti.h:594
void inherit_low(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2567
void mutate(TTQuanti *ind)
Definition: ttquanti.cc:2622
unsigned int get_h2_setTime()
Definition: ttquanti.h:426
virtual TProtoQuanti * clone()
Definition: ttquanti.h:554
void mutate_inplace_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2717
double * getMutationEffectUnivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2406
unsigned int get_locus_seq_pos(unsigned int loc, unsigned int trait)
Definition: ttquanti.h:440
void mutate_diallelic_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2792
vector< vector< unsigned int > > _trait_table
Trait table, (num trait X (variable length/trait)), holds, for each trait, the array position of caus...
Definition: ttquanti.h:631
void setTraitAndLocusTables_no_pleio(TMatrix &mat)
Definition: ttquanti.cc:1303
gsl_matrix * set_gsl_mutation_matrix(unsigned int pleio_deg, const vector< double > &varcov)
Definition: ttquanti.cc:2162
double * getMutationEffectBivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2389
vector< vector< unsigned int > > _locus_table
Locus table, num_locus x 2, first column holds the start position of the alleles of each locus in the...
Definition: ttquanti.h:639
vector< double > get_heritability()
Definition: ttquanti.h:425
const TMatrix & get_epi_coef_index() const
Definition: ttquanti.h:549
size_t _locusByteSize
Definition: ttquanti.h:616
TMatrix _init_value
Definition: ttquanti.h:593
double set_trait_value_noVE(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2483
unsigned int get_num_locus()
Definition: ttquanti.h:418
virtual void loadStatServices(StatServices *loader)
Definition: ttquanti.cc:3057
unsigned int get_seq_length()
Definition: ttquanti.h:421
bool setEpistasisParameters()
Definition: ttquanti.cc:708
double(TProtoQuanti::* _set_trait_value_func_ptr)(const TTQuanti *, const unsigned int)
Pointer to either set_trait_value_VE() or set_trait_value_noVE() to compute phenotypic values.
Definition: ttquanti.h:675
double get_phenotypic_value(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.h:472
unsigned int get_pleiotropy_type()
Definition: ttquanti.h:420
bool setHeritabilityParams()
Definition: ttquanti.cc:457
virtual trait_t get_type() const
Definition: ttquanti.h:555
double *(TProtoQuanti::* _getMutationValues)(unsigned int)
Pointer to mutation allele value function, which depends on allele model and number of traits affecte...
Definition: ttquanti.h:663
double get_genotype_dominance_k(double a1, double a2, double k)
Definition: ttquanti.cc:2539
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: ttquanti.h:561
double get_genotype_dominance_h(double a1, double a2, double h)
Definition: ttquanti.cc:2522
double _effects_bivar[2]
Definition: ttquanti.h:605
virtual void reset()
Definition: ttquanti.h:552
double * getMutationEffectMultivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2367
bool setDiallelicMutationModel()
Definition: ttquanti.cc:1346
unsigned int get_num_traits()
Definition: ttquanti.h:417
gsl_vector ** _eval
Definition: ttquanti.h:602
unsigned int get_doInitMutation()
Definition: ttquanti.h:436
TMatrix _epistatic_coefs_indices
Definition: ttquanti.h:651
TTQuantiFH * _writer
Definition: ttquanti.h:691
virtual bool setParameters()
Definition: ttquanti.cc:255
bool setMutationCorrelation()
Definition: ttquanti.cc:1840
bool get_h2_isBroad()
Definition: ttquanti.h:427
virtual void loadFileServices(FileServices *loader)
Definition: ttquanti.cc:2951
void mutate_full_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2659
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.h:565
bool _mutationEffectIsFixedDiAllele
Definition: ttquanti.h:608
TTQOhtaStats * _ohtaStats
Definition: ttquanti.h:694
double get_trait_mutation_variance(unsigned int trait)
Definition: ttquanti.cc:2546
unsigned int get_dominance_model()
Definition: ttquanti.h:461
bool setContinuousMutationModel_full_pleio()
Definition: ttquanti.cc:1478
double * getMutationEffectsVarPleio(unsigned int loc)
Definition: ttquanti.h:519
TProtoQuanti()
Definition: ttquanti.cc:64
bool setMutationModel_full_pleio()
Definition: ttquanti.cc:883
unsigned int _num_locus
Total number of loci, for all traits.
Definition: ttquanti.h:574
unsigned int get_num_locus(unsigned int trait)
Definition: ttquanti.h:419
unsigned int get_locus_start_pos(unsigned int locus)
Definition: ttquanti.h:445
void set_eVarianceSD(unsigned int trait, double SD)
Definition: ttquanti.cc:2345
double get_genotype_with_dominance(const double a1, const double a2, const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2504
int get_allele_position(const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2433
void inherit_free(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2605
vector< double > get_env_var()
Definition: ttquanti.h:424
unsigned int _pleio_type
Definition: ttquanti.h:587
void mutate_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2636
void deallocate_gsl_mutation_matrix_space()
Definition: ttquanti.cc:2113
TTQFreqExtractor * _freqExtractor
Definition: ttquanti.h:693
vector< double *(TProtoQuanti::*)(unsigned int) > _getMutationValuesVarPleio
Collection of pointers to mutation functions, which generate allele values in dependence of pleiotrop...
Definition: ttquanti.h:666
TTProtoWithMap.
Definition: ttrait_with_map.h:184
virtual void reset()
Definition: ttrait_with_map.cc:612
TTQFreqExtractor.
Definition: ttquanti.h:823
virtual ~TTQFreqExtractor()
Definition: ttquanti.h:832
TTQFreqExtractor(TProtoQuanti *T)
Definition: ttquanti.h:828
vector< string > _records
Definition: ttquanti.h:825
void resetTable()
Definition: ttquanti.cc:6560
virtual void FHread(string &filename)
Definition: ttquanti.h:834
virtual void FHwrite()
Definition: ttquanti.cc:6567
TTQOhtaStats.
Definition: ttquanti.h:842
TMatrix _pairwiseCombs
Definition: ttquanti.h:844
virtual void FHread(string &filename)
Definition: ttquanti.h:851
TTQOhtaStats(TProtoQuanti *T)
Definition: ttquanti.h:847
virtual ~TTQOhtaStats()
Definition: ttquanti.h:849
virtual void FHwrite()
Definition: ttquanti.cc:6703
TTQuantiFH.
Definition: ttquanti.h:797
void write_PLINK()
Definition: ttquanti.cc:6134
void print_PLINK_FAM(ofstream &FH, age_idx Ax, Patch *patch)
Definition: ttquanti.cc:6358
TTQuantiFH(TProtoQuanti *T)
Definition: ttquanti.h:803
virtual void FHread(string &filename)
Definition: ttquanti.cc:6432
void print_PLINK_PED(ofstream &FH, age_idx Ax, Patch *patch)
Definition: ttquanti.cc:6261
void write_TABLE()
Definition: ttquanti.cc:5955
virtual void FHwrite()
Definition: ttquanti.cc:5933
virtual ~TTQuantiFH()
Definition: ttquanti.h:805
string _output_option
Definition: ttquanti.h:799
bool _has_genetic_map
Definition: ttquanti.h:800
void setOutputOption(string opt)
Definition: ttquanti.cc:5912
void print(ofstream &FH, Patch *patch, sex_t SEX, age_idx Ax, unsigned int print_gene, bool print_genotype, bool print_additive_genotype)
Definition: ttquanti.cc:6065
TTQuantiSH.
Definition: ttquanti.h:702
double * _Vp
Definition: ttquanti.h:705
double getMeanGenotPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:778
void addQuanti(age_t AGE)
Definition: ttquanti.cc:4700
void addAvgPerPatch(age_t AGE)
Definition: ttquanti.cc:4873
double ** _pVa
Definition: ttquanti.h:706
double getEigenVectorEltPerPatch(unsigned int p, unsigned int v)
Definition: ttquanti.h:784
vector< double > getVaNoDominance(Patch *curPop, const age_idx AGE)
Definition: ttquanti.cc:5625
double * _Vb
Definition: ttquanti.h:705
double ** _pVaL
Definition: ttquanti.h:707
double getEigenVectorElt(unsigned int t1, unsigned int t2)
Definition: ttquanti.h:773
unsigned int _num_locus
Definition: ttquanti.h:710
double ** _pmeanEpiL
Definition: ttquanti.h:707
void addEigenStatsPerPatcg(age_t AGE)
void addCovarPerPatch(age_t AGE)
Definition: ttquanti.cc:4996
double * _meanP
Definition: ttquanti.h:705
bool _epistats
Definition: ttquanti.h:711
void addEigenVect1PerPatch(age_t AGE)
Definition: ttquanti.cc:5115
void addVarPerPatch(age_t AGE)
Definition: ttquanti.cc:4943
TTQuantiSH(TProtoQuanti *TP)
Definition: ttquanti.h:725
virtual ~TTQuantiSH()
Definition: ttquanti.h:735
double ** _pVp
Definition: ttquanti.h:706
double getVa(unsigned int i)
Definition: ttquanti.h:766
bool _eVar
Definition: ttquanti.h:711
gsl_matrix * _evec
Definition: ttquanti.h:716
double getEigenValuePerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:782
void addEffectStats(age_t AGE)
Definition: ttquanti.cc:5230
double * _meanEffectSize
Definition: ttquanti.h:705
set< long int > * _uniqueEffectSizes
Definition: ttquanti.h:713
double getMeanEffectSize(unsigned int i)
Definition: ttquanti.h:776
void addGenotPerPatch(age_t AGE)
Definition: ttquanti.cc:4908
unsigned int _table_set_age
Definition: ttquanti.h:721
void addEigenValuesPerPatch(age_t AGE)
Definition: ttquanti.cc:5081
double getVb(unsigned int i)
Definition: ttquanti.h:768
double getSkewPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.cc:5190
double _VaH
Definition: ttquanti.h:704
double ** _pmeanP
Definition: ttquanti.h:706
double * _meanG
Definition: ttquanti.h:705
double getMeanPhenotPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:779
void setStats(age_t AGE)
Definition: ttquanti.cc:5416
void setAdultStats()
Definition: ttquanti.h:761
double getVg(unsigned int i)
Definition: ttquanti.h:767
bool _alleleStats
Definition: ttquanti.h:711
void addEigen(age_t AGE)
Definition: ttquanti.cc:4769
gsl_vector * _eval
Definition: ttquanti.h:717
DataTable< double > _lociTable
Definition: ttquanti.h:720
double getMeanPhenot(unsigned int i)
Definition: ttquanti.h:765
double * _covar
Definition: ttquanti.h:705
double getVaH()
Definition: ttquanti.h:774
DataTable< double > _phenoTable
Definition: ttquanti.h:720
double getCovarPerPatch(unsigned int p, unsigned int i)
Definition: ttquanti.h:783
double getEigenValue(unsigned int i)
Definition: ttquanti.h:772
double getQst(unsigned int i)
Definition: ttquanti.h:770
void addEigenPerPatch(age_t AGE)
Definition: ttquanti.cc:5037
void addQuantiEpistasis(age_t AGE)
Definition: ttquanti.cc:5205
vector< double > getVaWithDominance(Patch *curPop, const age_idx AGE)
computation of the additive genetic variance from the average excess of each allele exact under rando...
Definition: ttquanti.cc:5724
double getVp(unsigned int i)
Definition: ttquanti.h:769
gsl_matrix * _G
Definition: ttquanti.h:716
void addEigenVect1(age_t AGE)
Definition: ttquanti.cc:4828
double getMeanGenot(unsigned int i)
Definition: ttquanti.h:764
double ** _peigvect
Definition: ttquanti.h:706
DataTable< double > _lociRefTable
Definition: ttquanti.h:720
double getNbAlleles(unsigned int i)
Definition: ttquanti.h:775
unsigned int _table_set_repl
Definition: ttquanti.h:721
double getVpPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:781
gsl_eigen_symmv_workspace * _ws
Definition: ttquanti.h:718
unsigned int _table_set_gen
Definition: ttquanti.h:721
double getCovar(unsigned int i)
Definition: ttquanti.h:771
vector< double > getSNPalleleFreqInPatch(Patch *patch, const age_idx AGE)
Definition: ttquanti.cc:5582
virtual bool setStatRecorders(std::string &token)
Definition: ttquanti.cc:4634
DataTable< double > _genoTable
Definition: ttquanti.h:720
unsigned int _num_trait
Definition: ttquanti.h:710
double * _Va
Definition: ttquanti.h:705
void addEigenValues(age_t AGE)
Definition: ttquanti.cc:4800
void resetPtrs()
Definition: ttquanti.cc:4451
double * _Vg
Definition: ttquanti.h:705
void setDataTables(age_t AGE)
Definition: ttquanti.cc:5262
void addQuantiPerPatch(age_t AGE)
Definition: ttquanti.cc:4855
double ** _peigval
Definition: ttquanti.h:706
double ** _pmeanL
Definition: ttquanti.h:707
unsigned int _patchNbr
Definition: ttquanti.h:710
map< long int, int > * _countUniqueEffects
Definition: ttquanti.h:714
double ** _pcovar
Definition: ttquanti.h:706
double ** _pmeanG
Definition: ttquanti.h:706
double getVaPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:780
void addSkewPerPatch(age_t AGE)
Definition: ttquanti.cc:5154
double * _eigval
Definition: ttquanti.h:705
void setOffsprgStats()
Definition: ttquanti.h:762
virtual void init()
Definition: ttquanti.cc:4544
double ** _eigvect
Definition: ttquanti.h:705
TTQuanti_continuous_full_pleio : universal pleiotropy.
Definition: ttquanti.h:166
TTQuanti_continuous_full_pleio(const TTQuanti_continuous_full_pleio &TT)
Definition: ttquanti.h:171
virtual void show_up()
Definition: ttquanti.cc:3398
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3309
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti.cc:3292
virtual ~TTQuanti_continuous_full_pleio()
Definition: ttquanti.h:173
virtual TTQuanti_continuous_full_pleio * clone()
Definition: ttquanti.h:177
TTQuanti_continuous_full_pleio()
Definition: ttquanti.h:169
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3277
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3259
virtual void init_sequence()
Definition: ttquanti.cc:3321
TTQuanti_continuous_no_pleio : multiple non-pleiotropic traits.
Definition: ttquanti.h:222
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3633
virtual ~TTQuanti_continuous_no_pleio()
Definition: ttquanti.h:229
TTQuanti_continuous_no_pleio()
Definition: ttquanti.h:225
virtual TTQuanti_continuous_no_pleio * clone()
Definition: ttquanti.h:233
TTQuanti_continuous_no_pleio(const TTQuanti_continuous_no_pleio &TT)
Definition: ttquanti.h:227
virtual void init_sequence()
Definition: ttquanti.cc:3677
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3667
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti.cc:3651
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3618
virtual void show_up()
Definition: ttquanti.cc:3732
TTQuanti_continuous_single : simple implementation for a single quantitative trait with continuous al...
Definition: ttquanti.h:249
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
virtual TTQuanti_continuous_single * clone()
Definition: ttquanti.h:260
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
virtual ~TTQuanti_continuous_single()
Definition: ttquanti.h:256
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3790
virtual void init_sequence()
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3777
TTQuanti_continuous_single(const TTQuanti_continuous_single &TT)
Definition: ttquanti.h:254
TTQuanti_continuous_single()
Definition: ttquanti.h:252
TTQuanti_continuous_var_pleio : variable pleiotropy.
Definition: ttquanti.h:193
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.cc:3471
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3437
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3501
TTQuanti_continuous_var_pleio()
Definition: ttquanti.h:196
virtual TTQuanti_continuous_var_pleio * clone()
Definition: ttquanti.h:206
virtual void show_up()
Definition: ttquanti.cc:3573
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3454
TTQuanti_continuous_var_pleio(const TTQuanti_continuous_var_pleio &TT)
Definition: ttquanti.h:198
virtual ~TTQuanti_continuous_var_pleio()
Definition: ttquanti.h:200
virtual void init_sequence()
Definition: ttquanti.cc:3514
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti.cc:3486
TTQuanti_continuous.
Definition: ttquanti.h:110
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.cc:3236
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti.cc:3180
TTQuanti_continuous(const TTQuanti &T)
Definition: ttquanti.h:119
TTQuanti_continuous()
Definition: ttquanti.h:114
virtual void set_allele(int locus, int allele, double value)
Definition: ttquanti.h:147
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.cc:3228
virtual bool operator!=(const TTrait &T)
Definition: ttquanti.cc:3162
virtual void ** get_sequence() const
Definition: ttquanti.h:133
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti.h:153
virtual ~TTQuanti_continuous()
Definition: ttquanti.h:124
virtual void set_sequence(void **seq)
Definition: ttquanti.cc:3245
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:148
virtual void init()
Definition: ttquanti.cc:3188
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:150
virtual TTQuanti_continuous & operator=(const TTrait &T)
Definition: ttquanti.cc:3124
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti.cc:3221
virtual double get_allele_value(int loc, int all) const
Definition: ttquanti.cc:3172
virtual bool operator==(const TTrait &T)
Definition: ttquanti.cc:3145
virtual void reset()
Definition: ttquanti.cc:3206
double ** _sequence
Definition: ttquanti.h:158
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti.h:152
TTQuanti_diallelic_full_pleio : pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti.h:350
virtual TTQuanti_diallelic_full_pleio * clone()
Definition: ttquanti.h:361
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4142
virtual void show_up()
Definition: ttquanti.cc:4237
TTQuanti_diallelic_full_pleio()
Definition: ttquanti.h:353
virtual ~TTQuanti_diallelic_full_pleio()
Definition: ttquanti.h:357
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti.cc:4163
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4179
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4124
virtual void init_sequence()
Definition: ttquanti.cc:4191
TTQuanti_diallelic_full_pleio(const TTQuanti_diallelic_full_pleio &TT)
Definition: ttquanti.h:355
TTQuanti_diallelic_no_pleio : single or multiple non-pleiotropic traits, di-allelic.
Definition: ttquanti.h:323
TTQuanti_diallelic_no_pleio()
Definition: ttquanti.h:326
virtual ~TTQuanti_diallelic_no_pleio()
Definition: ttquanti.h:330
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti.cc:4011
virtual TTQuanti_diallelic_no_pleio * clone()
Definition: ttquanti.h:334
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3990
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3973
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4027
virtual void init_sequence()
Definition: ttquanti.cc:4037
TTQuanti_diallelic_no_pleio(const TTQuanti_diallelic_no_pleio &TT)
Definition: ttquanti.h:328
virtual void show_up()
Definition: ttquanti.cc:4081
TTQuanti_diallelic_var_pleio : variable pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti.h:377
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti.cc:4329
TTQuanti_diallelic_var_pleio(const TTQuanti_diallelic_var_pleio &TT)
Definition: ttquanti.h:382
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4346
TTQuanti_diallelic_var_pleio()
Definition: ttquanti.h:380
virtual TTQuanti_diallelic_var_pleio * clone()
Definition: ttquanti.h:390
virtual ~TTQuanti_diallelic_var_pleio()
Definition: ttquanti.h:384
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4275
virtual void show_up()
Definition: ttquanti.cc:4404
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.cc:4314
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4293
virtual void init_sequence()
Definition: ttquanti.cc:4360
TTQuanti_diallelic.
Definition: ttquanti.h:276
virtual void ** get_sequence() const
Definition: ttquanti.h:294
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:311
TTQuanti_diallelic()
Definition: ttquanti.h:280
TTQuanti_diallelic(const TTQuanti &T)
Definition: ttquanti.h:282
virtual TTQuanti_diallelic & operator=(const TTrait &T)
Definition: ttquanti.cc:3841
virtual void init()
Definition: ttquanti.cc:3807
virtual bool operator==(const TTrait &T)
Definition: ttquanti.cc:3862
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:309
virtual void reset()
Definition: ttquanti.cc:3825
unsigned char ** _sequence
Definition: ttquanti.h:316
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti.cc:3936
virtual ~TTQuanti_diallelic()
Definition: ttquanti.h:284
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.cc:3943
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.cc:3951
virtual void set_allele(int locus, int allele, double value)
Definition: ttquanti.h:308
virtual double get_allele_value(int locus, int allele) const
Definition: ttquanti.cc:3908
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti.cc:3919
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti.cc:3889
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti.cc:3898
virtual void set_sequence(void **seq)
Definition: ttquanti.cc:3961
void inherit_free(const TTrait *mother, const TTrait *father)
virtual bool operator!=(const TTrait &T)
Definition: ttquanti.cc:3879
TTQuanti.
Definition: ttquanti.h:59
virtual void mutate_add(unsigned int position, unsigned int allele, double value)=0
TProtoQuanti * _myProto
Definition: ttquanti.h:103
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)=0
virtual ~TTQuanti()
Definition: ttquanti.h:70
virtual void set_value()
Definition: ttquanti.cc:3091
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)=0
TProtoQuanti * get_proto()
Definition: ttquanti.h:96
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const =0
virtual double get_dominant_genotype(const unsigned int trait) const =0
void set_phenotype(unsigned int trait, double value)
Definition: ttquanti.cc:3111
virtual double get_additive_genotype(const unsigned int trait) const =0
TTQuanti()
Definition: ttquanti.h:62
virtual void * getValue() const
Definition: ttquanti.h:77
virtual void * set_trait(void *value)
Definition: ttquanti.h:75
TTQuanti(const TTQuanti &T)
Definition: ttquanti.h:67
void set_proto(TProtoQuanti *proto)
Definition: ttquanti.h:95
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)=0
virtual void inherit(const TTrait *mother, const TTrait *father)
Definition: ttquanti.cc:3082
double get_phenotype(unsigned int trai)
Definition: ttquanti.cc:3102
double * _phenotypes
Definition: ttquanti.h:102
virtual double get_full_genotype(unsigned int trait)=0
virtual void mutate()
Definition: ttquanti.cc:3075
virtual void copy_sequence_block(sex_t SEX, unsigned int strand, unsigned int from_pos, unsigned int to_pos, const TTQuanti *parent)=0
virtual trait_t get_type() const
Definition: ttquanti.h:72
Interface for all trait types, declares all basic trait operations.
Definition: ttrait.h:46
Template class for the trait's FileHandler.
Definition: filehandler.h:217
Template class for the trait's StatHandler.
Definition: stathandler.h:168
#define QUANT
Definition: types.h:72
std::string trait_t
Trait types.
Definition: types.h:63
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:36
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.4.0b by  doxygen 1.9.1 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR