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 /*
2 *
3 * @file ttquanti.h
4 * Nemo2
5 *
6 * Copyright (C) 2006-2023 Frederic Guillaume
7 * frederic.guillaume@helsinki.fi
8 *
9 * This file is part of Nemo
10 *
11 * Nemo is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * Nemo is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 *
25 * created on @date 14.11.2005
26 *
27 * @author fred
28 */
29 
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 "bitstring.h"
38 #include "filehandler.h"
39 #include "stathandler.h"
40 #include "metapop.h"
41 #include "datatable.h"
42 #include "Uniform.h"
43 
44 #ifdef HAS_GSL
45 #include <gsl/gsl_vector.h>
46 #include <gsl/gsl_matrix.h>
47 #include <gsl/gsl_eigen.h>
48 #endif
49 
50 class TTQuantiSH;
51 class TTQuantiFH;
52 class TTQFreqExtractor;
53 class TTQOhtaStats;
54 class TProtoQuanti;
55 
56 // ------------------------------------------------------------------------------
60 // ------------------------------------------------------------------------------
61 class TTQuanti : public TTrait {
62 
63 public:
65  {
66 // message("CONSTRUCTOR::TTQuanti::CONSTRUCTOR\n");
67  }
68 
70 // { message("COPY CONSTRUCTOR::TTQuanti::COPY CONSTRUCTOR\n"); }
71 
72  virtual ~TTQuanti () {}
73 
74  virtual trait_t get_type () const {return QUANT;}
75  virtual void mutate ();
76  virtual void inherit (const TTrait* mother, const TTrait* father);
77  virtual void* set_trait (void* value) {return value;}
78  virtual void set_value ();
79  virtual void* getValue () const {return _phenotypes;}
80 
81  // TTQuanti interface:
82  virtual double get_additive_genotype (const unsigned int trait) const = 0;
83  virtual double get_dominant_genotype (const unsigned int trait) const = 0;
84  virtual double get_full_genotype (unsigned int trait) = 0;
85  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_pos,
86  unsigned int to_pos, const TTQuanti *parent) = 0;
87  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
88  const TTQuanti *parent) = 0;
89  virtual void mutate_add (unsigned int position, unsigned int allele, double value) = 0;
90  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value) = 0;
91 
92  // interface to di-allelic architecture
93  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const = 0;
94  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value) = 0;
95 
96  //accessors
97  void set_proto (TProtoQuanti* proto) {_myProto = proto;}
99  double get_phenotype (unsigned int trai);
100  void set_phenotype (unsigned int trait, double value);
102 
103 protected:
104 
105  double *_phenotypes;
108 };
109 // ------------------------------------------------------------------------------
113 // ------------------------------------------------------------------------------
115 
116 public:
117 
119  {
120 // message("CONSTRUCTOR::TTQuanti_continuous::CONSTRUCTOR\n");
121  }
122 
124  {
125 // message("COPY CONSTRUCTOR::TTQuanti_continuous::COPY CONSTRUCTOR\n");
126  }
127 
128  virtual ~TTQuanti_continuous () {
129 // message("DESTRUCTOR::TTQuanti_continuous::DESTRUCTOR\n");
130  reset();
131  }
132 
133  //implements TTrait:
134  virtual void reset ();
135  virtual void init ();
136  virtual void set_sequence (void** seq);
137  virtual void** get_sequence () const {return (void**)_sequence;}
138  virtual unsigned int get_allele (int loc, int all) const ;
139  virtual double get_allele_value (int loc, int all) const;
140  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
141 
142  virtual TTQuanti_continuous& operator= (const TTrait& T);
143  virtual bool operator== (const TTrait& T);
144  virtual bool operator!= (const TTrait& T);
145 
146  //implements StorableComponent:
147  virtual void store_data ( BinaryStorageBuffer* saver );
148  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
149 
150  //implements TTQuanti:
151  virtual double get_full_genotype (unsigned int trait);
152  virtual void set_allele (int locus, int allele, double value) {_sequence[allele][locus] = value;}
153  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
154  {_sequence[allele][position] += value;}
155  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
156  {_sequence[allele][position] = value;}
157  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const {return false;}
158  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value) {}
159 
160 
161 protected:
162 
163  double **_sequence;
164 };
165 // Deriving specialized classes
166 // ------------------------------------------------------------------------------
170 // ------------------------------------------------------------------------------
172 
173 public:
175 
177 
179 
180  //TTtrait implementation:
181  virtual void init_sequence ();
183  virtual void show_up();
184 
185  //TTQuanti implementation:
186  virtual double get_additive_genotype (const unsigned int trait) const;
187  virtual double get_dominant_genotype (const unsigned int trait) const;
188  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
189  unsigned int to_locus, const TTQuanti *parent);
190  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
191  const TTQuanti *parent);
192 };
193 // ------------------------------------------------------------------------------
197 // ------------------------------------------------------------------------------
199 
200 public:
202 
204 
206 
207  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
208 
209  //TTtrait implementation:
210  virtual void init_sequence ();
212  virtual void show_up();
213 
214  //TTQuanti implementation:
215  virtual double get_additive_genotype (const unsigned int trait) const;
216  virtual double get_dominant_genotype (const unsigned int trait) const;
217  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
218  unsigned int to_locus, const TTQuanti *parent);
219  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
220  const TTQuanti *parent);
221 };
222 // ------------------------------------------------------------------------------
226 // ------------------------------------------------------------------------------
228 
229 public:
231 
233 
235 
236  //TTtrait implementation:
237  virtual void init_sequence ();
239  virtual void show_up();
240 
241  //TTQuanti implementation:
242  virtual double get_additive_genotype (const unsigned int trait) const;
243  virtual double get_dominant_genotype (const unsigned int trait) const;
244  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
245  unsigned int to_locus, const TTQuanti *parent);
246  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
247  const TTQuanti *parent);
248 };
249 // ------------------------------------------------------------------------------
253 // ------------------------------------------------------------------------------
255 
256 public:
258 
260 
262 
263  //TTtrait implementation:
264  virtual void init_sequence ();
266  virtual void show_up();
267 
268  //TTQuanti implementation:
269  virtual double get_additive_genotype (const unsigned int trait) const;
270  virtual double get_dominant_genotype (const unsigned int trait) const;
271  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
272  unsigned int to_locus, const TTQuanti *parent);
273  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
274  const TTQuanti *parent);
275 };
276 // ------------------------------------------------------------------------------
280 // ------------------------------------------------------------------------------
281 class TTQuanti_diallelic : public TTQuanti {
282 
283 public:
284 
286 
288 
289  virtual ~TTQuanti_diallelic () {reset();}
290 
291  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const;
292  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value);
293  void inherit_free (const TTrait* mother, const TTrait* father);
294 
295  //implements TTrait:
296  virtual void reset ();
297  virtual void init ();
298  virtual void set_sequence (void** seq);
299  virtual void** get_sequence () const {return (void**)_sequence;}
300  virtual unsigned int get_allele (int loc, int all) const ;
301  virtual double get_allele_value (int locus, int allele) const;
302  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
303 
304  virtual TTQuanti_diallelic& operator= (const TTrait& T);
305  virtual bool operator== (const TTrait& T);
306  virtual bool operator!= (const TTrait& T);
307 
308  //implements StorableComponent:
309  virtual void store_data ( BinaryStorageBuffer* saver );
310  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
311 
312  //implements TTQuanti:
313  virtual double get_full_genotype (unsigned int trait);
314  virtual void set_allele (int locus, int allele, double value) {_sequence[allele][locus] = bool(value);}
315  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
316  {_sequence[allele][position] = bool(value);}
317  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
318  {_sequence[allele][position] ^= 1;}
319 
320 protected:
321 
322  unsigned char** _sequence;
323 };
324 // ------------------------------------------------------------------------------
328 // ------------------------------------------------------------------------------
330 
331 public:
333 
335 
337 
338  //TTtrait implementation:
339  virtual void init_sequence ();
341  virtual void show_up();
342 
343  //TTQuanti implementation:
344  virtual double get_additive_genotype (const unsigned int trait) const;
345  virtual double get_dominant_genotype (const unsigned int trait) const;
346  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
347  unsigned int to_locus, const TTQuanti *parent);
348  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
349  const TTQuanti *parent);
350 };
351 // ------------------------------------------------------------------------------
355 // ------------------------------------------------------------------------------
357 
358 public:
360 
362 
364 
365  //TTtrait implementation:
366  virtual void init_sequence ();
368  virtual void show_up();
369 
370  //TTQuanti implementation:
371  virtual double get_additive_genotype (const unsigned int trait) const;
372  virtual double get_dominant_genotype (const unsigned int trait) const;
373  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
374  unsigned int to_locus, const TTQuanti *parent);
375  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
376  const TTQuanti *parent);
377 };
378 // ------------------------------------------------------------------------------
382 // ------------------------------------------------------------------------------
384 
385 public:
387 
389 
391 
392  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
393 
394  //TTtrait implementation:
395  virtual void init_sequence ();
397  virtual void show_up();
398 
399  //TTQuanti implementation:
400  virtual double get_additive_genotype (const unsigned int trait) const;
401  virtual double get_dominant_genotype (const unsigned int trait) const;
402  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
403  unsigned int to_locus, const TTQuanti *parent);
404 
405  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
406  const TTQuanti *parent);
407 };
408 
409 
410 // ------------------------------------------------------------------------------
414 // ------------------------------------------------------------------------------
415 class TProtoQuanti : public TTProtoWithMap {
416 
417 public:
418 
419  TProtoQuanti ();
420  TProtoQuanti (const TProtoQuanti& T);
421  virtual ~TProtoQuanti ();
422 
423  unsigned int get_num_traits() {return _num_traits;}
424  unsigned int get_num_locus() {return _num_locus;}
425  unsigned int get_num_locus (unsigned int trait) {return _trait_table[trait].size();}
426  unsigned int get_pleiotropy_type() {return _pleio_type;}
427  unsigned int get_seq_length () {return _seq_length;}
430  vector<double> get_env_var () {return _eVariance;}
431  vector<double> get_heritability () {return _h2;}
432  unsigned int get_h2_setTime () {return _h2_setTime;}
433  bool get_h2_isBroad () {return _h2_isBroad;}
434  unsigned int get_allele_model () {return _allele_model;}
436  double get_diallele_value (unsigned int locus, unsigned int allele)
437  {return _allele_value.get(locus, allele);}
438  double get_seq_diallele_value (unsigned int position, unsigned int allele)
439  {return _sequence_diallele_values[allele][position];}
442  double get_equal_val_0 () {return _equal_val_0;}
443  double get_equal_val_1 () {return _equal_val_1;}
445  const bitstring& get_trait_mask (unsigned int trait) const
446  {return _trait_masks[trait];}
447  double get_init_value (unsigned int i) {return _init_value.get(0,i); }
448  double get_init_variance (unsigned int i) {return _init_variance.get(0,i);}
449  unsigned int get_doInitMutation () {return _doInitMutation;}
451 
453  unsigned int get_locus_seq_pos (unsigned int loc, unsigned int trait)
454  {return _trait_table[trait][loc];}
455  unsigned int get_locus_ID (unsigned int locus, unsigned int trait)
456  {return _trait_locus_table[trait][locus];}
457  unsigned int get_locus_PD (unsigned int locus) {return _locus_table[locus][1];}
458  unsigned int get_locus_start_pos (unsigned int locus) {return _locus_table[locus][0];}
459  unsigned int get_sequence_block_size (unsigned int from, unsigned int to) {
460  return (to < _num_locus ? _locus_table[to][0] : _seq_length)
461  - _locus_table[from][0];
462  }
463 
464  void set_eVarianceSD (unsigned int trait, double SD);
465  void set_init_values (const double *values, unsigned int nval);
466  void set_trait_value_func_ptr (bool withVe);
467  double set_trait_value_VE (const TTQuanti* ind, const unsigned int trait);
468  double set_trait_value_noVE (const TTQuanti* ind, const unsigned int trait);
469 
470  double set_genotype_value_additive (const TTQuanti* ind, const unsigned int trait);
471  double set_genotype_value_dominance (const TTQuanti* ind, const unsigned int trait);
472 
473  int get_allele_position (const unsigned int locus, const unsigned int trait);
474  double get_allele_value (const TTQuanti* ind, const unsigned int allele, const unsigned int locus, const unsigned int trait);
475  double get_genotype_with_dominance (const double a1, const double a2, const unsigned int locus, const unsigned int trait);
476  double get_genotype_dominance_h (double a1, double a2, double h);
477  double get_genotype_dominance_k (double a1, double a2, double k);
478  unsigned int get_dominance_model () {return _dominance_model;}
479  double get_dominance (unsigned int locus, unsigned int trait)
480  {return _dominance_effects.get(trait, locus); }
482 
483  double get_trait_mutation_variance (unsigned int trait);
484 
485  double get_genotypic_value (const TTQuanti* ind, const unsigned int trait) {
486  return (this->*_set_genotype_func_ptr)(ind, trait);
487  }
488 
489  double get_phenotypic_value (const TTQuanti* ind, const unsigned int trait) {
490  return (this->*_set_trait_value_func_ptr)(ind, trait);
491  }
492 
493 
494  // Parameter setters
495  bool setHeritabilityParams ();
496  bool setInitialValuesParams ();
497  bool setGeneticMapParams ();
498  unsigned int setAlleleModel ();
504  bool setMutationCorrelation ();
505  bool setDominanceParameters ();
506 
508 
511  bool readMatrixFromQuantiMutationMatrix (vector<vector<double>>& varmat);
515  void allocate_gsl_mutation_matrix_space (unsigned int num_locus);
517  gsl_matrix* set_gsl_mutation_matrix_from_sigma (unsigned int loc, unsigned int pleio_deg);
518  gsl_matrix* set_gsl_mutation_matrix (unsigned int pleio_deg, const vector<double>& varcov);
519  void set_mutation_matrix_decomposition (unsigned int loc, unsigned int pleio_deg);
520 
521  // mutation generation functions
522  // first set for continuum-of-allele model with a single mutation matrix across all loci:
523  double* getMutationEffectMultivariateGaussian (unsigned int loc);
524  double* getMutationEffectBivariateGaussian (unsigned int loc);
525  double* getMutationEffectUnivariateGaussian (unsigned int loc);
526  // different implementation for locus-specific mutation matrices:
527  double* getMutationEffectMultivariateGaussianLocSpec (unsigned int loc);
528  double* getMutationEffectBivariateGaussianLocSpec (unsigned int loc);
529  double* getMutationEffectUnivariateGaussianLocSpec (unsigned int loc);
530 
531 // double* getMutationEffectUnivariateDiallelic (unsigned int loc);
532  double* getMutationEffectBivariateDiallelic (unsigned int loc);
533  double* getMutationEffects (unsigned int loc) {
534  return (this->* _getMutationValues)(loc);
535  }
536  double* getMutationEffectsVarPleio (unsigned int loc) {
537  return (this->* _getMutationValuesVarPleio[loc]) (loc);
538  }
539  void inherit (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
540  void inherit_free (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
541  void inherit_low (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
542 
543  unsigned int get_num_mutations () {
544  return (unsigned int)RAND::Binomial(_mutation_rate, _2L);
545  }
546  void mutate (TTQuanti* ind);
547  void mutate_nill (TTQuanti* ind);
548  void mutate_full_pleio (TTQuanti* ind);
549  void mutate_var_pleio (TTQuanti* ind);
550  void mutate_no_pleio (TTQuanti* ind);
553  void mutate_inplace_no_pleio (TTQuanti* ind);
554 
555  void mutate_diallelic_pleio (TTQuanti* ind);
558 
559  // EPISTASIS
560  bool setEpistasisParameters ();
561 // double get_epistatic_mean () {return _epistatic_mean;}
562 // double get_epistatic_variance () {return _epistatic_variance;}
563 // double get_epistatic_prop_large () {return _epistatic_prop_large;}
564 // double get_epistatic_large_mean () {return _epistatic_large_mean;}
565 // double get_epistatic_large_variance () {return _epistatic_large_variance;}
566  unsigned int get_num_epi_coefs () {return _num_epi_coefs;}
567  bool do_epistasis () {return _epistasis;}
570 
573  virtual void reset () {TTProtoWithMap::reset();}
574  virtual TTQuanti* hatch ();
575  virtual TProtoQuanti* clone () {return new TProtoQuanti(*this);}
576  virtual trait_t get_type () const {return QUANT;}
578  virtual int get_phenotype_dimension () {return _num_traits;}
580  virtual int get_allele_number () {return (_allele_model > 2 ? 3: 2);} //3 just means more than di-allelic
582  virtual int get_locus_number () {return _num_locus;}
586  virtual void store_data ( BinaryStorageBuffer* saver )
587  {saver->store(&_seq_length,sizeof(int));}
588 
589  virtual bool retrieve_data ( BinaryStorageBuffer* reader )
590  {reader->read(&_seq_length,sizeof(int));return true;}
594  virtual bool setParameters();
595  virtual void loadFileServices ( FileServices* loader );
596  virtual void loadStatServices ( StatServices* loader );
597  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
599 
600 protected:
601 
603  unsigned int _num_locus;
605  unsigned int _2L;
607  unsigned int _num_traits;
609  unsigned int _seq_length;
610  unsigned int _allele_model;
612 
613  //mutations:
616 
617  //Pleiotropy type: 0 = "no pleio", 1 = "full", 2 = "variable"
618  unsigned int _pleio_type;
619 
620 private:
621 
622  TMatrix _allele_value; // num locus x 2
624  bool _equal_effects; // true when all loci share the same (val_0, val_1)
625  double _equal_val_0; // shared ancestral allele value
626  double _equal_val_1; // shared derived allele value
627  double _equal_val_diff; // val_1 - val_0, precomputed
628  vector<bitstring> _trait_masks; // one per trait, bit i set iff position i belongs to that trait
629  TMatrix _init_value; // initial value of each trait
630  TMatrix _init_variance; // initial variance of each trait
631 // double* _phenotypes; // num traits
632 
633  //mutations:
634  TMatrix _mutation_correlation; // 1 x n_locus, one correlation per locus, applied to all trait pairs
635  TMatrix _mutation_sigma; // n_locus x n_trait, variance per locus, used in the bivariate case, and to initialize the m-matrix
636  gsl_matrix **_gsl_mutation_matrix; // one mutation matrix per locus
637  gsl_matrix **_evect;
638  gsl_vector **_eval;
639  gsl_vector **_effects_multivar;
640  gsl_vector **_ws;
641  double _effects_bivar[2];
642  unsigned int _doInitMutation;
643  bool _mutationVarianceIsLocusSpecific; // a single mutation matrix for all loci
644  bool _mutationEffectIsFixedDiAllele; // bitstring sequence not storing effects
645 
646  // dominance
647  unsigned int _dominance_model;
650 
651  //recombination:
655 
656  //heritability
657  vector<double> _eVariance;
658  vector<double> _h2;
659  unsigned int _h2_setTime;
661 
662  //variable pleiotropy
663 
666 
668  vector< vector<unsigned int> > _trait_table;
669 
671  vector< vector<unsigned int> > _trait_locus_table;
672 
676  vector< vector<unsigned int> > _locus_table;
677 
678 
679  // EPISTASIS
681  unsigned int _num_epi_coefs;
684 
685 
686  // function pointers
687 
690 
693 
695  double* (TProtoQuanti::* _getMutationValues) (unsigned int);
696 
698  vector< double* (TProtoQuanti::* ) (unsigned int) > _getMutationValuesVarPleio;
699 
701  double (TProtoQuanti::* _getGenotypeWithDominance) (double, double, double);
702 
703 
707  double (TProtoQuanti::* _set_trait_value_func_ptr) (const TTQuanti*, const unsigned int);
708 
709 
713  double (TProtoQuanti::* _set_genotype_func_ptr) (const TTQuanti*, const unsigned int);
714 
715  friend class TTQuanti;
716  friend class TTQuanti_continuous;
721 
727 };
728 
729 // ------------------------------------------------------------------------------
733 // ------------------------------------------------------------------------------
734 class TTQuantiSH : public TraitStatHandler<TProtoQuanti, TTQuantiSH> {
735 
736  double *_meanP, *_meanG, *_Va, *_Vg, *_Vb, *_Vp, *_covar;
737  double **_pmeanP, **_pmeanG, **_pVa, **_pVp, **_pcovar, **_peigval, **_peigvect;
738  bool _eVar;
739 
741 
742  gsl_matrix *_G, *_evec;
743  gsl_vector *_eval;
744  gsl_eigen_symmv_workspace *_ws;
745 
748 
749 public:
750 
753  _meanP(0), _meanG(0), _Va(0), _Vg(0), _Vb(0), _Vp(0), _covar(0),
754  _pmeanP(0), _pmeanG(0), _pVa(0), _pVp(0), _pcovar(0), _peigval(0), _peigvect(0),
755  _eVar(0), _num_locus(0), _num_trait(0),_patchNbr(0), _G(0), _evec(0),_eval(0),_ws(0),
756  _table_set_gen(999999), _table_set_age(999999), _table_set_repl(999999)
757  {}
758 
759  virtual ~TTQuantiSH() {resetPtrs();}
760 
761  void resetPtrs();
762 
763  virtual void init ( );
764 
765  virtual bool setStatRecorders (std::string& token);
766 
767  void addQuanti (age_t AGE);
768  void addQuantiPerPatch (age_t AGE);
769  void addAvgPerPatch (age_t AGE);
770  void addGenotPerPatch (age_t AGE);
771  void addVarPerPatch (age_t AGE);
772  void addCovarPerPatch (age_t AGE);
773  void addEigenPerPatch (age_t AGE);
774  void addEigenValuesPerPatch (age_t AGE);
775  void addEigenVect1PerPatch (age_t AGE);
776  void addSkewPerPatch (age_t AGE);
777 
778  void setDataTables (age_t AGE);
781  void setStats (age_t AGE);
782  double getMeanGenot (unsigned int i) {return _meanG[i];}
783  double getMeanPhenot (unsigned int i) {return _meanP[i];}
784  double getVa (unsigned int i) {return _Va[i];}
785  double getVg (unsigned int i) {return _Vg[i];}
786  double getVb (unsigned int i) {return _Vb[i];}
787  double getVp (unsigned int i) {return _Vp[i];}
788  double getQst (unsigned int i) {return _Vb[i]/(_Vb[i]+2*_Va[i]);}
789  double getCovar (unsigned int i) {return _covar[i];}
790 
791  double getMeanGenotPerPatch (unsigned int i, unsigned int p) {return _pmeanG[i][p];}
792  double getMeanPhenotPerPatch (unsigned int i, unsigned int p) {return _pmeanP[i][p];}
793  double getVaPerPatch (unsigned int i, unsigned int p) {return _pVa[i][p];}
794  double getVpPerPatch (unsigned int i, unsigned int p) {return _pVp[i][p];}
795  double getEigenValuePerPatch (unsigned int i, unsigned int p) {return _peigval[i][p];}
796  double getCovarPerPatch (unsigned int p, unsigned int i) {return _pcovar[p][i];}
797  double getEigenVectorEltPerPatch (unsigned int p, unsigned int v) {return _peigvect[p][v];}
798  double getSkewPerPatch (unsigned int i, unsigned int p);
799 
800  vector<double> getSNPalleleFreqInPatch (Patch* patch, const age_idx AGE);
801  vector<double> getVaWithDominance (Patch* curPop, const age_idx AGE);
802  vector<double> getVaNoDominance (Patch* curPop, const age_idx AGE);
803 
804 };
805 // ------------------------------------------------------------------------------
809 // ------------------------------------------------------------------------------
810 class TTQuantiFH : public TraitFileHandler<TProtoQuanti> {
811 
814 
815 public:
817  _has_genetic_map(0) {}
818  virtual ~TTQuantiFH(){}
819 
820  void setOutputOption (string opt);
821 
822  virtual void FHwrite ();
823  void write_TABLE ();
824  void print(ofstream& FH, Patch* patch, sex_t SEX, age_idx Ax, unsigned int print_gene, bool print_genotype, bool print_additive_genotype);
825  void write_PLINK ();
826  void print_PLINK_PED(ofstream& FH, age_idx Ax, Patch *patch);
827  void print_PLINK_FAM(ofstream& FH, age_idx Ax, Patch *patch);
828 
829  virtual void FHread (string& filename);
830 };
831 // ------------------------------------------------------------------------------
835 // ------------------------------------------------------------------------------
836 class TTQFreqExtractor : public TraitFileHandler<TProtoQuanti> {
837 
838  vector< string > _records;
839 
840 public:
842 
843  void resetTable();
844 
845  virtual ~TTQFreqExtractor () {}
846  virtual void FHwrite ();
847  virtual void FHread (string& filename) {}
848 };
849 
850 // ------------------------------------------------------------------------------
854 // ------------------------------------------------------------------------------
855 class TTQOhtaStats : public TraitFileHandler<TProtoQuanti> {
856 
858 
859 public:
861 
862  virtual ~TTQOhtaStats () {}
863  virtual void FHwrite ();
864  virtual void FHread (string& filename) {}
865 };
866 #endif
867 
Nemo2.
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
static double Binomial(double p, unsigned int n)
Definition: Uniform.h:492
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:415
bool setMutationSigmaFromQuantiMutationVariance()
Definition: ttquanti.cc:1922
bool _equal_effects
Definition: ttquanti.h:624
vector< double > _eVariance
Definition: ttquanti.h:657
double * getMutationEffectMultivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2390
unsigned int setAlleleModel()
Definition: ttquanti.cc:805
double set_genotype_value_dominance(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2532
bool do_epistasis()
Definition: ttquanti.h:567
unsigned int _allele_model
Definition: ttquanti.h:610
TMatrix _dominance_effects
Definition: ttquanti.h:648
bool _epistasis
Definition: ttquanti.h:680
size_t _sizeofLocusType
Definition: ttquanti.h:654
void set_mutation_matrix_decomposition(unsigned int loc, unsigned int pleio_deg)
Definition: ttquanti.cc:2259
unsigned int _doInitMutation
Definition: ttquanti.h:642
unsigned int get_locus_PD(unsigned int locus)
Definition: ttquanti.h:457
void mutate_inplace_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2788
double set_genotype_value_additive(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2525
void setTraitAndLocusTables_full_pleio()
Definition: ttquanti.cc:1273
virtual ~TProtoQuanti()
Definition: ttquanti.cc:224
double set_trait_value_VE(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2511
virtual int get_phenotype_dimension()
Returns the dimension of the phenotype of the trait (size of the array accessed with TTrait::getValue...
Definition: ttquanti.h:578
void mutate_diallelic_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2847
void mutate_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2717
bool setContinuousMutationModel_var_pleio()
Definition: ttquanti.cc:1669
unsigned int _dominance_model
Definition: ttquanti.h:647
bool _equal_dom_coeff
Definition: ttquanti.h:649
double get_equal_val_diff()
Definition: ttquanti.h:444
TMatrix _mutation_correlation
Definition: ttquanti.h:634
double * getMutationEffectUnivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2433
gsl_matrix * set_gsl_mutation_matrix_from_sigma(unsigned int loc, unsigned int pleio_deg)
Definition: ttquanti.cc:2223
bool setMutationModel_var_pleio()
Definition: ttquanti.cc:948
double get_allele_value(const TTQuanti *ind, const unsigned int allele, const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2487
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:689
bool setMutationModel_no_pleio()
Definition: ttquanti.cc:1144
bool _h2_isBroad
Definition: ttquanti.h:660
const TMatrix & get_diallele_values()
Definition: ttquanti.h:435
const TMatrix & get_pleio_matrix()
Definition: ttquanti.h:452
TTQuantiFH * _reader
Definition: ttquanti.h:724
bool setDominanceParameters()
Definition: ttquanti.cc:2311
unsigned int _h2_setTime
Definition: ttquanti.h:659
unsigned int _seq_length
Total number of allelic values stored in individual sequences, no trait x no locus.
Definition: ttquanti.h:609
double _mutation_rate
Definition: ttquanti.h:614
gsl_matrix ** _evect
Definition: ttquanti.h:637
void mutate_nill(TTQuanti *ind)
Definition: ttquanti.cc:2663
bool setContinuousMutationModel_no_pleio()
Definition: ttquanti.cc:1826
gsl_vector ** _ws
Definition: ttquanti.h:640
TMatrix _mutation_sigma
Definition: ttquanti.h:635
double get_dominance(unsigned int locus, unsigned int trait)
Definition: ttquanti.h:479
bool setInitialValuesParams()
Definition: ttquanti.cc:594
bool _mutationVarianceIsLocusSpecific
Definition: ttquanti.h:643
const TMatrix & get_epi_coefs() const
Definition: ttquanti.h:568
bool readMatrixFromQuantiMutationMatrix(vector< vector< double >> &varmat)
Definition: ttquanti.cc:2058
TMatrix _allele_value
Definition: ttquanti.h:622
bool setGeneticMapParams()
Definition: ttquanti.cc:649
double * getMutationEffects(unsigned int loc)
Definition: ttquanti.h:533
double * getMutationEffectBivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2414
void set_trait_value_func_ptr(bool withVe)
Definition: ttquanti.cc:679
TTQuantiSH * get_stater()
Definition: ttquanti.h:450
vector< double > _h2
Definition: ttquanti.h:658
unsigned int _num_epi_coefs
Definition: ttquanti.h:681
size_t get_locus_byte_size()
Definition: ttquanti.h:429
void mutate_diallelic_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2878
double get_genotypic_value(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.h:485
unsigned int _num_traits
Number of traits.
Definition: ttquanti.h:607
double * _sequence_diallele_values[2]
Definition: ttquanti.h:623
double get_init_value(unsigned int i)
Definition: ttquanti.h:447
void mutate_inplace_full_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2763
size_t get_size_locus_type()
Definition: ttquanti.h:428
unsigned int get_locus_ID(unsigned int locus, unsigned int trait)
Definition: ttquanti.h:455
TTQuantiSH * _stats
Definition: ttquanti.h:722
virtual TTQuanti * hatch()
Definition: ttquanti.cc:2898
void set_init_values(const double *values, unsigned int nval)
Definition: ttquanti.cc:2501
void(TProtoQuanti::* _mutation_func_ptr)(TTQuanti *)
Pointer to mutation function, which depends on allele on model (HC, noHC, diallelic)
Definition: ttquanti.h:692
gsl_vector ** _effects_multivar
Definition: ttquanti.h:639
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:713
void inherit(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2594
TMatrix _pleio_matx
Pleiotropy matrix provided in input (num locu X num trait).
Definition: ttquanti.h:665
unsigned int get_num_epi_coefs()
Definition: ttquanti.h:566
string _diallele_datatype
Definition: ttquanti.h:611
const bitstring & get_trait_mask(unsigned int trait) const
Definition: ttquanti.h:445
double get_seq_diallele_value(unsigned int position, unsigned int allele)
Definition: ttquanti.h:438
double _genomic_mutation_rate
Definition: ttquanti.h:615
gsl_matrix ** _gsl_mutation_matrix
Definition: ttquanti.h:636
bool has_equal_effects()
Definition: ttquanti.h:441
double * getMutationEffectBivariateDiallelic(unsigned int loc)
Definition: ttquanti.cc:2457
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.h:589
double get_diallele_value(unsigned int locus, unsigned int allele)
Definition: ttquanti.h:436
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:671
unsigned int get_allele_model()
Definition: ttquanti.h:434
double get_init_variance(unsigned int i)
Definition: ttquanti.h:448
bool * _all_chooser
Definition: ttquanti.h:652
bool setMutationSigmaFromQuantiMutationVariance_no_pleio()
Definition: ttquanti.cc:1992
double(TProtoQuanti::* _getGenotypeWithDominance)(double, double, double)
Pointer to either dominance_h() or dominance_k() function computing the genotypic value with dominanc...
Definition: ttquanti.h:701
double _equal_val_diff
Definition: ttquanti.h:627
void allocate_gsl_mutation_matrix_space(unsigned int num_locus)
Definition: ttquanti.cc:2117
TMatrix _epistatic_coefs_matrix
Definition: ttquanti.h:682
vector< bitstring > _trait_masks
Definition: ttquanti.h:628
double _equal_val_0
Definition: ttquanti.h:625
TMatrix _init_variance
Definition: ttquanti.h:630
void inherit_low(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2601
virtual int get_locus_number()
Returns the number of locus.
Definition: ttquanti.h:582
void mutate(TTQuanti *ind)
Definition: ttquanti.cc:2656
unsigned int get_h2_setTime()
Definition: ttquanti.h:432
const TMatrix & get_dominance_effects()
Definition: ttquanti.h:481
virtual TProtoQuanti * clone()
Definition: ttquanti.h:575
void mutate_inplace_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2743
double * getMutationEffectUnivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2441
unsigned int get_locus_seq_pos(unsigned int loc, unsigned int trait)
Definition: ttquanti.h:453
void mutate_diallelic_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2812
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:668
void setTraitAndLocusTables_no_pleio(TMatrix &mat)
Definition: ttquanti.cc:1305
gsl_matrix * set_gsl_mutation_matrix(unsigned int pleio_deg, const vector< double > &varcov)
Definition: ttquanti.cc:2186
double * getMutationEffectBivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2424
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:676
unsigned int get_num_mutations()
Definition: ttquanti.h:543
vector< double > get_heritability()
Definition: ttquanti.h:431
const TMatrix & get_epi_coef_index() const
Definition: ttquanti.h:569
size_t _locusByteSize
Definition: ttquanti.h:653
TMatrix _init_value
Definition: ttquanti.h:629
double get_equal_val_0()
Definition: ttquanti.h:442
double set_trait_value_noVE(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2518
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.h:459
unsigned int get_num_locus()
Definition: ttquanti.h:424
virtual void loadStatServices(StatServices *loader)
Definition: ttquanti.cc:3091
unsigned int get_seq_length()
Definition: ttquanti.h:427
bool setEpistasisParameters()
Definition: ttquanti.cc:689
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:707
double get_phenotypic_value(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.h:489
unsigned int get_pleiotropy_type()
Definition: ttquanti.h:426
bool setHeritabilityParams()
Definition: ttquanti.cc:438
virtual trait_t get_type() const
Definition: ttquanti.h:576
double *(TProtoQuanti::* _getMutationValues)(unsigned int)
Pointer to mutation allele value function, which depends on allele model and number of traits affecte...
Definition: ttquanti.h:695
double get_genotype_dominance_k(double a1, double a2, double k)
Definition: ttquanti.cc:2573
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: ttquanti.h:597
double get_genotype_dominance_h(double a1, double a2, double h)
Definition: ttquanti.cc:2557
double _effects_bivar[2]
Definition: ttquanti.h:641
virtual void reset()
Definition: ttquanti.h:573
double * getMutationEffectMultivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2402
bool setDiallelicMutationModel()
Definition: ttquanti.cc:1348
unsigned int get_num_traits()
Definition: ttquanti.h:423
double get_equal_val_1()
Definition: ttquanti.h:443
gsl_vector ** _eval
Definition: ttquanti.h:638
unsigned int get_doInitMutation()
Definition: ttquanti.h:449
TMatrix _epistatic_coefs_indices
Definition: ttquanti.h:683
TTQuantiFH * _writer
Definition: ttquanti.h:723
virtual bool setParameters()
Definition: ttquanti.cc:249
bool has_equal_domCoeff()
Definition: ttquanti.h:440
bool setMutationCorrelation()
Definition: ttquanti.cc:1864
bool get_h2_isBroad()
Definition: ttquanti.h:433
virtual void loadFileServices(FileServices *loader)
Definition: ttquanti.cc:2977
void mutate_full_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2691
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.h:586
bool _mutationEffectIsFixedDiAllele
Definition: ttquanti.h:644
TTQOhtaStats * _ohtaStats
Definition: ttquanti.h:726
double get_trait_mutation_variance(unsigned int trait)
Definition: ttquanti.cc:2580
virtual int get_allele_number()
Returns the number of allele per locus.
Definition: ttquanti.h:580
unsigned int _2L
Diploid locus size, to save on useless operations during mutation.
Definition: ttquanti.h:605
unsigned int get_dominance_model()
Definition: ttquanti.h:478
bool setContinuousMutationModel_full_pleio()
Definition: ttquanti.cc:1502
double * getMutationEffectsVarPleio(unsigned int loc)
Definition: ttquanti.h:536
TProtoQuanti()
Definition: ttquanti.cc:64
bool setMutationModel_full_pleio()
Definition: ttquanti.cc:869
unsigned int _num_locus
Total number of loci, for all traits.
Definition: ttquanti.h:603
unsigned int get_num_locus(unsigned int trait)
Definition: ttquanti.h:425
unsigned int get_locus_start_pos(unsigned int locus)
Definition: ttquanti.h:458
double _equal_val_1
Definition: ttquanti.h:626
void set_eVarianceSD(unsigned int trait, double SD)
Definition: ttquanti.cc:2380
double get_genotype_with_dominance(const double a1, const double a2, const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2539
int get_allele_position(const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2468
void inherit_free(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2639
vector< double > get_env_var()
Definition: ttquanti.h:430
unsigned int _pleio_type
Definition: ttquanti.h:618
void mutate_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2670
void deallocate_gsl_mutation_matrix_space()
Definition: ttquanti.cc:2137
TTQFreqExtractor * _freqExtractor
Definition: ttquanti.h:725
vector< double *(TProtoQuanti::*)(unsigned int) > _getMutationValuesVarPleio
Collection of pointers to mutation functions, which generate allele values in dependence of pleiotrop...
Definition: ttquanti.h:698
TTProtoWithMap.
Definition: ttrait_with_map.h:184
virtual void reset()
Definition: ttrait_with_map.cc:638
TTQFreqExtractor.
Definition: ttquanti.h:836
virtual ~TTQFreqExtractor()
Definition: ttquanti.h:845
TTQFreqExtractor(TProtoQuanti *T)
Definition: ttquanti.h:841
vector< string > _records
Definition: ttquanti.h:838
void resetTable()
Definition: ttquanti.cc:6320
virtual void FHread(string &filename)
Definition: ttquanti.h:847
virtual void FHwrite()
Definition: ttquanti.cc:6327
TTQOhtaStats.
Definition: ttquanti.h:855
TMatrix _pairwiseCombs
Definition: ttquanti.h:857
virtual void FHread(string &filename)
Definition: ttquanti.h:864
TTQOhtaStats(TProtoQuanti *T)
Definition: ttquanti.h:860
virtual ~TTQOhtaStats()
Definition: ttquanti.h:862
virtual void FHwrite()
Definition: ttquanti.cc:6466
TTQuantiFH.
Definition: ttquanti.h:810
void write_PLINK()
Definition: ttquanti.cc:5885
void print_PLINK_FAM(ofstream &FH, age_idx Ax, Patch *patch)
Definition: ttquanti.cc:6117
TTQuantiFH(TProtoQuanti *T)
Definition: ttquanti.h:816
virtual void FHread(string &filename)
Definition: ttquanti.cc:6192
void print_PLINK_PED(ofstream &FH, age_idx Ax, Patch *patch)
Definition: ttquanti.cc:6020
void write_TABLE()
Definition: ttquanti.cc:5721
virtual void FHwrite()
Definition: ttquanti.cc:5699
virtual ~TTQuantiFH()
Definition: ttquanti.h:818
string _output_option
Definition: ttquanti.h:812
bool _has_genetic_map
Definition: ttquanti.h:813
void setOutputOption(string opt)
Definition: ttquanti.cc:5677
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:5816
TTQuantiSH.
Definition: ttquanti.h:734
double * _Vp
Definition: ttquanti.h:736
double getMeanGenotPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:791
void addQuanti(age_t AGE)
Definition: ttquanti.cc:4738
void addAvgPerPatch(age_t AGE)
Definition: ttquanti.cc:4823
double ** _pVa
Definition: ttquanti.h:737
double getEigenVectorEltPerPatch(unsigned int p, unsigned int v)
Definition: ttquanti.h:797
vector< double > getVaNoDominance(Patch *curPop, const age_idx AGE)
Definition: ttquanti.cc:5390
double * _Vb
Definition: ttquanti.h:736
unsigned int _num_locus
Definition: ttquanti.h:740
void addCovarPerPatch(age_t AGE)
Definition: ttquanti.cc:4946
double * _meanP
Definition: ttquanti.h:736
void addEigenVect1PerPatch(age_t AGE)
Definition: ttquanti.cc:5065
void addVarPerPatch(age_t AGE)
Definition: ttquanti.cc:4893
TTQuantiSH(TProtoQuanti *TP)
Definition: ttquanti.h:751
virtual ~TTQuantiSH()
Definition: ttquanti.h:759
double ** _pVp
Definition: ttquanti.h:737
double getVa(unsigned int i)
Definition: ttquanti.h:784
bool _eVar
Definition: ttquanti.h:738
gsl_matrix * _evec
Definition: ttquanti.h:742
double getEigenValuePerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:795
void addGenotPerPatch(age_t AGE)
Definition: ttquanti.cc:4858
unsigned int _table_set_age
Definition: ttquanti.h:747
void addEigenValuesPerPatch(age_t AGE)
Definition: ttquanti.cc:5031
double getVb(unsigned int i)
Definition: ttquanti.h:786
double getSkewPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.cc:5140
double ** _pmeanP
Definition: ttquanti.h:737
double * _meanG
Definition: ttquanti.h:736
double getMeanPhenotPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:792
void setStats(age_t AGE)
Definition: ttquanti.cc:5226
void setAdultStats()
Definition: ttquanti.h:779
double getVg(unsigned int i)
Definition: ttquanti.h:785
gsl_vector * _eval
Definition: ttquanti.h:743
double getMeanPhenot(unsigned int i)
Definition: ttquanti.h:783
double * _covar
Definition: ttquanti.h:736
DataTable< double > _phenoTable
Definition: ttquanti.h:746
double getCovarPerPatch(unsigned int p, unsigned int i)
Definition: ttquanti.h:796
double getQst(unsigned int i)
Definition: ttquanti.h:788
void addEigenPerPatch(age_t AGE)
Definition: ttquanti.cc:4987
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:5489
double getVp(unsigned int i)
Definition: ttquanti.h:787
gsl_matrix * _G
Definition: ttquanti.h:742
double getMeanGenot(unsigned int i)
Definition: ttquanti.h:782
double ** _peigvect
Definition: ttquanti.h:737
unsigned int _table_set_repl
Definition: ttquanti.h:747
double getVpPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:794
gsl_eigen_symmv_workspace * _ws
Definition: ttquanti.h:744
unsigned int _table_set_gen
Definition: ttquanti.h:747
double getCovar(unsigned int i)
Definition: ttquanti.h:789
vector< double > getSNPalleleFreqInPatch(Patch *patch, const age_idx AGE)
Definition: ttquanti.cc:5347
virtual bool setStatRecorders(std::string &token)
Definition: ttquanti.cc:4676
DataTable< double > _genoTable
Definition: ttquanti.h:746
unsigned int _num_trait
Definition: ttquanti.h:740
double * _Va
Definition: ttquanti.h:736
void resetPtrs()
Definition: ttquanti.cc:4545
double * _Vg
Definition: ttquanti.h:736
void setDataTables(age_t AGE)
Definition: ttquanti.cc:5155
void addQuantiPerPatch(age_t AGE)
Definition: ttquanti.cc:4807
double ** _peigval
Definition: ttquanti.h:737
unsigned int _patchNbr
Definition: ttquanti.h:740
double ** _pcovar
Definition: ttquanti.h:737
double ** _pmeanG
Definition: ttquanti.h:737
double getVaPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:793
void addSkewPerPatch(age_t AGE)
Definition: ttquanti.cc:5104
void setOffsprgStats()
Definition: ttquanti.h:780
virtual void init()
Definition: ttquanti.cc:4603
TTQuanti_continuous_full_pleio : universal pleiotropy.
Definition: ttquanti.h:171
TTQuanti_continuous_full_pleio(const TTQuanti_continuous_full_pleio &TT)
Definition: ttquanti.h:176
virtual void show_up()
Definition: ttquanti.cc:3452
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3363
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:3346
virtual ~TTQuanti_continuous_full_pleio()
Definition: ttquanti.h:178
virtual TTQuanti_continuous_full_pleio * clone()
Definition: ttquanti.h:182
TTQuanti_continuous_full_pleio()
Definition: ttquanti.h:174
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3331
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3314
virtual void init_sequence()
Definition: ttquanti.cc:3375
TTQuanti_continuous_no_pleio : multiple non-pleiotropic traits.
Definition: ttquanti.h:227
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3686
virtual ~TTQuanti_continuous_no_pleio()
Definition: ttquanti.h:234
TTQuanti_continuous_no_pleio()
Definition: ttquanti.h:230
virtual TTQuanti_continuous_no_pleio * clone()
Definition: ttquanti.h:238
TTQuanti_continuous_no_pleio(const TTQuanti_continuous_no_pleio &TT)
Definition: ttquanti.h:232
virtual void init_sequence()
Definition: ttquanti.cc:3755
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3745
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:3729
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3665
virtual void show_up()
Definition: ttquanti.cc:3809
TTQuanti_continuous_single : simple implementation for a single quantitative trait with continuous al...
Definition: ttquanti.h:254
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:265
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
virtual ~TTQuanti_continuous_single()
Definition: ttquanti.h:261
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3867
virtual void init_sequence()
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3854
TTQuanti_continuous_single(const TTQuanti_continuous_single &TT)
Definition: ttquanti.h:259
TTQuanti_continuous_single()
Definition: ttquanti.h:257
TTQuanti_continuous_var_pleio : variable pleiotropy.
Definition: ttquanti.h:198
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.cc:3525
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3491
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3548
TTQuanti_continuous_var_pleio()
Definition: ttquanti.h:201
virtual TTQuanti_continuous_var_pleio * clone()
Definition: ttquanti.h:211
virtual void show_up()
Definition: ttquanti.cc:3620
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3508
TTQuanti_continuous_var_pleio(const TTQuanti_continuous_var_pleio &TT)
Definition: ttquanti.h:203
virtual ~TTQuanti_continuous_var_pleio()
Definition: ttquanti.h:205
virtual void init_sequence()
Definition: ttquanti.cc:3561
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:3533
TTQuanti_continuous.
Definition: ttquanti.h:114
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.cc:3291
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti.cc:3231
TTQuanti_continuous(const TTQuanti &T)
Definition: ttquanti.h:123
TTQuanti_continuous()
Definition: ttquanti.h:118
virtual void set_allele(int locus, int allele, double value)
Definition: ttquanti.h:152
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.cc:3283
virtual bool operator!=(const TTrait &T)
Definition: ttquanti.cc:3205
virtual unsigned int get_allele(int loc, int all) const
Definition: ttquanti.cc:3215
virtual void ** get_sequence() const
Definition: ttquanti.h:137
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti.h:158
virtual ~TTQuanti_continuous()
Definition: ttquanti.h:128
virtual void set_sequence(void **seq)
Definition: ttquanti.cc:3300
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:153
virtual void init()
Definition: ttquanti.cc:3239
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:155
virtual TTQuanti_continuous & operator=(const TTrait &T)
Definition: ttquanti.cc:3167
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti.cc:3276
virtual double get_allele_value(int loc, int all) const
Definition: ttquanti.cc:3223
virtual bool operator==(const TTrait &T)
Definition: ttquanti.cc:3188
virtual void reset()
Definition: ttquanti.cc:3259
double ** _sequence
Definition: ttquanti.h:163
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti.h:157
TTQuanti_diallelic_full_pleio : pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti.h:356
virtual TTQuanti_diallelic_full_pleio * clone()
Definition: ttquanti.h:367
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4244
virtual void show_up()
Definition: ttquanti.cc:4338
TTQuanti_diallelic_full_pleio()
Definition: ttquanti.h:359
virtual ~TTQuanti_diallelic_full_pleio()
Definition: ttquanti.h:363
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:4265
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4281
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4226
virtual void init_sequence()
Definition: ttquanti.cc:4293
TTQuanti_diallelic_full_pleio(const TTQuanti_diallelic_full_pleio &TT)
Definition: ttquanti.h:361
TTQuanti_diallelic_no_pleio : single or multiple non-pleiotropic traits, di-allelic.
Definition: ttquanti.h:329
TTQuanti_diallelic_no_pleio()
Definition: ttquanti.h:332
virtual ~TTQuanti_diallelic_no_pleio()
Definition: ttquanti.h:336
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:4112
virtual TTQuanti_diallelic_no_pleio * clone()
Definition: ttquanti.h:340
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4091
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4063
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4128
virtual void init_sequence()
Definition: ttquanti.cc:4138
TTQuanti_diallelic_no_pleio(const TTQuanti_diallelic_no_pleio &TT)
Definition: ttquanti.h:334
virtual void show_up()
Definition: ttquanti.cc:4183
TTQuanti_diallelic_var_pleio : variable pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti.h:383
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:4423
TTQuanti_diallelic_var_pleio(const TTQuanti_diallelic_var_pleio &TT)
Definition: ttquanti.h:388
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4440
TTQuanti_diallelic_var_pleio()
Definition: ttquanti.h:386
virtual TTQuanti_diallelic_var_pleio * clone()
Definition: ttquanti.h:396
virtual ~TTQuanti_diallelic_var_pleio()
Definition: ttquanti.h:390
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4376
virtual void show_up()
Definition: ttquanti.cc:4498
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.cc:4415
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4394
virtual void init_sequence()
Definition: ttquanti.cc:4454
TTQuanti_diallelic.
Definition: ttquanti.h:281
virtual void ** get_sequence() const
Definition: ttquanti.h:299
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:317
virtual unsigned int get_allele(int loc, int all) const
Definition: ttquanti.cc:3989
TTQuanti_diallelic()
Definition: ttquanti.h:285
TTQuanti_diallelic(const TTQuanti &T)
Definition: ttquanti.h:287
virtual TTQuanti_diallelic & operator=(const TTrait &T)
Definition: ttquanti.cc:3922
virtual void init()
Definition: ttquanti.cc:3884
virtual bool operator==(const TTrait &T)
Definition: ttquanti.cc:3943
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:315
virtual void reset()
Definition: ttquanti.cc:3904
unsigned char ** _sequence
Definition: ttquanti.h:322
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti.cc:4026
virtual ~TTQuanti_diallelic()
Definition: ttquanti.h:289
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.cc:4033
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.cc:4041
virtual void set_allele(int locus, int allele, double value)
Definition: ttquanti.h:314
virtual double get_allele_value(int locus, int allele) const
Definition: ttquanti.cc:3998
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti.cc:4009
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti.cc:3970
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti.cc:3979
virtual void set_sequence(void **seq)
Definition: ttquanti.cc:4051
void inherit_free(const TTrait *mother, const TTrait *father)
virtual bool operator!=(const TTrait &T)
Definition: ttquanti.cc:3960
TTQuanti.
Definition: ttquanti.h:61
virtual void mutate_add(unsigned int position, unsigned int allele, double value)=0
TProtoQuanti * _myProto
Definition: ttquanti.h:107
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)=0
virtual ~TTQuanti()
Definition: ttquanti.h:72
virtual void set_value()
Definition: ttquanti.cc:3125
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)=0
TProtoQuanti * get_proto()
Definition: ttquanti.h:98
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:3154
virtual double get_additive_genotype(const unsigned int trait) const =0
TTQuanti()
Definition: ttquanti.h:64
virtual void * getValue() const
Definition: ttquanti.h:79
virtual void * set_trait(void *value)
Definition: ttquanti.h:77
TTQuanti(const TTQuanti &T)
Definition: ttquanti.h:69
void set_proto(TProtoQuanti *proto)
Definition: ttquanti.h:97
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:3116
double get_phenotype(unsigned int trai)
Definition: ttquanti.cc:3145
double * _phenotypes
Definition: ttquanti.h:105
virtual double get_full_genotype(unsigned int trait)=0
void reset_phenotype_to_genotypic_value()
Definition: ttquanti.cc:3137
virtual void mutate()
Definition: ttquanti.cc:3109
double * _genotypic_values
Definition: ttquanti.h:106
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:74
Interface for all trait types, declares all basic trait operations.
Definition: ttrait.h:46
Template class for the trait's FileHandler.
Definition: filehandler.h:221
Template class for the trait's StatHandler.
Definition: stathandler.h:168
Non-template and faster implementation of std::bitset.
Definition: bitstring.h:57
#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