Nemo  2.4.2
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-2026 The Authors
7 *
8 * This file is part of Nemo
9 *
10 * Nemo is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * Nemo is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 *
23 * created on @date 14.11.2005
24 *
25 * @author fred
26 */
27 
28 #ifndef TTQUANTI_H
29 #define TTQUANTI_H
30 
31 #include <cmath>
32 #include <vector>
33 #include <set>
34 #include "ttrait_with_map.h"
35 #include "bitstring.h"
36 #include "filehandler.h"
37 #include "stathandler.h"
38 #include "metapop.h"
39 #include "datatable.h"
40 #include "Uniform.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);
100 
101 protected:
102 
103  double *_phenotypes;
106 };
107 // ------------------------------------------------------------------------------
111 // ------------------------------------------------------------------------------
113 
114 public:
115 
117  {
118 // message("CONSTRUCTOR::TTQuanti_continuous::CONSTRUCTOR\n");
119  }
120 
122  {
123 // message("COPY CONSTRUCTOR::TTQuanti_continuous::COPY CONSTRUCTOR\n");
124  }
125 
126  virtual ~TTQuanti_continuous () {
127 // message("DESTRUCTOR::TTQuanti_continuous::DESTRUCTOR\n");
128  reset();
129  }
130 
131  //implements TTrait:
132  virtual void reset ();
133  virtual void init ();
134  virtual void set_sequence (void** seq);
135  virtual void** get_sequence () const {return (void**)_sequence;}
136  virtual unsigned int get_allele (int loc, int all) const ;
137  virtual double get_allele_value (int loc, int all) const;
138  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
139 
140  virtual TTQuanti_continuous& operator= (const TTrait& T);
141  virtual bool operator== (const TTrait& T);
142  virtual bool operator!= (const TTrait& T);
143 
144  //implements StorableComponent:
145  virtual void store_data ( BinaryStorageBuffer* saver );
146  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
147 
148  //implements TTQuanti:
149  virtual double get_full_genotype (unsigned int trait);
150  virtual void set_allele (int locus, int allele, double value) {_sequence[allele][locus] = value;}
151  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
152  {_sequence[allele][position] += value;}
153  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
154  {_sequence[allele][position] = value;}
155  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const {return false;}
156  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value) {}
157 
158 
159 protected:
160 
161  double **_sequence;
162 };
163 // Deriving specialized classes
164 // ------------------------------------------------------------------------------
168 // ------------------------------------------------------------------------------
170 
171 public:
173 
175 
177 
178  //TTtrait implementation:
179  virtual void init_sequence ();
181  virtual void show_up();
182 
183  //TTQuanti implementation:
184  virtual double get_additive_genotype (const unsigned int trait) const;
185  virtual double get_dominant_genotype (const unsigned int trait) const;
186  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
187  unsigned int to_locus, const TTQuanti *parent);
188  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
189  const TTQuanti *parent);
190 };
191 // ------------------------------------------------------------------------------
195 // ------------------------------------------------------------------------------
197 
198 public:
200 
202 
204 
205  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
206 
207  //TTtrait implementation:
208  virtual void init_sequence ();
210  virtual void show_up();
211 
212  //TTQuanti implementation:
213  virtual double get_additive_genotype (const unsigned int trait) const;
214  virtual double get_dominant_genotype (const unsigned int trait) const;
215  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
216  unsigned int to_locus, const TTQuanti *parent);
217  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
218  const TTQuanti *parent);
219 };
220 // ------------------------------------------------------------------------------
224 // ------------------------------------------------------------------------------
226 
227 public:
229 
231 
233 
234  //TTtrait implementation:
235  virtual void init_sequence ();
237  virtual void show_up();
238 
239  //TTQuanti implementation:
240  virtual double get_additive_genotype (const unsigned int trait) const;
241  virtual double get_dominant_genotype (const unsigned int trait) const;
242  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
243  unsigned int to_locus, const TTQuanti *parent);
244  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
245  const TTQuanti *parent);
246 };
247 // ------------------------------------------------------------------------------
251 // ------------------------------------------------------------------------------
253 
254 public:
256 
258 
260 
261  //TTtrait implementation:
262  virtual void init_sequence ();
264  virtual void show_up();
265 
266  //TTQuanti implementation:
267  virtual double get_additive_genotype (const unsigned int trait) const;
268  virtual double get_dominant_genotype (const unsigned int trait) const;
269  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
270  unsigned int to_locus, const TTQuanti *parent);
271  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
272  const TTQuanti *parent);
273 };
274 // ------------------------------------------------------------------------------
278 // ------------------------------------------------------------------------------
279 class TTQuanti_diallelic : public TTQuanti {
280 
281 public:
282 
284 
286 
287  virtual ~TTQuanti_diallelic () {reset();}
288 
289  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const;
290  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value);
291  void inherit_free (const TTrait* mother, const TTrait* father);
292 
293  //implements TTrait:
294  virtual void reset ();
295  virtual void init ();
296  virtual void set_sequence (void** seq);
297  virtual void** get_sequence () const {return (void**)_sequence;}
298  virtual unsigned int get_allele (int loc, int all) const ;
299  virtual double get_allele_value (int locus, int allele) const;
300  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
301 
302  virtual TTQuanti_diallelic& operator= (const TTrait& T);
303  virtual bool operator== (const TTrait& T);
304  virtual bool operator!= (const TTrait& T);
305 
306  //implements StorableComponent:
307  virtual void store_data ( BinaryStorageBuffer* saver );
308  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
309 
310  //implements TTQuanti:
311  virtual double get_full_genotype (unsigned int trait);
312  virtual void set_allele (int locus, int allele, double value) {_sequence[allele][locus] = bool(value);}
313  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
314  {_sequence[allele][position] = bool(value);}
315  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
316  {_sequence[allele][position] ^= 1;}
317 
318 protected:
319 
320  unsigned char** _sequence;
321 };
322 // ------------------------------------------------------------------------------
326 // ------------------------------------------------------------------------------
328 
329 public:
331 
333 
335 
336  //TTtrait implementation:
337  virtual void init_sequence ();
339  virtual void show_up();
340 
341  //TTQuanti implementation:
342  virtual double get_additive_genotype (const unsigned int trait) const;
343  virtual double get_dominant_genotype (const unsigned int trait) const;
344  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
345  unsigned int to_locus, const TTQuanti *parent);
346  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
347  const TTQuanti *parent);
348 };
349 // ------------------------------------------------------------------------------
353 // ------------------------------------------------------------------------------
355 
356 public:
358 
360 
362 
363  //TTtrait implementation:
364  virtual void init_sequence ();
366  virtual void show_up();
367 
368  //TTQuanti implementation:
369  virtual double get_additive_genotype (const unsigned int trait) const;
370  virtual double get_dominant_genotype (const unsigned int trait) const;
371  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
372  unsigned int to_locus, const TTQuanti *parent);
373  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
374  const TTQuanti *parent);
375 };
376 // ------------------------------------------------------------------------------
380 // ------------------------------------------------------------------------------
382 
383 public:
385 
387 
389 
390  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
391 
392  //TTtrait implementation:
393  virtual void init_sequence ();
395  virtual void show_up();
396 
397  //TTQuanti implementation:
398  virtual double get_additive_genotype (const unsigned int trait) const;
399  virtual double get_dominant_genotype (const unsigned int trait) const;
400  virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_locus,
401  unsigned int to_locus, const TTQuanti *parent);
402 
403  virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at,
404  const TTQuanti *parent);
405 };
406 
407 
408 // ------------------------------------------------------------------------------
412 // ------------------------------------------------------------------------------
413 class TProtoQuanti : public TTProtoWithMap {
414 
415 public:
416 
417  TProtoQuanti ();
418  TProtoQuanti (const TProtoQuanti& T);
419  virtual ~TProtoQuanti ();
420 
421  unsigned int get_num_traits() {return _num_traits;}
422  unsigned int get_num_locus() {return _num_locus;}
423  unsigned int get_num_locus (unsigned int trait) {return _trait_table[trait].size();}
424  unsigned int get_pleiotropy_type() {return _pleio_type;}
425  unsigned int get_seq_length () {return _seq_length;}
428  vector<double> get_env_var () {return _eVariance;}
429  vector<double> get_heritability () {return _h2;}
430  unsigned int get_h2_setTime () {return _h2_setTime;}
431  bool get_h2_isBroad () {return _h2_isBroad;}
432  unsigned int get_allele_model () {return _allele_model;}
434  double get_diallele_value (unsigned int locus, unsigned int allele)
435  {return _allele_value.get(locus, allele);}
436  double get_seq_diallele_value (unsigned int position, unsigned int allele)
437  {return _sequence_diallele_values[allele][position];}
440  double get_equal_val_0 () {return _equal_val_0;}
441  double get_equal_val_1 () {return _equal_val_1;}
443  const bitstring& get_trait_mask (unsigned int trait) const
444  {return _trait_masks[trait];}
445  double get_init_value (unsigned int i) {return _init_value.get(0,i); }
446  double get_init_variance (unsigned int i) {return _init_variance.get(0,i);}
447  unsigned int get_doInitMutation () {return _doInitMutation;}
449 
451  unsigned int get_locus_seq_pos (unsigned int loc, unsigned int trait)
452  {return _trait_table[trait][loc];}
453  unsigned int get_locus_ID (unsigned int locus, unsigned int trait)
454  {return _trait_locus_table[trait][locus];}
455  unsigned int get_locus_PD (unsigned int locus) {return _locus_table[locus][1];}
456  unsigned int get_locus_start_pos (unsigned int locus) {return _locus_table[locus][0];}
457  unsigned int get_sequence_block_size (unsigned int from, unsigned int to) {
458  return (to < _num_locus ? _locus_table[to][0] : _seq_length)
459  - _locus_table[from][0];
460  }
461 
462  void set_eVarianceSD (unsigned int trait, double SD);
463  void set_init_values (const double *values, unsigned int nval);
464  void set_trait_value_func_ptr (bool withVe);
465  double set_trait_value_VE (const TTQuanti* ind, const unsigned int trait);
466  double set_trait_value_noVE (const TTQuanti* ind, const unsigned int trait);
467 
468  double set_genotype_value_additive (const TTQuanti* ind, const unsigned int trait);
469  double set_genotype_value_dominance (const TTQuanti* ind, const unsigned int trait);
470 
471  int get_allele_position (const unsigned int locus, const unsigned int trait);
472  double get_allele_value (const TTQuanti* ind, const unsigned int allele, const unsigned int locus, const unsigned int trait);
473  double get_genotype_with_dominance (const double a1, const double a2, const unsigned int locus, const unsigned int trait);
474  double get_genotype_dominance_h (double a1, double a2, double h);
475  double get_genotype_dominance_k (double a1, double a2, double k);
476  unsigned int get_dominance_model () {return _dominance_model;}
477  double get_dominance (unsigned int locus, unsigned int trait)
478  {return _dominance_effects.get(trait, locus); }
480 
481  double get_trait_mutation_variance (unsigned int trait);
482 
483  double get_genotypic_value (const TTQuanti* ind, const unsigned int trait) {
484  return (this->*_set_genotype_func_ptr)(ind, trait);
485  }
486 
487  double get_phenotypic_value (const TTQuanti* ind, const unsigned int trait) {
488  return (this->*_set_trait_value_func_ptr)(ind, trait);
489  }
490 
491 
492  // Parameter setters
493  bool setHeritabilityParams ();
494  bool setInitialValuesParams ();
495  bool setGeneticMapParams ();
496  unsigned int setAlleleModel ();
502  bool setMutationCorrelation ();
503  bool setDominanceParameters ();
504 
506 
509  bool readMatrixFromQuantiMutationMatrix (vector<vector<double>>& varmat);
513  void allocate_gsl_mutation_matrix_space (unsigned int num_locus);
515  gsl_matrix* set_gsl_mutation_matrix_from_sigma (unsigned int loc, unsigned int pleio_deg);
516  gsl_matrix* set_gsl_mutation_matrix (unsigned int pleio_deg, const vector<double>& varcov);
517  void set_mutation_matrix_decomposition (unsigned int loc, unsigned int pleio_deg);
518 
519  // mutation generation functions
520  // first set for continuum-of-allele model with a single mutation matrix across all loci:
521  double* getMutationEffectMultivariateGaussian (unsigned int loc);
522  double* getMutationEffectBivariateGaussian (unsigned int loc);
523  double* getMutationEffectUnivariateGaussian (unsigned int loc);
524  // different implementation for locus-specific mutation matrices:
525  double* getMutationEffectMultivariateGaussianLocSpec (unsigned int loc);
526  double* getMutationEffectBivariateGaussianLocSpec (unsigned int loc);
527  double* getMutationEffectUnivariateGaussianLocSpec (unsigned int loc);
528 
529 // double* getMutationEffectUnivariateDiallelic (unsigned int loc);
530  double* getMutationEffectBivariateDiallelic (unsigned int loc);
531  double* getMutationEffects (unsigned int loc) {
532  return (this->* _getMutationValues)(loc);
533  }
534  double* getMutationEffectsVarPleio (unsigned int loc) {
535  return (this->* _getMutationValuesVarPleio[loc]) (loc);
536  }
537  void inherit (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
538  void inherit_free (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
539  void inherit_low (sex_t SEX, TTQuanti* ind, const TTQuanti* parent);
540 
541  unsigned int get_num_mutations () {
542  return (unsigned int)RAND::Binomial(_mutation_rate, _2L);
543  }
544  void mutate (TTQuanti* ind);
545  void mutate_nill (TTQuanti* ind);
546  void mutate_full_pleio (TTQuanti* ind);
547  void mutate_var_pleio (TTQuanti* ind);
548  void mutate_no_pleio (TTQuanti* ind);
551  void mutate_inplace_no_pleio (TTQuanti* ind);
552 
553  void mutate_diallelic_pleio (TTQuanti* ind);
556 
557  // EPISTASIS
558  bool setEpistasisParameters ();
559 // double get_epistatic_mean () {return _epistatic_mean;}
560 // double get_epistatic_variance () {return _epistatic_variance;}
561 // double get_epistatic_prop_large () {return _epistatic_prop_large;}
562 // double get_epistatic_large_mean () {return _epistatic_large_mean;}
563 // double get_epistatic_large_variance () {return _epistatic_large_variance;}
564  unsigned int get_num_epi_coefs () {return _num_epi_coefs;}
565  bool do_epistasis () {return _epistasis;}
568 
571  virtual void reset () {TTProtoWithMap::reset();}
572  virtual TTQuanti* hatch ();
573  virtual TProtoQuanti* clone () {return new TProtoQuanti(*this);}
574  virtual trait_t get_type () const {return QUANT;}
576  virtual int get_phenotype_dimension () {return _num_traits;}
578  virtual int get_allele_number () {return (_allele_model > 2 ? 3: 2);} //3 just means more than di-allelic
580  virtual int get_locus_number () {return _num_locus;}
584  virtual void store_data ( BinaryStorageBuffer* saver )
585  {saver->store(&_seq_length,sizeof(int));}
586 
587  virtual bool retrieve_data ( BinaryStorageBuffer* reader )
588  {reader->read(&_seq_length,sizeof(int));return true;}
592  virtual bool setParameters();
593  virtual void loadFileServices ( FileServices* loader );
594  virtual void loadStatServices ( StatServices* loader );
595  virtual bool resetParameterFromSource (std::string param, SimComponent* cmpt) {return false;}
597 
598 protected:
599 
601  unsigned int _num_locus;
603  unsigned int _2L;
605  unsigned int _num_traits;
607  unsigned int _seq_length;
608  unsigned int _allele_model;
610 
611  //mutations:
614 
615  //Pleiotropy type: 0 = "no pleio", 1 = "full", 2 = "variable"
616  unsigned int _pleio_type;
617 
618 private:
619 
620  TMatrix _allele_value; // num locus x 2
622  bool _equal_effects; // true when all loci share the same (val_0, val_1)
623  double _equal_val_0; // shared ancestral allele value
624  double _equal_val_1; // shared derived allele value
625  double _equal_val_diff; // val_1 - val_0, precomputed
626  vector<bitstring> _trait_masks; // one per trait, bit i set iff position i belongs to that trait
627  TMatrix _init_value; // initial value of each trait
628  TMatrix _init_variance; // initial variance of each trait
629 // double* _phenotypes; // num traits
630 
631  //mutations:
632  TMatrix _mutation_correlation; // 1 x n_locus, one correlation per locus, applied to all trait pairs
633  TMatrix _mutation_sigma; // n_locus x n_trait, variance per locus, used in the bivariate case, and to initialize the m-matrix
634  gsl_matrix **_gsl_mutation_matrix; // one mutation matrix per locus
635  gsl_matrix **_evect;
636  gsl_vector **_eval;
637  gsl_vector **_effects_multivar;
638  gsl_vector **_ws;
639  double _effects_bivar[2];
640  unsigned int _doInitMutation;
641  bool _mutationVarianceIsLocusSpecific; // a single mutation matrix for all loci
642  bool _mutationEffectIsFixedDiAllele; // bitstring sequence not storing effects
643 
644  // dominance
645  unsigned int _dominance_model;
648 
649  //recombination:
653 
654  //heritability
655  vector<double> _eVariance;
656  vector<double> _h2;
657  unsigned int _h2_setTime;
659 
660  //variable pleiotropy
661 
664 
666  vector< vector<unsigned int> > _trait_table;
667 
669  vector< vector<unsigned int> > _trait_locus_table;
670 
674  vector< vector<unsigned int> > _locus_table;
675 
676 
677  // EPISTASIS
679  unsigned int _num_epi_coefs;
682 
683 
684  // function pointers
685 
688 
691 
693  double* (TProtoQuanti::* _getMutationValues) (unsigned int);
694 
696  vector< double* (TProtoQuanti::* ) (unsigned int) > _getMutationValuesVarPleio;
697 
699  double (TProtoQuanti::* _getGenotypeWithDominance) (double, double, double);
700 
701 
705  double (TProtoQuanti::* _set_trait_value_func_ptr) (const TTQuanti*, const unsigned int);
706 
707 
711  double (TProtoQuanti::* _set_genotype_func_ptr) (const TTQuanti*, const unsigned int);
712 
713  friend class TTQuanti;
714  friend class TTQuanti_continuous;
719 
725 };
726 
727 // ------------------------------------------------------------------------------
731 // ------------------------------------------------------------------------------
732 class TTQuantiSH : public TraitStatHandler<TProtoQuanti, TTQuantiSH> {
733 
734  double *_meanP, *_meanG, *_Va, *_Vg, *_Vb, *_Vp, *_covar;
735  double **_pmeanP, **_pmeanG, **_pVa, **_pVp, **_pcovar, **_peigval, **_peigvect;
736  bool _eVar;
737 
739 
740  gsl_matrix *_G, *_evec;
741  gsl_vector *_eval;
742  gsl_eigen_symmv_workspace *_ws;
743 
746 
747 public:
748 
751  _meanP(0), _meanG(0), _Va(0), _Vg(0), _Vb(0), _Vp(0), _covar(0),
752  _pmeanP(0), _pmeanG(0), _pVa(0), _pVp(0), _pcovar(0), _peigval(0), _peigvect(0),
753  _eVar(0), _num_locus(0), _num_trait(0),_patchNbr(0), _G(0), _evec(0),_eval(0),_ws(0),
754  _table_set_gen(999999), _table_set_age(999999), _table_set_repl(999999)
755  {}
756 
757  virtual ~TTQuantiSH() {resetPtrs();}
758 
759  void resetPtrs();
760 
761  virtual void init ( );
762 
763  virtual bool setStatRecorders (std::string& token);
764 
765  void addQuanti (age_t AGE);
766  void addQuantiPerPatch (age_t AGE);
767  void addAvgPerPatch (age_t AGE);
768  void addGenotPerPatch (age_t AGE);
769  void addVarPerPatch (age_t AGE);
770  void addCovarPerPatch (age_t AGE);
771  void addEigenPerPatch (age_t AGE);
772  void addEigenValuesPerPatch (age_t AGE);
773  void addEigenVect1PerPatch (age_t AGE);
774  void addSkewPerPatch (age_t AGE);
775 
776  void setDataTables (age_t AGE);
779  void setStats (age_t AGE);
780  double getMeanGenot (unsigned int i) {return _meanG[i];}
781  double getMeanPhenot (unsigned int i) {return _meanP[i];}
782  double getVa (unsigned int i) {return _Va[i];}
783  double getVg (unsigned int i) {return _Vg[i];}
784  double getVb (unsigned int i) {return _Vb[i];}
785  double getVp (unsigned int i) {return _Vp[i];}
786  double getQst (unsigned int i) {return _Vb[i]/(_Vb[i]+2*_Va[i]);}
787  double getCovar (unsigned int i) {return _covar[i];}
788 
789  double getMeanGenotPerPatch (unsigned int i, unsigned int p) {return _pmeanG[i][p];}
790  double getMeanPhenotPerPatch (unsigned int i, unsigned int p) {return _pmeanP[i][p];}
791  double getVaPerPatch (unsigned int i, unsigned int p) {return _pVa[i][p];}
792  double getVpPerPatch (unsigned int i, unsigned int p) {return _pVp[i][p];}
793  double getEigenValuePerPatch (unsigned int i, unsigned int p) {return _peigval[i][p];}
794  double getCovarPerPatch (unsigned int p, unsigned int i) {return _pcovar[p][i];}
795  double getEigenVectorEltPerPatch (unsigned int p, unsigned int v) {return _peigvect[p][v];}
796  double getSkewPerPatch (unsigned int i, unsigned int p);
797 
798  vector<double> getSNPalleleFreqInPatch (Patch* patch, const age_idx AGE);
799  vector<double> getVaWithDominance (Patch* curPop, const age_idx AGE);
800  vector<double> getVaNoDominance (Patch* curPop, const age_idx AGE);
801 
802 };
803 // ------------------------------------------------------------------------------
807 // ------------------------------------------------------------------------------
808 class TTQuantiFH : public TraitFileHandler<TProtoQuanti> {
809 
812 
813 public:
815  _has_genetic_map(0) {}
816  virtual ~TTQuantiFH(){}
817 
818  void setOutputOption (string opt);
819 
820  virtual void FHwrite ();
821  void write_TABLE ();
822  void print(ofstream& FH, Patch* patch, sex_t SEX, age_idx Ax, unsigned int print_gene, bool print_genotype, bool print_additive_genotype);
823  void write_PLINK ();
824  void print_PLINK_PED(ofstream& FH, age_idx Ax, Patch *patch);
825  void print_PLINK_FAM(ofstream& FH, age_idx Ax, Patch *patch);
826 
827  virtual void FHread (string& filename);
828 };
829 // ------------------------------------------------------------------------------
833 // ------------------------------------------------------------------------------
834 class TTQFreqExtractor : public TraitFileHandler<TProtoQuanti> {
835 
836  vector< string > _records;
837 
838 public:
840 
841  void resetTable();
842 
843  virtual ~TTQFreqExtractor () {}
844  virtual void FHwrite ();
845  virtual void FHread (string& filename) {}
846 };
847 
848 // ------------------------------------------------------------------------------
852 // ------------------------------------------------------------------------------
853 class TTQOhtaStats : public TraitFileHandler<TProtoQuanti> {
854 
856 
857 public:
859 
860  virtual ~TTQOhtaStats () {}
861  virtual void FHwrite ();
862  virtual void FHread (string& filename) {}
863 };
864 #endif
865 
Nemo2.
A class to store any kind of data in a char buffer before unloading it in a binary data file.
Definition: binarystoragebuffer.h:42
void read(void *out, unsigned int nb_bytes)
Definition: binarystoragebuffer.h:219
void store(void *stream, unsigned int nb_bytes)
Definition: binarystoragebuffer.cc:36
A class to manage the files associated with each components of the simulation.
Definition: fileservices.h:50
Second class in the metapopulation design structure, between the Metapop and Individual classes.
Definition: metapop.h:430
static double Binomial(double p, unsigned int n)
Definition: Uniform.h:499
Interface to all basic components of a simulation (traits, life cycle events, pop,...
Definition: simcomponent.h:43
The Service class used to manage the StatHandler objects.
Definition: statservices.h:48
A class to handle matrix in params, coerces matrix into a vector of same total size.
Definition: tmatrix.h:48
double get(unsigned int i, unsigned int j) const
Accessor to element at row i and column j.
Definition: tmatrix.h:191
TProtoQuanti.
Definition: ttquanti.h:413
bool setMutationSigmaFromQuantiMutationVariance()
Definition: ttquanti.cc:1920
bool _equal_effects
Definition: ttquanti.h:622
vector< double > _eVariance
Definition: ttquanti.h:655
double * getMutationEffectMultivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2388
unsigned int setAlleleModel()
Definition: ttquanti.cc:803
double set_genotype_value_dominance(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2530
bool do_epistasis()
Definition: ttquanti.h:565
unsigned int _allele_model
Definition: ttquanti.h:608
TMatrix _dominance_effects
Definition: ttquanti.h:646
bool _epistasis
Definition: ttquanti.h:678
size_t _sizeofLocusType
Definition: ttquanti.h:652
void set_mutation_matrix_decomposition(unsigned int loc, unsigned int pleio_deg)
Definition: ttquanti.cc:2257
unsigned int _doInitMutation
Definition: ttquanti.h:640
unsigned int get_locus_PD(unsigned int locus)
Definition: ttquanti.h:455
void mutate_inplace_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2784
double set_genotype_value_additive(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2523
void setTraitAndLocusTables_full_pleio()
Definition: ttquanti.cc:1271
virtual ~TProtoQuanti()
Definition: ttquanti.cc:222
double set_trait_value_VE(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2509
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:576
void mutate_diallelic_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2843
void mutate_var_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2713
bool setContinuousMutationModel_var_pleio()
Definition: ttquanti.cc:1667
unsigned int _dominance_model
Definition: ttquanti.h:645
bool _equal_dom_coeff
Definition: ttquanti.h:647
double get_equal_val_diff()
Definition: ttquanti.h:442
TMatrix _mutation_correlation
Definition: ttquanti.h:632
double * getMutationEffectUnivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2431
gsl_matrix * set_gsl_mutation_matrix_from_sigma(unsigned int loc, unsigned int pleio_deg)
Definition: ttquanti.cc:2221
bool setMutationModel_var_pleio()
Definition: ttquanti.cc:946
double get_allele_value(const TTQuanti *ind, const unsigned int allele, const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2485
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:687
bool setMutationModel_no_pleio()
Definition: ttquanti.cc:1142
bool _h2_isBroad
Definition: ttquanti.h:658
const TMatrix & get_diallele_values()
Definition: ttquanti.h:433
const TMatrix & get_pleio_matrix()
Definition: ttquanti.h:450
TTQuantiFH * _reader
Definition: ttquanti.h:722
bool setDominanceParameters()
Definition: ttquanti.cc:2309
unsigned int _h2_setTime
Definition: ttquanti.h:657
unsigned int _seq_length
Total number of allelic values stored in individual sequences, no trait x no locus.
Definition: ttquanti.h:607
double _mutation_rate
Definition: ttquanti.h:612
gsl_matrix ** _evect
Definition: ttquanti.h:635
void mutate_nill(TTQuanti *ind)
Definition: ttquanti.cc:2659
bool setContinuousMutationModel_no_pleio()
Definition: ttquanti.cc:1824
gsl_vector ** _ws
Definition: ttquanti.h:638
TMatrix _mutation_sigma
Definition: ttquanti.h:633
double get_dominance(unsigned int locus, unsigned int trait)
Definition: ttquanti.h:477
bool setInitialValuesParams()
Definition: ttquanti.cc:592
bool _mutationVarianceIsLocusSpecific
Definition: ttquanti.h:641
const TMatrix & get_epi_coefs() const
Definition: ttquanti.h:566
bool readMatrixFromQuantiMutationMatrix(vector< vector< double >> &varmat)
Definition: ttquanti.cc:2056
TMatrix _allele_value
Definition: ttquanti.h:620
bool setGeneticMapParams()
Definition: ttquanti.cc:647
double * getMutationEffects(unsigned int loc)
Definition: ttquanti.h:531
double * getMutationEffectBivariateGaussian(unsigned int loc)
Definition: ttquanti.cc:2412
void set_trait_value_func_ptr(bool withVe)
Definition: ttquanti.cc:677
TTQuantiSH * get_stater()
Definition: ttquanti.h:448
vector< double > _h2
Definition: ttquanti.h:656
unsigned int _num_epi_coefs
Definition: ttquanti.h:679
size_t get_locus_byte_size()
Definition: ttquanti.h:427
void mutate_diallelic_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2874
double get_genotypic_value(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.h:483
unsigned int _num_traits
Number of traits.
Definition: ttquanti.h:605
double * _sequence_diallele_values[2]
Definition: ttquanti.h:621
double get_init_value(unsigned int i)
Definition: ttquanti.h:445
void mutate_inplace_full_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2759
size_t get_size_locus_type()
Definition: ttquanti.h:426
unsigned int get_locus_ID(unsigned int locus, unsigned int trait)
Definition: ttquanti.h:453
TTQuantiSH * _stats
Definition: ttquanti.h:720
virtual TTQuanti * hatch()
Definition: ttquanti.cc:2894
void set_init_values(const double *values, unsigned int nval)
Definition: ttquanti.cc:2499
void(TProtoQuanti::* _mutation_func_ptr)(TTQuanti *)
Pointer to mutation function, which depends on allele on model (HC, noHC, diallelic)
Definition: ttquanti.h:690
gsl_vector ** _effects_multivar
Definition: ttquanti.h:637
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:711
void inherit(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2592
TMatrix _pleio_matx
Pleiotropy matrix provided in input (num locu X num trait).
Definition: ttquanti.h:663
unsigned int get_num_epi_coefs()
Definition: ttquanti.h:564
string _diallele_datatype
Definition: ttquanti.h:609
const bitstring & get_trait_mask(unsigned int trait) const
Definition: ttquanti.h:443
double get_seq_diallele_value(unsigned int position, unsigned int allele)
Definition: ttquanti.h:436
double _genomic_mutation_rate
Definition: ttquanti.h:613
gsl_matrix ** _gsl_mutation_matrix
Definition: ttquanti.h:634
bool has_equal_effects()
Definition: ttquanti.h:439
double * getMutationEffectBivariateDiallelic(unsigned int loc)
Definition: ttquanti.cc:2455
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.h:587
double get_diallele_value(unsigned int locus, unsigned int allele)
Definition: ttquanti.h:434
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:669
unsigned int get_allele_model()
Definition: ttquanti.h:432
double get_init_variance(unsigned int i)
Definition: ttquanti.h:446
bool * _all_chooser
Definition: ttquanti.h:650
bool setMutationSigmaFromQuantiMutationVariance_no_pleio()
Definition: ttquanti.cc:1990
double(TProtoQuanti::* _getGenotypeWithDominance)(double, double, double)
Pointer to either dominance_h() or dominance_k() function computing the genotypic value with dominanc...
Definition: ttquanti.h:699
double _equal_val_diff
Definition: ttquanti.h:625
void allocate_gsl_mutation_matrix_space(unsigned int num_locus)
Definition: ttquanti.cc:2115
TMatrix _epistatic_coefs_matrix
Definition: ttquanti.h:680
vector< bitstring > _trait_masks
Definition: ttquanti.h:626
double _equal_val_0
Definition: ttquanti.h:623
TMatrix _init_variance
Definition: ttquanti.h:628
void inherit_low(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2599
virtual int get_locus_number()
Returns the number of locus.
Definition: ttquanti.h:580
void mutate(TTQuanti *ind)
Definition: ttquanti.cc:2652
unsigned int get_h2_setTime()
Definition: ttquanti.h:430
const TMatrix & get_dominance_effects()
Definition: ttquanti.h:479
virtual TProtoQuanti * clone()
Definition: ttquanti.h:573
void mutate_inplace_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2739
double * getMutationEffectUnivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2439
unsigned int get_locus_seq_pos(unsigned int loc, unsigned int trait)
Definition: ttquanti.h:451
void mutate_diallelic_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2808
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:666
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:2184
double * getMutationEffectBivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2422
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:674
unsigned int get_num_mutations()
Definition: ttquanti.h:541
vector< double > get_heritability()
Definition: ttquanti.h:429
const TMatrix & get_epi_coef_index() const
Definition: ttquanti.h:567
size_t _locusByteSize
Definition: ttquanti.h:651
TMatrix _init_value
Definition: ttquanti.h:627
double get_equal_val_0()
Definition: ttquanti.h:440
double set_trait_value_noVE(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.cc:2516
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.h:457
unsigned int get_num_locus()
Definition: ttquanti.h:422
virtual void loadStatServices(StatServices *loader)
Definition: ttquanti.cc:3087
unsigned int get_seq_length()
Definition: ttquanti.h:425
bool setEpistasisParameters()
Definition: ttquanti.cc:687
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:705
double get_phenotypic_value(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.h:487
unsigned int get_pleiotropy_type()
Definition: ttquanti.h:424
bool setHeritabilityParams()
Definition: ttquanti.cc:436
virtual trait_t get_type() const
Definition: ttquanti.h:574
double *(TProtoQuanti::* _getMutationValues)(unsigned int)
Pointer to mutation allele value function, which depends on allele model and number of traits affecte...
Definition: ttquanti.h:693
double get_genotype_dominance_k(double a1, double a2, double k)
Definition: ttquanti.cc:2571
virtual bool resetParameterFromSource(std::string param, SimComponent *cmpt)
Definition: ttquanti.h:595
double get_genotype_dominance_h(double a1, double a2, double h)
Definition: ttquanti.cc:2555
double _effects_bivar[2]
Definition: ttquanti.h:639
virtual void reset()
Definition: ttquanti.h:571
double * getMutationEffectMultivariateGaussianLocSpec(unsigned int loc)
Definition: ttquanti.cc:2400
bool setDiallelicMutationModel()
Definition: ttquanti.cc:1346
unsigned int get_num_traits()
Definition: ttquanti.h:421
double get_equal_val_1()
Definition: ttquanti.h:441
gsl_vector ** _eval
Definition: ttquanti.h:636
unsigned int get_doInitMutation()
Definition: ttquanti.h:447
TMatrix _epistatic_coefs_indices
Definition: ttquanti.h:681
TTQuantiFH * _writer
Definition: ttquanti.h:721
virtual bool setParameters()
Definition: ttquanti.cc:247
bool has_equal_domCoeff()
Definition: ttquanti.h:438
bool setMutationCorrelation()
Definition: ttquanti.cc:1862
bool get_h2_isBroad()
Definition: ttquanti.h:431
virtual void loadFileServices(FileServices *loader)
Definition: ttquanti.cc:2973
void mutate_full_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2687
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.h:584
bool _mutationEffectIsFixedDiAllele
Definition: ttquanti.h:642
TTQOhtaStats * _ohtaStats
Definition: ttquanti.h:724
double get_trait_mutation_variance(unsigned int trait)
Definition: ttquanti.cc:2578
virtual int get_allele_number()
Returns the number of allele per locus.
Definition: ttquanti.h:578
unsigned int _2L
Diploid locus size, to save on useless operations during mutation.
Definition: ttquanti.h:603
unsigned int get_dominance_model()
Definition: ttquanti.h:476
bool setContinuousMutationModel_full_pleio()
Definition: ttquanti.cc:1500
double * getMutationEffectsVarPleio(unsigned int loc)
Definition: ttquanti.h:534
TProtoQuanti()
Definition: ttquanti.cc:62
bool setMutationModel_full_pleio()
Definition: ttquanti.cc:867
unsigned int _num_locus
Total number of loci, for all traits.
Definition: ttquanti.h:601
unsigned int get_num_locus(unsigned int trait)
Definition: ttquanti.h:423
unsigned int get_locus_start_pos(unsigned int locus)
Definition: ttquanti.h:456
double _equal_val_1
Definition: ttquanti.h:624
void set_eVarianceSD(unsigned int trait, double SD)
Definition: ttquanti.cc:2378
double get_genotype_with_dominance(const double a1, const double a2, const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2537
int get_allele_position(const unsigned int locus, const unsigned int trait)
Definition: ttquanti.cc:2466
void inherit_free(sex_t SEX, TTQuanti *ind, const TTQuanti *parent)
Definition: ttquanti.cc:2635
vector< double > get_env_var()
Definition: ttquanti.h:428
unsigned int _pleio_type
Definition: ttquanti.h:616
void mutate_no_pleio(TTQuanti *ind)
Definition: ttquanti.cc:2666
void deallocate_gsl_mutation_matrix_space()
Definition: ttquanti.cc:2135
TTQFreqExtractor * _freqExtractor
Definition: ttquanti.h:723
vector< double *(TProtoQuanti::*)(unsigned int) > _getMutationValuesVarPleio
Collection of pointers to mutation functions, which generate allele values in dependence of pleiotrop...
Definition: ttquanti.h:696
TTProtoWithMap.
Definition: ttrait_with_map.h:202
virtual void reset()
Definition: ttrait_with_map.cc:636
TTQFreqExtractor.
Definition: ttquanti.h:834
virtual ~TTQFreqExtractor()
Definition: ttquanti.h:843
TTQFreqExtractor(TProtoQuanti *T)
Definition: ttquanti.h:839
vector< string > _records
Definition: ttquanti.h:836
void resetTable()
Definition: ttquanti.cc:6315
virtual void FHread(string &filename)
Definition: ttquanti.h:845
virtual void FHwrite()
Definition: ttquanti.cc:6322
TTQOhtaStats.
Definition: ttquanti.h:853
TMatrix _pairwiseCombs
Definition: ttquanti.h:855
virtual void FHread(string &filename)
Definition: ttquanti.h:862
TTQOhtaStats(TProtoQuanti *T)
Definition: ttquanti.h:858
virtual ~TTQOhtaStats()
Definition: ttquanti.h:860
virtual void FHwrite()
Definition: ttquanti.cc:6461
TTQuantiFH.
Definition: ttquanti.h:808
void write_PLINK()
Definition: ttquanti.cc:5881
void print_PLINK_FAM(ofstream &FH, age_idx Ax, Patch *patch)
Definition: ttquanti.cc:6112
TTQuantiFH(TProtoQuanti *T)
Definition: ttquanti.h:814
virtual void FHread(string &filename)
Definition: ttquanti.cc:6187
void print_PLINK_PED(ofstream &FH, age_idx Ax, Patch *patch)
Definition: ttquanti.cc:6015
void write_TABLE()
Definition: ttquanti.cc:5717
virtual void FHwrite()
Definition: ttquanti.cc:5695
virtual ~TTQuantiFH()
Definition: ttquanti.h:816
string _output_option
Definition: ttquanti.h:810
bool _has_genetic_map
Definition: ttquanti.h:811
void setOutputOption(string opt)
Definition: ttquanti.cc:5673
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:5812
TTQuantiSH.
Definition: ttquanti.h:732
double * _Vp
Definition: ttquanti.h:734
double getMeanGenotPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:789
void addQuanti(age_t AGE)
Definition: ttquanti.cc:4734
void addAvgPerPatch(age_t AGE)
Definition: ttquanti.cc:4819
double ** _pVa
Definition: ttquanti.h:735
double getEigenVectorEltPerPatch(unsigned int p, unsigned int v)
Definition: ttquanti.h:795
vector< double > getVaNoDominance(Patch *curPop, const age_idx AGE)
Definition: ttquanti.cc:5386
double * _Vb
Definition: ttquanti.h:734
unsigned int _num_locus
Definition: ttquanti.h:738
void addCovarPerPatch(age_t AGE)
Definition: ttquanti.cc:4942
double * _meanP
Definition: ttquanti.h:734
void addEigenVect1PerPatch(age_t AGE)
Definition: ttquanti.cc:5061
void addVarPerPatch(age_t AGE)
Definition: ttquanti.cc:4889
TTQuantiSH(TProtoQuanti *TP)
Definition: ttquanti.h:749
virtual ~TTQuantiSH()
Definition: ttquanti.h:757
double ** _pVp
Definition: ttquanti.h:735
double getVa(unsigned int i)
Definition: ttquanti.h:782
bool _eVar
Definition: ttquanti.h:736
gsl_matrix * _evec
Definition: ttquanti.h:740
double getEigenValuePerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:793
void addGenotPerPatch(age_t AGE)
Definition: ttquanti.cc:4854
unsigned int _table_set_age
Definition: ttquanti.h:745
void addEigenValuesPerPatch(age_t AGE)
Definition: ttquanti.cc:5027
double getVb(unsigned int i)
Definition: ttquanti.h:784
double getSkewPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.cc:5136
double ** _pmeanP
Definition: ttquanti.h:735
double * _meanG
Definition: ttquanti.h:734
double getMeanPhenotPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:790
void setStats(age_t AGE)
Definition: ttquanti.cc:5222
void setAdultStats()
Definition: ttquanti.h:777
double getVg(unsigned int i)
Definition: ttquanti.h:783
gsl_vector * _eval
Definition: ttquanti.h:741
double getMeanPhenot(unsigned int i)
Definition: ttquanti.h:781
double * _covar
Definition: ttquanti.h:734
DataTable< double > _phenoTable
Definition: ttquanti.h:744
double getCovarPerPatch(unsigned int p, unsigned int i)
Definition: ttquanti.h:794
double getQst(unsigned int i)
Definition: ttquanti.h:786
void addEigenPerPatch(age_t AGE)
Definition: ttquanti.cc:4983
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:5485
double getVp(unsigned int i)
Definition: ttquanti.h:785
gsl_matrix * _G
Definition: ttquanti.h:740
double getMeanGenot(unsigned int i)
Definition: ttquanti.h:780
double ** _peigvect
Definition: ttquanti.h:735
unsigned int _table_set_repl
Definition: ttquanti.h:745
double getVpPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:792
gsl_eigen_symmv_workspace * _ws
Definition: ttquanti.h:742
unsigned int _table_set_gen
Definition: ttquanti.h:745
double getCovar(unsigned int i)
Definition: ttquanti.h:787
vector< double > getSNPalleleFreqInPatch(Patch *patch, const age_idx AGE)
Definition: ttquanti.cc:5343
virtual bool setStatRecorders(std::string &token)
Definition: ttquanti.cc:4672
DataTable< double > _genoTable
Definition: ttquanti.h:744
unsigned int _num_trait
Definition: ttquanti.h:738
double * _Va
Definition: ttquanti.h:734
void resetPtrs()
Definition: ttquanti.cc:4541
double * _Vg
Definition: ttquanti.h:734
void setDataTables(age_t AGE)
Definition: ttquanti.cc:5151
void addQuantiPerPatch(age_t AGE)
Definition: ttquanti.cc:4803
double ** _peigval
Definition: ttquanti.h:735
unsigned int _patchNbr
Definition: ttquanti.h:738
double ** _pcovar
Definition: ttquanti.h:735
double ** _pmeanG
Definition: ttquanti.h:735
double getVaPerPatch(unsigned int i, unsigned int p)
Definition: ttquanti.h:791
void addSkewPerPatch(age_t AGE)
Definition: ttquanti.cc:5100
void setOffsprgStats()
Definition: ttquanti.h:778
virtual void init()
Definition: ttquanti.cc:4599
TTQuanti_continuous_full_pleio : universal pleiotropy.
Definition: ttquanti.h:169
TTQuanti_continuous_full_pleio(const TTQuanti_continuous_full_pleio &TT)
Definition: ttquanti.h:174
virtual void show_up()
Definition: ttquanti.cc:3448
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3359
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:3342
virtual ~TTQuanti_continuous_full_pleio()
Definition: ttquanti.h:176
virtual TTQuanti_continuous_full_pleio * clone()
Definition: ttquanti.h:180
TTQuanti_continuous_full_pleio()
Definition: ttquanti.h:172
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3327
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3310
virtual void init_sequence()
Definition: ttquanti.cc:3371
TTQuanti_continuous_no_pleio : multiple non-pleiotropic traits.
Definition: ttquanti.h:225
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3682
virtual ~TTQuanti_continuous_no_pleio()
Definition: ttquanti.h:232
TTQuanti_continuous_no_pleio()
Definition: ttquanti.h:228
virtual TTQuanti_continuous_no_pleio * clone()
Definition: ttquanti.h:236
TTQuanti_continuous_no_pleio(const TTQuanti_continuous_no_pleio &TT)
Definition: ttquanti.h:230
virtual void init_sequence()
Definition: ttquanti.cc:3751
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3741
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:3725
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3661
virtual void show_up()
Definition: ttquanti.cc:3805
TTQuanti_continuous_single : simple implementation for a single quantitative trait with continuous al...
Definition: ttquanti.h:252
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:263
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
virtual ~TTQuanti_continuous_single()
Definition: ttquanti.h:259
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3863
virtual void init_sequence()
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3850
TTQuanti_continuous_single(const TTQuanti_continuous_single &TT)
Definition: ttquanti.h:257
TTQuanti_continuous_single()
Definition: ttquanti.h:255
TTQuanti_continuous_var_pleio : variable pleiotropy.
Definition: ttquanti.h:196
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.cc:3521
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3487
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:3544
TTQuanti_continuous_var_pleio()
Definition: ttquanti.h:199
virtual TTQuanti_continuous_var_pleio * clone()
Definition: ttquanti.h:209
virtual void show_up()
Definition: ttquanti.cc:3616
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:3504
TTQuanti_continuous_var_pleio(const TTQuanti_continuous_var_pleio &TT)
Definition: ttquanti.h:201
virtual ~TTQuanti_continuous_var_pleio()
Definition: ttquanti.h:203
virtual void init_sequence()
Definition: ttquanti.cc:3557
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:3529
TTQuanti_continuous.
Definition: ttquanti.h:112
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.cc:3287
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti.cc:3227
TTQuanti_continuous(const TTQuanti &T)
Definition: ttquanti.h:121
TTQuanti_continuous()
Definition: ttquanti.h:116
virtual void set_allele(int locus, int allele, double value)
Definition: ttquanti.h:150
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.cc:3279
virtual bool operator!=(const TTrait &T)
Definition: ttquanti.cc:3201
virtual unsigned int get_allele(int loc, int all) const
Definition: ttquanti.cc:3211
virtual void ** get_sequence() const
Definition: ttquanti.h:135
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti.h:156
virtual ~TTQuanti_continuous()
Definition: ttquanti.h:126
virtual void set_sequence(void **seq)
Definition: ttquanti.cc:3296
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:151
virtual void init()
Definition: ttquanti.cc:3235
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:153
virtual TTQuanti_continuous & operator=(const TTrait &T)
Definition: ttquanti.cc:3163
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti.cc:3272
virtual double get_allele_value(int loc, int all) const
Definition: ttquanti.cc:3219
virtual bool operator==(const TTrait &T)
Definition: ttquanti.cc:3184
virtual void reset()
Definition: ttquanti.cc:3255
double ** _sequence
Definition: ttquanti.h:161
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti.h:155
TTQuanti_diallelic_full_pleio : pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti.h:354
virtual TTQuanti_diallelic_full_pleio * clone()
Definition: ttquanti.h:365
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4240
virtual void show_up()
Definition: ttquanti.cc:4334
TTQuanti_diallelic_full_pleio()
Definition: ttquanti.h:357
virtual ~TTQuanti_diallelic_full_pleio()
Definition: ttquanti.h:361
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:4261
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4277
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4222
virtual void init_sequence()
Definition: ttquanti.cc:4289
TTQuanti_diallelic_full_pleio(const TTQuanti_diallelic_full_pleio &TT)
Definition: ttquanti.h:359
TTQuanti_diallelic_no_pleio : single or multiple non-pleiotropic traits, di-allelic.
Definition: ttquanti.h:327
TTQuanti_diallelic_no_pleio()
Definition: ttquanti.h:330
virtual ~TTQuanti_diallelic_no_pleio()
Definition: ttquanti.h:334
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:4108
virtual TTQuanti_diallelic_no_pleio * clone()
Definition: ttquanti.h:338
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4087
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4059
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4124
virtual void init_sequence()
Definition: ttquanti.cc:4134
TTQuanti_diallelic_no_pleio(const TTQuanti_diallelic_no_pleio &TT)
Definition: ttquanti.h:332
virtual void show_up()
Definition: ttquanti.cc:4179
TTQuanti_diallelic_var_pleio : variable pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti.h:381
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:4419
TTQuanti_diallelic_var_pleio(const TTQuanti_diallelic_var_pleio &TT)
Definition: ttquanti.h:386
virtual void copy_sequence_1locus(sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)
Definition: ttquanti.cc:4436
TTQuanti_diallelic_var_pleio()
Definition: ttquanti.h:384
virtual TTQuanti_diallelic_var_pleio * clone()
Definition: ttquanti.h:394
virtual ~TTQuanti_diallelic_var_pleio()
Definition: ttquanti.h:388
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4372
virtual void show_up()
Definition: ttquanti.cc:4494
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti.cc:4411
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti.cc:4390
virtual void init_sequence()
Definition: ttquanti.cc:4450
TTQuanti_diallelic.
Definition: ttquanti.h:279
virtual void ** get_sequence() const
Definition: ttquanti.h:297
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:315
virtual unsigned int get_allele(int loc, int all) const
Definition: ttquanti.cc:3985
TTQuanti_diallelic()
Definition: ttquanti.h:283
TTQuanti_diallelic(const TTQuanti &T)
Definition: ttquanti.h:285
virtual TTQuanti_diallelic & operator=(const TTrait &T)
Definition: ttquanti.cc:3918
virtual void init()
Definition: ttquanti.cc:3880
virtual bool operator==(const TTrait &T)
Definition: ttquanti.cc:3939
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti.h:313
virtual void reset()
Definition: ttquanti.cc:3900
unsigned char ** _sequence
Definition: ttquanti.h:320
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti.cc:4022
virtual ~TTQuanti_diallelic()
Definition: ttquanti.h:287
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti.cc:4029
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti.cc:4037
virtual void set_allele(int locus, int allele, double value)
Definition: ttquanti.h:312
virtual double get_allele_value(int locus, int allele) const
Definition: ttquanti.cc:3994
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti.cc:4005
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti.cc:3966
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti.cc:3975
virtual void set_sequence(void **seq)
Definition: ttquanti.cc:4047
void inherit_free(const TTrait *mother, const TTrait *father)
virtual bool operator!=(const TTrait &T)
Definition: ttquanti.cc:3956
TTQuanti.
Definition: ttquanti.h:59
virtual void mutate_add(unsigned int position, unsigned int allele, double value)=0
TProtoQuanti * _myProto
Definition: ttquanti.h:105
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:3121
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:3150
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:3112
double get_phenotype(unsigned int trai)
Definition: ttquanti.cc:3141
double * _phenotypes
Definition: ttquanti.h:103
virtual double get_full_genotype(unsigned int trait)=0
void reset_phenotype_to_genotypic_value()
Definition: ttquanti.cc:3133
virtual void mutate()
Definition: ttquanti.cc:3105
double * _genotypic_values
Definition: ttquanti.h:104
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:44
Template class for the trait's FileHandler.
Definition: filehandler.h:219
Template class for the trait's StatHandler.
Definition: stathandler.h:166
Non-template and faster implementation of std::bitset.
Definition: bitstring.h:53
Nemo2.
#define QUANT
Definition: types.h:70
std::string trait_t
Trait types.
Definition: types.h:61
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:34
unsigned int age_t
Age class flags.
Definition: types.h:44
#define ADULTS
Adults age class flag (breeders).
Definition: types.h:52
#define OFFSPRG
Offspring age class flag.
Definition: types.h:48
age_idx
Array index of the age classes in the patch sizes and containers arrays.
Definition: types.h:39

Generated for Nemo v2.4.2 by  doxygen 1.9.1

Catalogued on GSR