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

Microsatellites genome. More...

#include <ttneutralgenes.h>

+ Inheritance diagram for TTNeutralGenes:
+ Collaboration diagram for TTNeutralGenes:

Public Member Functions

 TTNeutralGenes ()
 
 TTNeutralGenes (const TTNeutralGenes &T)
 
virtual ~TTNeutralGenes ()
 
Accessors
void set_proto (TProtoNeutralGenes *proto)
 
void set_mut_func_ptr (void(TTNeutralGenes::*theFunc)(void))
 
void set_inherit_func_ptr (void(TProtoNeutralGenes::*theFunc)(sex_t, unsigned char *, const unsigned char **))
 
void set_allele (unsigned int loc, unsigned int al, unsigned char val)
 
Mutation models
void mutate_SSM ()
 
void mutate_KAM ()
 
void mutate_2all ()
 
void mutate_NULL ()
 
Implementations
virtual TTNeutralGenesoperator= (const TTrait &T)
 
virtual bool operator== (const TTrait &T)
 
virtual bool operator!= (const TTrait &T)
 
virtual void init ()
 
virtual void init_sequence ()
 
virtual void reset ()
 
virtual void * set_trait (void *value)
 
virtual void ** get_sequence () const
 
virtual double get_allele_value (int loc, int all) const
 
virtual void set_allele_value (unsigned int locus, unsigned int allele, double value)
 
virtual void set_sequence (void **seq)
 
virtual trait_t get_type () const
 
virtual void set_value ()
 
virtual void * getValue () const
 
virtual void inherit (const TTrait *mother, const TTrait *father)
 
virtual void mutate ()
 
virtual void show_up ()
 
virtual TTNeutralGenesclone ()
 
virtual void store_data (BinaryStorageBuffer *saver)
 
virtual bool retrieve_data (BinaryStorageBuffer *reader)
 
- Public Member Functions inherited from TTrait
virtual ~TTrait ()
 
- Public Member Functions inherited from StorableComponent
virtual ~StorableComponent ()
 

Private Attributes

TProtoNeutralGenes_myProto
 
void(TTNeutralGenes::* _mutate_func_ptr )(void)
 
void(TProtoNeutralGenes::* _inherit_func_ptr )(sex_t, unsigned char *, const unsigned char **)
 
unsigned char ** _sequence
 
const trait_t _type
 

Detailed Description

Microsatellites genome.

Constructor & Destructor Documentation

◆ TTNeutralGenes() [1/2]

TTNeutralGenes::TTNeutralGenes ( )
inline
TProtoNeutralGenes * _myProto
Definition: ttneutralgenes.h:58
void(TTNeutralGenes::* _mutate_func_ptr)(void)
Definition: ttneutralgenes.h:60
const trait_t _type
Definition: ttneutralgenes.h:66
unsigned char ** _sequence
Definition: ttneutralgenes.h:64
void(TProtoNeutralGenes::* _inherit_func_ptr)(sex_t, unsigned char *, const unsigned char **)
Definition: ttneutralgenes.h:61
#define NTRL
Definition: types.h:70

Referenced by clone().

◆ TTNeutralGenes() [2/2]

TTNeutralGenes::TTNeutralGenes ( const TTNeutralGenes T)
inline

◆ ~TTNeutralGenes()

TTNeutralGenes::~TTNeutralGenes ( )
virtual
603 {
604  if(_sequence != NULL){
605  for(unsigned int i = 0; i < _myProto->get_ploidy(); i++)
606  delete [] _sequence[i];
607  delete [] _sequence;
608  }
609 }
unsigned int get_ploidy()
Definition: ttneutralgenes.h:158

References _myProto, _sequence, and TProtoNeutralGenes::get_ploidy().

Member Function Documentation

◆ clone()

virtual TTNeutralGenes* TTNeutralGenes::clone ( )
inlinevirtual

Implements TTrait.

118 {return new TTNeutralGenes(*this);}
TTNeutralGenes()
Definition: ttneutralgenes.h:70

References TTNeutralGenes().

◆ get_allele_value()

double TTNeutralGenes::get_allele_value ( int  loc,
int  all 
) const
virtual

Implements TTrait.

542 {
543  return ( !(loc<(int)_myProto->get_locus_num()) || !(all<(int)_myProto->get_ploidy()) ? 0 : (double)_sequence[all][loc]);
544 }
unsigned int get_locus_num()
Definition: ttneutralgenes.h:159

References _myProto, _sequence, TProtoNeutralGenes::get_locus_num(), and TProtoNeutralGenes::get_ploidy().

◆ get_sequence()

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

Implements TTrait.

108 {return (void**)_sequence;}

References _sequence.

◆ get_type()

virtual trait_t TTNeutralGenes::get_type ( ) const
inlinevirtual

Implements TTrait.

112 {return _type;}

References _type.

◆ getValue()

virtual void* TTNeutralGenes::getValue ( ) const
inlinevirtual

Implements TTrait.

114 {return 0;}

◆ inherit()

void TTNeutralGenes::inherit ( const TTrait mother,
const TTrait father 
)
virtual

Implements TTrait.

724 {
725  const unsigned char** mother_seq = (const unsigned char**)mother->get_sequence();
726  const unsigned char** father_seq = (const unsigned char**)father->get_sequence();
727 
728  (_myProto->* _inherit_func_ptr) (FEM, _sequence[FEM], mother_seq);
729 
730  (_myProto->* _inherit_func_ptr) (MAL, _sequence[MAL], father_seq);
731 }
virtual void ** get_sequence() const =0
sequence accessor.
@ FEM
Definition: types.h:37
@ MAL
Definition: types.h:37

References _inherit_func_ptr, _myProto, _sequence, FEM, TTrait::get_sequence(), and MAL.

◆ init()

void TTNeutralGenes::init ( )
virtual

Implements TTrait.

614 {
615  if(_sequence != NULL)
616  fatal("TTNeutralGenes::init::_sequence is not NULL !\n");
617 
618  //assume _ploidy = 2;
619 
620  _sequence = new unsigned char* [2];
621 
622  _sequence[0] = new unsigned char[_myProto->get_locus_num()];
623  _sequence[1] = new unsigned char[_myProto->get_locus_num()];
624 
625  memset(_sequence[0], 1, _myProto->get_locus_num());
626  memset(_sequence[1], 1, _myProto->get_locus_num());
627 
628 }
void fatal(const char *str,...)
Definition: output.cc:96

References _myProto, _sequence, fatal(), and TProtoNeutralGenes::get_locus_num().

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

◆ init_sequence()

void TTNeutralGenes::init_sequence ( )
virtual

Implements TTrait.

633 {
634  if(_sequence == NULL) { //that should never happen
635  _sequence = new unsigned char* [_myProto->get_ploidy()];
636  for(unsigned int i = 0; i < _myProto->get_ploidy(); i++)
637  _sequence[i] = new unsigned char[_myProto->get_locus_num()];
638  }
639 
640  if(_myProto->get_init_model() == 1) {
641  for(unsigned int i = 0; i < _myProto->get_ploidy(); ++i)
642  for(unsigned int j = 0; j < _myProto->get_locus_num(); j++) {
643 
644  if(_myProto->get_allele_num() > 2)
645  _sequence[i][j] = (unsigned char)RAND::Uniform(_myProto->get_allele_num());
646  else
647  _sequence[i][j] = (unsigned char)RAND::Bernoulli(0.5);
648  }
649  } else if (_myProto->get_init_model() == 3 ) {
650 
651  memset(_sequence[0], 0, _myProto->get_locus_num());
652  memset(_sequence[1], 0, _myProto->get_locus_num());
653 
654  mutate(); //do one round of mutation
655 
656  } else { //model 0; all monomorphic
657 
658  memset(_sequence[0], 0, _myProto->get_locus_num());
659  memset(_sequence[1], 0, _myProto->get_locus_num());
660 
661  }
662 }
static double Bernoulli(double p)
Definition: Uniform.h:429
static double Uniform()
Generates a random number from [0.0, 1.0[ uniformly distributed.
Definition: Uniform.h:124
unsigned int get_allele_num()
Definition: ttneutralgenes.h:160
unsigned int get_init_model()
Definition: ttneutralgenes.h:164
virtual void mutate()
Definition: ttneutralgenes.h:116

References _myProto, _sequence, RAND::Bernoulli(), TProtoNeutralGenes::get_allele_num(), TProtoNeutralGenes::get_init_model(), TProtoNeutralGenes::get_locus_num(), TProtoNeutralGenes::get_ploidy(), mutate(), and RAND::Uniform().

◆ mutate()

virtual void TTNeutralGenes::mutate ( )
inlinevirtual

Implements TTrait.

116 {(this->*_mutate_func_ptr) ();}

References _mutate_func_ptr.

Referenced by init_sequence().

◆ mutate_2all()

void TTNeutralGenes::mutate_2all ( )
inline
778 {
779  unsigned int mutAll, mutLocus;
780  unsigned int NbMut = _myProto->get_num_mutations();
781 
782  for( ; NbMut > 0; NbMut--) {
783  mutLocus = RAND::Uniform( _myProto->get_locus_num());
784  mutAll = RAND::RandBool(); //RAND::Uniform( _ploidy); <--- only diploids for now
785  _sequence[mutAll][mutLocus] = !_sequence[mutAll][mutLocus];
786  }
787 }
static bool RandBool()
Returns a random boolean.
Definition: Uniform.h:162
unsigned int get_num_mutations()
Definition: ttneutralgenes.h:163

References _myProto, _sequence, TProtoNeutralGenes::get_locus_num(), TProtoNeutralGenes::get_num_mutations(), RAND::RandBool(), and RAND::Uniform().

Referenced by TProtoNeutralGenes::setParameters().

◆ mutate_KAM()

void TTNeutralGenes::mutate_KAM ( )
759 {
760  unsigned int mutAll, mutLocus;
761  unsigned char mut;
762  unsigned int NbMut = _myProto->get_num_mutations();
763 
764  for(; NbMut != 0; NbMut--) {
765  mutLocus = RAND::Uniform( _myProto->get_locus_num());
766  mutAll = RAND::RandBool(); //RAND::Uniform( _ploidy); <--- only diploids for now
767  //assign an arbitrary allele value:
768  do{
769  mut = (unsigned char) (RAND::Uniform(_myProto->get_allele_num()));
770  } while (mut == _sequence[mutAll][mutLocus]);
771  _sequence[mutAll][mutLocus] = mut;
772  }
773 }

References _myProto, _sequence, TProtoNeutralGenes::get_allele_num(), TProtoNeutralGenes::get_locus_num(), TProtoNeutralGenes::get_num_mutations(), RAND::RandBool(), and RAND::Uniform().

Referenced by TProtoNeutralGenes::setParameters().

◆ mutate_NULL()

void TTNeutralGenes::mutate_NULL ( )
inline
97 { }

Referenced by TProtoNeutralGenes::setParameters().

◆ mutate_SSM()

void TTNeutralGenes::mutate_SSM ( )

direction && all == 0

736 {
737  unsigned int mutAll, mutLocus;
738  bool direction;
739  unsigned int NbMut = _myProto->get_num_mutations();
740 
741  for(; NbMut != 0; NbMut--)
742  {
743  mutLocus = RAND::Uniform( _myProto->get_locus_num() );
744  mutAll = RAND::RandBool(); //RAND::Uniform( _ploidy); <--- only diploids for now
745  direction = RAND::RandBool();
746  //alleles values are from 0 to NtrlAll - 1 !!!
747  if(direction && _sequence[mutAll][mutLocus] < _myProto->get_allele_num()-1)
748  _sequence[mutAll][mutLocus] += 1; //one step to the right
749  else if(_sequence[mutAll][mutLocus] > 0) // !direction || all==_allele_num
750  _sequence[mutAll][mutLocus] -= 1; //one step to the left
751  else
752  _sequence[mutAll][mutLocus] += 1;
753  }
754 }

References _myProto, _sequence, TProtoNeutralGenes::get_allele_num(), TProtoNeutralGenes::get_locus_num(), TProtoNeutralGenes::get_num_mutations(), RAND::RandBool(), and RAND::Uniform().

Referenced by TProtoNeutralGenes::setParameters().

◆ operator!=()

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

Implements TTrait.

593  {
594  if(!((*this) == T))
595  return true;
596  else
597  return false;
598  }

◆ operator=()

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

Implements TTrait.

558 {
559  const TTNeutralGenes& TN = dynamic_cast<const TTNeutralGenes&> (T);
560 
561  if(this != &TN) {
562 
563  reset();
564 
565  init();
566 
567  memcpy(_sequence[0], TN._sequence[0], _myProto->get_locus_num());
568  memcpy(_sequence[1], TN._sequence[1], _myProto->get_locus_num());
569 
570  }
571 
572  return *this;
573 }
Microsatellites genome.
Definition: ttneutralgenes.h:56
virtual void reset()
Definition: ttneutralgenes.cc:666
virtual void init()
Definition: ttneutralgenes.cc:613

References _myProto, _sequence, TProtoNeutralGenes::get_locus_num(), init(), and reset().

◆ operator==()

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

Implements TTrait.

578  {
579  if(_type.compare(T.get_type()) != 0) return false;
580  const TTNeutralGenes& TN = dynamic_cast<const TTNeutralGenes&> (T);
581 
582  if(this != &TN) {
583  if(_myProto->get_locus_num() != TN._myProto->get_locus_num()) return false;
584  if(_myProto->get_allele_num() != TN._myProto->get_allele_num()) return false;
585  if(_myProto->get_ploidy() != TN._myProto->get_ploidy()) return false;
586  }
587  return true;
588  }
virtual trait_t get_type() const =0
type accessor.

References _myProto, _type, TProtoNeutralGenes::get_allele_num(), TProtoNeutralGenes::get_locus_num(), TProtoNeutralGenes::get_ploidy(), and TTrait::get_type().

◆ reset()

void TTNeutralGenes::reset ( )
virtual

Implements TTrait.

667 {
668  if(_sequence != NULL) {
669 
670  for(unsigned int i = 0; i < _myProto->get_ploidy(); i++) delete [] _sequence[i];
671 
672  delete [] _sequence;
673 
674  _sequence = NULL;
675  }
676 }

References _myProto, _sequence, and TProtoNeutralGenes::get_ploidy().

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

◆ retrieve_data()

bool TTNeutralGenes::retrieve_data ( BinaryStorageBuffer reader)
virtual

Implements StorableComponent.

714 {
715  for(unsigned int i = 0; i < _myProto->get_locus_num(); ++i)
716  for(unsigned int j = 0; j < _myProto->get_ploidy(); ++j)
717  reader->read(&_sequence[j][i], 1);
718  return true;
719 }
void read(void *out, unsigned int nb_bytes)
Definition: binarystoragebuffer.h:162

References _myProto, _sequence, TProtoNeutralGenes::get_locus_num(), TProtoNeutralGenes::get_ploidy(), and BinaryStorageBuffer::read().

◆ set_allele()

void TTNeutralGenes::set_allele ( unsigned int  loc,
unsigned int  al,
unsigned char  val 
)
inline
87 {_sequence[al][loc] = val;}

References _sequence.

Referenced by LCE_NtrlInit::init_allele_freq().

◆ set_allele_value()

void TTNeutralGenes::set_allele_value ( unsigned int  locus,
unsigned int  allele,
double  value 
)
virtual

Implements TTrait.

549 {
550  assert(locus < _myProto->get_locus_num() && allele < 2);
551  _sequence[allele][locus] = (unsigned char)value;
552 }

References _sequence.

◆ set_inherit_func_ptr()

void TTNeutralGenes::set_inherit_func_ptr ( void(TProtoNeutralGenes::*)(sex_t, unsigned char *, const unsigned char **)  theFunc)
inline
86  {_inherit_func_ptr = theFunc;}

References _inherit_func_ptr.

Referenced by TProtoNeutralGenes::hatch().

◆ set_mut_func_ptr()

void TTNeutralGenes::set_mut_func_ptr ( void(TTNeutralGenes::*)(void)  theFunc)
inline
84  {_mutate_func_ptr = theFunc;}

References _mutate_func_ptr.

Referenced by TProtoNeutralGenes::hatch().

◆ set_proto()

void TTNeutralGenes::set_proto ( TProtoNeutralGenes proto)
inline
81 {_myProto = proto;}

References _myProto.

Referenced by TProtoNeutralGenes::hatch().

◆ set_sequence()

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

Implements TTrait.

681 {
682  reset(); init();
683  memcpy(_sequence[0],seq[0],_myProto->get_locus_num());
684  memcpy(_sequence[1],seq[1],_myProto->get_locus_num());
685 }

References _myProto, _sequence, TProtoNeutralGenes::get_locus_num(), init(), and reset().

◆ set_trait()

virtual void* TTNeutralGenes::set_trait ( void *  value)
inlinevirtual

Implements TTrait.

107 {return NULL;}

◆ set_value()

virtual void TTNeutralGenes::set_value ( )
inlinevirtual

Implements TTrait.

113 { }

◆ show_up()

void TTNeutralGenes::show_up ( )
virtual

Implements TTrait.

690 {
691  message("\n Trait's type: ntrl\n\
692  locus: %i\n\
693  alleles: %i\n\
694  _sequence:",_myProto->get_locus_num(), _myProto->get_allele_num());
695 
696  for(unsigned int i = 0; (i < _myProto->get_locus_num() && i < 10); i++)
697  message("\n %i %i",(int)_sequence[0][i],(int)_sequence[1][i]);
698  if(_myProto->get_locus_num() > 10) message("\n ...");
699  message("\n");
700 }
void message(const char *message,...)
Definition: output.cc:40

References _myProto, _sequence, TProtoNeutralGenes::get_allele_num(), TProtoNeutralGenes::get_locus_num(), and message().

◆ store_data()

void TTNeutralGenes::store_data ( BinaryStorageBuffer saver)
virtual

Implements StorableComponent.

705 {
706  for(unsigned int i = 0; i < _myProto->get_locus_num(); ++i)
707  for(unsigned int j = 0; j < _myProto->get_ploidy(); ++j)
708  saver->store(&_sequence[j][i], 1);
709 }
void store(void *stream, unsigned int nb_bytes)
Definition: binarystoragebuffer.cc:16

References _myProto, _sequence, TProtoNeutralGenes::get_locus_num(), TProtoNeutralGenes::get_ploidy(), and BinaryStorageBuffer::store().

Member Data Documentation

◆ _inherit_func_ptr

void(TProtoNeutralGenes::* TTNeutralGenes::_inherit_func_ptr) (sex_t, unsigned char *, const unsigned char **)
private

Referenced by inherit(), and set_inherit_func_ptr().

◆ _mutate_func_ptr

void(TTNeutralGenes::* TTNeutralGenes::_mutate_func_ptr) (void)
private

Referenced by mutate(), and set_mut_func_ptr().

◆ _myProto

◆ _sequence

◆ _type

const trait_t TTNeutralGenes::_type
private

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


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