From f1c4ee0fcfae5c7c1d2bde27e89b44939720d9bd Mon Sep 17 00:00:00 2001
From: tcarver <tjc>
Date: Mon, 22 Apr 2013 10:39:05 +0100
Subject: [PATCH] fix for CDS IDs in multi-sequence GFF files

---
 uk/ac/sanger/artemis/io/GFFStreamFeature.java | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/uk/ac/sanger/artemis/io/GFFStreamFeature.java b/uk/ac/sanger/artemis/io/GFFStreamFeature.java
index a8508516f..74f1c4c70 100644
--- a/uk/ac/sanger/artemis/io/GFFStreamFeature.java
+++ b/uk/ac/sanger/artemis/io/GFFStreamFeature.java
@@ -479,13 +479,22 @@ public class GFFStreamFeature extends SimpleDocumentFeature
   {
     if(id_range_store != null)
     {
+      int offset = 0;
+      if(getGffSeqName() != null && contig_ranges != null &&
+         contig_ranges.containsKey(getGffSeqName()))
+      {
+        // adjust for coordinates in multi-sequence GFF
+        Range offset_range = contig_ranges.get(getGffSeqName());
+        offset = offset_range.getStart()-1;
+      }
+      
       Enumeration<String> enum_ranges = id_range_store.keys();
       while(enum_ranges.hasMoreElements())
       {
         String key  = enum_ranges.nextElement();
         Range range = id_range_store.get(key);
-        if(range.getStart() == r.getStart() &&
-           range.getEnd()   == r.getEnd())
+        if(range.getStart() == r.getStart()-offset &&
+           range.getEnd()   == r.getEnd()-offset)
           return key;
       }
     }
-- 
GitLab