Nemo  2.4.0b
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 Frederic Guillaume
6  * frederic.guillaume@helsinki.fi
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 2 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, write to the Free Software
22  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23  *
24  * created on @date 10.02.2023
25  *
26  * @author fred
27  *
28  */
29 
30 #ifndef TTQUANTI_BITSTRING_H_
31 #define TTQUANTI_BITSTRING_H_
32 
33 #include "ttquanti.h"
34 #include "bitstring.h"
35 
36 // ------------------------------------------------------------------------------
40 // ------------------------------------------------------------------------------
42 
43 public:
44 
46  {
47 // message("CONSTRUCTOR::TTQuanti_continuous::CONSTRUCTOR\n");
48  }
49 
51 // { message("COPY CONSTRUCTOR::TTQuanti_continuous::COPY CONSTRUCTOR\n"); }
52 
54 
55  virtual bool get_allele_bit (unsigned int position, unsigned int allele) const;
56  virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value);
57  void set_bit_sequence (const bitstring* inseq);
58  const bitstring& get_bit_sequence (bool chromosome) const
59  {return _sequence[chromosome];}
60  void inherit_free (const TTrait* mother, const TTrait* father);
61 
62  //implements TTrait:
63  virtual void reset ();
64  virtual void init ();
65  virtual void set_sequence (void** seq);
66  virtual void** get_sequence () const {
67  error("calling TTQuanti_diallelic_bitstring::get_sequence()\n");
68  return (void**)NULL;
69  }
70  virtual double get_allele_value (int locus, int allele) const;
71  virtual void set_allele_value (unsigned int locus, unsigned int allele, double value);
72 
74  virtual bool operator== (const TTrait& T);
75  virtual bool operator!= (const TTrait& T);
76 
77  //implements StorableComponent:
78  virtual void store_data ( BinaryStorageBuffer* saver );
79  virtual bool retrieve_data ( BinaryStorageBuffer* reader );
80 
81  //implements TTQuanti:
82  virtual double get_full_genotype (unsigned int trait);
83 // virtual void set_allele (int locus, int allele, double value) {_sequence[allele][locus] = value;}
84  virtual void mutate_add (unsigned int position, unsigned int allele, double value)
85  {_sequence[allele].set(position, bool(value));}
86  virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
87  {_sequence[allele].flip(position);}
88 
89 protected:
90 
92 };
93 // ------------------------------------------------------------------------------
97 // ------------------------------------------------------------------------------
99 
100 public:
102 // message("CONSTRUCTOR::TTQuanti_diallelic_bitstring_no_pleio::CONSTRUCTOR\n");
103  }
104 
106 // {message("COPY CONSTRUCTOR::TTQuanti_diallelic_bitstring_no_pleio::COPY CONSTRUCTOR\n");}
107 
109 
110  //TTtrait implementation:
111  virtual void init_sequence ();
113  virtual void show_up();
114 
115  //TTQuanti implementation:
116  virtual double get_additive_genotype (const unsigned int trait) const;
117  virtual double get_dominant_genotype (const unsigned int trait) const;
118  virtual void copy_sequence_block (sex_t SEX, unsigned int chromosome, unsigned int from_locus,
119  unsigned int to_locus, const TTQuanti *parent);
120  virtual void copy_sequence_1locus (sex_t SEX, unsigned int chromosome, unsigned int at,
121  const TTQuanti *parent);
122 };
123 // ------------------------------------------------------------------------------
127 // ------------------------------------------------------------------------------
129 
130 public:
132 
134 
136 
137  //TTtrait implementation:
138  virtual void init_sequence ();
140  virtual void show_up();
141 
142  //TTQuanti implementation:
143  virtual double get_additive_genotype (const unsigned int trait) const;
144  virtual double get_dominant_genotype (const unsigned int trait) const;
145  virtual void copy_sequence_block (sex_t SEX, unsigned int chromosome, unsigned int from_locus,
146  unsigned int to_locus, const TTQuanti *parent);
147  virtual void copy_sequence_1locus (sex_t SEX, unsigned int chromosome, unsigned int at,
148  const TTQuanti *parent);
149 };
150 // ------------------------------------------------------------------------------
154 // ------------------------------------------------------------------------------
156 
157 public:
159 
161 
163 
164  unsigned int get_sequence_block_size (unsigned int from, unsigned int to);
165 
166  //TTtrait implementation:
167  virtual void init_sequence ();
169  virtual void show_up();
170 
171  //TTQuanti implementation:
172  virtual double get_additive_genotype (const unsigned int trait) const;
173  virtual double get_dominant_genotype (const unsigned int trait) const;
174  virtual void copy_sequence_block (sex_t SEX, unsigned int chromosome, unsigned int from_locus,
175  unsigned int to_locus, const TTQuanti *parent);
176  virtual void copy_sequence_1locus (sex_t SEX, unsigned int chromosome, unsigned int at,
177  const TTQuanti *parent);
178 };
179 
180 
181 
182 
183 #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:44
TTQuanti_diallelic_bitstring_full_pleio : pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti_bitstring.h:128
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:377
virtual void init_sequence()
Definition: ttquanti_bitstring.cc:432
TTQuanti_diallelic_bitstring_full_pleio(const TTQuanti_diallelic_bitstring_full_pleio &TT)
Definition: ttquanti_bitstring.h:133
TTQuanti_diallelic_bitstring_full_pleio()
Definition: ttquanti_bitstring.h:131
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:359
virtual void show_up()
Definition: ttquanti_bitstring.cc:468
virtual TTQuanti_diallelic_bitstring_full_pleio * clone()
Definition: ttquanti_bitstring.h:139
virtual void copy_sequence_1locus(sex_t SEX, unsigned int chromosome, unsigned int at, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:415
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:398
virtual ~TTQuanti_diallelic_bitstring_full_pleio()
Definition: ttquanti_bitstring.h:135
TTQuanti_diallelic_bitstring_no_pleio : single or multiple non-pleiotropic traits,...
Definition: ttquanti_bitstring.h:98
virtual void copy_sequence_1locus(sex_t SEX, unsigned int chromosome, unsigned int at, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:271
TTQuanti_diallelic_bitstring_no_pleio(const TTQuanti_diallelic_bitstring_no_pleio &TT)
Definition: ttquanti_bitstring.h:105
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:220
virtual TTQuanti_diallelic_bitstring_no_pleio * clone()
Definition: ttquanti_bitstring.h:112
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:258
virtual ~TTQuanti_diallelic_bitstring_no_pleio()
Definition: ttquanti_bitstring.h:108
TTQuanti_diallelic_bitstring_no_pleio()
Definition: ttquanti_bitstring.h:101
virtual void init_sequence()
Definition: ttquanti_bitstring.cc:281
virtual void show_up()
Definition: ttquanti_bitstring.cc:316
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:237
TTQuanti_diallelic_bitstring_var_pleio : variable pleiotropic di-allelic loci, max PD = 2.
Definition: ttquanti_bitstring.h:155
TTQuanti_diallelic_bitstring_var_pleio(const TTQuanti_diallelic_bitstring_var_pleio &TT)
Definition: ttquanti_bitstring.h:160
virtual double get_dominant_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:524
virtual void init_sequence()
Definition: ttquanti_bitstring.cc:593
virtual TTQuanti_diallelic_bitstring_var_pleio * clone()
Definition: ttquanti_bitstring.h:168
virtual void show_up()
Definition: ttquanti_bitstring.cc:629
virtual void copy_sequence_1locus(sex_t SEX, unsigned int chromosome, unsigned int at, const TTQuanti *parent)
Definition: ttquanti_bitstring.cc:577
TTQuanti_diallelic_bitstring_var_pleio()
Definition: ttquanti_bitstring.h:158
unsigned int get_sequence_block_size(unsigned int from, unsigned int to)
Definition: ttquanti_bitstring.cc:545
virtual ~TTQuanti_diallelic_bitstring_var_pleio()
Definition: ttquanti_bitstring.h:162
virtual double get_additive_genotype(const unsigned int trait) const
Definition: ttquanti_bitstring.cc:506
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:560
TTQuanti_diallelic_bitstring.
Definition: ttquanti_bitstring.h:41
virtual void ** get_sequence() const
Definition: ttquanti_bitstring.h:66
virtual void store_data(BinaryStorageBuffer *saver)
Definition: ttquanti_bitstring.cc:169
virtual bool operator!=(const TTrait &T)
Definition: ttquanti_bitstring.cc:77
virtual double get_allele_value(int locus, int allele) const
Definition: ttquanti_bitstring.cc:106
virtual ~TTQuanti_diallelic_bitstring()
Definition: ttquanti_bitstring.h:53
virtual void set_allele_value(unsigned int locus, unsigned int allele, double value)
Definition: ttquanti_bitstring.cc:117
virtual void mutate_add(unsigned int position, unsigned int allele, double value)
Definition: ttquanti_bitstring.h:84
const bitstring & get_bit_sequence(bool chromosome) const
Definition: ttquanti_bitstring.h:58
bitstring * _sequence
Definition: ttquanti_bitstring.h:91
void inherit_free(const TTrait *mother, const TTrait *father)
void set_bit_sequence(const bitstring *inseq)
Definition: ttquanti_bitstring.cc:209
virtual void reset()
Definition: ttquanti_bitstring.cc:148
virtual bool retrieve_data(BinaryStorageBuffer *reader)
Definition: ttquanti_bitstring.cc:183
virtual void init()
Definition: ttquanti_bitstring.cc:134
virtual void set_sequence(void **seq)
Definition: ttquanti_bitstring.cc:202
virtual TTQuanti_diallelic_bitstring & operator=(const TTrait &T)
Definition: ttquanti_bitstring.cc:39
TTQuanti_diallelic_bitstring(const TTQuanti &T)
Definition: ttquanti_bitstring.h:50
virtual void set_allele_bit(unsigned int position, unsigned int allele, bool value)
Definition: ttquanti_bitstring.cc:96
virtual void mutate_inplace(unsigned int position, unsigned int allele, double value)
Definition: ttquanti_bitstring.h:86
virtual bool get_allele_bit(unsigned int position, unsigned int allele) const
Definition: ttquanti_bitstring.cc:87
virtual double get_full_genotype(unsigned int trait)
Definition: ttquanti_bitstring.cc:162
virtual bool operator==(const TTrait &T)
Definition: ttquanti_bitstring.cc:60
TTQuanti_diallelic_bitstring()
Definition: ttquanti_bitstring.h:45
TTQuanti.
Definition: ttquanti.h:59
Interface for all trait types, declares all basic trait operations.
Definition: ttrait.h:46
Non-template and faster implementation of std::bitset.
Definition: bitstring.h:57
void set(size_t n)
Set a bit to 1.
Definition: bitstring.h:256
void flip(size_t n)
Flip the bit at n.
Definition: bitstring.h:267
int error(const char *str,...)
Definition: output.cc:77
sex_t
Sex types, males are always 0 and females 1!!
Definition: types.h:36

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