diff --git a/src/libaevol/7/Individual_7.cpp b/src/libaevol/7/Individual_7.cpp index bd1b8c4c99d3ecb547b1ef8d00fb67d2fc153c1c..8f2f9a72b06f590d03e3959b02a1a90ce0ae8060 100644 --- a/src/libaevol/7/Individual_7.cpp +++ b/src/libaevol/7/Individual_7.cpp @@ -142,6 +142,20 @@ void Individual_7::start_stop_RNA() { if (motif_id >= 26 && motif_id < 48) { // LAGGING int t_motif_id = motif_id - 26; + #ifdef __EUKARYOTE + if (dna_pos < PROM_SIZE) { + for (int i = 0 ; i < PROM_SIZE ; ++i) { + prom_dist_lagging[i] = 1; + } + motif_id = 47; + } + else { + prom_dist_lagging[t_motif_id] = + PROM_SEQ_LAG[t_motif_id] == + annotated_chromosome_->dna_->data_[dna_pos - t_motif_id] + ? 0 : 1; + } + #else prom_dist_lagging[t_motif_id] = PROM_SEQ_LAG[t_motif_id] == annotated_chromosome_->dna_->data_[ @@ -150,8 +164,23 @@ void Individual_7::start_stop_RNA() { t_motif_id : dna_pos - t_motif_id] ? 0 : 1; + #endif } else if (motif_id < 22) { // LEADING + #ifdef __EUKARYOTE + if (dna_pos > len - PROM_SIZE) { + for (int i = 0 ; i < PROM_SIZE ; ++i) { + prom_dist_leading[i] = 1; + } + motif_id = 21; + } + else { + prom_dist_leading[motif_id] = + PROM_SEQ_LEAD[motif_id] == + annotated_chromosome_->dna_->data_[dna_pos + motif_id] + ? 0 : 1; + } + #else prom_dist_leading[motif_id] = PROM_SEQ_LEAD[motif_id] == annotated_chromosome_->dna_->data_[ @@ -162,6 +191,7 @@ void Individual_7::start_stop_RNA() { motif_id] ? 0 : 1; + #endif } else { // removed terminator search } @@ -953,7 +983,11 @@ void Individual_7::translate_protein(const ExpSetup&, double w_max) { count_loop++; c_pos += CODON_SIZE; - c_pos = c_pos >= dna_length ? c_pos - dna_length : c_pos; + #ifdef __EUKARYOTE + assert(c_pos < dna_length); + #else + c_pos = c_pos >= dna_length ? c_pos - dna_length : c_pos; + #endif } } else { // LAGGING #ifdef BASE_2