From bfdb73b8e844e2cb3a8c3150cc3e9ef71f6bd5e5 Mon Sep 17 00:00:00 2001
From: Patrick Meidl <pm2@sanger.ac.uk>
Date: Fri, 14 Sep 2007 15:16:13 +0000
Subject: [PATCH] catch division by zero exception

---
 modules/Bio/EnsEMBL/IdMapping/SyntenyRegion.pm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/modules/Bio/EnsEMBL/IdMapping/SyntenyRegion.pm b/modules/Bio/EnsEMBL/IdMapping/SyntenyRegion.pm
index e019b4f9e2..dbf5bfe668 100644
--- a/modules/Bio/EnsEMBL/IdMapping/SyntenyRegion.pm
+++ b/modules/Bio/EnsEMBL/IdMapping/SyntenyRegion.pm
@@ -136,6 +136,12 @@ sub merge {
     $target_dist = $self->target_end - $sr->target_end;
   }
 
+  # prevent division by zero error
+  if ($source_dist == 0 or $target_dist == 0) {
+    warn("WARNING: source_dist ($source_dist) and/or target_dist ($target_dist) is zero.\n");
+    return 0;
+  }
+
   # calculate a distance score
   my $dist = $source_dist - $target_dist;
   $dist = -$dist if ($dist < 0);
@@ -151,7 +157,7 @@ sub merge {
   my $new_score = $dist_score * ($sr->score + $self->score)/2;
 
   if ($new_score > 1) {
-    warn("Bad merge score: $new_score\n");
+    warn("WARNING: Bad merge score: $new_score\n");
   }
 
   # extend SyntenyRegion to cover both sources and targets, set merged score
-- 
GitLab