AcePerl
view release on metacpan or search on metacpan
Ace/Sequence/Transcript.pm view on Meta::CPAN
package Ace::Sequence::Transcript;
use strict;
use Ace;
use Ace::Sequence::Feature;
use vars '$AUTOLOAD';
use overload
'""' => 'asString',
;
# for compatibility with the Ace::Graphics::Glyph::segments glyph, and
# with Bioperl SeqFeatureI:
*sub_SeqFeature = *merged_segments = *segments = \&exons;
# autoload delegates everything to the Sequence feature
sub AUTOLOAD {
my($pack,$func_name) = $AUTOLOAD=~/(.+)::([^:]+)$/;
my $self = shift;
$self->{base}->$func_name(@_);
}
sub DESTROY { }
sub new {
my $class = shift;
my $args = shift;
bless $args,$class;
return $args;
# for documentation only
# my %args = @_;
# my $introns = $args{intron};
# my $exons = $args{exon};
# my $sequence = $args{base}; # this is the Ace::Sequence::Feature object
# return bless {base => $sequence,
# intron => $introns,
# exon => $exons,
# cds => $cds,},$class;
}
sub smapped { 1; }
sub asString {
shift->{base}->info;
}
sub type {
return 'Transcript';
}
sub relative {
my $self = shift;
my $d = $self->{relative};
$self->{relative} = shift if @_;
$d;
}
sub introns {
my $self = shift;
return $self->{intron} ? @{$self->{intron}} : () unless $self->relative;
# otherwise, we have to handle relative coordinates
my $base = $self->{base};
my @e = map {Ace::Sequence->new(-refseq=>$base,-seq=>$_)} @{$self->{intron}};
return $self->strand < 0 ? reverse @e : @e;
}
sub exons {
my $self = shift;
return $self->{exon} ? @{$self->{exon}} : () unless $self->relative;
# otherwise, we have to handle relative coordinates
my $base = $self->{base};
my @e = map {Ace::Sequence->new(-refseq=>$base,-seq=>$_)} @{$self->{exon}};
return $self->strand < 0 ? reverse @e : @e;
}
sub cds {
my $self = shift;
return $self->{cds} ? @{$self->{cds}} : () unless $self->relative;
# otherwise, we have to handle relative coordinates
my $base = $self->{base};
my @e = map {Ace::Sequence->new(-refseq=>$base,-seq=>$_)} @{$self->{cds}};
return $self->strand < 0 ? reverse @e : @e;
}
1;
__END__
=head1 NAME
Ace::Sequence::Transcript - Simple "Gene" Object
=head1 SYNOPSIS
( run in 1.458 second using v1.01-cache-2.11-cpan-99c4e6809bf )