Nemo  2.4.0b
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
TTQuanti_diallelic Class Reference

TTQuanti_diallelic. More...

#include <ttquanti.h>

+ Inheritance diagram for TTQuanti_diallelic:
+ Collaboration diagram for TTQuanti_diallelic:

Public Member Functions

 TTQuanti_diallelic ()
 
 TTQuanti_diallelic (const TTQuanti &T)
 
virtual ~TTQuanti_diallelic ()
 
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 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 double get_allele_value (int locus, int allele) const
 
virtual void set_allele_value (unsigned int locus, unsigned int allele, double value)
 
virtual TTQuanti_diallelicoperator= (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 set_allele (int locus, int allele, double value)
 
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)
 
- 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

unsigned char ** _sequence
 
- Protected Attributes inherited from TTQuanti
double * _phenotypes
 
TProtoQuanti_myProto
 

Detailed Description

Constructor & Destructor Documentation

◆ TTQuanti_diallelic() [1/2]

TTQuanti_diallelic::TTQuanti_diallelic ( )
inline
280 : TTQuanti(), _sequence(0) {}
unsigned char ** _sequence
Definition: ttquanti.h:316
TTQuanti()
Definition: ttquanti.h:62

◆ TTQuanti_diallelic() [2/2]

TTQuanti_diallelic::TTQuanti_diallelic ( const TTQuanti T)
inline
282 : TTQuanti(T), _sequence(0) {}

◆ ~TTQuanti_diallelic()

virtual TTQuanti_diallelic::~TTQuanti_diallelic ( )
inlinevirtual
284 {reset();}
virtual void reset()
Definition: ttquanti.cc:3825

References reset().

Member Function Documentation

◆ get_allele_bit()

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

Implements TTQuanti.

3890 {
3891  assert(position < _myProto->get_seq_length() && allele < 2);
3892 
3893  return _sequence[allele][position];
3894 }

References _sequence.

Referenced by TTQOhtaStats::FHwrite().

◆ get_allele_value()

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

Implements TTrait.

3909 {
3910  // beware that get_diallele_value() expects a locus ID, not a sequence position!!!
3911 
3912  assert(position < (int)_myProto->get_seq_length() && all < 2);
3913 
3914  return _myProto->get_seq_diallele_value( position, (unsigned int)_sequence[all][position] );
3915 }
double get_seq_diallele_value(unsigned int position, unsigned int allele)
Definition: ttquanti.h:432
unsigned int get_seq_length()
Definition: ttquanti.h:421
TProtoQuanti * _myProto
Definition: ttquanti.h:103

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

Referenced by TTQuantiSH::setDataTables().

◆ get_full_genotype()

double TTQuanti_diallelic::get_full_genotype ( unsigned int  trait)
virtual

Implements TTQuanti.

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

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

◆ get_sequence()

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

Implements TTrait.

294 {return (void**)_sequence;}

References _sequence.

◆ inherit_free()

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

◆ init()

void TTQuanti_diallelic::init ( )
inlinevirtual

Implements TTrait.

3808 {
3809  reset();
3810 
3811  _sequence = new unsigned char* [2];
3812  _sequence[0] = new unsigned char [_myProto->get_seq_length()];
3813  _sequence[1] = new unsigned char [_myProto->get_seq_length()];
3814 
3815  memset(_sequence[0], 0, _myProto->get_seq_length());
3816  memset(_sequence[1], 0, _myProto->get_seq_length());
3817 
3818  _phenotypes = new double [_myProto->get_num_traits()];
3819 
3820  memset(_phenotypes, 0.0, _myProto->get_num_traits());
3821 }
unsigned int get_num_traits()
Definition: ttquanti.h:417
double * _phenotypes
Definition: ttquanti.h:102

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

Referenced by operator=(), and set_sequence().

◆ mutate_add()

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

Implements TTQuanti.

310  {_sequence[allele][position] = bool(value);}

References _sequence.

◆ mutate_inplace()

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

Implements TTQuanti.

312  {_sequence[allele][position] ^= 1;}

References _sequence.

◆ operator!=()

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

Implements TTrait.

3880 {
3881  if(!((*this) == T) )
3882  return true;
3883  else
3884  return false;
3885 }

◆ operator=()

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

Implements TTrait.

3842 {
3843  const TTQuanti_diallelic& TQ = dynamic_cast<const TTQuanti_diallelic&>(T);
3844 
3845  assert(*this == TQ); // to make sure that the sequences are of same length
3846 
3847  if(this != &TQ) {
3848 
3849  init();
3850 
3851  memcpy(_sequence[0], TQ._sequence[0], _myProto->get_seq_length()*sizeof(unsigned char));
3852  memcpy(_sequence[1], TQ._sequence[1], _myProto->get_seq_length()*sizeof(unsigned char));
3853 
3854  set_value();
3855  }
3856 
3857  return *this;
3858 }
TTQuanti_diallelic.
Definition: ttquanti.h:276
virtual void init()
Definition: ttquanti.cc:3807
virtual void set_value()
Definition: ttquanti.cc:3091

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

◆ operator==()

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

Implements TTrait.

3863  {
3864  if(this->get_type().compare(T.get_type()) != 0) return false;
3865 
3866  const TTQuanti_diallelic& TQ = dynamic_cast<const TTQuanti_diallelic&>(T);
3867 
3868  if(this != &TQ) {
3869  if(_myProto->get_num_locus() != TQ._myProto->get_num_locus()) return false;
3870  if(_myProto->get_num_traits() != TQ._myProto->get_num_traits()) return false;
3871  if(_myProto->get_seq_length() != TQ._myProto->get_seq_length()) return false;
3872  if(_myProto->get_pleiotropy_type() != TQ._myProto->get_pleiotropy_type()) return false;
3873  }
3874  return true;
3875  }
unsigned int get_num_locus()
Definition: ttquanti.h:418
unsigned int get_pleiotropy_type()
Definition: ttquanti.h:420
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::reset ( )
inlinevirtual

Implements TTrait.

3826 {
3827  if(_sequence) {
3828  delete [] _sequence[0]; _sequence[0] = NULL;
3829  delete [] _sequence[1]; _sequence[1] = NULL;
3830  delete [] _sequence;
3831  _sequence = NULL;
3832  }
3833 
3834  if(_phenotypes) delete [] _phenotypes;
3835  _phenotypes = NULL;
3836 
3837 }

References TTQuanti::_phenotypes, and _sequence.

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

◆ retrieve_data()

bool TTQuanti_diallelic::retrieve_data ( BinaryStorageBuffer reader)
inlinevirtual

Implements StorableComponent.

3952 {
3953  reader->read(_sequence[0],_myProto->get_seq_length()*sizeof(unsigned char));
3954  reader->read(_sequence[1],_myProto->get_seq_length()*sizeof(unsigned char));
3955 
3956  return true;
3957 }
void read(void *out, unsigned int nb_bytes)
Definition: binarystoragebuffer.h:162

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

◆ set_allele()

virtual void TTQuanti_diallelic::set_allele ( int  locus,
int  allele,
double  value 
)
inlinevirtual
308 {_sequence[allele][locus] = bool(value);}

References _sequence.

◆ set_allele_bit()

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

Implements TTQuanti.

3899 {
3900  assert(position < _myProto->get_seq_length() && allele < 2);
3901 
3902  _sequence[allele][position] = value;
3903 }

References _sequence.

Referenced by LCE_QuantiInit::init_allele_freq().

◆ set_allele_value()

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

Implements TTrait.

3920 {
3921 // assert(position);
3922  bool a = _sequence[allele][position];
3923  double refval1 = _myProto->get_seq_diallele_value( position, a );
3924  double refval2 = _myProto->get_seq_diallele_value( position, !a );
3925 
3926  if( refval1 != value && refval2 != value )
3927  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",
3928  allele, position, value, refval1, refval2);
3929 
3930  if( refval1 != value )
3931  _sequence[allele][position] ^= 1;
3932 }
void fatal(const char *str,...)
Definition: output.cc:96

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

◆ set_sequence()

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

Implements TTrait.

3962 {
3963  init();
3964 
3965  memcpy(_sequence[0], seq[0], _myProto->get_seq_length()*sizeof(unsigned char));
3966  memcpy(_sequence[1], seq[1], _myProto->get_seq_length()*sizeof(unsigned char));
3967 }

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

◆ store_data()

void TTQuanti_diallelic::store_data ( BinaryStorageBuffer saver)
inlinevirtual

Implements StorableComponent.

3944 {
3945  saver->store(_sequence[0],_myProto->get_seq_length()*sizeof(unsigned char));
3946  saver->store(_sequence[1],_myProto->get_seq_length()*sizeof(unsigned char));
3947 }
void store(void *stream, unsigned int nb_bytes)
Definition: binarystoragebuffer.cc:16

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

Member Data Documentation

◆ _sequence

unsigned char** TTQuanti_diallelic::_sequence
protected

Referenced by TTQuanti_diallelic_full_pleio_epistasis::copy_sequence_1locus(), TTQuanti_diallelic_no_pleio_epistasis::copy_sequence_1locus(), TTQuanti_diallelic_no_pleio::copy_sequence_1locus(), TTQuanti_diallelic_full_pleio::copy_sequence_1locus(), TTQuanti_diallelic_var_pleio::copy_sequence_1locus(), TTQuanti_diallelic_full_pleio_epistasis::copy_sequence_block(), TTQuanti_diallelic_no_pleio_epistasis::copy_sequence_block(), TTQuanti_diallelic_no_pleio::copy_sequence_block(), TTQuanti_diallelic_full_pleio::copy_sequence_block(), TTQuanti_diallelic_var_pleio::copy_sequence_block(), TTQuanti_diallelic_no_pleio::get_additive_genotype(), TTQuanti_diallelic_full_pleio::get_additive_genotype(), TTQuanti_diallelic_var_pleio::get_additive_genotype(), TTQuanti_diallelic_full_pleio_epistasis::get_additive_genotype(), TTQuanti_diallelic_no_pleio_epistasis::get_additive_genotype(), get_allele_bit(), get_allele_value(), TTQuanti_diallelic_no_pleio::get_dominant_genotype(), TTQuanti_diallelic_full_pleio::get_dominant_genotype(), TTQuanti_diallelic_var_pleio::get_dominant_genotype(), TTQuanti_diallelic_full_pleio_epistasis::get_dominant_genotype(), TTQuanti_diallelic_no_pleio_epistasis::get_dominant_genotype(), get_sequence(), init(), TTQuanti_diallelic_no_pleio::init_sequence(), TTQuanti_diallelic_full_pleio::init_sequence(), TTQuanti_diallelic_var_pleio::init_sequence(), TTQuanti_diallelic_full_pleio_epistasis::init_sequence(), TTQuanti_diallelic_no_pleio_epistasis::init_sequence(), mutate_add(), mutate_inplace(), operator=(), reset(), retrieve_data(), set_allele(), set_allele_bit(), set_allele_value(), set_sequence(), TTQuanti_diallelic_no_pleio::show_up(), TTQuanti_diallelic_full_pleio::show_up(), TTQuanti_diallelic_var_pleio::show_up(), TTQuanti_diallelic_full_pleio_epistasis::show_up(), TTQuanti_diallelic_no_pleio_epistasis::show_up(), and store_data().


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

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