42 #include "../Landscape/ls.h"
43 #include "../Vole/GeneticMaterial.h"
44 #include "../BatchALMaSS/BoostRandomGenerators.h"
46 extern boost::variate_generator<base_generator_type&, boost::uniform_real<> >
g_rand_uni;
56 FILE * FreqFile = fopen(
"GeneticFrequencies.txt",
"r" );
59 g_msg->Warn(
"GeneticFrequencies File missing",
"" );
62 for (
int i = 0; i < 16; i++ ) {
63 for (
int j = 0; j < 4; j++ ) {
64 fscanf( FreqFile,
"%d", & data );
68 for (
int i = 16; i < 32; i++ ) {
69 for (
int j = 0; j < 16; j++ ) {
70 fscanf( FreqFile,
"%d", & data );
203 mask = 0x03 << locus;
204 mask = mask << locus;
206 value = value & 0x03;
208 value = value << locus;
209 value = value << locus;
221 mask = 0x0F << (locus*4);
222 value = value & 0x0f;
224 value = value << (locus*4);
242 value = ( value >> locus ) & 0x03;
250 value =
Chromosome[ Chromo ] >> ( locus * 4 );
251 value = value & 0x0f;
259 for (
int i = 0; i < 16; i++ ) {
321 for (
int i = 0; i < 32; i++ ) {
330 for (
int i = 0; i < 32; i++ ) {
339 for (
int i = 0; i < 32; i++ ) {
342 int g0 = random( 2 );
343 int g1 = random( 2 );
357 for (
int i = 0; i < 6; i++ )
Chromosome[ i ] = 0;
368 for (
int l = 0; l < 32; l++ ) {
371 int chance = random( 1000 );
373 while ( chance > Al->
SupplyAN( l, index ) ) {
379 chance = random( 1000 );
381 while ( chance > Al->
SupplyAN( l, index ) ) {
446 for (
int i = 0; i < 16; i++ ) {
449 SetAllele( i, random( 4 ), random( 2 ) );
452 for (
int i = 16; i < 32; i++ ) {
455 SetAllele( i, random( 16 ), random( 2 ) );
468 for (
int i = 0; i < 32; i++ ) {
471 SetAllele( i, random( 2 ), random( 2 ) );
483 for (
int i = 0; i < 16; i++ ) {
486 int strand = random( 2 );
488 if ( random( 2 ) == 1 ) allele++;
else allele--;
489 if ( allele == -1 ) allele = 3;
else if ( allele == 4 ) allele = 0;
493 for (
int i = 16; i < 32; i++ ) {
496 int strand = random( 2 );
498 if ( random( 2 ) == 1 ) allele++;
else allele--;
499 if ( allele == -1 ) allele = 15;
else if ( allele == 16 ) allele = 0;
513 for (
int i = 0; i < 16; i++ ) {
516 int strand = random( 2 );
543 int strand = random(2);
545 allele = (allele + 1) && 1;
559 FILE * FreqFile = fopen(
"GeneticFrequencies_1616_Mut.txt",
"r" );
562 g_msg->Warn(
"GeneticFrequencies_1616_Mut.txt File missing - AllelFreq1616",
"" );
565 for (
int i = 0; i < 16; i++ ) {
566 for (
int j = 0; j < 16; j++ ) {
567 fscanf( FreqFile,
"%d", & data );
576 FILE * FreqFile = fopen(
"GeneticFrequencies_256_16_Mut.txt",
"r" );
579 g_msg->Warn(
"GeneticFrequencies_256_16_Mut.txt File missing - AllelFreq1616",
"" );
582 for (
int i = 0; i < 256; i++ ) {
583 for (
int j = 0; j < 16; j++ ) {
584 fscanf( FreqFile,
"%d", & data );
594 for (
int i = 0; i < 4; i++ )
Chromosome[ i ] = 0;
606 g_msg->Warn(
"Chromo > 1 in GeneticMaterial1616 - get allele", NULL );
610 g_msg->Warn(
"locus > 15 in GeneticMaterial1616 - get allele", NULL );
615 uint32 segment=((Chromo<<1) | ((locus & 0x08)>>3));
616 uint32 allele=0x0F & (
Chromosome[segment]>>((locus & 0x07)<<2));
628 g_msg->Warn(
"Chromo > 1 in GeneticMaterial1616 - set allele", NULL );
632 g_msg->Warn(
"locus > 15 in GeneticMaterial1616 - set allele", NULL );
637 uint32 segment=((Chromo<<1) | ((locus & 0x08)>>3));
640 mask=mask<<((locus&7)<<2);
641 value = value & 0x0f;
643 value = value << ((locus&7)<<2);
650 for (
int i = 0; i < 16; i++ ) {
711 for (
int i = 0; i < 16; i++ ) {
720 for (
int i = 0; i < 16; i++ ) {
729 for (
int i = 0; i < 16; i++ ) {
777 for (
int l = 0; l < 16; l++ ) {
780 int chance = random( 1000 );
782 while ( chance >= Al->
SupplyAN( l, index ) ) {
789 chance = random( 1000 );
791 while ( chance >= Al->
SupplyAN( l, index ) ) {
811 for (
int i = 0; i < 16; i++ )
815 SetAllele( i, random( 16 ), random( 2 ) );
829 for (
int i = 0; i < 16; i++ ) {
832 unsigned int strand = random( 2 );
833 unsigned int allele =
GetAllele( i, strand );
850 for (
int i = 0; i < 16; i++ ) {
853 unsigned strand = random( 2 );
854 unsigned allele =
GetAllele( i, strand );
856 if ( random( 2 ) == 1 ) allele++;
else allele--;
863 if(allele > 0x01C) { allele &= 0x01;}
878 for (
int i = 0; i < 32; i++ )
Chromosome[ i ] = 0;
884 if (Chromo==1) locus +=16;
890 if (Chromo==1) locus +=16;
901 for (
int i = 0; i < 16; i++ ) {
904 unsigned strand = random( 2 );
906 if ( random( 2 ) == 1 ) allele++;
else allele--;
909 else if (allele < 0) allele = 1;
946 for (
int i = 0; i < 16; i++ ) {
967 for (
int l = 0; l < 16; l++ ) {
968 int chance = random( 1000 );
970 while ( chance >= Al->
SupplyAN( l, index ) ) {
976 chance = random( 1000 );
978 while ( chance >= Al->
SupplyAN( l, index ) ) {