diff variant_effect_predictor/Bio/EnsEMBL/ArchiveStableId.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/ArchiveStableId.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,506 @@
+=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::ArchiveStableId
+
+=head1 DESCRIPTION
+
+ArchiveStableId objects are the main workunit for retrieving stable id
+archived information from EnsEMBL core database.
+
+Attributes:
+  type: Gene, Transcript, Translation, Exon, other, undef
+  stable_id: eg. ENSG00000000001
+  version: e.g. 1
+  db_name: eg. homo_sapiens_core_12_31
+  release: e.g. 35
+  assembly: e.g. NCBI35
+  successors: listref of Bio::EnsEMBL::ArchiveStableIds
+  adaptor: Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
+
+Status: At Risk. This module is in development.
+ 
+=head1 SEE ALSO
+
+Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
+Bio::EnsEMBL::StableIdEvent
+Bio::EnsEMBL::StableIdHistoryTree
+
+=cut
+
+package Bio::EnsEMBL::ArchiveStableId;
+
+use strict;
+use warnings;
+no warnings qw(uninitialized);
+
+use Bio::EnsEMBL::Root;
+our @ISA = qw(Bio::EnsEMBL::Root);
+
+use Bio::EnsEMBL::Utils::Argument qw(rearrange);
+use Scalar::Util qw(weaken isweak);
+
+=head2 new
+
+  Arg [STABLE_ID]      : String $stable_id 
+  Arg [VERSION]        : Int $version 
+  Arg [CURRENT_VERSION]: Int $current_version 
+  Arg [DB_NAME]        : String $db_name 
+  Arg [RELEASE]        : String $release
+  Arg [ASSEMBLY_NAME]  : String $assembly
+  Arg [TYPE]           : String $type - "Gene", "Transcript", "Translation", "Exon"
+  Arg [ADAPTOR]        : Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor $adaptor 
+  Description          : standard constructor with named arguments to create
+                         ArchiveStableId
+  Returntype           : Bio::EnsEMBL::ArchiveStableId
+  Exceptions           : none
+  Caller               : general, Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
+  Status               : At Risk
+                       : under development
+
+=cut
+
+sub new {
+  my $class = shift;
+  $class = ref( $class ) || $class;
+
+  my $self = bless {}, $class;
+
+  my ($stable_id, $version, $current_version, $db_name, $release, $assembly,
+    $type, $adaptor) = rearrange([qw( STABLE_ID VERSION CURRENT_VERSION DB_NAME
+    RELEASE ASSEMBLY TYPE ADAPTOR)], @_ );
+
+  $self->{'stable_id'} = $stable_id;
+  $self->{'version'} = $version;
+  $self->{'current_version'} = $current_version;
+  $self->{'db_name'} = $db_name;
+  $self->{'release'} = $release;
+  $self->{'assembly'} = $assembly;
+  $self->{'type'} = $type;
+  $self->adaptor($adaptor);
+
+  return $self;
+}
+
+
+=head2 new_fast
+
+  Arg [1]     : String $stable_id 
+  Arg [2]     : Int $version 
+  Arg [3]     : String $db_name 
+  Arg [4]     : String $release
+  Arg [5]     : String $assembly
+  Arg [6]     : String $type - "Gene", "Transcript", "Translation", "Exon"
+  Arg [7]     : Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor $adaptor 
+  Arg [8]     : Int $current_version 
+  Description : faster version of above constructor
+  Returntype  : Bio::EnsEMBL::ArchiveStableId
+  Exceptions  : none
+  Caller      : general, Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub new_fast {
+  my $class = shift;
+  
+  $class = ref ($class) || $class;
+
+  my $self = bless {
+    'stable_id' => $_[0],
+      'version' => $_[1],
+      'db_name' => $_[2],
+      'release' => $_[3],
+      'assembly' => $_[4],
+      'type' => $_[5],
+      'adaptor' => $_[6],
+      'current_version' => $_[7],
+  }, $class;
+
+  weaken($self->{adaptor})  if ( ! isweak($self->{adaptor}) );
+
+  return $self;
+}
+
+
+=head2 get_history_tree
+
+  Arg[1]      : (optional) Int $num_high_scorers
+                number of mappings per stable ID allowed when filtering
+  Arg[2]      : (optional) Int $max_rows
+                maximum number of stable IDs in history tree (used for
+                filtering)
+  Example     : my $history_tree = $archive_id->get_history_tree;
+  Description : Returns the history tree of this ArchiveStableId
+  Return type : Bio::EnsEMBL::StableIdHistoryTree
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_history_tree {
+  my ($self, $num_high_scorers, $max_rows) = @_;
+  
+  unless ($self->{'history'}) {
+    $self->{'history'} = $self->adaptor->fetch_history_tree_by_stable_id(
+      $self->stable_id, $num_high_scorers, $max_rows);
+  }
+
+  return $self->{'history'};
+}
+
+
+=head2 get_all_predecessors
+
+  Args        : none
+  Description : Retrieve a list of ArchiveStableIds that were mapped to this
+                one.
+  Returntype  : listref of Bio::EnsEMBL::ArchiveStableId
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_all_predecessors {
+  my $self = shift;
+  
+  my $predecessors = $self->adaptor->fetch_predecessors_by_archive_id($self);
+  
+  foreach my $pre (@$predecessors) {
+    $pre->successors($self);
+  }
+
+  return $predecessors;
+}
+
+
+=head2 get_all_successors
+
+  Args        : none
+  Description : Retrieve a list of ArchiveStableIds that this one was mapped to.
+  Returntype  : listref Bio::EnsEMBL::ArchiveStableId
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_all_successors {
+  my $self = shift;
+
+  if ($self->{'successors'}) {
+    return $self->{'successors'};
+  } else {
+    my $successors = $self->adaptor->fetch_successors_by_archive_id($self);
+    return $self->successors(@$successors);
+  }
+}
+
+
+=head2 get_peptide
+
+  Description : Retrieves the peptide string for this ArchiveStableId.
+  Returntype  : String, or undef if this is not a Translation or cant be found
+                in the database.
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_peptide {
+  my $self = shift;
+
+  if ( lc( $self->type() ) eq 'translation' ) {
+    return $self->adaptor->get_peptide($self);
+  } else {
+    return undef;
+  }
+}
+
+
+=head2 get_all_associated_archived
+
+  Example     : my ($arch_gene, $arch_tr, $arch_tl, $pep_seq) =
+                  @{ $arch_id->get_all_associated_archived };
+  Description : Fetches associated archived stable IDs from the db for this
+                ArchiveStableId (version is taken into account).
+  Return type : Listref of
+                  ArchiveStableId archived gene
+                  ArchiveStableId archived transcript
+                  (optional) ArchiveStableId archived translation
+                  (optional) peptide sequence
+  Caller      : webcode, general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_all_associated_archived {
+  my $self = shift;
+  return $self->adaptor->fetch_associated_archived($self);
+}
+
+
+=head2 get_all_gene_archive_ids
+
+  Example     : my @archived_genes = @{ $arch_id->get_all_gene_archive_ids };
+  Description : Returns gene ArchiveStableIds associated with this
+                ArchiveStableId. If this is a gene, it returns itself.
+  Returntype  : listref of Bio::EnsEMBL::ArchiveStableId
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_all_gene_archive_ids {
+  my $self = shift;
+
+  if ($self->type eq "Gene") {
+    return [$self];
+  } else {
+    return $self->adaptor->fetch_all_by_archive_id($self, 'Gene');
+  }
+}
+
+
+=head2 get_all_transcript_archive_ids
+
+  Example     : my @archived_transcripts =
+                  @{ $arch_id->get_all_transcript_archive_ids };
+  Description : Returns transcript ArchiveStableIds associated with this
+                ArchiveStableId. If this is a transcript, it returns itself.
+  Returntype  : listref of Bio::EnsEMBL::ArchiveStableId
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_all_transcript_archive_ids {
+  my $self = shift;
+
+  if ($self->type eq "Transcript") {
+    return [$self];
+  } else {
+    return $self->adaptor->fetch_all_by_archive_id($self, 'Transcript');
+  }
+}
+
+
+=head2 get_all_translation_archive_ids
+
+  Example     : my @archived_peptides =
+                  @{ $arch_id->get_all_translation_archive_ids };
+  Description : Returns translation ArchiveStableIds associated with this
+                ArchiveStableId. If this is a translation, it returns itself.
+  Returntype  : listref of Bio::EnsEMBL::ArchiveStableId
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_all_translation_archive_ids {
+  my $self = shift;
+
+  if ($self->type eq "Translation") {
+    return [$self];
+  } else {
+    return $self->adaptor->fetch_all_by_archive_id($self, 'Translation');
+  }
+}
+
+
+=head2 current_version
+
+  Example     : if (my $v = $arch_id->current_version) {
+                  print "Current version of this stable ID ", $v, "\n";
+                } else {
+                  print "This stable ID is not in the current db.\n";
+                }
+  Description : Lazy-loads the current version of stable ID
+  Return type : Boolean (TRUE is current version found, else FALSE)
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub current_version {
+  my $self = shift;
+
+  if (@_) {
+    $self->{'current_version'} = shift;
+  } elsif (! defined $self->{'current_version'}) {
+    if (defined $self->adaptor()) {
+      # lazy load
+      $self->adaptor()->lookup_current($self);
+    }       
+  }
+
+  return $self->{'current_version'};
+}
+
+
+=head2 is_current
+
+  Example     : if ($arch_id->is_current) {
+                  print $arch_id->version, " is the current version of this
+                    stable ID.\n";
+                }
+  Description : Determines if the version of this object is the current version
+                of this stable ID. Note that this method doesn't lazy-load the
+                current version of an ArchiveStableId; if you want to be sure,
+                use current_version() instead.
+  Return type : Boolean (TRUE if it is current, else FALSE)
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub is_current {
+  my $self = shift;
+  return ($self->{'version'} == $self->{'current_version'});
+}
+
+
+=head2 get_latest_incarnation
+
+  Example     : my $latest = $arch_id->get_latest_incarnation;
+                print "Latest version of ".$arch_id->stable_id." is ".
+                  $latest->version."\n";
+  Description : Returns the ArchiveStableId representing the latest version
+                of this stable ID. Returns itself if this already is the latest
+                version, otherwise fetches it from the db.
+  Return type : Bio::EnsEMBL::ArchiveStableId
+  Exceptions  : none
+  Caller      : general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub get_latest_incarnation {
+  my $self = shift;
+
+  return $self if ($self->is_latest);
+
+  my $latest = $self->adaptor->fetch_by_stable_id($self->stable_id);
+  return $latest;
+}
+
+
+=head2 is_latest
+
+  Arg[1]      : (optional) Boolean $is_latest
+  Example     : if ($arch_id->is_latest) {
+                  print "Version ".$arch_id->version." is the latest version 
+                    of ".$arch_id->stable_id."\n";
+                }
+  Description : Indicates whether this is the latest version of this stable ID.
+                Can also be used as a setter if we know this is the latest
+                version.
+  Return type : Boolean (TRUE if yes, FALSE if no)
+  Exceptions  : none
+  Caller      : Bio::EnsEMBL::DBSQL::ArchiveStableIdAdaptor->fetch_by_stable_id, general
+  Status      : At Risk
+              : under development
+
+=cut
+
+sub is_latest {
+  my $self = shift;
+  $self->{'is_latest'} = shift if (@_);
+  return ($self->{'is_latest'} || $self->is_current);
+}
+
+
+#
+# getter/setters for attributes
+#
+
+sub stable_id {
+  my $self = shift;
+  $self->{'stable_id'} = shift if (@_);
+  return $self->{'stable_id'};
+}
+
+sub version {
+  my $self = shift;
+  $self->{'version'} = shift if (@_);
+  return $self->{'version'};
+}
+
+sub db_name {
+  my $self = shift;
+  $self->{'db_name'} = shift if (@_);
+  return $self->{'db_name'};
+}
+
+sub release {
+  my $self = shift;
+  $self->{'release'} = shift if (@_);
+  return $self->{'release'};
+}
+
+sub assembly {
+  my $self = shift;
+  $self->{'assembly'} = shift if (@_);
+  return $self->{'assembly'};
+}
+
+sub type {
+  my $self = shift;
+  $self->{'type'} = shift if (@_);
+  return $self->{'type'};
+}
+
+sub adaptor {
+  my $self = shift;
+  weaken($self->{'adaptor'} = shift) if (@_);
+  return $self->{'adaptor'};
+}
+
+sub successors {
+  my $self = shift;
+  $self->{'successors'} = \@_;
+  return $self->{'successors'};
+}
+
+
+1;
+