Bio-EnsEMBL

 view release on metacpan or  search on metacpan

lib/Bio/EnsEMBL/Registry.pm  view on Meta::CPAN

                                         -species      => $species.$species_suffix,
                                         -host         => $host,
                                         -user         => $user,
                                         -pass         => $pass,
                                         -port         => $port,
                                         -dbname       => $database,
                                         -wait_timeout => $wait_timeout,
                                         -no_cache     => $no_cache );

      if ($verbose) {
        printf( "Species '%s' loaded from database '%s'\n",
                $species, $database );
      }
    }
  }

  # Register multi-species databases

  my @multi_dbs = grep { /^\w+_collection_core_\w+$/ } @dbnames;

  if (!$ignore_multi) {
    foreach my $multidb (@multi_dbs) {
      my $sth = $dbh->prepare(
        sprintf(
          "SELECT species_id, meta_value FROM %s.meta "
            . "WHERE meta_key = 'species.db_name'",
          $dbh->quote_identifier($multidb) ) );
  
      $sth->execute();
  
      my ( $species_id, $species );
      $sth->bind_columns( \( $species_id, $species ) );
  
      while ( $sth->fetch() ) {
        my $dba = Bio::EnsEMBL::DBSQL::DBAdaptor->new(
          -group           => "core",
          -species         => $species.$species_suffix,
          -species_id      => $species_id,
          -multispecies_db => 1,
          -host            => $host,
          -user            => $user,
          -pass            => $pass,
          -port            => $port,
          -dbname          => $multidb,
          -wait_timeout    => $wait_timeout,
          -no_cache        => $no_cache
        );
  
        if ($verbose) {
          printf( "Species '%s' (id:%d) loaded from database '%s'\n",
            $species, $species_id, $multidb );
        }
      }
    } ## end foreach my $multidb (@multi_dbs)
  }

  if(!$core_like_dbs_found && $verbose) {
    print("No core-like databases found. Check your DB_VERSION (used '$software_version')\n");
  }  

  # User upload DBs

  my @userupload_dbs = grep { /_userdata$/ } @dbnames;
  if (!$ignore_multi) {
    for my $userupload_db (@userupload_dbs) {
      if ( index( $userupload_db, 'collection' ) != -1 ) {
        # Skip multi-species databases.
        next;
      }
  
      my ($species) = ( $userupload_db =~ /(^.+)_userdata$/ );
      my $dba =
        Bio::EnsEMBL::DBSQL::DBAdaptor->new(
                                           -group        => "userupload",
                                           -species      => $species.$species_suffix,
                                           -host         => $host,
                                           -user         => $user,
                                           -pass         => $pass,
                                           -port         => $port,
                                           -wait_timeout => $wait_timeout,
                                           -dbname   => $userupload_db,
                                           -no_cache => $no_cache );
  
      if ($verbose) {
        printf( "%s loaded\n", $userupload_db );
      }
    }
  }

  # Register multi-species userupload databases.
  my @userdata_multidbs = grep { /^.+_collection_userdata$/ } @dbnames;

  if (!$ignore_multi) {
    foreach my $multidb (@userdata_multidbs) {
      my $sth = $dbh->prepare(
        sprintf(
          "SELECT species_id, meta_value FROM %s.meta "
            . "WHERE meta_key = 'species.db_name'",
          $dbh->quote_identifier($multidb) ) );
  
      $sth->execute();
  
      my ( $species_id, $species );
      $sth->bind_columns( \( $species_id, $species ) );
  
      while ( $sth->fetch() ) {
        my $dba = Bio::EnsEMBL::DBSQL::DBAdaptor->new(
          -group           => "userupload",
          -species         => $species.$species_suffix,
          -species_id      => $species_id,
          -multispecies_db => 1,
          -host            => $host,
          -user            => $user,
          -pass            => $pass,
          -port            => $port,
          -dbname          => $multidb,
          -wait_timeout    => $wait_timeout,
          -no_cache        => $no_cache
        );
  
        if ($verbose) {
          printf( "Species '%s' (id:%d) loaded from database '%s'\n",
            $species, $species_id, $multidb );
        }
      }
    } ## end foreach my $multidb (@userdata_multidbs)
  }

  # Variation

  my $test_eval = eval "require Bio::EnsEMBL::Variation::DBSQL::DBAdaptor"; ## no critic
  if ($@or (!$test_eval)) {
    # Ignore variations as code required not there for this
    if ($verbose) {
      print(
           "Bio::EnsEMBL::Variation::DBSQL::DBAdaptor module not found "
             . "so variation databases will be ignored if found\n" );
    }
  } 
  else {
    my @variation_dbs =
      grep { /^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?_variation_(?:\d+_)?\d+_/ } @dbnames;

    if(! @variation_dbs && $verbose) {
      print("No variation databases found\n");
    }

    for my $variation_db (@variation_dbs) {
	
      if ( index( $variation_db, 'collection' ) != -1 ) {
	  # Skip multi-species databases.
	  next;
      }

      my ( $species, $num ) =
        ( $variation_db =~ /(^[a-z]+_[a-z0-9]+(?:_[a-z0-9]+)?)_variation_(?:\d+_)?(\d+)_/ );
      my $dba =
        Bio::EnsEMBL::Variation::DBSQL::DBAdaptor->new(
                                         -group        => "variation",
                                         -species      => $species.$species_suffix,
                                         -host         => $host,
                                         -user         => $user,
                                         -pass         => $pass,
                                         -port         => $port,
                                         -wait_timeout => $wait_timeout,
                                         -dbname       => $variation_db,
                                         -no_cache     => $no_cache );



( run in 1.917 second using v1.01-cache-2.11-cpan-b16cb0d3907 )