diff variant_effect_predictor/Bio/EnsEMBL/DBSQL/MetaContainer.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/DBSQL/MetaContainer.pm	Thu Apr 11 02:01:53 2013 -0400
@@ -0,0 +1,272 @@
+=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::DBSQL::MetaContainer - Encapsulates all access to core
+database meta information
+
+=head1 SYNOPSIS
+
+  my $meta_container =
+    $registry->get_adaptor( 'Human', 'Core', 'MetaContainer' );
+
+  my @mapping_info =
+    @{ $meta_container->list_value_by_key('assembly.mapping') };
+  
+  my $scientific_name = $meta_container->get_scientific_name();
+
+=head1 DESCRIPTION
+
+  An object that encapsulates specific access to core db meta data
+
+=head1 METHODS
+
+=cut
+
+package Bio::EnsEMBL::DBSQL::MetaContainer;
+
+use strict;
+use warnings;
+
+use Bio::EnsEMBL::Utils::Exception qw/deprecate/;
+use Bio::Species;
+
+
+use base qw/Bio::EnsEMBL::DBSQL::BaseMetaContainer/;
+
+# add well known meta info get-functions below
+
+=head2 get_production_name
+
+  Args          : none
+  Example       : $species = $meta_container->get_production_name();
+  Description   : Obtains the name of the species in a form usable as, for
+                  example, a table name, file name etc.
+  Returntype    : string
+  Exceptions    : none
+  Status        : Stable
+
+=cut
+
+sub get_production_name {
+  my ($self) = @_;
+  return $self->single_value_by_key('species.production_name');
+}
+
+=head2 get_short_name
+
+  Args          : none
+  Example       : $species = $meta_container->get_short_name();
+  Description   : Obtains the name of the species in a form usable as, for
+                  example, a short label in a GUI.
+  Returntype    : string
+  Exceptions    : none
+  Status        : Stable
+
+=cut
+
+sub get_short_name {
+  my ($self) = @_;
+  return $self->single_value_by_key('species.short_name');
+}
+
+=head2 get_common_name
+
+  Args          : none
+  Example       : $species = $meta_container->get_common_name();
+  Description   : Obtains the common name of the species.
+  Returntype    : string
+  Exceptions    : none
+  Status        : Stable
+
+=cut
+
+sub get_common_name {
+  my ($self) = @_;
+  return $self->single_value_by_key('species.common_name');
+}
+
+=head2 get_scientific_name
+
+  Args          : none
+  Example       : $species = $meta_container->get_scientific_name();
+  Description   : Obtains the full scientific name of the species.
+  Returntype    : string
+  Exceptions    : none
+  Status        : Stable
+
+=cut
+sub get_scientific_name {
+  my ($self) = @_;
+  return $self->single_value_by_key('species.scientific_name');
+}
+
+=head2 get_division
+
+  Args          : none
+  Example       : $div = $meta_container->get_division();
+  Description   : Obtains the Ensembl Genomes division to which the species belongs.
+  Returntype    : string
+  Exceptions    : none
+  Status        : Stable
+
+=cut
+sub get_division {
+  my ($self) = @_;
+  return $self->single_value_by_key('species.division');
+}
+
+=head2 get_Species
+
+  Arg [1]    : none
+  Example    : $species = $meta_container->get_Species();
+  Description: Obtains the species from this databases meta table. Call is
+               deprecated; please use other subroutines in this package
+  Returntype : Bio::Species
+  Exceptions : none
+  Caller     : ?
+  Status     : Deprecated
+
+=cut
+
+sub get_Species {
+  my ($self) = @_;
+
+  deprecate('Call is deprecated. Use $self->get_common_name() / $self->get_classification() / $self->get_scientific_name() instead');
+
+  my $common_name = $self->get_common_name();
+  my $classification =
+    $self->list_value_by_key('species.classification');
+  if ( !@$classification ) {
+    return undef;
+  }
+  
+  #Re-create the old classification data structure by adding the scientific
+  #name back onto the classification but with species before genus e.g.
+  # sapiens -> Homo -> Hominade
+  my $scientific_name = $self->get_scientific_name();
+  my ($genus, @sp) = split(/ /, $scientific_name);
+  unshift(@{$classification}, join(q{ }, @sp), $genus);
+  
+  my $species = Bio::Species->new();
+  $species->common_name($common_name);
+  
+  $species->classification($classification, 1); #always force it
+
+  return $species;
+}
+
+
+=head2 get_taxonomy_id
+
+  Arg [1]    : none
+  Example    : $tax_id = $meta_container->get_taxonomy_id();
+  Description: Retrieves the taxonomy id from the database meta table
+  Returntype : string
+  Exceptions : none
+  Caller     : ?
+  Status     : Stable
+
+=cut
+
+sub get_taxonomy_id {
+  my ($self) = @_;
+  return $self->single_value_by_key('species.taxonomy_id', 1);
+}
+
+
+
+=head2 get_default_assembly
+
+  Description: DEPRECATED. Use the version of the coordinate system you are
+             interested in instead.
+
+  Example:     #use this instead
+               my ($highest_cs) = @{$db->get_CoordSystemAdaptor->fetch_all()};
+               my $assembly = $highest_cs->version();
+
+=cut
+
+sub get_default_assembly {
+  my $self = shift;
+
+  deprecate("Use version of coordinate system you are interested in instead.\n".
+            "Example:\n".
+            '  ($cs) = @{$coord_system_adaptor->fetch_all()};'."\n" .
+            '  $assembly = $cs->version();');
+
+  my ($cs) = @{$self->db->get_CoordSystemAdaptor->fetch_all()};
+
+  return $cs->version();
+}
+
+
+#
+# TBD This method should be removed/deprecated
+#
+sub get_max_assembly_contig {
+  my $self = shift;
+  deprecate('This method should either be fixed or removed');
+  return $self->single_value_by_key('assembly.maxcontig');
+}
+
+=head2 get_genebuild
+
+  Arg [1]    : none
+  Example    : $tax_id = $meta_container->get_genebuild();
+  Description: Retrieves the genebuild from the database meta table
+  Returntype : string
+  Exceptions : none
+  Caller     : ?
+  Status     : Stable
+
+=cut
+
+sub get_genebuild {
+  my ($self) = @_;
+  return $self->single_value_by_key('genebuild.start_date', 1);
+}
+
+=head2 get_genebuild
+
+  Example    : $classification = $meta_container->get_classification();
+  Description: Retrieves the classification held in the backing database minus
+               any species specific levels. This means that the first element
+               in the array will be subfamily/family level ascending to
+               superkingdom
+  Returntype : ArrayRef[String]
+  Exceptions : none
+  Caller     : ?
+  Status     : Stable
+
+=cut
+
+sub get_classification {
+  my ($self) = @_;
+  my $classification = $self->list_value_by_key('species.classification');
+  my $copy = [@{$classification}];
+  splice(@{$copy}, 0, 1); # remove the Homo sapiens
+  return $copy;
+}
+
+
+1;
+