Nemo  2.4.0
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
ttquanti_bitstring.h
Go to the documentation of this file.
1 /*
2  * @file ttquanti_bitstring.h
3  * Nemo2
4  *
5  * Copyright (C) 2023-2026 The Authors
6  *
7  * This file is part of Nemo
8  *
9  * Nemo is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * Nemo is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22  *
23  * created on @date 10.02.2023
24  *
25  * @author fred
26  *
27  */
28 
29 #ifndef TTQUANTI_BITSTRING_H_
30 #define TTQUANTI_BITSTRING_H_
31 
32 #include "ttquanti.h"
33 #include "bitstring.h"
34 
35 // ------------------------------------------------------------------------------
39 // ------------------------------------------------------------------------------
41 
42 public:
43 
45  {}
46 
48  {}
49 
51 
52  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const;
53  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value);
54  void set_bit_sequence (const bitstring* inseq);
55  const bitstring& get_bit_sequence (bool chromosome) const
56  {return _sequence[chromosome];}
57  void inherit_free (const TTrait* mother, const TTrait* father);
58 
59  //implements TTrait:
60  virtual void reset ();
61  virtual void init ();
62  virtual void set_sequence (void** seq);
63  virtual void** get_sequence () const {
64  error("calling TTQuanti_diallelic_bitstring::get_sequence()\n");
65  return (void**)NULL;
66  }
67  virtual unsigned int get_allele (int loc, int all) const ;
68  virtual double get_allele_value (int locus, int allele) const;
69  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
70 
72  virtual bool operator== (const TTrait& T);
73  virtual bool operator!= (const TTrait& T);
74 
75  //implements StorableComponent:
76  virtual void store_data ( BinaryStorageBuffer* saver );
77  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
78 
79  //implements TTQuanti:
80  virtual double get_full_genotype (unsigned int trait);
81  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
82  {_sequence[allele].set(position, bool(value));}
83  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
84  {_sequence[allele].flip(position);}
85 
86 protected:
87 
89 
90 };
91 // ------------------------------------------------------------------------------
95 // ------------------------------------------------------------------------------
97 
98 public:
100  {}
101 
103  {}
104 
106 
107  //TTtrait implementation:
108  virtual void init ();
109  virtual void init_sequence ();
111  virtual void show_up();
112 
113  //TTQuanti implementation:
114  virtual double get_additive_genotype (const unsigned int trait) const;
115  virtual double get_dominant_genotype (const unsigned int trait) const;
116  virtual void copy_sequence_block (sex_t SEX, unsigned int chromosome, unsigned int from_locus,
117  unsigned int to_locus, const TTQuanti *parent);
118  virtual void copy_sequence_1locus (sex_t SEX, unsigned int chromosome, unsigned int at,
119  const TTQuanti *parent);
120  // Equal-effects additive genotype (used by get_dominant_genotype for equal-effects-only case)
121  double get_additive_genotype_equal_effects (const unsigned int trait) const;
122 
123 };
124 // ------------------------------------------------------------------------------
128 // ------------------------------------------------------------------------------
130 
131 public:
133 
135 
137 
138  //TTtrait implementation:
139  virtual void init_sequence ();
141  virtual void show_up();
142 
143  //TTQuanti implementation:
144  virtual double get_additive_genotype (const unsigned int trait) const;
145  virtual double get_dominant_genotype (const unsigned int trait) const;
146  virtual void copy_sequence_block (sex_t SEX, unsigned int chromosome, unsigned int from_locus,
147  unsigned int to_locus, const TTQuanti *parent);
148  virtual void copy_sequence_1locus (sex_t SEX, unsigned int chromosome, unsigned int at,
149  const TTQuanti *parent);
150 };
151 // ------------------------------------------------------------------------------
155 // ------------------------------------------------------------------------------
157 
158 public:
160 
162 
164 
165  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
166 
167  //TTtrait implementation:
168  virtual void init_sequence ();
170  virtual void show_up();
171 
172  //TTQuanti implementation:
173  virtual double get_additive_genotype (const unsigned int trait) const;
174  virtual double get_dominant_genotype (const unsigned int trait) const;
175  virtual void copy_sequence_block (sex_t SEX, unsigned int chromosome, unsigned int from_locus,
176  unsigned int to_locus, const TTQuanti *parent);
177  virtual void copy_sequence_1locus (sex_t SEX, unsigned int chromosome, unsigned int at,
178  const TTQuanti *parent);
179 };
180 
181 
182 
183 
184 #endif /* TTQUANTI_BITSTRING_H_ */
A class to store any kind of data in a char buffer before unloading it in a binary data file.
Definition: binarystoragebuffer.h:43
TTQuanti_diallelic_bitstring_full_pleio : pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti_bitstring.h:129
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:476
virtual void init_sequence()
Definition: ttquanti_bitstring.cc:544
TTQuanti_diallelic_bitstring_full_pleio(const TTQuanti_diallelic_bitstring_full_pleio &TT)
Definition: ttquanti_bitstring.h:134
TTQuanti_diallelic_bitstring_full_pleio()
Definition: ttquanti_bitstring.h:132
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:448
virtual void show_up()
Definition: ttquanti_bitstring.cc:584
virtual TTQuanti_diallelic_bitstring_full_pleio * clone()
Definition: ttquanti_bitstring.h:140
virtual void copy_sequence_1locus(sex_t SEX, unsigned int chromosome, unsigned int at, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:529
virtual void copy_sequence_block(sex_t SEX, unsigned int chromosome, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:512
virtual ~TTQuanti_diallelic_bitstring_full_pleio()
Definition: ttquanti_bitstring.h:136
TTQuanti_diallelic_bitstring_no_pleio : single or multiple non-pleiotropic traits,...
Definition: ttquanti_bitstring.h:96
virtual void copy_sequence_1locus(sex_t SEX, unsigned int chromosome, unsigned int at, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:357
TTQuanti_diallelic_bitstring_no_pleio(const TTQuanti_diallelic_bitstring_no_pleio &TT)
Definition: ttquanti_bitstring.h:102
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:240
double get_additive_genotype_equal_effects(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:263
virtual TTQuanti_diallelic_bitstring_no_pleio * clone()
Definition: ttquanti_bitstring.h:110
virtual void init()
Definition: ttquanti_bitstring.cc:235
virtual void copy_sequence_block(sex_t SEX, unsigned int chromosome, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:344
virtual ~TTQuanti_diallelic_bitstring_no_pleio()
Definition: ttquanti_bitstring.h:105
TTQuanti_diallelic_bitstring_no_pleio()
Definition: ttquanti_bitstring.h:99
virtual void init_sequence()
Definition: ttquanti_bitstring.cc:367
virtual void show_up()
Definition: ttquanti_bitstring.cc:405
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:277
TTQuanti_diallelic_bitstring_var_pleio : variable pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti_bitstring.h:156
TTQuanti_diallelic_bitstring_var_pleio(const TTQuanti_diallelic_bitstring_var_pleio &TT)
Definition: ttquanti_bitstring.h:161
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:650
virtual void init_sequence()
Definition: ttquanti_bitstring.cc:729
virtual TTQuanti_diallelic_bitstring_var_pleio * clone()
Definition: ttquanti_bitstring.h:169
virtual void show_up()
Definition: ttquanti_bitstring.cc:768
virtual void copy_sequence_1locus(sex_t SEX, unsigned int chromosome, unsigned int at, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:713
TTQuanti_diallelic_bitstring_var_pleio()
Definition: ttquanti_bitstring.h:159
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti_bitstring.cc:688
virtual ~TTQuanti_diallelic_bitstring_var_pleio()
Definition: ttquanti_bitstring.h:163
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:622
virtual void copy_sequence_block(sex_t SEX, unsigned int chromosome, unsigned int from_locus, unsigned int to_locus, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:696
TTQuanti_diallelic_bitstring.
Definition: ttquanti_bitstring.h:40
virtual void ** get_sequence() const
Definition: ttquanti_bitstring.h:63
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti_bitstring.cc:182
virtual bool operator!=(const TTrait &T)
Definition: ttquanti_bitstring.cc:76
virtual double get_allele_value(int locus, int allele) const
Definition: ttquanti_bitstring.cc:114
virtual ~TTQuanti_diallelic_bitstring()
Definition: ttquanti_bitstring.h:50
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti_bitstring.cc:125
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti_bitstring.h:81
const bitstring & get_bit_sequence(bool chromosome) const
Definition: ttquanti_bitstring.h:55
bitstring * _sequence
Definition: ttquanti_bitstring.h:88
void inherit_free(const TTrait *mother, const TTrait *father)
virtual unsigned int get_allele(int loc, int all) const
Definition: ttquanti_bitstring.cc:105
void set_bit_sequence(const bitstring *inseq)
Definition: ttquanti_bitstring.cc:222
virtual void reset()
Definition: ttquanti_bitstring.cc:159
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti_bitstring.cc:196
virtual void init()
Definition: ttquanti_bitstring.cc:142
virtual void set_sequence(void **seq)
Definition: ttquanti_bitstring.cc:215
virtual TTQuanti_diallelic_bitstring & operator=(const TTrait &T)
Definition: ttquanti_bitstring.cc:38
TTQuanti_diallelic_bitstring(const TTQuanti &T)
Definition: ttquanti_bitstring.h:47
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti_bitstring.cc:95
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti_bitstring.h:83
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti_bitstring.cc:86
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti_bitstring.cc:175
virtual bool operator==(const TTrait &T)
Definition: ttquanti_bitstring.cc:59
TTQuanti_diallelic_bitstring()
Definition: ttquanti_bitstring.h:44
TTQuanti.
Definition: ttquanti.h:60
Interface for all trait types, declares all basic trait operations.
Definition: ttrait.h:45
Non-template and faster implementation of std::bitset.
Definition: bitstring.h:56
void set(size_t n)
Set a bit to 1.
Definition: bitstring.h:335
void flip(size_t n)
Flip the bit at n.
Definition: bitstring.h:346
int error(const char *str,...)
Definition: output.cc:78
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:35

Generated for Nemo v2.4.0 by  doxygen 1.9.1 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR