From bf965aa7383d2426b1fd678d7f30f11749254384 Mon Sep 17 00:00:00 2001
From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04>
Date: Wed, 13 Apr 2011 11:37:26 +0000
Subject: [PATCH] filter duplicates

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@15943 ee4ac58c-ac51-4696-9907-e4b3aa274f04
---
 .../components/alignment/BamUtils.java        | 24 +++++++++++--------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/uk/ac/sanger/artemis/components/alignment/BamUtils.java b/uk/ac/sanger/artemis/components/alignment/BamUtils.java
index 68f3f421f..b03c5be53 100644
--- a/uk/ac/sanger/artemis/components/alignment/BamUtils.java
+++ b/uk/ac/sanger/artemis/components/alignment/BamUtils.java
@@ -69,7 +69,7 @@ class BamUtils
                                    final Hashtable<String, Integer> offsetLengths,
                                    final boolean concatSequences, 
                                    final Hashtable<String, Integer> seqLengths,
-                                   final SAMRecordFlagPredicate samRecordFlagPredicate,
+                                   final SAMRecordPredicate samRecordFlagPredicate,
                                    final SAMRecordMapQPredicate samRecordMapQPredicate,
                                    final boolean contained,
                                    final boolean useIntrons,
@@ -83,7 +83,7 @@ class BamUtils
       
       int start  = f.getFirstBase();
       int end    = f.getLastBase();
-      float fLenKb = getFeatureLength(f);
+      float fLen = getFeatureLength(f);
       List<Float> sampleCounts = new Vector<Float>();
         
       for(int j=0; j<bamList.size(); j++)
@@ -105,9 +105,9 @@ class BamUtils
           cnt = getCount(start, end, bam, refName, samFileReaderHash, 
               seqNames, offsetLengths, concatSequences, seqLengths, 
               samRecordFlagPredicate, samRecordMapQPredicate, contained); 
-       
+
         if(mappedReads != null)
-          cnt = cnt / ((((float)mappedReads[j]) / 1000000.f)*fLenKb);
+          cnt = (cnt / ( ((float)mappedReads[j]/1000000.f) * (fLen/1000.f) )) ;
         
         sampleCounts.add(cnt);
       }
@@ -149,9 +149,9 @@ class BamUtils
     for(int i=0; i<segs.size(); i++)
     {
       Range r = segs.elementAt(i).getRawRange();
-      len += r.getEnd()-r.getStart();
+      len += r.getEnd()-r.getStart()+1;
     }
-    return ((float)len) / 1000.f;
+    return (float)len;
   }
   
   /**
@@ -180,7 +180,7 @@ class BamUtils
       final Hashtable<String, Integer> offsetLengths,
       final boolean concatSequences, 
       final Hashtable<String, Integer> seqLengths,
-      final SAMRecordFlagPredicate samRecordFlagPredicate,
+      final SAMRecordPredicate samRecordFlagPredicate,
       final SAMRecordMapQPredicate samRecordMapQPredicate,
       final boolean contained)
   {
@@ -247,7 +247,11 @@ class BamUtils
     int MAX_BASE_CHUNK = 2000*60;
     int mapped[] = new int[bamList.size()];
     boolean contained = false;
-    SAMRecordFlagPredicate samRecordFlagPredicate = new SAMRecordFlagPredicate(SAMRecordFlagPredicate.READ_UNMAPPED_FLAG); 
+    SAMRecordFlagPredicate samRecordFlagPredicate = new SAMRecordFlagPredicate(
+        (SAMRecordFlagPredicate.READ_UNMAPPED_FLAG | SAMRecordFlagPredicate.DUPLICATE_READ_FLAG));
+    //SAMRecordFlagPredicate p2 = new SAMRecordFlagPredicate(SAMRecordFlagPredicate.PROPER_PAIR_FLAG);
+    //SAMRecordFlagConjunctionPredicate samRecordFlagPredicate = new SAMRecordFlagConjunctionPredicate(p1, p2, 1, true, false);
+
     SAMRecordMapQPredicate samRecordMapQPredicate = new SAMRecordMapQPredicate(-1);
 
     for (int i = 0; i < sequenceLength; i += MAX_BASE_CHUNK)
@@ -302,8 +306,8 @@ class BamUtils
                     String refName, 
                     int start, 
                     int end,
-                    SAMRecordFlagPredicate samRecordFlagPredicate,
-                    SAMRecordMapQPredicate samRecordMapQPredicate,
+                    SAMRecordPredicate samRecordFlagPredicate,
+                    SAMRecordPredicate samRecordMapQPredicate,
                     boolean contained)
   {
     int cnt = 0;
-- 
GitLab