From d66b8d395c4cb036a2bb0b8064ce588e01eb8de8 Mon Sep 17 00:00:00 2001
From: Ian Longden <ianl@sanger.ac.uk>
Date: Thu, 22 Sep 2011 09:50:03 +0000
Subject: [PATCH] add_xref now takes a hash instead  of a list for easy
 maintainance.

---
 .../xref_mapping/XrefParser/AnoXcelParser.pm  |  7 +-
 .../xref_mapping/XrefParser/CCDSParser.pm     |  7 +-
 .../xref_mapping/XrefParser/DBASSParser.pm    |  8 ++-
 .../xref_mapping/XrefParser/DirectParser.pm   | 12 ++--
 .../xref_mapping/XrefParser/EG_DBParser.pm    |  7 +-
 .../XrefParser/EntrezGeneParser.pm            | 16 ++++-
 .../xref_mapping/XrefParser/FlybaseParser.pm  | 44 +++++++++----
 .../xref_mapping/XrefParser/GOParser.pm       | 66 +++++++++++--------
 .../xref_mapping/XrefParser/GOSlimParser.pm   |  7 +-
 .../xref_mapping/XrefParser/HGNCParser.pm     | 23 +++++--
 .../XrefParser/HGNC_CCDSParser.pm             | 11 +++-
 .../xref_mapping/XrefParser/HPAParser.pm      |  8 ++-
 .../xref_mapping/XrefParser/IKMCParser.pm     |  7 +-
 .../xref_mapping/XrefParser/ImmunoDBParser.pm |  7 +-
 .../xref_mapping/XrefParser/MGIParser.pm      |  9 ++-
 .../XrefParser/MGI_Desc_Parser.pm             |  7 +-
 .../xref_mapping/XrefParser/MIMParser.pm      | 29 ++++++--
 .../xref_mapping/XrefParser/OTTTParser.pm     |  6 +-
 .../xref_mapping/XrefParser/PomBaseParser.pm  | 26 ++++++--
 .../xref_mapping/XrefParser/RGDParser.pm      | 16 +++--
 .../XrefParser/RefSeq_CCDSParser.pm           |  9 ++-
 .../xref_mapping/XrefParser/SGDParser.pm      | 16 ++++-
 .../xref_mapping/XrefParser/SegmentParser.pm  |  8 ++-
 .../XrefParser/UniProtDirectParser.pm         | 10 ++-
 .../XrefParser/VBCommunitySymbolParser.pm     |  7 +-
 .../XrefParser/VBExternalDescriptionParser.pm |  7 +-
 .../xref_mapping/XrefParser/VBPubMedParser.pm |  7 +-
 .../XrefParser/VBRNADescriptionParser.pm      |  7 +-
 .../XrefParser/VBribosomalParser.pm           |  7 +-
 .../xref_mapping/XrefParser/VbDirectParser.pm |  8 ++-
 .../XrefParser/VegaOfficialNameParser.pm      |  9 ++-
 .../XrefParser/WilsonAffyParser.pm            |  7 +-
 .../xref_mapping/XrefParser/WormPepParser.pm  | 12 +++-
 .../WormbaseDatabaseStableIDParser.pm         | 12 ++--
 .../xref_mapping/XrefParser/ZFINDescParser.pm |  7 +-
 .../XrefParser/curated_transcriptParser.pm    | 24 ++++++-
 .../xref_mapping/XrefParser/ncRNAParser.pm    |  7 +-
 .../xref_mapping/XrefParser/ncRNA_DBParser.pm |  7 +-
 38 files changed, 381 insertions(+), 113 deletions(-)

diff --git a/misc-scripts/xref_mapping/XrefParser/AnoXcelParser.pm b/misc-scripts/xref_mapping/XrefParser/AnoXcelParser.pm
index 8fbae67a98..5c1714b7a8 100644
--- a/misc-scripts/xref_mapping/XrefParser/AnoXcelParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/AnoXcelParser.pm
@@ -48,7 +48,12 @@ sub run {
 
     my $xref_id = $self->get_xref($gene_id,$source_id, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($gene_id,"", $gene_id, $gene_id, $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc => $gene_id,
+				   label => $gene_id,
+				   desc  =>$gene_id,
+				   source_id => $source_id,
+				   species_id =>$species_id,
+				   info_type => "DIRECT"} );
       $count++;
     }
     if(defined($gene_id) and $gene_id ne "-"){
diff --git a/misc-scripts/xref_mapping/XrefParser/CCDSParser.pm b/misc-scripts/xref_mapping/XrefParser/CCDSParser.pm
index 50ae7cc20c..fef1ae2979 100644
--- a/misc-scripts/xref_mapping/XrefParser/CCDSParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/CCDSParser.pm
@@ -83,7 +83,12 @@ SCD
 
     my $xref_id;
     if (!defined($seen{$display_label})) {
-      $xref_id = $self->add_xref($acc, $version, $display_label, "", $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $acc,
+				   version    => $version,
+				   label      => $display_label,
+				   source_id  => $source_id,
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $xref_count++;
       $seen{$display_label} = $xref_id;
     }
diff --git a/misc-scripts/xref_mapping/XrefParser/DBASSParser.pm b/misc-scripts/xref_mapping/XrefParser/DBASSParser.pm
index 323ff5d77d..2a200bf567 100644
--- a/misc-scripts/xref_mapping/XrefParser/DBASSParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/DBASSParser.pm
@@ -84,7 +84,13 @@ sub run {
         my $xref_id = $self->get_xref( $dbass_gene_id, $source_id, $species_id );
 
         if ( !defined($xref_id) || $xref_id eq '' ) {
-            $xref_id = $self->add_xref($dbass_gene_id, $version, $label, $description, $source_id, $species_id, "DIRECT");
+            $xref_id = $self->add_xref({ acc        => $dbass_gene_id,
+					 version    => $version,
+					 label      => $label,
+					 desc       => $description,
+					 source_id  => $source_id,
+					 species_id => $species_id,
+					 info_type => "DIRECT"} );
         }
 	
 	$self->add_direct_xref( $xref_id, $ensembl_id, $type, '');
diff --git a/misc-scripts/xref_mapping/XrefParser/DirectParser.pm b/misc-scripts/xref_mapping/XrefParser/DirectParser.pm
index b8f3c833a6..5d36e5607d 100644
--- a/misc-scripts/xref_mapping/XrefParser/DirectParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/DirectParser.pm
@@ -66,11 +66,13 @@ sub run {
 
     if ( !defined($xref_id) || $xref_id eq '' ) {
       $xref_id =
-	$self->add_xref(
-			$accession,   $version,   $label,
-			$description, $source_id, $species_id,
-			"DIRECT"
-		       );
+	$self->add_xref({ acc        => $accession,
+			  version    => $version,
+			  label      => $label,
+			  desc	     => $description,
+			  source_id  => $source_id,
+			  species_id => $species_id,
+			  info_type  => "DIRECT"} );
     }
     $self->add_direct_xref( $xref_id, $ensembl_id,
 					     $type, $accession );
diff --git a/misc-scripts/xref_mapping/XrefParser/EG_DBParser.pm b/misc-scripts/xref_mapping/XrefParser/EG_DBParser.pm
index c481a6b5af..473519ba04 100644
--- a/misc-scripts/xref_mapping/XrefParser/EG_DBParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/EG_DBParser.pm
@@ -91,7 +91,12 @@ SQL
     }
     my $xref_id = $self->get_xref($acc,$source{$source_name}, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($acc,"",$label,$description,$source{$source_name}, $species_id,"DIRECT");
+      $xref_id = $self->add_xref({ acc        => $acc,
+				   label      => $label,
+				   desc       => $description,
+				   source_id  => $source{$source_name},
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $added++;
     }
     my $transcript_id = $transcript_dbid;
diff --git a/misc-scripts/xref_mapping/XrefParser/EntrezGeneParser.pm b/misc-scripts/xref_mapping/XrefParser/EntrezGeneParser.pm
index f368304807..9c28c07cb6 100644
--- a/misc-scripts/xref_mapping/XrefParser/EntrezGeneParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/EntrezGeneParser.pm
@@ -94,8 +94,20 @@ sub run {
     }
     my $symbol = $arr[$gene_symbol_index];
     my $desc   = $arr[$gene_desc_index];
-    $self->add_xref($acc,"",$symbol,$desc,$source_id,$species_id, "DEPENDENT");
-    $self->add_xref($acc,"",$symbol,$desc,$wiki_source_id,$species_id, "DEPENDENT","From EntrezGene $acc");
+
+    $self->add_xref({ acc        => $acc,
+		      label      => $symbol,
+		      desc       => $desc,
+		      source_id  => $source_id,
+		      species_id => $species_id,
+		      info_type  =>"DEPENDENT"} );
+
+    $self->add_xref({ acc        => $acc,
+		      label      => $symbol,
+		      desc       => $desc,
+		      source_id  => $wiki_source_id,
+		      species_id => $species_id,
+		      info_type  => "DEPENDENT" } ); #,"From EntrezGene $acc");
     $xref_count++;
 
     my (@syn) = split(/\|/ ,$arr[$gene_synonyms_index]);
diff --git a/misc-scripts/xref_mapping/XrefParser/FlybaseParser.pm b/misc-scripts/xref_mapping/XrefParser/FlybaseParser.pm
index 1579774a74..500ba4768c 100644
--- a/misc-scripts/xref_mapping/XrefParser/FlybaseParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/FlybaseParser.pm
@@ -287,12 +287,18 @@ sub run {
               # for this source.
               if ( $dbxref_name eq 'bdgpinsituexpr' ) {
                 $xref_id =
-                  $self->add_xref( $id, undef, $accession, '',
-                                   $source_id, $species_id, 'DIRECT' );
+                  $self->add_xref({ acc        => $id,
+				    label      => $accession,
+				    source_id  => $source_id,
+				    species_id => $species_id,
+				    info_type  =>'DIRECT'} );
               } else {
                 $xref_id =
-                  $self->add_xref( $accession, undef, $accession, '',
-                                   $source_id, $species_id, 'DIRECT' );
+                  $self->add_xref({ acc        => $accession,
+				    label      => $accession,
+				    source_id  => $source_id,
+				    species_id => $species_id,
+				    info_type  => 'DIRECT'} );
               }
               $xref_ids{$source_name}{$accession} = $xref_id;
 					}
@@ -318,8 +324,11 @@ sub run {
           $xref_id = $xref_ids{$source_name}{$accession};
         } else {
           $xref_id =
-            $self->add_xref( $accession, undef, $accession, '',
-                             $source_id, $species_id ,'DIRECT');
+            $self->add_xref({ acc        => $accession,
+			      label      => $accession,
+			      source_id  => $source_id,
+			      species_id => $species_id,
+			      info_type  => 'DIRECT'} );
           $xref_ids{$source_name}{$accession} = $xref_id;
         }
 
@@ -343,8 +352,11 @@ sub run {
           $xref_id = $xref_ids{$source_name}{$accession};
         } else {
           $xref_id =
-            $self->add_xref( $accession, undef, $accession, '',
-                             $source_id, $species_id, 'DIRECT' );
+            $self->add_xref({ acc        => $accession,
+			      label      => $accession,
+			      source_id  => $source_id,
+			      species_id => $species_id,
+			      info_type  => 'DIRECT'} );
           $xref_ids{$source_name}{$accession} = $xref_id;
         }
 
@@ -371,8 +383,13 @@ sub run {
         $xref_id = $xref_ids{$source_name}{$accession};
       } else {
         $xref_id =
-          $self->add_xref( $id, undef, $accession, $description, $source_id,
-                           $species_id, 'DIRECT' );
+          $self->add_xref({ acc =>  $id,
+			    label => $accession,
+			    desc => $description,
+			    source_id => $source_id,
+			    species_id => $species_id,
+			    info_type => 'DIRECT'} );
+
         $xref_ids{$source_name}{$accession} = $xref_id;
       }
 
@@ -394,8 +411,11 @@ sub run {
         $xref_id = $xref_ids{$source_name}{$accession};
       } else {
         $xref_id =
-          $self->add_xref( $accession, undef, $accession, '',
-                           $source_id, $species_id, 'DIRECT' );
+          $self->add_xref({ acc        => $accession,
+			    label      => $accession,
+			    source_id  => $source_id,
+			    species_id => $species_id,
+			    onfo_type  => 'DIRECT'} );
         $xref_ids{$source_name}{$accession} = $xref_id;
       }
 
diff --git a/misc-scripts/xref_mapping/XrefParser/GOParser.pm b/misc-scripts/xref_mapping/XrefParser/GOParser.pm
index a2e6f9a73a..a82cfd978a 100644
--- a/misc-scripts/xref_mapping/XrefParser/GOParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/GOParser.pm
@@ -29,36 +29,38 @@ sub run {
   # Get the descriptions from the desc file.
   #
 
-  my $go_desc_io = $self->get_filehandle($file_desc);
-
-  if ( !defined $go_desc_io ) {
-    print STDERR "ERROR: Could not open description file, $file_desc\n";
-    return 1;    # 1 error
-  }
-
   my %go_to_desc;
-  print "description file for GO\n" if($verbose);
-  my $term = undef;
-  my $desc = undef;
-  while ( $_ = $go_desc_io->getline() ) {
-    if(/\<id\>   # start of id tag
-       (GO:\d+)  # GO: followed by the id
-       \<\/id\>  # end of id tag
-       /x){
-      $term = $1;
+  if($file_desc){
+    my $go_desc_io = $self->get_filehandle($file_desc);
+
+    if ( !defined $go_desc_io ) {
+      print STDERR "ERROR: Could not open description file, $file_desc\n";
+      return 1;    # 1 error
     }
-    elsif(/\<name\>   # start of name tag
-	   (.*)       # the name we want
-	   \<\/name\> # end of name tag
-	   /x){
-      if(defined($term)){
-        $go_to_desc{$term} = $1;
-      } 
-      $term = undef;
+
+
+    print "description file for GO\n" if($verbose);
+    my $term = undef;
+    my $desc = undef;
+    while ( $_ = $go_desc_io->getline() ) {
+      if(/\<id\>   # start of id tag
+	  (GO:\d+)  # GO: followed by the id
+	  \<\/id\>  # end of id tag
+	  /x){
+	$term = $1;
+      }
+      elsif(/\<name\>   # start of name tag
+	     (.*)       # the name we want
+	     \<\/name\> # end of name tag
+	     /x){
+	if(defined($term)){
+	  $go_to_desc{$term} = $1;
+	} 
+	$term = undef;
+      }
     }
+    $go_desc_io->close();
   }
-  $go_desc_io->close();
-
 
   my %wrongtype;
 
@@ -81,6 +83,7 @@ sub run {
 
   my %worm;
   my $wormset;
+  my $worm_separator;
 
   my %fish;
   my $fishset;
@@ -163,7 +166,8 @@ sub run {
 	#WB      CE20707 ZYG-9           GO:0008017      WB:WBPaper00003099|PMID:9606208 ISS             F                       protein  taxon:6239      20030829        WB
 	if(!defined($wormset)){
 	  $wormset = 1;
-	  %worm = %{$self->get_valid_xrefs_for_direct_xrefs('worm')};
+	  $worm_separator = qw{::};
+	  %worm = %{$self->get_valid_xrefs_for_direct_xrefs('worm', $worm_separator)};
 	}
 	my $worm_acc=$array[1];
 	if(!defined($worm{$worm_acc})){ 
@@ -176,13 +180,17 @@ sub run {
 	}
 	
 	if(defined($worm{$worm_acc})){
-	  my ($xref_id, $stable_id, $type, $link) = split(/::/x,$worm{$worm_acc});
+	  my ($xref_id, $stable_id, $type, $link) = split(/$worm_separator/x,$worm{$worm_acc});
 
 	  my $new_xref_id = $self->get_xref($array[4],$source_id, $species_id);
 
 	  if(!defined($new_xref_id)){
 	    $new_xref_id = 
-	      $self->add_xref($array[4],undef,$array[4],"", $source_id, $species_id, "DIRECT");
+	      $self->add_xref({ acc        => $array[4],
+				label      => $array[4],
+				source_id  => $source_id,
+				species_id => $species_id,
+				info_type  => "DIRECT"} );
 	    $count++;
 	  }
 	  if(!defined($self->get_direct_xref($stable_id,$type, $array[6]))){
diff --git a/misc-scripts/xref_mapping/XrefParser/GOSlimParser.pm b/misc-scripts/xref_mapping/XrefParser/GOSlimParser.pm
index 9d707f7793..1b65d880ec 100644
--- a/misc-scripts/xref_mapping/XrefParser/GOSlimParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/GOSlimParser.pm
@@ -83,7 +83,12 @@ sub run_script {
 
     if(defined($go{$term_acc})){
       foreach my $go_xref_id (@{$go{$term_acc}}) {
-	my $xref_id = $self->add_xref($subterm_acc, undef, $subterm_acc, $desc, $source_id, $species_id, "DEPENDENT");
+	my $xref_id = $self->add_xref({ acc        => $subterm_acc,
+					label      => $subterm_acc,
+					desc       => $desc,
+					source_id  => $source_id,
+					species_id => $species_id,
+					info_type  => "DEPENDENT"} );
 	$add_dependent_xref_sth->execute($go_xref_id, $xref_id);
 	$count++;
       }
diff --git a/misc-scripts/xref_mapping/XrefParser/HGNCParser.pm b/misc-scripts/xref_mapping/XrefParser/HGNCParser.pm
index a5deeee434..809eec03fa 100644
--- a/misc-scripts/xref_mapping/XrefParser/HGNCParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/HGNCParser.pm
@@ -68,13 +68,13 @@ sub run {
 				   label       => $symbol,
 				   desc        => $name,
 				   source_id   => $source_id,
-				   species_id  => $species_id});
+				   species_id  => $species_id} );
 
       $self->add_synonyms_for_hgnc( {source_id  => $source_id,
 				     name       => $acc,
 				     species_id => $species_id,
 				     dead       => $previous_symbols,
-				     alias      => $synonyms});
+				     alias      => $synonyms} );
       $name_count{$type}++;
     }
 
@@ -88,9 +88,14 @@ sub run {
     if ($id){              # Ensembl direct xref
       $seen = 1;
       $name_count{$type}++;
-      $self->add_to_direct_xrefs($id,'gene', $acc, $empty,
-						  $symbol, $name, $empty,
-						  $source_id, $species_id);
+      $self->add_to_direct_xrefs({ stable_id  => $id,
+				   type       => 'gene',
+				   acc        => $acc,
+				   label      => $symbol,
+				   desc       => $name,,
+				   source_id  => $source_id,
+				   species_id => $species_id} );
+
       $self->add_synonyms_for_hgnc( {source_id  => $source_id,
 				     name       => $acc,
 				     species_id => $species_id,
@@ -182,7 +187,13 @@ sub run {
     if(!$seen){ # Store to keep descriptions etc
       $type = 'desc_only';
       $source_id = $name_to_source_id->{$type};
-      $self->add_xref($acc, $empty, $symbol, $name, $source_id, $species_id, "MISC");
+      $self->add_xref({ acc        => $acc,
+			label      => $symbol,
+			desc       => $name,
+			source_id  => $source_id,
+			species_id => $species_id,
+			info_type  => "MISC"} );
+
       $self->add_synonyms_for_hgnc( {source_id  => $source_id,
 				     name       => $acc,
 				     species_id => $species_id,
diff --git a/misc-scripts/xref_mapping/XrefParser/HGNC_CCDSParser.pm b/misc-scripts/xref_mapping/XrefParser/HGNC_CCDSParser.pm
index 1a0eb76194..71f4c34eb2 100644
--- a/misc-scripts/xref_mapping/XrefParser/HGNC_CCDSParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/HGNC_CCDSParser.pm
@@ -162,7 +162,7 @@ SQL
     }
   }
   $sth->finish;
- 
+
   my $xref_count = 0;
   my $no_ccds_to_hgnc = 0;
   my $direct_count = 0;
@@ -170,8 +170,13 @@ SQL
     if(defined($ccds_to_hgnc{$ccds})){
       my $hgnc = $ccds_to_hgnc{$ccds};
       $hgnc =~ s/HGNC://;
-      my $xref_id = $self->add_xref($hgnc, $version{$hgnc} , $label{$hgnc}||$hgnc , 
-				      $description{$hgnc}, $source_id, $species_id, "DIRECT");
+      my $xref_id = $self->add_xref({ acc        => $hgnc,
+				      version    => $version{$hgnc} ,
+				      label      => $label{$hgnc}||$hgnc ,
+				      desc       => $description{$hgnc},
+				      source_id  => $source_id,
+				      species_id => $species_id,
+				      info_type  => "DIRECT"} );
 
       foreach my $stable_id (@{$ccds_to_stable_id{$ccds}}){
 	$self->add_direct_xref($xref_id, $stable_id, "Transcript", "");
diff --git a/misc-scripts/xref_mapping/XrefParser/HPAParser.pm b/misc-scripts/xref_mapping/XrefParser/HPAParser.pm
index 468a261c78..1035f966ff 100644
--- a/misc-scripts/xref_mapping/XrefParser/HPAParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/HPAParser.pm
@@ -62,7 +62,13 @@ sub run {
     my $xref_id = $self->get_xref( $antibody_id, $source_id, $species_id );
 
     if ( !defined($xref_id) || $xref_id eq '' ) {
-      $xref_id = $self->add_xref($antibody_id, $version, $label, $description, $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $antibody_id,
+				   version    => $version,
+				   label      => $label,
+				   desc       => $description,
+				   source_id  => $source_id,
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
     }
 	
 	
diff --git a/misc-scripts/xref_mapping/XrefParser/IKMCParser.pm b/misc-scripts/xref_mapping/XrefParser/IKMCParser.pm
index 57854529f8..e400183bda 100644
--- a/misc-scripts/xref_mapping/XrefParser/IKMCParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/IKMCParser.pm
@@ -176,8 +176,11 @@ XXML
 
     if ( !defined($xref_id) || $xref_id eq '' ) {
       $xref_id =
-	$self->add_xref( $acc,   undef,   $label,
-			 '', $source_id, $species_id, "DIRECT");
+	$self->add_xref({ acc        => $acc,
+			  label      => $label,
+			  source_id  => $source_id,
+			  species_id => $species_id,
+			  info_type  => "DIRECT"} );
     }
     next if(!defined($ensembl_ids{$acc}));
     $direct_count++;
diff --git a/misc-scripts/xref_mapping/XrefParser/ImmunoDBParser.pm b/misc-scripts/xref_mapping/XrefParser/ImmunoDBParser.pm
index 395e4bfafc..8cdbfbd276 100644
--- a/misc-scripts/xref_mapping/XrefParser/ImmunoDBParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/ImmunoDBParser.pm
@@ -45,7 +45,12 @@ sub run {
     my $xref_id = $self->get_xref($acc,$source_id, $species_id);
 
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($acc,"", $acc, $full_description, $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $acc,
+				   label      => $acc,
+				   desc       => $full_description,
+				   source_id  => $source_id,
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $count++;
     }
     if(defined($gene_id) and $gene_id ne "-"){
diff --git a/misc-scripts/xref_mapping/XrefParser/MGIParser.pm b/misc-scripts/xref_mapping/XrefParser/MGIParser.pm
index 16e2b9b433..799ec49f72 100644
--- a/misc-scripts/xref_mapping/XrefParser/MGIParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/MGIParser.pm
@@ -77,7 +77,14 @@ sub run {
     if($line =~ /(MGI:\d+).*(ENSMUSG\d+)/){
       my $acc = $1;
       my $ensid = $2;
-      my $xref_id = $self->add_xref($acc, $version{$acc}, $label{$acc}, $description{$acc}, $source_id, $species_id, "DIRECT");
+      my $xref_id = $self->add_xref({ acc        => $acc,
+				      version    => $version{$acc},
+				      label      => $label{$acc},
+				      desc       => $description{$acc},
+				      source_id  => $source_id,
+				      species_id => $species_id,
+				      info_type  => "DIRECT"} );
+
       $self->add_direct_xref( $xref_id, $ensid, "Gene", '');
       if(defined($syn_hash->{$acc})){
 	foreach my $syn (@{$syn_hash->{$acc}}){
diff --git a/misc-scripts/xref_mapping/XrefParser/MGI_Desc_Parser.pm b/misc-scripts/xref_mapping/XrefParser/MGI_Desc_Parser.pm
index d6cc51473a..6bbe61b38b 100644
--- a/misc-scripts/xref_mapping/XrefParser/MGI_Desc_Parser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/MGI_Desc_Parser.pm
@@ -48,7 +48,12 @@ sub run {
     
       my $type = pop @part_desc; # last array element is the type.
       my $desc= join(" ",@part_desc);
-      $acc_to_xref{$acc} = $self->add_xref($acc,"",$label,$desc,$source_id,$species_id,"MISC");
+      $acc_to_xref{$acc} = $self->add_xref({ acc        => $acc,
+					     label      => $label,
+					     desc       => $desc,
+					     source_id  => $source_id,
+					     species_id => $species_id,
+					     info_type  => "MISC"} );
       if($verbose and $desc eq ""){
 	print "$acc has no description\n";
       }
diff --git a/misc-scripts/xref_mapping/XrefParser/MIMParser.pm b/misc-scripts/xref_mapping/XrefParser/MIMParser.pm
index bb81216479..4abdf23d80 100644
--- a/misc-scripts/xref_mapping/XrefParser/MIMParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/MIMParser.pm
@@ -72,17 +72,38 @@ sub run {
 	$label = substr($label,0,35)." [".$type."]";
 	if($type eq "*"){ # gene only
 	  $gene++;
-	  $self->add_xref($number,"",$label,$long_desc,$gene_source_id,$species_id,"DEPENDENT");
+	  $self->add_xref({ acc        => $number,
+			    label      => $label,
+			    desc       => $long_desc,
+			    source_id  => $gene_source_id,
+			    species_id => $species_id,
+			    info_type  => "DEPENDENT"} );
 	}
 	elsif((!defined $type) or ($type eq "") or ($type eq "#") or ($type eq "%")){ #phenotype only
 	  $phenotype++;
-	  $self->add_xref($number,"",$label,$long_desc,$morbid_source_id,$species_id,"DEPENDENT");
+	  $self->add_xref({ acc        => $number,
+			    label      => $label,
+			    desc       => $long_desc,
+			    source_id  => $morbid_source_id,
+			    species_id => $species_id,
+			    info_type  => "DEPENDENT"} );
 	}
 	elsif($type eq "+"){ # both
 	  $gene++;
  	  $phenotype++;
-	  $self->add_xref($number,"",$label,$long_desc,$gene_source_id,$species_id,"DEPENDENT");
-	  $self->add_xref($number,"",$label,$long_desc,$morbid_source_id,$species_id,"DEPENDENT");
+	  $self->add_xref({ acc        => $number,
+			    label      => $label,
+			    desc       => $long_desc,
+			    source_id  => $gene_source_id,
+			    species_id => $species_id,
+			    info_type  => "DEPENDENT"} );
+
+	  $self->add_xref({ acc        => $number,
+			    label      => $label,
+			    desc       => $long_desc,
+			    source_id  => $morbid_source_id,
+			    species_id => $species_id,
+			    info_type  => "DEPENDENT"} );
 	}
 	elsif($type eq "^"){
 	  if(/\*FIELD\*\sTI\n[\^]\d+ MOVED TO (\d+)/){
diff --git a/misc-scripts/xref_mapping/XrefParser/OTTTParser.pm b/misc-scripts/xref_mapping/XrefParser/OTTTParser.pm
index 68754cab95..923f22e8ff 100644
--- a/misc-scripts/xref_mapping/XrefParser/OTTTParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/OTTTParser.pm
@@ -82,7 +82,11 @@ SQL
 
   my $xref_count = 0;
   foreach my $ott (keys %ott_to_enst){
-    my $xref_id = $self->add_xref($ott, "" , $ott , "", $source_id, $species_id, "DIRECT");
+    my $xref_id = $self->add_xref({ acc        => $ott,
+				    label      => $ott,
+				    source_id  => $source_id,
+				    species_id => $species_id,
+				    info_type  => "DIRECT"} );
     $xref_count++;
     $self->add_direct_xref($xref_id, $ott_to_enst{$ott}, "transcript", "");
   }
diff --git a/misc-scripts/xref_mapping/XrefParser/PomBaseParser.pm b/misc-scripts/xref_mapping/XrefParser/PomBaseParser.pm
index f4952b45a6..5b5c232ca6 100644
--- a/misc-scripts/xref_mapping/XrefParser/PomBaseParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/PomBaseParser.pm
@@ -44,10 +44,10 @@ sub run {
     chomp;
 
     if ($_ =~ /^([^\t]+)\t([^\t]+)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)$/) {
-	    
+
 	    my @line = split(m/\t/ms, $_);
 	    my ($pombase_id, $name, $info_type, $biotype, $external_db_source, $desc, $ensembl_object_type, $synonyms) = undef;
-	    
+
 	    $pombase_id          = $line[0];
 	    $name                = $line[1];
 	    $info_type           = $line[2];
@@ -55,22 +55,34 @@ sub run {
             $external_db_source  = $line[4];
 	    $desc                = $line[5];
 	    $ensembl_object_type = $line[6];
-	    
+
 	    if (scalar @line == 8) {
 	        $synonyms = $line[7];
 	    }
 	    # parse the lines corresponding to the gene entries
 	    # and filter out lines corresponding to the CDS for example
-	   
+
             #print "$ensembl_object_type\n"; 
 	    if ($ensembl_object_type eq 'Gene') {
-	        my $ensembl_xref_id = $self->add_xref($pombase_id,"",$name,$desc,$gene_source_id,$species_id,$info_type);
+	        my $ensembl_xref_id = $self->add_xref({ acc        => $pombase_id,
+							label      => $name,
+							desc       => $desc,
+							source_id  => $gene_source_id,
+							species_id => $species_id,
+							info_type  => $info_type} );
+
 	        $self->add_direct_xref($ensembl_xref_id, $pombase_id, $ensembl_object_type, $info_type);
 	    } elsif ($ensembl_object_type eq 'Transcript') {
-	        my $ensembl_xref_id = $self->add_xref($pombase_id,"",$name,$desc,$transcript_source_id,$species_id,$info_type);
+	        my $ensembl_xref_id = $self->add_xref({ acc        => $pombase_id,
+							label      => $name,
+							desc       => $desc,
+							source_id  => $transcript_source_id,
+							species_id => $species_id,
+							info_type  => $info_type} );
+
 	        $self->add_direct_xref($ensembl_xref_id, $pombase_id, $ensembl_object_type, $info_type);
 	    }
-	    
+
 	    $xref_count++;
 	    if ($synonyms) {
 	   	 my (@syn) = split(/,/,$synonyms);
diff --git a/misc-scripts/xref_mapping/XrefParser/RGDParser.pm b/misc-scripts/xref_mapping/XrefParser/RGDParser.pm
index c156d872a9..05a3ffd5b4 100644
--- a/misc-scripts/xref_mapping/XrefParser/RGDParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/RGDParser.pm
@@ -103,8 +103,12 @@ sub run {
     }
 
     if(!$done){
-#      print STDERR "$rgd FAILED for $failed_list\n";
-      $self->add_xref($rgd,"",$symbol,$name,$source_id,$species_id,"MISC");
+      $self->add_xref({ acc        => $rgd,
+			label      => $symbol,
+			desc       => $name,
+			source_id  => $source_id,
+			species_id => $species_id,
+			info_type  => "MISC"} );
       $mismatch++;
     }
 
@@ -112,9 +116,11 @@ sub run {
 
   $rgd_io->close();
 
-  print "\t$count xrefs succesfully loaded and dependent on refseq\n" if($verbose);
-  print "\t$mismatch xrefs added but with NO dependencies\n" if($verbose);
-  print "added $syn_count synonyms\n" if($verbose);
+  if($verbose){
+    print "\t$count xrefs succesfully loaded and dependent on refseq\n";
+    print "\t$mismatch xrefs added but with NO dependencies\n";
+    print "added $syn_count synonyms\n";
+  }
   return 0;
 }
 
diff --git a/misc-scripts/xref_mapping/XrefParser/RefSeq_CCDSParser.pm b/misc-scripts/xref_mapping/XrefParser/RefSeq_CCDSParser.pm
index 504029d8ee..6b527baf95 100644
--- a/misc-scripts/xref_mapping/XrefParser/RefSeq_CCDSParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/RefSeq_CCDSParser.pm
@@ -190,8 +190,13 @@ CCDS
 #      if($refseq =~ /^XM/){
 #	$new_source_id = $dna_pred;
 #      }
-      my $xref_id = $self->add_xref($refseq, $version{$refseq} , $label{$refseq}||$refseq , 
-				    $description{$refseq}, $new_source_id, $species_id, "DIRECT");
+      my $xref_id = $self->add_xref({ acc        => $refseq,
+				      version    => $version{$refseq} ,
+				      label      => $label{$refseq}||$refseq ,
+				      desc       => $description{$refseq},
+				      source_id  => $new_source_id,
+				      species_id => $species_id,
+				      info_type  => "DIRECT"} );
 
 
       foreach my $stable_id (@{$internal_to_stable_id{$internal_id}}){
diff --git a/misc-scripts/xref_mapping/XrefParser/SGDParser.pm b/misc-scripts/xref_mapping/XrefParser/SGDParser.pm
index ab9381f247..bdf2498a87 100644
--- a/misc-scripts/xref_mapping/XrefParser/SGDParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/SGDParser.pm
@@ -72,10 +72,22 @@ sub run {
 	    
 	    my (@syn) = split(/\|/,$alias_name);
 
-	    my $gene_xref_id = $self->add_xref($sgd_id,"",$locus_name,$desc,$gene_source_id,$species_id,"DIRECT");
+	    my $gene_xref_id = $self->add_xref({ acc        => $sgd_id,
+						 label      => $locus_name,
+						 desc       => $desc,
+						 source_id  => $gene_source_id,
+						 species_id => $species_id,
+						 info_type  => "DIRECT"} );
+
 	    $self->add_direct_xref($gene_xref_id, $orf_name, "Gene", "DIRECT");
 
-	    my $transcript_xref_id = $self->add_xref($sgd_id,"",$locus_name,$desc,$transcript_source_id,$species_id,"DIRECT");
+	    my $transcript_xref_id = $self->add_xref({ acc        => $sgd_id,
+						       label      => $locus_name,
+						       desc       => $desc,
+						       source_id  => $transcript_source_id,
+						       species_id => $species_id,
+						       info_type  => "DIRECT"} );
+
 	    $self->add_direct_xref($transcript_xref_id, $orf_name, "Transcript", "DIRECT");
 
 	    $xref_count++;
diff --git a/misc-scripts/xref_mapping/XrefParser/SegmentParser.pm b/misc-scripts/xref_mapping/XrefParser/SegmentParser.pm
index 5626c68843..bfd34822f2 100644
--- a/misc-scripts/xref_mapping/XrefParser/SegmentParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/SegmentParser.pm
@@ -37,10 +37,14 @@ sub run {
 
     my $xref_id = $self->get_xref($acc,$source_id, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($acc,"",$acc,$description,$source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $acc,
+				   label      => $acc,
+				   desc       => $description,
+				   source_id  => $source_id, 
+				   species_id => $species_id, 
+				   info_type  => "DIRECT"} );
       $added++;
     }
-#    print "$acc, $xref_id, $gene_id\n";
     $self->add_direct_xref($xref_id, $gene_id, "Gene", "");
 
   }
diff --git a/misc-scripts/xref_mapping/XrefParser/UniProtDirectParser.pm b/misc-scripts/xref_mapping/XrefParser/UniProtDirectParser.pm
index 830f923aee..a5892c6fd3 100644
--- a/misc-scripts/xref_mapping/XrefParser/UniProtDirectParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/UniProtDirectParser.pm
@@ -85,7 +85,7 @@ sub run {
     $get_desc_sth->bind_columns(\$old_xref_id, \$version, \$label, \$description);
     $get_desc_sth->fetch;
     if(!defined($old_xref_id)){
-      print STDERR "Could not find $key in the database\n" if ($err_count <10);
+      print "Could not find $key in the database\n" if ($err_count <10);
       $err_count++;
       next;
     }
@@ -109,7 +109,13 @@ sub run {
     # Add the new xref
     #
 
-    my $xref_id = $self->add_xref($key, $version, $label, $description, $source_id, $species_id, "DIRECT");
+    my $xref_id = $self->add_xref({ acc        => $key,
+				    version    => $version,
+				    label      => $label,
+				    desc       => $description,
+				    source_id  => $source_id,
+				    species_id => $species_id,
+				    info_type  => "DIRECT"} );
 
 
     #
diff --git a/misc-scripts/xref_mapping/XrefParser/VBCommunitySymbolParser.pm b/misc-scripts/xref_mapping/XrefParser/VBCommunitySymbolParser.pm
index bef422f699..a161e6cf82 100644
--- a/misc-scripts/xref_mapping/XrefParser/VBCommunitySymbolParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/VBCommunitySymbolParser.pm
@@ -43,7 +43,12 @@ sub run {
 
     my $xref_id = $self->get_xref($acc,$source_id, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($acc,"", $acc, $full_description, $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $acc,
+				   label      => $acc,
+				   desc       => $full_description,
+				   source_id  => $source_id,
+				   species_id => $species_id,
+				   info_type  =>  "DIRECT"} );
       $count++;
     }
     if(defined($gene_id) and $gene_id ne "-"){
diff --git a/misc-scripts/xref_mapping/XrefParser/VBExternalDescriptionParser.pm b/misc-scripts/xref_mapping/XrefParser/VBExternalDescriptionParser.pm
index f58add18eb..d4d6db1672 100644
--- a/misc-scripts/xref_mapping/XrefParser/VBExternalDescriptionParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/VBExternalDescriptionParser.pm
@@ -47,7 +47,12 @@ sub run {
 
     my $xref_id = $self->get_xref($gene_id,$source_id, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($gene_id,"", $gene_id, $description, $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $gene_id,
+				   label      => $gene_id,
+				   desc       => $description,
+				   source_id  => $source_id,
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $count++;
     }
     if(defined($gene_id) and $gene_id ne "-"){
diff --git a/misc-scripts/xref_mapping/XrefParser/VBPubMedParser.pm b/misc-scripts/xref_mapping/XrefParser/VBPubMedParser.pm
index 00c6243423..892cddd392 100644
--- a/misc-scripts/xref_mapping/XrefParser/VBPubMedParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/VBPubMedParser.pm
@@ -50,7 +50,12 @@ sub run {
 
       my $xref_id = $self->get_xref($gene_id,$source_id, $species_id);
       if(!defined($xref_id)){
-	$xref_id = $self->add_xref($gene_id,"", $gene_id, $descr_full, $source_id, $species_id, "DIRECT");
+	$xref_id = $self->add_xref({ acc        => $gene_id,
+				     label      => $gene_id,
+				     desc       => $descr_full,
+				     source_id  => $source_id,
+				     species_id => $species_id,
+				     info_type  => "DIRECT"} );
 	$count++;
       }
       if(defined($gene_id) and $gene_id ne "-"){
diff --git a/misc-scripts/xref_mapping/XrefParser/VBRNADescriptionParser.pm b/misc-scripts/xref_mapping/XrefParser/VBRNADescriptionParser.pm
index c2d8c4320b..a7f4969584 100644
--- a/misc-scripts/xref_mapping/XrefParser/VBRNADescriptionParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/VBRNADescriptionParser.pm
@@ -47,7 +47,12 @@ sub run {
 
     my $xref_id = $self->get_xref($gene_id,$source_id, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($gene_id,"", $gene_id, $description, $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $gene_id,
+				   label      => $gene_id,
+				   desc       => $description,
+				   source_id  => $source_id,
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $count++;
     }
     if(defined($gene_id) and $gene_id ne "-"){
diff --git a/misc-scripts/xref_mapping/XrefParser/VBribosomalParser.pm b/misc-scripts/xref_mapping/XrefParser/VBribosomalParser.pm
index c632177deb..324955c14f 100644
--- a/misc-scripts/xref_mapping/XrefParser/VBribosomalParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/VBribosomalParser.pm
@@ -49,7 +49,12 @@ sub run {
 
       my $xref_id = $self->get_xref($gene_id,$source_id, $species_id);
       if(!defined($xref_id)){
-	$xref_id = $self->add_xref($gene_id,"", $gene_id, $descr_full, $source_id, $species_id, "DIRECT");
+	$xref_id = $self->add_xref({ acc        => $gene_id,
+				     label      => $gene_id,
+				     desc       => $descr_full,
+				     source_id  => $source_id,
+				     species_id => $species_id,
+				     info_type  => "DIRECT"} );
 	$count++;
       }
       if(defined($gene_id) and $gene_id ne "-"){
diff --git a/misc-scripts/xref_mapping/XrefParser/VbDirectParser.pm b/misc-scripts/xref_mapping/XrefParser/VbDirectParser.pm
index 35e9daba31..0859e50820 100644
--- a/misc-scripts/xref_mapping/XrefParser/VbDirectParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/VbDirectParser.pm
@@ -41,7 +41,13 @@ sub run {
 
     my $xref_id = $self->get_xref($probe, $source_id, $species_id);
     if (!defined($xref_id) || $xref_id eq "") {
-      $xref_id = $self->add_xref($probe, 1, $probe, $description, $source_id, $species_id, "DIRECT");
+      $xref_id = $self->add_xref({ acc        => $probe,
+				   version    => 1,
+				   label      => $probe,
+				   desc       => $description,
+				   source_id  => $source_id,
+				   species_id => $species_id,
+				   info_type  =>"DIRECT"} );
     }
     $self->add_direct_xref($xref_id, $ensembl_id, $type, $probe);
   }
diff --git a/misc-scripts/xref_mapping/XrefParser/VegaOfficialNameParser.pm b/misc-scripts/xref_mapping/XrefParser/VegaOfficialNameParser.pm
index 6817d31796..00d771f1d7 100644
--- a/misc-scripts/xref_mapping/XrefParser/VegaOfficialNameParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/VegaOfficialNameParser.pm
@@ -289,7 +289,14 @@ EXT
       my $version ="";
       $line_count++;
       if(!defined($acc{$ext})){
-	my $xref_id = $self->add_xref($ext, $version{$ext} , $label{$ext}||$ext , $description{$ext}, $source_id, $species_id, "DIRECT");
+	my $xref_id = $self->add_xref({ acc        => $ext,
+					version    => $version{$ext} ,
+					label      => $label{$ext}||$ext ,
+					desc       => $description{$ext},
+					source_id  => $source_id,
+					species_id => $species_id,
+					info_type  => "DIRECT"} );
+
 	$acc{$ext} = $xref_id;
 	$xref_count++;
 	if ((defined($xref_id)) and ($at_least_1_xref_loaded == 0)){
diff --git a/misc-scripts/xref_mapping/XrefParser/WilsonAffyParser.pm b/misc-scripts/xref_mapping/XrefParser/WilsonAffyParser.pm
index c070987278..bb3634efef 100644
--- a/misc-scripts/xref_mapping/XrefParser/WilsonAffyParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/WilsonAffyParser.pm
@@ -74,7 +74,12 @@ sub create_xrefs {
 
       # add xref - not we're assuming it doesn't already exist;
       # may need to check like in CCDS parser
-      my $xref_id = $self->add_xref($acc, 0, $acc, "$target direct mapping", $source_id, $species_id);
+      my $xref_id = $self->add_xref({ acc => $acc,
+				      version => 0,
+				      label => $acc,
+				      desc => "$target direct mapping",
+				      source_id => $source_id,
+				      species_id => $species_id} );
       $self->add_direct_xref($xref_id, $target, "transcript", "");
       $direct++;
 
diff --git a/misc-scripts/xref_mapping/XrefParser/WormPepParser.pm b/misc-scripts/xref_mapping/XrefParser/WormPepParser.pm
index 2195efc853..0e04dfc0bd 100644
--- a/misc-scripts/xref_mapping/XrefParser/WormPepParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/WormPepParser.pm
@@ -54,7 +54,11 @@ sub run {
     $xref_sth->execute($wb);
     my $xref_id = ($xref_sth->fetchrow_array())[0];
     if (!$xref_id) {
-      $xref_id = $self->add_xref($wb, undef, $wb, "", $worm_source_id, $species_id);
+      $xref_id = $self->add_xref({ acc        => $wb,
+				   label      => $wb,
+				   source_id  => $worm_source_id,
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $x_count++;
     }
     # and direct xref
@@ -65,7 +69,11 @@ sub run {
       $xref_sth2->execute($display);
       my $xref_id2 = ($xref_sth2->fetchrow_array())[0];
       if (!$xref_id2) {
-	$xref_id2 = $self->add_xref($display, undef, $display, "", $worm_locus_id, $species_id);
+	$xref_id2 = $self->add_xref({ acc        => $display,
+				      label      => $display,
+				      source_id  => $worm_locus_id,
+				      species_id => $species_id,
+				      info_type  => "DIRECT" });
 	$x_count++;
       }
       # and direct xref
diff --git a/misc-scripts/xref_mapping/XrefParser/WormbaseDatabaseStableIDParser.pm b/misc-scripts/xref_mapping/XrefParser/WormbaseDatabaseStableIDParser.pm
index ea36878a96..125cec3fe3 100644
--- a/misc-scripts/xref_mapping/XrefParser/WormbaseDatabaseStableIDParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/WormbaseDatabaseStableIDParser.pm
@@ -12,7 +12,8 @@ use base qw( XrefParser::DatabaseParser );
 
 sub run {
   my ($self, $ref_arg) = @_;
-  my $source_id    = $ref_arg->{source_id};
+
+  my $source_id    = $ref_arg->{source_id} || confess "Need a source_id";
   my $species_id   = $ref_arg->{species_id};
   my $dsn          = $ref_arg->{dsn};
   my $verbose      = $ref_arg->{verbose};
@@ -26,12 +27,15 @@ sub run {
   my $xref_db = $self->dbi();
 
   my $xref_sth = $xref_db->prepare( "INSERT INTO xref (accession,label,source_id,species_id) VALUES (?,?,?,?)" );
-  my $direct_xref_sth = $xref_db->prepare( "INSERT INTO direct_xref (general_xref_id,ensembl_stable_id,type,linkage_xref) VALUES (?,?,?,?)" );
+
 
   # read stable IDs
   foreach my $type ('gene', 'transcript') {
 
-    print "Building xrefs from $type stable IDs\n" if($verbose);
+    my $direct_xref_sth = $xref_db->prepare( "INSERT INTO ${type}_direct_xref (general_xref_id,ensembl_stable_id,linkage_xref) VALUES (?,?,?)" );
+    if($verbose) { 
+      print "Building xrefs from $type stable IDs\n";
+    }
 
     my $wb_source_id = $self->get_source_id_for_source_name("wormbase_$type");
 
@@ -44,7 +48,7 @@ sub run {
       # add an xref & a direct xref
       $xref_sth->execute($id, $id, $wb_source_id, $species_id);
       my $xref_id = $xref_sth->{'mysql_insertid'};
-      $direct_xref_sth->execute($xref_id, $id, $type, "Stable ID direct xref");
+      $direct_xref_sth->execute($xref_id, $id, 'Stable ID direct xref');
 
     } # while fetch stable ID
 
diff --git a/misc-scripts/xref_mapping/XrefParser/ZFINDescParser.pm b/misc-scripts/xref_mapping/XrefParser/ZFINDescParser.pm
index 8f57043f68..da6847815a 100644
--- a/misc-scripts/xref_mapping/XrefParser/ZFINDescParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/ZFINDescParser.pm
@@ -42,7 +42,12 @@ sub run {
       $withdrawn++;
     }
     else{
-      $self->add_xref($zfin,"",$label,$desc,$source_id,$species_id,"MISC");
+      $self->add_xref({ acc        => $zfin,
+			label      => $label,
+			desc       => $desc,
+			source_id  => $source_id,
+			species_id => $species_id,
+			info_type  => "MISC"} );
       $count++;
     }
   }
diff --git a/misc-scripts/xref_mapping/XrefParser/curated_transcriptParser.pm b/misc-scripts/xref_mapping/XrefParser/curated_transcriptParser.pm
index c363eedfca..68dd9ad2ae 100644
--- a/misc-scripts/xref_mapping/XrefParser/curated_transcriptParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/curated_transcriptParser.pm
@@ -7,6 +7,7 @@ use File::Basename;
 
 use base qw( XrefParser::BaseParser );
 
+use XrefParser::Database;
 use Bio::EnsEMBL::Registry;
 my $reg = "Bio::EnsEMBL::Registry";
 
@@ -101,12 +102,25 @@ sub run_script {
   my $core_dbc;
   if(defined($vdbname)){
     print "Using $host $vdbname for Vega and cdbname for Core\n";
-    $vega_dbc = $self->dbi2($vhost, $vport, $vuser, $vdbname, $vpass);
+
+    my $vega_db =  XrefParser::Database->new({ host   => $vhost,
+					       port   => $vport,
+					       user   => $vuser,
+					       dbname => $vdbname,
+					       pass   => $vpass});
+
+    $vega_dbc = $vega_db->dbi;
     if(!defined($vega_dbc)){
       print "Problem could not open connectipn to $vhost, $vport, $vuser, $vdbname, $vpass\n";
       return 1;
     }
-    $core_dbc = $self->dbi2($chost, $cport, $cuser, $cdbname, $cpass);
+
+    my $core_db =  XrefParser::Database->new({ host   => $chost,
+					       port   => $cport,
+					       user   => $cuser,
+					       dbname => $cdbname,
+					       pass   => $cpass});
+    $core_dbc = $core_db->dbi;
     if(!defined($core_dbc)){
       print "Problem could not open connectipn to $chost, $cport, $cuser, $cdbname, $cpass\n";
       return 1;
@@ -189,7 +203,11 @@ sub run_script {
 # number is no longer the clone version but the gene number so we need to keep it now.
 #        $name =~ s/[.]\d+//;    #remove .number  #
       }
-      my $xref_id = $self->add_xref($name, "" , $name , "", $id, $species_id, "DIRECT");
+      my $xref_id = $self->add_xref({ acc        => $name,
+				      label      => $name,
+				      source_id  => $id,
+				      species_id => $species_id,
+				      info_type  => "DIRECT"} );
       $xref_count++;
       
       $self->add_direct_xref($xref_id, $ott_to_enst{$ott}, "transcript", "");
diff --git a/misc-scripts/xref_mapping/XrefParser/ncRNAParser.pm b/misc-scripts/xref_mapping/XrefParser/ncRNAParser.pm
index 21b1a7f94b..d49c932d1a 100644
--- a/misc-scripts/xref_mapping/XrefParser/ncRNAParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/ncRNAParser.pm
@@ -60,7 +60,12 @@ sub run {
     }
     my $xref_id = $self->get_xref($acc,$name_2_source_id{$source_name}, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($acc,"",$display_label,$description,$name_2_source_id{$source_name}, $species_id,"DIRECT");
+      $xref_id = $self->add_xref({ acc        => $acc,
+				   label      => $display_label,
+				   desc       => $description,
+				   source_id  => $name_2_source_id{$source_name},
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $added++;
     }
     $self->add_direct_xref($xref_id, $transcript_id, "Transcript", "") if (defined($transcript_id));    
diff --git a/misc-scripts/xref_mapping/XrefParser/ncRNA_DBParser.pm b/misc-scripts/xref_mapping/XrefParser/ncRNA_DBParser.pm
index c722ecaaac..cd892319ff 100644
--- a/misc-scripts/xref_mapping/XrefParser/ncRNA_DBParser.pm
+++ b/misc-scripts/xref_mapping/XrefParser/ncRNA_DBParser.pm
@@ -87,7 +87,12 @@ SQL
     }
     my $xref_id = $self->get_xref($acc,$source{$source_name}, $species_id);
     if(!defined($xref_id)){
-      $xref_id = $self->add_xref($acc,"",$label,$description,$source{$source_name}, $species_id,"DIRECT");
+      $xref_id = $self->add_xref({ acc        => $acc,
+				   label      => $label,
+				   desc       => $description,
+				   source_id  => $source{$source_name},
+				   species_id => $species_id,
+				   info_type  => "DIRECT"} );
       $added++;
     }
     my $transcript_id = $dbid;
-- 
GitLab