/*
 *  Groovy NGS Utils - Some simple utilites for processing Next Generation Sequencing data.
 *
 *  Copyright (C) 2018 Simon Sadedin, ssadedin<at>gmail.com
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 2.1 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */
package gngs.coverage;

import htsjdk.samtools.SAMRecord;

public class ReadRange {
    
    public ReadRange(SAMRecord r) {
        this.referenceIndex = r.getReferenceIndex();
        this.alignmentStart = r.getAlignmentStart();
        int alignmentEnd = r.getAlignmentEnd();
        final int mateStart = r.getMateAlignmentStart();
        
        // Avoid double counting if two reads from the same fragment will overlap
        if(mateStart >= this.alignmentStart && mateStart <= alignmentEnd) {
            alignmentEnd = mateStart;
        }
        this.referenceName = r.getReferenceName();
        this.alignmentEnd = alignmentEnd;
    }
    
    final public int referenceIndex;
    
    final public int alignmentStart;
    
    final public int alignmentEnd;
    
    final public String referenceName;
}

@@ -1031,24 +1031,33 @@
 Record r) %7B%0A
+        %0A
         this
@@ -1093,24 +1093,24 @@
 nceIndex();%0A
-
         this
@@ -1357,16 +1357,42 @@
      if(
+r.getFirstOfPairFlag() && 
 mateStar
@@ -1720,24 +1720,24 @@
 ntEnd;%0A    %0A
-
     final pu
@@ -1763,10 +1763,139 @@
 ceName;%0A
+    %0A    public String toString() %7B%0A        return String.format(%22%25s:%25d-%25d%22, referenceName, alignmentStart, alignmentEnd);%0A    %7D%0A
 %7D%0A

fix coverage underestimated because read overlaps subtracted twice