From 3f964aed29b6051bc2d3c0caf76162afe3e1c88e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20Kusalananda=20K=C3=A4h=C3=A4ri?=
 <ak4@sanger.ac.uk>
Date: Thu, 8 Mar 2007 11:06:30 +0000
Subject: [PATCH] Make UniGeneParser figure out the species-specific build
 number and store it as the release.

NB:  Since the release is data source specific (not species specific),
if you're running the parsing step of the Xref code for more than one
species, only the build number for the last species will be stored as
the release of UniGene.  So, keep species separate.
---
 .../xref_mapping/XrefParser/UniGeneParser.pm  | 45 +++++++++++++++++--
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/misc-scripts/xref_mapping/XrefParser/UniGeneParser.pm b/misc-scripts/xref_mapping/XrefParser/UniGeneParser.pm
index a5dba8e832..013440a73d 100644
--- a/misc-scripts/xref_mapping/XrefParser/UniGeneParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/UniGeneParser.pm
@@ -32,14 +32,15 @@ sub run {
   my $species_id = shift;
   my $uniq_file = shift;
   my $data_file = shift;
+  my $release_file = shift;
 
-  my $unigene_source_id = XrefParser::BaseParser->get_source_id_for_source_name('UniGene');
+  my $unigene_source_id = $self->get_source_id_for_source_name('UniGene');
 
   print "UniGene source ID = $unigene_source_id.\n";
 
   if ( !defined($species_id) ) {
     $species_id =
-      XrefParser::BaseParser->get_species_id_for_filename($uniq_file);
+      $self->get_species_id_for_filename($uniq_file);
   }
 
   my $xrefs =
@@ -49,9 +50,45 @@ sub run {
   if(!defined($xrefs)){
     return 1; #error
   }
-  if(!defined(XrefParser::BaseParser->upload_xref_object_graphs($xrefs))){
+  if(!defined($self->upload_xref_object_graphs($xrefs))){
     return 1; # error
   }
+
+    if ( defined $release_file ) {
+        # Get species name from species ID.
+        my $species_name;
+
+        my $sth =
+          $self->dbi()
+          ->prepare("SELECT name FROM species WHERE species_id = ?");
+
+        $sth->execute($species_id);
+        $sth->bind_columns( \$species_name );
+        $sth->fetchrow_array();
+
+        $species_name =~ tr/_/ /;
+
+        # Parse and set release info.
+        my $release;
+        my $release_io = $self->get_filehandle($release_file);
+
+        while ( defined( my $line = $release_io->getline() ) ) {
+            if ( $line =~ /^(.*$species_name)/i ) {
+                $release = $1;
+            }
+        }
+        $release_io->close();
+
+        if ( defined $release ) {
+            $release =~ s/\s{2,}/ /g;
+            $release =~ s/^(.*) UniGene/$1, UniGene/;
+
+            print "UniGene release: '$release'\n";
+            #$self->set_release( $source_id,         $release );
+            $self->set_release( $unigene_source_id, $release );
+        }
+    }
+
   return 0; # successfull
 
 }
@@ -100,7 +137,7 @@ sub create_xrefs {
       $species_id )
     = @_;
 
-  my %name2species_id = XrefParser::BaseParser->name2species_id();
+  my %name2species_id = $self->name2species_id();
 
   if ( !defined( $self->get_desc($data_file) ) ) {
     return undef;
-- 
GitLab