From a645ad57edeec989e753a4414aa0bdbfb0854077 Mon Sep 17 00:00:00 2001
From: tcarver <tjc>
Date: Thu, 12 Jul 2012 11:56:55 +0100
Subject: [PATCH] fix for creating features from read peaks with concat
 sequences

---
 .../artemis/components/alignment/BamUtils.java    |  3 ++-
 .../artemis/components/alignment/MappedReads.java | 15 +++++++++++++--
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/uk/ac/sanger/artemis/components/alignment/BamUtils.java b/uk/ac/sanger/artemis/components/alignment/BamUtils.java
index 8ad6da6ce..84e90f524 100644
--- a/uk/ac/sanger/artemis/components/alignment/BamUtils.java
+++ b/uk/ac/sanger/artemis/components/alignment/BamUtils.java
@@ -166,6 +166,7 @@ class BamUtils
                                           final String refName,
                                           final int start, 
                                           final int end,
+                                          final int concatShift,
                                           final int cnt[][],
                                           final SAMRecordPredicate samRecordFlagPredicate,
                                           final SAMRecordPredicate samRecordMapQPredicate)
@@ -194,7 +195,7 @@ class BamUtils
             int refStart = block.getReferenceStart();
             for(int i=0; i<block.getLength(); i++)
             {
-              int pos = refStart + i;
+              int pos = refStart + i + concatShift;
               int bin = pos - start;
               if(bin < 0 || bin > cnt.length-1)
                 continue;
diff --git a/uk/ac/sanger/artemis/components/alignment/MappedReads.java b/uk/ac/sanger/artemis/components/alignment/MappedReads.java
index f065b85bb..230f26e0b 100644
--- a/uk/ac/sanger/artemis/components/alignment/MappedReads.java
+++ b/uk/ac/sanger/artemis/components/alignment/MappedReads.java
@@ -487,9 +487,20 @@ public class MappedReads
                 if( (start >= offset && start <= offset+len) ||
                     (stop >= offset  && start <= offset+len) )
                 {
+                  int thisStart = start-offset;
+                  if(thisStart < 1)
+                    thisStart = 1;
+                  int thisEnd = stop-offset;
+                  if(thisEnd > len)
+                    thisEnd = len;
+                  
+                  int concatShift = 0;
+                  if(offset > start)
+                    concatShift = offset-start;
+                  
                   cnt =
                     BamUtils.countOverRange(bamList.get(i), samFileReaderHash, 
-                        name, start-offset, stop-offset, cnt,
+                        name, thisStart, thisEnd, concatShift, cnt,
                         samRecordFlagPredicate, samRecordMapQPredicate);
                 }
               }
@@ -498,7 +509,7 @@ public class MappedReads
             {
               cnt =
                 BamUtils.countOverRange(bamList.get(i), samFileReaderHash, 
-                    refSeq, start, stop, cnt,
+                    refSeq, start, stop, 0, cnt,
                     samRecordFlagPredicate, samRecordMapQPredicate);
             }
             
-- 
GitLab