From ed319106538a97a7cdf4729fa823560b2c6c00f8 Mon Sep 17 00:00:00 2001
From: Marek Szuba <marek.szuba@ebi.ac.uk>
Date: Thu, 31 Oct 2019 14:24:06 +0000
Subject: [PATCH] Registry: add support for versioned ncbi_taxonomy DBs

See ENSCORESW-3253. If both a versioned and an unversioned database are
present, use the versioned one if the version number matches that of the
software.
---
 modules/Bio/EnsEMBL/Registry.pm | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/modules/Bio/EnsEMBL/Registry.pm b/modules/Bio/EnsEMBL/Registry.pm
index dc97ac3efd..2ea464296f 100644
--- a/modules/Bio/EnsEMBL/Registry.pm
+++ b/modules/Bio/EnsEMBL/Registry.pm
@@ -1742,6 +1742,7 @@ sub load_registry_from_db {
   my $ontology_version;
 
   my $taxonomy_db;
+  my $taxonomy_db_versioned;
   my $ensembl_metadata_db;
   my $ensembl_metadata_db_versioned;
 
@@ -1817,6 +1818,11 @@ sub load_registry_from_db {
       }
     } elsif ( $db =~ /^ncbi_taxonomy$/ ) {
         $taxonomy_db      = $db;
+    }
+    elsif ( $db =~ m{ \A ncbi_taxonomy_(\d+) \z }msx ) {
+      if ( $1 eq $software_version ) {
+        $taxonomy_db_versioned = $db;
+      }
     } elsif ( $db =~ /^ensembl_metadata$/ ) {
         $ensembl_metadata_db      = $db;
     }
@@ -2327,7 +2333,7 @@ sub load_registry_from_db {
 
   # Taxonomy
 
-  if ( defined $taxonomy_db) {
+  if ( ( defined $taxonomy_db ) || ( defined $taxonomy_db_versioned ) ) {
      
     my $has_taxonomy = eval {require Bio::EnsEMBL::Taxonomy::DBSQL::TaxonomyDBAdaptor};
     if($@ or (!defined $has_taxonomy)) {
@@ -2335,6 +2341,16 @@ sub load_registry_from_db {
           print "ensembl_taxonomy API not found - ignoring $taxonomy_db\n";
         }
     } else {
+
+        my $taxonomy_dbname;
+        # Versioned database has priority over unversioned one.
+        if ( defined $taxonomy_db_versioned ) {
+          $taxonomy_dbname = $taxonomy_db_versioned;
+        }
+        else {
+          $taxonomy_dbname = $taxonomy_db;
+        }
+
         my $dba = Bio::EnsEMBL::Taxonomy::DBSQL::TaxonomyDBAdaptor->new(
                                 '-species' => 'multi' . $species_suffix,
                                 '-group'   => 'taxonomy',
@@ -2342,10 +2358,10 @@ sub load_registry_from_db {
                                 '-port'    => $port,
                                 '-user'    => $user,
                                 '-pass'    => $pass,
-                                '-dbname'  => $taxonomy_db, );
+                                '-dbname'  => $taxonomy_dbname, );
 
        if ($verbose) {
-         printf( "%s loaded\n", $taxonomy_db );
+         printf( "%s loaded\n", $taxonomy_dbname );
        }
      }
   }
-- 
GitLab