Bio::EnsEMBL::ExternalData::Family::DBSQL GenomeDBAdaptor
SummaryIncluded librariesPackage variablesSynopsisDescriptionGeneral documentationMethods
Toolbar
WebCvsRaw content
Summary
Bio::EnsEMBL::Compara::DBSQL::GenomeDBAdaptor
Package variables
No package variables defined.
Included modules
Bio::EnsEMBL::DBSQL::BaseAdaptor
Bio::EnsEMBL::ExternalData::Family::GenomeDB
Inherit
Bio::EnsEMBL::DBSQL::BaseAdaptor
Synopsis
my $genome_db_adaptor = $family_db->get_GenomeDBAdaptor();
my $genome_db = $genome_db_adaptor->fetch_by_dbID(1);
Description
A database adaptor used to retrieve genome db objects from the database
Methods
fetch_allDescriptionCode
fetch_by_dbIDDescriptionCode
fetch_by_name_assemblyDescriptionCode
fetch_by_taxon_idDescriptionCode
storeDescriptionCode
Methods description
fetch_allcode    nextTop
  Args       : none
Example : none
Description: gets all GenomeDBs for this compara database
Returntype : listref Bio::EnsEMBL::Compara::GenomeDB
Exceptions : none
Caller : general
fetch_by_dbIDcodeprevnextTop
  Arg [1]    : int $dbid
Example : $genome_db = $gdba->fetch_by_dbID(1);
Description: Retrieves a GenomeDB object via its internal identifier
Returntype : Bio::EnsEMBL::Compara::GenomeDB
Exceptions : none
Caller : general
fetch_by_name_assemblycodeprevnextTop
  Arg [1]    : string $name
Arg [2] : string $assembly
Example : $gdb = $gdba->fetch_by_name_assembly("Homo sapiens", 'NCBI_31');
Description: Retrieves a genome db using the name of the species and
the assembly version.
Returntype : Bio::EnsEMBL::Compara::GenomeDB
Exceptions : thrown if GenomeDB of name $name and $assembly cannot be found
Caller : general
fetch_by_taxon_idcodeprevnextTop
  Arg [1]    : int $taxon_id
Example : $gdb = $gdba->fetch_by_name_taxon_id("Homo sapiens", '9606');
Description: Retrieves a genome db using the taxon_id. This does not
currently allow for multiple assemblies of the same genome
as compara does, but may be changed in the future.
Returntype : Bio::EnsEMBL::Compara::GenomeDB
Exceptions : thrown if GenomeDB of name $name and $assembly cannot be found
Caller : general
storecodeprevnextTop
  Arg [1]    : Bio::EnsEMBL::Compara::GenomeDB $gdb
Example : $gdba->store($gdb);
Description: Stores a genome database object in the compara database if
it has not been stored already. The internal id of the
stored genomeDB is returned.
Returntype : int
Exceptions : thrown if the argument is not a Bio::EnsEMBL::Compara:GenomeDB
Caller : general
Methods code
fetch_alldescriptionprevnextTop
sub fetch_all {
  my ( $self ) = @_;

  my $sth = $self->prepare("SELECT genome_db_id, name, taxon_id, assembly 
                            FROM   genome_db");
  
  $sth->execute();

  my @gdbs;
  my ($dbID, $name, $taxon_id, $assembly);
  while(($dbID, $name, $taxon_id, $assembly) = $sth->fetchrow_array()) {
    
    my $dba = $self->db->get_db_adaptor($name, $assembly);

    if(!$dba) {
      $self->throw("Could not obtain DBAdaptor for dbID [$dbID].\n" .
		   "Genome DBAdaptor for name=[".$name."], ".
		   "assembly=[" . $assembly."] must be loaded using " .
		   "config file or\n" .
	   "Bio::EnsEMBL::ExternalData::Family::DBSQL::DBAdaptor::add_genome");
    }

    my $gdb = Bio::EnsEMBL::ExternalData::Family::GenomeDB->new
      ($dba, $name, $assembly, $taxon_id, $dbID);
    
    $gdb->adaptor($self);

    push @gdbs, $gdb;
  }

  return\@ gdbs;
}
fetch_by_dbIDdescriptionprevnextTop
sub fetch_by_dbID {
   my ($self,$dbid) = @_;

   if( !defined $dbid) {
       $self->throw("dbid arg is required");
   }

   my $sth = $self->prepare("SELECT name, taxon_id, assembly 
                             FROM   genome_db
                             WHERE  genome_db_id = ?");

   $sth->execute($dbid);

   my ($name, $taxon_id, $assembly) = $sth->fetchrow_array();

   $self->throw("no genome_db with dbID=[$dbid] exists") 
     unless($name || $taxon_id || $assembly);

   my $dba = $self->db->get_db_adaptor($name, $assembly);

   if(!$dba) {
     $self->throw("Could not obtain DBAdaptor for dbID [$dbid].\n" .
		  "Genome DBAdaptor for name=[".$name."], ".
		  "assembly=[" . $assembly."] must be loaded using " .
		  "config file or\n" .
	   "Bio::EnsEMBL::ExternalData::Family::DBSQL::DBAdaptor::add_genome");
   }

   my $gdb = Bio::EnsEMBL::ExternalData::Family::GenomeDB->new
     ($dba, $name, $assembly, $taxon_id, $dbid);

   $gdb->adaptor($self);

   return $gdb;
}
fetch_by_name_assemblydescriptionprevnextTop
sub fetch_by_name_assembly {
   my ($self, $name, $assembly) = @_;

   unless($name && $assembly) {
     $self->throw('name and assembly arguments are required');
   }

   my $sth = $self->prepare(
	     "SELECT genome_db_id, taxon_id
              FROM genome_db
              WHERE name = ? AND assembly = ?");

   $sth->execute($name, $assembly);

   my ($dbID, $taxon_id) = $sth->fetchrow_array();

   if( !defined $dbID ) {
       $self->throw("No GenomeDB with this name [$name] and " .
		    "assembly [$assembly]");
   }

   my $dba = $self->db->get_db_adaptor($name, $assembly);

   if(!$dba) {
     $self->throw("Could not obtain DBAdaptor for dbID [$dbID].\n" .
		  "Genome DBAdaptor for name=[".$name."], ".
		  "assembly=[" . $assembly."] must be loaded using " .
		  "config file or\n" .
	   "Bio::EnsEMBL::ExternalData::Family::DBSQL::DBAdaptor::add_genome");
   }

   my $gdb = Bio::EnsEMBL::ExternalData::Family::GenomeDB->new
     ($dba, $name, $assembly, $taxon_id, $dbID);

   $gdb->adaptor($self);

   return $gdb;
}
fetch_by_taxon_iddescriptionprevnextTop
sub fetch_by_taxon_id {
   my ($self, $taxon_id) = @_;

   unless($taxon_id) {
     $self->throw('taxon_id arg is required');
   }

   my $sth = $self->prepare(
	     "SELECT genome_db_id, name, assembly
              FROM genome_db
              WHERE taxon_id = ?");

   $sth->execute($taxon_id);

   my ($dbID, $name, $assembly) = $sth->fetchrow_array();

   if( !defined $dbID ) {
       $self->throw("No GenomeDB with taxon_id [$taxon_id]");
   }

   my $dba = $self->db->get_db_adaptor($name, $assembly);

   if(!$dba) {
     $self->throw("Could not obtain DBAdaptor for dbID [$dbID].\n" .
		  "Genome DBAdaptor for name=[".$name."], ".
		  "assembly=[" . $assembly."] must be loaded using " .
		  "config file or\n" .
	   "Bio::EnsEMBL::ExternalData::Family::DBSQL::DBAdaptor::add_genome");
   }

   my $gdb = Bio::EnsEMBL::ExternalData::Family::GenomeDB->new
     ($dba, $name, $assembly, $taxon_id, $dbID);

   $gdb->adaptor($self); 

   return $gdb;
}
storedescriptionprevnextTop
sub store {
  my ($self,$gdb) = @_;

  $self->throw("Must have genomedb arg [$gdb]") unless($gdb);

  my $name = $gdb->name;
  my $assembly = $gdb->assembly;
  my $taxon_id = $gdb->taxon_id;

  unless($name && $assembly && $taxon_id) {
    $self->throw("genome db must have a name, assembly, and taxon_id");
  }

  my $sth = $self->prepare('
SELECT genome_db_id
FROM genome_db
WHERE name = ? and assembly = ?'
); $sth->execute($name, $assembly); my $dbID = $sth->fetchrow_array(); if(!$dbID) { #if the genome db has not been stored before, store it now
my $sth = $self->prepare(" INSERT into genome_db (name,assembly,taxon_id) VALUES (?,?,?) "); $sth->execute($name, $assembly, $taxon_id); $dbID = $sth->{'mysql_insertid'}; } #update the genomeDB object so that it's dbID and adaptor are set
$gdb->dbID($dbID); $gdb->adaptor($self); return $dbID; } 1;
}
General documentation
No general documentation available.