From 00741db6445c5d88d91d34f05c812fea57e2061b Mon Sep 17 00:00:00 2001
From: Magali Ruffier <mr6@ebi.ac.uk>
Date: Thu, 11 Aug 2016 17:02:51 +0100
Subject: [PATCH] iENSCORESW-1890: keep correct master of dependent

---
 misc-scripts/xref_mapping/XrefMapper/ProcessPrioritys.pm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/misc-scripts/xref_mapping/XrefMapper/ProcessPrioritys.pm b/misc-scripts/xref_mapping/XrefMapper/ProcessPrioritys.pm
index cfe4d1adec..60e2e347cc 100644
--- a/misc-scripts/xref_mapping/XrefMapper/ProcessPrioritys.pm
+++ b/misc-scripts/xref_mapping/XrefMapper/ProcessPrioritys.pm
@@ -281,12 +281,16 @@ sub process_dependents{
     push @{ $ensembl_ids{$new_object_type} }, $new_ensembl_id;
   }
 
+
   ## Loop through all dependent xrefs of old master xref, and recurse
   while(my $xref_id = pop(@master_xrefs)){ 
     
     # Get dependent xrefs, be they gene, transcript or translation
     $dep_sth->execute($xref_id);
     $dep_sth->bind_columns(\$dep_xref_id, \$linkage_annotation, \$linkage_source_id, \$object_type);
+    if ($recursive) {
+      $new_master_xref_id = $xref_id;
+    }
     while($dep_sth->fetch()){
 
 
@@ -314,10 +318,11 @@ sub process_dependents{
           }
         }
       }
-      push @master_xrefs, $dep_xref_id; # remember chained dependent xrefs
+      unless ($dep_xref_id == $xref_id) {
+        push @master_xrefs, $dep_xref_id; # remember chained dependent xrefs
+      }
     }
     $recursive = 1;
-    $new_master_xref_id = $dep_xref_id;
   }
 
   $matching_ens_sth->finish();
-- 
GitLab