Bio-EnsEMBL
view release on metacpan or search on metacpan
lib/Bio/EnsEMBL/Translation.pm view on Meta::CPAN
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
=cut
=head1 CONTACT
Please email comments or questions to the public Ensembl
developers list at <http://lists.ensembl.org/mailman/listinfo/dev>.
Questions may also be sent to the Ensembl help desk at
<http://www.ensembl.org/Help/Contact>.
=cut
=head1 NAME
Bio::EnsEMBL::Translation - A class representing the translation of a
transcript
=head1 SYNOPSIS
my $translation = Bio::EnsEMBL::Translation->new(
-START_EXON => $exon1,
-END_EXON => $exon2,
-SEQ_START => 98,
-SEQ_END => 39
);
# stable ID setter
$translation->stable_id('ENSP00053458');
# get start and end position in start/end exons
my $start = $translation->start;
my $end = $translation->end;
=head1 DESCRIPTION
A Translation object defines the CDS and UTR regions of a Transcript
through the use of start_Exon/end_Exon, and start/end attributes.
=cut
package Bio::EnsEMBL::Translation;
$Bio::EnsEMBL::Translation::VERSION = '114.0.0';
use vars qw($AUTOLOAD @ISA);
use strict;
use Bio::EnsEMBL::Utils::Exception qw(throw warning );
use Bio::EnsEMBL::Utils::Argument qw( rearrange );
use Bio::EnsEMBL::Utils::Scalar qw( assert_ref wrap_array );
use Scalar::Util qw(weaken);
use Bio::EnsEMBL::Storable;
@ISA = qw(Bio::EnsEMBL::Storable);
=head2 new
Arg [-START_EXON] : The Exon object in which the translation (CDS) starts
Arg [-END_EXON] : The Exon object in which the translation (CDS) ends
Arg [-SEQ_START] : The offset in the start_Exon indicating the start
position of the CDS.
Arg [-SEQ_END] : The offset in the end_Exon indicating the end
position of the CDS.
Arg [-STABLE_ID] : The stable identifier for this Translation
Arg [-VERSION] : The version of the stable identifier
Arg [-DBID] : The internal identifier of this Translation
Arg [-ADAPTOR] : The TranslationAdaptor for this Translation
Arg [-SEQ] : Manually sets the peptide sequence of this translation.
May be useful if this translation is not stored in
a database.
Arg [-CREATED_DATE]: the date the translation was created
Arg [-MODIFIED_DATE]: the date the translation was modified
Example : my $tl = Bio::EnsEMBL::Translation->new
(-START_EXON => $ex1,
-END_EXON => $ex2,
-SEQ_START => 98,
-SEQ_END => 39);
Description: Constructor. Creates a new Translation object
Returntype : Bio::EnsEMBL::Translation
Exceptions : none
Caller : general
Status : Stable
=cut
sub new {
my $caller = shift;
my $class = ref($caller) || $caller;
my ( $start_exon, $end_exon, $seq_start, $seq_end,
$stable_id, $version, $dbID, $adaptor, $seq,
$created_date, $modified_date ) =
rearrange( [ "START_EXON", "END_EXON", "SEQ_START", "SEQ_END",
"STABLE_ID", "VERSION", "DBID", "ADAPTOR",
"SEQ", "CREATED_DATE", "MODIFIED_DATE" ], @_ );
# Default version
if ( !defined($version) ) { $version = 1 }
my $self = bless {
'start_exon' => $start_exon,
'end_exon' => $end_exon,
'dbID' => $dbID,
'start' => $seq_start,
'end' => $seq_end,
'stable_id' => $stable_id,
'version' => $version,
'created_date' => $created_date,
'modified_date' => $modified_date,
'seq' => $seq
}, $class;
$self->adaptor($adaptor);
return $self;
}
=head2 transcript
Arg [1] : Transcript object (optional)
Description : Sets or retrieves the transcript object associated
with this translation object.
Exceptions : Throws if there is no adaptor or no dbID defined for
the translation object.
Returntype : Bio::EnsEMBL::Transcript
=cut
sub transcript {
my ( $self, $transcript ) = @_;
if ( defined($transcript) ) {
assert_ref( $transcript, 'Bio::EnsEMBL::Transcript' );
$self->{'transcript'} = $transcript;
weaken( $self->{'transcript'} ); # Avoid circular references.
} elsif ( @_ > 1 ) {
# Break connection to transcript.
delete( $self->{'transcript'} );
} elsif ( !defined( $self->{'transcript'} ) ) {
my $adaptor = $self->adaptor;
if ( !defined($adaptor) ) {
throw( "Adaptor is not set for translation, "
. "can not fetch its transcript." );
}
my $dbID = $self->{'dbID'};
if ( !defined($dbID) ) {
throw( "dbID is not set for translation, "
. " can not fetch its transcript." );
}
$self->{'transcript'} =
$adaptor->db()->get_TranscriptAdaptor()
->fetch_by_translation_id($dbID);
# Do not weaken the reference if we had to get the transcript from the
# database. The user is probably working on translations directly,
# not going through transcripts.
#weaken( $self->{'transcript'} ); # Avoid circular references.
}
return $self->{'transcript'};
} ## end sub transcript
=head2 start
Arg [1] : (optional) int $start - start position to set
Example : $translation->start(17);
Description: Getter/setter for the value of start, which is a position within
the exon given by start_Exon.
If you need genomic coordinates, use the genomic_start()
method.
Returntype : int
Exceptions : none
Caller : general
Status : Stable
=cut
sub start{
my $obj = shift;
if( @_ ) {
my $value = shift;
$obj->{'start'} = $value;
}
return $obj->{'start'};
}
=head2 end
Arg [1] : (optional) int $end - end position to set
Example : $translation->end(8);
Description: Getter/setter for the value of end, which is a position within
the exon given by end_Exon.
If you need genomic coordinates, use the genomic_end()
method.
Returntype : int
Exceptions : none
Caller : general
Status : Stable
=cut
sub end {
my $self = shift;
if( @_ ) {
my $value = shift;
$self->{'end'} = $value;
}
return $self->{'end'};
}
( run in 1.172 second using v1.01-cache-2.11-cpan-98e64b0badf )