Skip to content
Snippets Groups Projects
Commit c14e1a2a authored by Graham McVicker's avatar Graham McVicker
Browse files

Transcript::add_Exon now throws if exon could not be added b/c of overlap with...

Transcript::add_Exon now throws if exon could not be added b/c of overlap with other exon, rather than silently doing nothing
parent dc847b3c
No related branches found
No related tags found
No related merge requests found
......@@ -647,16 +647,20 @@ sub add_Exon{
$self->{'_trans_exon_array'} ||= [];
my $was_added = 0;
my $ea = $self->{'_trans_exon_array'};
if( @$ea ) {
if( $exon->strand() == 1 ) {
if( $exon->start() > $ea->[$#$ea]->end() ) {
push(@{$self->{'_trans_exon_array'}},$exon);
$was_added = 1;
} else {
# insert it at correct place
for( my $i=0; $i <= $#$ea; $i++ ) {
if( $exon->end() < $ea->[$i]->start() ) {
splice( @$ea, $i, 0, $exon );
$was_added = 1;
last;
}
}
......@@ -664,11 +668,13 @@ sub add_Exon{
} else {
if( $exon->end() < $ea->[$#$ea]->start() ) {
push(@{$self->{'_trans_exon_array'}},$exon);
$was_added = 1;
} else {
# insert it at correct place
for( my $i=0; $i <= $#$ea; $i++ ) {
if( $exon->start() > $ea->[$i]->end() ) {
splice( @$ea, $i, 0, $exon );
$was_added = 1;
last;
}
}
......@@ -676,7 +682,26 @@ sub add_Exon{
}
} else {
push( @$ea, $exon );
$was_added = 1;
}
# sanity check:
if(!$was_added) {
# exon was not added because it has same end coord as start
# of another exon
my $all_str = '';
foreach my $e (@$ea) {
$all_str .= ' '.$e->start .'-'.$e->end.' ('.$e->strand.') ' .
($e->stable_id || '') . "\n";
}
my $cur_str = ' '.$exon->start.'-'.$exon->end. ' ('.$exon->strand.') '.
($exon->stable_id || '')."\n";
throw("Exon overlaps with other exon in same transcript.\n" .
"Transcript Exons:\n$all_str\n" .
"This Exon:\n$cur_str");
throw("Exon overlaps with other exon in same transcript.");
}
# recalculate start, end, slice, strand
$self->recalculate_coordinates();
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment