sub _convert_single
{ my ($self, $input) = @_;
$self->throw("one argument needed") unless($input and defined($input));
$self->throw("a Bio::Tools::Prediction::Gene object needed")
unless(ref($input) && $input->isa('Bio::Tools::Prediction::Gene'));
my $output = Bio::EnsEMBL::PredictionTranscript->new;
$output->analysis($self->analysis);
my @exons = sort {$a->start <=> $b->start} $input->exons;
my $previous_end_phase = -1;
foreach(@exons){
my $length = $_->length;
my $frame = $_->frame;
my $phase = ($previous_end_phase+1) %3;
my $end_phase = ($length-$frame) %1;
$previous_end_phase = $end_phase;
$_->add_tag_value("phase", $phase);
$_->add_tag_value("end_phase", $end_phase);
}
my @ens_exons = @{$self->{_predictionExonConverter}->convert(\@exons)};
$output->add_Exon($_) foreach(@ens_exons);
return $output; } |
sub _initialize
{ my ($self, @args) = @_;
$self->{_predictionExonConverter} = new Bio::EnsEMBL::Utils::Converter(
-in => 'Bio::SeqFeature::Gene::Exon',
-out => 'Bio::EnsEMBL::Exon',
);
$self->SUPER::_initialize(@args);
$self->{_predictionExonConverter}->contig($self->contig);
$self->{_predictionExonConverter}->analysis($self->analysis); } |
sub contig
{ my ($self, $arg) = @_;
if(defined($arg)){
$self->throws("A Bio::EnsEMBL::RawContig object expected.") unless(defined $arg);
$self->{_contig} = $arg;
$self->{_predictionExonConverter}->contig($arg);
}
return $self->{_contig};
}
1; } |