diff variant_effect_predictor/Bio/EnsEMBL/IdMapping/TinyExon.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/variant_effect_predictor/Bio/EnsEMBL/IdMapping/TinyExon.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,466 @@
+=head1 LICENSE
+
+  Copyright (c) 1999-2012 The European Bioinformatics Institute and
+  Genome Research Limited.  All rights reserved.
+
+  This software is distributed under a modified Apache license.
+  For license details, please see
+
+    http://www.ensembl.org/info/about/code_licence.html
+
+=head1 CONTACT
+
+  Please email comments or questions to the public Ensembl
+  developers list at <dev@ensembl.org>.
+
+  Questions may also be sent to the Ensembl help desk at
+  <helpdesk@ensembl.org>.
+
+=cut
+
+=head1 NAME
+
+Bio::EnsEMBL::IdMapping::TinyExon - lightweight exon object
+
+=head1 SYNOPSIS
+
+  # fetch an exon from the db and create a lightweight exon object
+  # from it
+  my $exon = $exon_adaptor->fetch_by_stable_id('ENSE000345437');
+  my $lightweight_exon = Bio::EnsEMBL::IdMapping::TinyExon->new_fast( [
+      $exon->dbID,
+      $exon->stable_id,
+      $exon->version,
+      $exon->created_date,
+      $exon->modified_date,
+      $exon->start,
+      $exon->end,
+      $exon->strand,
+      $exon->slice->seq_region_name,
+      $exon->slice->coord_system_name,
+      $exon->slice->coord_system->version,
+      $exon->slice->subseq( $exon->start, $exon->end, $exon->strand ),
+      $exon->phase,
+      $need_project,
+  ] );
+
+=head1 DESCRIPTION
+
+This is a lightweight exon object for the stable Id mapping. See the
+documentation in TinyFeature for general considerations about its
+design.
+
+=head1 METHODS
+
+  start
+  end
+  strand
+  seq_region_name
+  coord_system_name
+  coord_system_version
+  seq
+  phase
+  need_project
+  common_start
+  common_end
+  common_strand
+  common_sr_name
+  length
+  is_known
+
+=cut
+
+
+package Bio::EnsEMBL::IdMapping::TinyExon;
+
+# internal data structure (array indices):
+#
+#  0-4 see TinyFeature
+#  5  start
+#  6  end
+#  7  strand
+#  8  seq_region_name
+#  9  coord_system_name
+# 10  coord_system_version
+# 11  seq
+# 12  phase
+# 13  need_project
+# 14  common_start
+# 15  common_end
+# 16  common_strand
+# 17  common_sr_name
+
+
+use strict;
+use warnings;
+no warnings 'uninitialized';
+
+use Bio::EnsEMBL::IdMapping::TinyFeature;
+our @ISA = qw(Bio::EnsEMBL::IdMapping::TinyFeature);
+
+use Bio::EnsEMBL::Utils::Exception qw(throw warning);
+
+
+=head2 start
+
+  Arg[1]      : (optional) Int - the exon's start coordinate
+  Description : Getter/setter for the exon's start coordinate.
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub start {
+  my $self = shift;
+  $self->[5] = shift if (@_);
+  return $self->[5];
+}
+
+
+=head2 end
+
+  Arg[1]      : (optional) Int - the exon's end coordinate
+  Description : Getter/setter for the exon's end coordinate.
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub end {
+  my $self = shift;
+  $self->[6] = shift if (@_);
+  return $self->[6];
+}
+
+
+=head2 strand
+
+  Arg[1]      : (optional) Int - the exon's strand
+  Description : Getter/setter for the exon's strand.
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub strand {
+  my $self = shift;
+  $self->[7] = shift if (@_);
+  return $self->[7];
+}
+
+
+=head2 seq_region_name
+
+  Arg[1]      : (optional) String - seq_region name
+  Description : Getter/setter for the seq_region name of the slice the exon is
+                on.
+  Return type : String
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub seq_region_name {
+  my $self = shift;
+  $self->[8] = shift if (@_);
+  return $self->[8];
+}
+
+
+=head2 coord_system_name
+
+  Arg[1]      : (optional) String - coord_system name
+  Description : Getter/setter for the coord_system name of the slice the exon is
+                on.
+  Return type : String
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub coord_system_name {
+  my $self = shift;
+  $self->[9] = shift if (@_);
+  return $self->[9];
+}
+
+
+=head2 coord_system_version
+
+  Arg[1]      : (optional) String - coord_system version
+  Description : Getter/setter for the coord_system version of the slice the
+                exon is on.
+  Return type : String
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub coord_system_version {
+  my $self = shift;
+  $self->[10] = shift if (@_);
+  return $self->[10];
+}
+
+
+=head2 seq
+
+  Arg[1]      : (optional) String - the exon's sequence
+  Description : Getter/setter for the exon's sequence.
+  Return type : String
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub seq {
+  my $self = shift;
+  $self->[11] = shift if (@_);
+  return $self->[11];
+}
+
+
+=head2 phase
+
+  Arg[1]      : (optional) Int - the exon's phase
+  Description : Getter/setter for the exon's phase.
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub phase {
+  my $self = shift;
+  $self->[12] = shift if (@_);
+  return $self->[12];
+}
+
+
+=head2 need_project
+
+  Arg[1]      : (optional) Boolean - attribute to set
+  Description : Getter/setter for the attribute determining whether an exon
+                needs to be projected onto a common coord_system. You don't need
+                to do so if the native coord_system is common to the source and
+                target assemblies, or if no common coord_system is found (the
+                Cache object has methods to determine this).
+  Return type : Boolean
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub need_project {
+  my $self = shift;
+  $self->[13] = shift if (@_);
+  return $self->[13];
+}
+
+
+=head2 common_start
+
+  Arg[1]      : (optional) Int - the exon's start in common coord_system
+                coordinates
+  Description : Getter/setter for the exon's start in common coord_system
+                coordinates. Will return $self->start if no projection to a
+                common coord_system is required.
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub common_start {
+  my $self = shift;
+
+  # when used as a setter, always set a value
+  $self->[14] = shift if (@_);
+
+  # when used as a getter
+  if (scalar(@$self) > 14) {
+    # return value for common coord_system if available (but avoid
+    # autovivification gotcha!)
+    return $self->[14];
+  } elsif ($self->need_project) {
+    # return undef if common value expected but not there (e.g. no projection
+    # found
+    return undef;
+  } else {
+    # return native value
+    return $self->start;
+  }
+}
+
+
+=head2 common_end
+
+  Arg[1]      : (optional) Int - the exon's end in common coord_system
+                coordinates
+  Description : Getter/setter for the exon's end in common coord_system
+                coordinates. Will return $self->end if no projection to a
+                common coord_system is required.
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub common_end {
+  my $self = shift;
+
+  # when used as a setter, always set a value
+  $self->[15] = shift if (@_);
+
+  # when used as a getter
+  if (scalar(@$self) > 14) {
+    # return value for common coord_system if available (but avoid
+    # autovivification gotcha!)
+    return $self->[15];
+  } elsif ($self->need_project) {
+    # return undef if common value expected but not there (e.g. no projection
+    # found
+    return undef;
+  } else {
+    # return native value
+    return $self->end;
+  }
+}
+
+
+=head2 common_strand
+
+  Arg[1]      : (optional) Int - the exon's strand in common coord_system
+                coordinates
+  Description : Getter/setter for the exon's strand in common coord_system
+                coordinates. Will return $self->strand if no projection to a
+                common coord_system is required.
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub common_strand {
+  my $self = shift;
+
+  # when used as a setter, always set a value
+  $self->[16] = shift if (@_);
+
+  # when used as a getter
+  if (scalar(@$self) > 14) {
+    # return value for common coord_system if available (but avoid
+    # autovivification gotcha!)
+    return $self->[16];
+  } elsif ($self->need_project) {
+    # return undef if common value expected but not there (e.g. no projection
+    # found
+    return undef;
+  } else {
+    # return native value
+    return $self->strand;
+  }
+}
+
+
+=head2 common_sr_name
+
+  Arg[1]      : (optional) String - seq_region name of the exon's slice on the
+                common coord_system
+  Description : Getter/setter for the seq_region name of the exon's slice on the
+                common coord_system coordinates. Will return
+                $self->seq_region_name if no projection to a common coord_system
+                is required.
+  Return type : String
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub common_sr_name {
+  my $self = shift;
+
+  # when used as a setter, always set a value
+  $self->[17] = shift if (@_);
+
+  # when used as a getter
+  if (scalar(@$self) > 14) {
+    # return value for common coord_system if available (but avoid
+    # autovivification gotcha!)
+    return $self->[17];
+  } elsif ($self->need_project) {
+    # return undef if common value expected but not there (e.g. no projection
+    # found
+    return undef;
+  } else {
+    # return native value
+    return $self->seq_region_name;
+  }
+}
+
+
+=head2 length
+
+  Description : Returns the exon length (distance between start and end).
+  Return type : Int
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub length {
+  my $self = shift;
+  return ($self->end - $self->start + 1);
+}
+
+
+=head2 is_known
+
+  Description : Determine whether an exon is known. In the context of stable Id
+                mapping, this is true for all exons.
+  Return type : Boolean
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub is_known {
+  return 1;
+}
+
+
+1;
+