Nemo  2.4.2
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
TTQuanti_diallelic_bitstring Class Reference

TTQuanti_diallelic_bitstring. More...

#include <ttquanti_bitstring.h>

+ Inheritance diagram for TTQuanti_diallelic_bitstring:
+ Collaboration diagram for TTQuanti_diallelic_bitstring:

Public Member Functions

 TTQuanti_diallelic_bitstring ()
 
 TTQuanti_diallelic_bitstring (const TTQuanti &T)
 
virtual ~TTQuanti_diallelic_bitstring ()
 
virtual bool get_allele_bit (unsigned int position, unsigned int allele) const
 
virtual void set_allele_bit (unsigned int position, unsigned int allele, bool value)
 
void set_bit_sequence (const bitstring *inseq)
 
const bitstringget_bit_sequence (bool chromosome) const
 
void inherit_free (const TTrait *mother, const TTrait *father)
 
virtual void reset ()
 
virtual void init ()
 
virtual void set_sequence (void **seq)
 
virtual void ** get_sequence () const
 
virtual unsigned int get_allele (int loc, int all) const
 
virtual double get_allele_value (int locus, int allele) const
 
virtual void set_allele_value (unsigned int locus, unsigned int allele, double value)
 
virtual TTQuanti_diallelic_bitstringoperator= (const TTrait &T)
 
virtual bool operator== (const TTrait &T)
 
virtual bool operator!= (const TTrait &T)
 
virtual void store_data (BinaryStorageBuffer *saver)
 
virtual bool retrieve_data (BinaryStorageBuffer *reader)
 
virtual double get_full_genotype (unsigned int trait)
 
virtual void mutate_add (unsigned int position, unsigned int allele, double value)
 
virtual void mutate_inplace (unsigned int position, unsigned int allele, double value)
 
- Public Member Functions inherited from TTQuanti
 TTQuanti ()
 
 TTQuanti (const TTQuanti &T)
 
virtual ~TTQuanti ()
 
virtual trait_t get_type () const
 
virtual void mutate ()
 
virtual void inherit (const TTrait *mother, const TTrait *father)
 
virtual void * set_trait (void *value)
 
virtual void set_value ()
 
virtual void * getValue () const
 
virtual double get_additive_genotype (const unsigned int trait) const =0
 
virtual double get_dominant_genotype (const unsigned int trait) const =0
 
virtual void copy_sequence_block (sex_t SEX, unsigned int strand, unsigned int from_pos, unsigned int to_pos, const TTQuanti *parent)=0
 
virtual void copy_sequence_1locus (sex_t SEX, unsigned int strand, unsigned int at, const TTQuanti *parent)=0
 
void set_proto (TProtoQuanti *proto)
 
TProtoQuantiget_proto ()
 
double get_phenotype (unsigned int trai)
 
void set_phenotype (unsigned int trait, double value)
 
void reset_phenotype_to_genotypic_value ()
 
- Public Member Functions inherited from TTrait
virtual void init_sequence ()=0
 Called at the start of each replicate, sets the initial genotypes. More...
 
virtual void show_up ()=0
 Writes some info to stdout. More...
 
virtual TTraitclone ()=0
 Returns a copy of itself. More...
 
virtual ~TTrait ()
 
- Public Member Functions inherited from StorableComponent
virtual ~StorableComponent ()
 

Protected Attributes

bitstring_sequence
 
- Protected Attributes inherited from TTQuanti
double * _phenotypes
 
double * _genotypic_values
 
TProtoQuanti_myProto
 

Detailed Description

Constructor & Destructor Documentation

◆ TTQuanti_diallelic_bitstring() [1/2]

TTQuanti_diallelic_bitstring::TTQuanti_diallelic_bitstring ( )
inline
43  : TTQuanti(), _sequence(0)
44  {}
bitstring * _sequence
Definition: ttquanti_bitstring.h:87
TTQuanti()
Definition: ttquanti.h:62

◆ TTQuanti_diallelic_bitstring() [2/2]

TTQuanti_diallelic_bitstring::TTQuanti_diallelic_bitstring ( const TTQuanti T)
inline
46  : TTQuanti(T), _sequence(0)
47  {}

◆ ~TTQuanti_diallelic_bitstring()

virtual TTQuanti_diallelic_bitstring::~TTQuanti_diallelic_bitstring ( )
inlinevirtual
49 {reset();}
virtual void reset()
Definition: ttquanti_bitstring.cc:158

References reset().

Member Function Documentation

◆ get_allele()

unsigned int TTQuanti_diallelic_bitstring::get_allele ( int  loc,
int  all 
) const
virtual

Implements TTrait.

105 {
106  assert(position < (int)_myProto->get_seq_length() && allele < 2);
107 
108  return _sequence[allele][position];
109 }
unsigned int get_seq_length()
Definition: ttquanti.h:425
TProtoQuanti * _myProto
Definition: ttquanti.h:105

References TTQuanti::_myProto, _sequence, and TProtoQuanti::get_seq_length().

◆ get_allele_bit()

bool TTQuanti_diallelic_bitstring::get_allele_bit ( unsigned int  position,
unsigned int  allele 
) const
virtual

Implements TTQuanti.

86 {
87  assert(position < _myProto->get_seq_length() && allele < 2);
88 
89  return _sequence[allele][position];
90 }

References _sequence.

◆ get_allele_value()

double TTQuanti_diallelic_bitstring::get_allele_value ( int  locus,
int  allele 
) const
inlinevirtual

Implements TTrait.

114 {
115  // beware that get_diallele_value() expects a locus ID, not a sequence position!!!
116 
117  assert(position < (int)_myProto->get_seq_length() && all < 2);
118 
119  return _myProto->get_seq_diallele_value( position, (unsigned int)_sequence[all][position] );
120 }
double get_seq_diallele_value(unsigned int position, unsigned int allele)
Definition: ttquanti.h:436

References TTQuanti::_myProto, _sequence, TProtoQuanti::get_seq_diallele_value(), and TProtoQuanti::get_seq_length().

◆ get_bit_sequence()

◆ get_full_genotype()

double TTQuanti_diallelic_bitstring::get_full_genotype ( unsigned int  trait)
virtual

Implements TTQuanti.

175 { //returns genotypic value that includes dominance effects if any
176  return _myProto->get_genotypic_value(this, trait);
177 }
double get_genotypic_value(const TTQuanti *ind, const unsigned int trait)
Definition: ttquanti.h:483

References TTQuanti::_myProto, and TProtoQuanti::get_genotypic_value().

◆ get_sequence()

virtual void** TTQuanti_diallelic_bitstring::get_sequence ( ) const
inlinevirtual

Implements TTrait.

62  {
63  error("calling TTQuanti_diallelic_bitstring::get_sequence()\n");
64  return (void**)NULL;
65  }
int error(const char *str,...)
Definition: output.cc:77

References error().

◆ inherit_free()

void TTQuanti_diallelic_bitstring::inherit_free ( const TTrait mother,
const TTrait father 
)

◆ init()

void TTQuanti_diallelic_bitstring::init ( )
inlinevirtual

Implements TTrait.

Reimplemented in TTQuanti_diallelic_bitstring_no_pleio.

142 {
143  reset();
144 
145  _sequence = new bitstring [2];
148 
149  _phenotypes = new double [_myProto->get_num_traits()];
150  _genotypic_values = new double [_myProto->get_num_traits()];
151 
152  memset(_phenotypes, 0.0, _myProto->get_num_traits()*sizeof(double));
153  memset(_genotypic_values, 0.0, _myProto->get_num_traits()*sizeof(double));
154 }
unsigned int get_num_traits()
Definition: ttquanti.h:421
double * _phenotypes
Definition: ttquanti.h:103
double * _genotypic_values
Definition: ttquanti.h:104
Non-template and faster implementation of std::bitset.
Definition: bitstring.h:53
void reset(size_t length)
Definition: bitstring.h:136

References TTQuanti::_genotypic_values, TTQuanti::_myProto, TTQuanti::_phenotypes, _sequence, TProtoQuanti::get_num_traits(), TProtoQuanti::get_seq_length(), reset(), and bitstring::reset().

Referenced by TTQuanti_diallelic_bitstring_no_pleio::init(), operator=(), and set_bit_sequence().

+ Here is the caller graph for this function:

◆ mutate_add()

virtual void TTQuanti_diallelic_bitstring::mutate_add ( unsigned int  position,
unsigned int  allele,
double  value 
)
inlinevirtual

Implements TTQuanti.

81  {_sequence[allele].set(position, bool(value));}
void set(size_t n)
Set a bit to 1.
Definition: bitstring.h:332

References _sequence, and bitstring::set().

◆ mutate_inplace()

virtual void TTQuanti_diallelic_bitstring::mutate_inplace ( unsigned int  position,
unsigned int  allele,
double  value 
)
inlinevirtual

Implements TTQuanti.

83  {_sequence[allele].flip(position);}
void flip(size_t n)
Flip the bit at n.
Definition: bitstring.h:343

References _sequence, and bitstring::flip().

◆ operator!=()

bool TTQuanti_diallelic_bitstring::operator!= ( const TTrait T)
virtual

Implements TTrait.

76 {
77  if(!((*this) == T) )
78  return true;
79  else
80  return false;
81 }

◆ operator=()

TTQuanti_diallelic_bitstring & TTQuanti_diallelic_bitstring::operator= ( const TTrait T)
virtual

Implements TTrait.

38 {
39  const TTQuanti_diallelic_bitstring& TQ = dynamic_cast<const TTQuanti_diallelic_bitstring&>(T);
40 
41  assert(*this == TQ); // to make sure that the sequences are of same length
42 
43  if(this != &TQ) {
44 
45  init();
46 
47  _sequence[0].copy(TQ._sequence[0]);
48  _sequence[1].copy(TQ._sequence[1]);
49 
50  set_value();
51  }
52 
53  return *this;
54 }
TTQuanti_diallelic_bitstring.
Definition: ttquanti_bitstring.h:39
virtual void init()
Definition: ttquanti_bitstring.cc:141
virtual void set_value()
Definition: ttquanti.cc:3121
void copy(const bitstring &b)
Unchecked copy, assumes we have sames sizes.
Definition: bitstring.h:357

References _sequence, bitstring::copy(), init(), and TTQuanti::set_value().

◆ operator==()

bool TTQuanti_diallelic_bitstring::operator== ( const TTrait T)
virtual

Implements TTrait.

59  {
60  if(this->get_type().compare(T.get_type()) != 0) return false;
61 
62  const TTQuanti_diallelic_bitstring& TQ = dynamic_cast<const TTQuanti_diallelic_bitstring&>(T);
63 
64  if(this != &TQ) {
65  if(_myProto->get_num_locus() != TQ._myProto->get_num_locus()) return false;
66  if(_myProto->get_num_traits() != TQ._myProto->get_num_traits()) return false;
67  if(_myProto->get_seq_length() != TQ._myProto->get_seq_length()) return false;
68  if(_myProto->get_pleiotropy_type() != TQ._myProto->get_pleiotropy_type()) return false;
69  }
70  return true;
71  }
unsigned int get_num_locus()
Definition: ttquanti.h:422
unsigned int get_pleiotropy_type()
Definition: ttquanti.h:424
virtual trait_t get_type() const
Definition: ttquanti.h:72
virtual trait_t get_type() const =0
type accessor.

References TTQuanti::_myProto, TProtoQuanti::get_num_locus(), TProtoQuanti::get_num_traits(), TProtoQuanti::get_pleiotropy_type(), TProtoQuanti::get_seq_length(), TTQuanti::get_type(), and TTrait::get_type().

◆ reset()

void TTQuanti_diallelic_bitstring::reset ( )
inlinevirtual

Implements TTrait.

159 {
160  if(_sequence) {
161  delete [] _sequence;
162  _sequence = NULL;
163  }
164 
165  if(_phenotypes) delete [] _phenotypes;
166  _phenotypes = NULL;
167  if(_genotypic_values) delete [] _genotypic_values;
168  _genotypic_values = NULL;
169 
170 }

References TTQuanti::_genotypic_values, TTQuanti::_phenotypes, and _sequence.

Referenced by init(), and ~TTQuanti_diallelic_bitstring().

+ Here is the caller graph for this function:

◆ retrieve_data()

bool TTQuanti_diallelic_bitstring::retrieve_data ( BinaryStorageBuffer reader)
inlinevirtual

Implements StorableComponent.

196 {
197  size_t wnb = _sequence[0].nb_words();
198  size_t bytes = wnb * sizeof(bitstring::_ul);
199  bitstring::_ul *srce = new bitstring::_ul [wnb];
200 
201  reader->read(srce, bytes);
202  _sequence[0].set_data(srce,wnb);
203 
204  reader->read(srce, bytes);
205  _sequence[1].set_data(srce,wnb);
206 
207  delete [] srce;
208 
209  return true;
210 }
void read(void *out, unsigned int nb_bytes)
Definition: binarystoragebuffer.h:219
unsigned long _ul
Definition: bitstring.h:57
void set_data(_ul *srce, size_t nbwrd)
Copy bits from an array of unsigned long words.
Definition: bitstring.h:346
size_t nb_words() const
Definition: bitstring.h:160

References _sequence, bitstring::nb_words(), BinaryStorageBuffer::read(), and bitstring::set_data().

◆ set_allele_bit()

void TTQuanti_diallelic_bitstring::set_allele_bit ( unsigned int  position,
unsigned int  allele,
bool  value 
)
virtual

Implements TTQuanti.

95 {
96  assert(position < (int)_myProto->get_seq_length() && allele < 2);
97 
98  _sequence[allele].set(position, value); // avoiding reference
99 }

References TTQuanti::_myProto, _sequence, TProtoQuanti::get_seq_length(), and bitstring::set().

◆ set_allele_value()

void TTQuanti_diallelic_bitstring::set_allele_value ( unsigned int  locus,
unsigned int  allele,
double  value 
)
inlinevirtual

Implements TTrait.

125 {
126 // assert(position);
127  bool a = _sequence[allele][position];
128  double refval1 = _myProto->get_seq_diallele_value( position, a );
129  double refval2 = _myProto->get_seq_diallele_value( position, !a );
130 
131  if( refval1 != value && refval2 != value )
132  fatal("trait quant::trying to set allele %i at position %i to value %f, which is not as set in the input allele table (%f, %f)\n",
133  allele, position, value, refval1, refval2);
134 
135  if( refval1 != value )
136  _sequence[allele].flip(position);
137 }
void fatal(const char *str,...)
Definition: output.cc:98

References TTQuanti::_myProto, _sequence, fatal(), bitstring::flip(), and TProtoQuanti::get_seq_diallele_value().

◆ set_bit_sequence()

void TTQuanti_diallelic_bitstring::set_bit_sequence ( const bitstring inseq)
222 {
223  init();
224  _sequence[0].copy(inseq[0]);
225  _sequence[1].copy(inseq[1]);
226 }

References _sequence, bitstring::copy(), and init().

◆ set_sequence()

void TTQuanti_diallelic_bitstring::set_sequence ( void **  seq)
virtual

Implements TTrait.

215 {
216  error("Calling TTQuanti_diallelic_bitstring::set_sequence(), should be calling TTQuanti_diallelic_bitstring::set_bit_sequence()\n");
217 }

References error().

◆ store_data()

void TTQuanti_diallelic_bitstring::store_data ( BinaryStorageBuffer saver)
inlinevirtual

Implements StorableComponent.

182 {
183  size_t wnb = _sequence[0].nb_words();
184  size_t bytes = sizeof(bitstring::_ul);
185 
186  for(size_t i = 0; i < wnb; i++)
187  saver->store(_sequence[0].getword_atIdx(i), bytes);
188 
189  for(size_t i = 0; i < wnb; i++)
190  saver->store(_sequence[1].getword_atIdx(i), bytes);
191 }
void store(void *stream, unsigned int nb_bytes)
Definition: binarystoragebuffer.cc:36
_ul * getword_atIdx(size_t index) const
Definition: bitstring.h:155

References _sequence, bitstring::getword_atIdx(), bitstring::nb_words(), and BinaryStorageBuffer::store().

Member Data Documentation

◆ _sequence

bitstring* TTQuanti_diallelic_bitstring::_sequence
protected

Referenced by TTQuanti_diallelic_bitstring_no_pleio::copy_sequence_1locus(), TTQuanti_diallelic_bitstring_full_pleio::copy_sequence_1locus(), TTQuanti_diallelic_bitstring_var_pleio::copy_sequence_1locus(), TTQuanti_diallelic_bitstring_no_pleio_epistasis::copy_sequence_1locus(), TTQuanti_diallelic_bitstring_full_pleio_epistasis::copy_sequence_1locus(), TTQuanti_diallelic_bitstring_no_pleio::copy_sequence_block(), TTQuanti_diallelic_bitstring_full_pleio::copy_sequence_block(), TTQuanti_diallelic_bitstring_var_pleio::copy_sequence_block(), TTQuanti_diallelic_bitstring_no_pleio_epistasis::copy_sequence_block(), TTQuanti_diallelic_bitstring_full_pleio_epistasis::copy_sequence_block(), TTQuanti_diallelic_bitstring_no_pleio::get_additive_genotype(), TTQuanti_diallelic_bitstring_full_pleio::get_additive_genotype(), TTQuanti_diallelic_bitstring_var_pleio::get_additive_genotype(), TTQuanti_diallelic_bitstring_no_pleio_epistasis::get_additive_genotype(), TTQuanti_diallelic_bitstring_full_pleio_epistasis::get_additive_genotype(), TTQuanti_diallelic_bitstring_no_pleio::get_additive_genotype_equal_effects(), get_allele(), get_allele_bit(), get_allele_value(), get_bit_sequence(), TTQuanti_diallelic_bitstring_no_pleio::get_dominant_genotype(), TTQuanti_diallelic_bitstring_full_pleio::get_dominant_genotype(), TTQuanti_diallelic_bitstring_var_pleio::get_dominant_genotype(), TTQuanti_diallelic_bitstring_no_pleio_epistasis::get_dominant_genotype(), TTQuanti_diallelic_bitstring_full_pleio_epistasis::get_dominant_genotype(), init(), TTQuanti_diallelic_bitstring_no_pleio::init_sequence(), TTQuanti_diallelic_bitstring_full_pleio::init_sequence(), TTQuanti_diallelic_bitstring_var_pleio::init_sequence(), TTQuanti_diallelic_bitstring_no_pleio_epistasis::init_sequence(), TTQuanti_diallelic_bitstring_full_pleio_epistasis::init_sequence(), mutate_add(), mutate_inplace(), operator=(), reset(), retrieve_data(), set_allele_bit(), set_allele_value(), set_bit_sequence(), TTQuanti_diallelic_bitstring_no_pleio::show_up(), TTQuanti_diallelic_bitstring_full_pleio::show_up(), TTQuanti_diallelic_bitstring_var_pleio::show_up(), TTQuanti_diallelic_bitstring_no_pleio_epistasis::show_up(), TTQuanti_diallelic_bitstring_full_pleio_epistasis::show_up(), and store_data().


The documentation for this class was generated from the following files:

Generated for Nemo v2.4.2 by  doxygen 1.9.1

Catalogued on GSR