Bio-EnsEMBL
view release on metacpan or search on metacpan
lib/Bio/EnsEMBL/TranscriptFactory.pm view on Meta::CPAN
my @exons;
my $count= 1;
foreach my $f ($genscan->sub_SeqFeature) {
my $exon = new Bio::EnsEMBL::Exon;
$transcript->add_Exon($exon);
$exon->contig ($contig);
$exon->start ($f->start);
$exon->end ($f->end );
$exon->strand ($f->strand);
$exon->phase ($f->phase);
$exon->end_phase( ($exon->phase + $exon->length)%3 );
#$exon->score($f->score);
# $exon->p_value($f->p_value);
$exon->slice($contig->primary_seq);
push(@exons,$exon);
$count++;
}
if( $count == 1 ) {
$genscan->throw("Got a 0 exon genscan");
}
my $translation = new Bio::EnsEMBL::Translation;
#
# This code got changed due to Translation convention changing. Should work...
#
if ($exons[0]->strand == 1) {
@exons = sort {$a->start <=> $b->start} @exons;
} else {
@exons = sort {$b->start <=> $a->start} @exons;
}
$translation->start(1);
$translation->end($exons[scalar(@exons)-1]->length);
$translation->start_Exon($exons[0]);
$translation->end_Exon($exons[$#exons]);
my $endphase = $exons[0]->end_phase;
foreach my $exon (@exons) {
if ( $exon == $exons[0] ){
next;
}
$exon->phase ($endphase);
$endphase = $exon->end_phase;
}
$transcript->translation($translation);
return $transcript;
}
sub fset2transcript_guess_phases {
my ($fset,$contig) = @_;
my $transcript = new Bio::EnsEMBL::Transcript;
$transcript->temporary_id($contig->id . "." . $fset->id);
my @exons;
my $count = 1;
foreach my $f ($fset->sub_SeqFeature) {
my $exon = new Bio::EnsEMBL::Exon;
$exon->contig ($contig);
$exon->start ($f->start);
$exon->end ($f->end );
$exon->strand ($f->strand);
#$exon->score($f->score);
# $exon->p_value($f->p_value);
$exon->slice($contig);
$exon->phase($f->phase);
push(@exons,$exon);
$count++;
}
my $translation = new Bio::EnsEMBL::Translation;
if ($exons[0]->strand == 1) {
@exons = sort {$a->start <=> $b->start} @exons;
} else {
@exons = sort {$b->start <=> $a->start} @exons;
}
$translation->start (1);
$translation->end ($exons[$#exons]->end - $exons[$#exons]->start + 1);
$translation->start_Exon($exons[0]);
$translation->end_Exon($exons[$#exons]);
$transcript->translation($translation);
my $endphase = 0;
foreach my $exon (@exons) {
$exon ->phase ($endphase);
$transcript->add_Exon($exon);
$endphase = $exon->end_phase(($exon->phase + $exon->length)%3);
}
if ($transcript->translate->seq !~ /\*/) {
return $transcript;
}
$endphase = 1;
foreach my $exon (@exons) {
$exon->phase($endphase);
( run in 0.434 second using v1.01-cache-2.11-cpan-39bf76dae61 )