From ca552fb6822a53fe323ae3fe54a607ee47bda08c Mon Sep 17 00:00:00 2001 From: evantarbell Date: Tue, 3 Mar 2020 14:42:16 -0500 Subject: [PATCH] fix for #49 --- src/main/java/HMMR_ATAC/Main_HMMR_Driver.java | 2 +- src/main/java/WigMath/pileup.java | 70 +++++++++++-------- 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/src/main/java/HMMR_ATAC/Main_HMMR_Driver.java b/src/main/java/HMMR_ATAC/Main_HMMR_Driver.java index 60d62a1..4273671 100644 --- a/src/main/java/HMMR_ATAC/Main_HMMR_Driver.java +++ b/src/main/java/HMMR_ATAC/Main_HMMR_Driver.java @@ -96,7 +96,7 @@ public class Main_HMMR_Driver { /* * Version number. Change as needed */ - private static String versionNum = "1.2.9"; + private static String versionNum = "1.2.10"; @SuppressWarnings("unchecked") public static void main(String[] args) throws IOException { diff --git a/src/main/java/WigMath/pileup.java b/src/main/java/WigMath/pileup.java index c171095..b43f3ed 100644 --- a/src/main/java/WigMath/pileup.java +++ b/src/main/java/WigMath/pileup.java @@ -28,6 +28,7 @@ import org.apache.commons.math3.distribution.NormalDistribution; import net.sf.samtools.SAMFileReader; +import net.sf.samtools.SAMFormatException; import net.sf.samtools.SAMRecord; import net.sf.samtools.util.CloseableIterator; import FormatConverters.PileupToBedGraph; @@ -224,38 +225,49 @@ public double[] makeBlock(TagNode t){ SAMFileReader reader = new SAMFileReader(input,index); CloseableIterator iter = reader.query(t.getChrom(), t.getStart(), t.getStop(), false); + while (iter.hasNext()){ - SAMRecord record = iter.next(); - if(!record.getReadUnmappedFlag() && !record.getMateUnmappedFlag() - && record.getMappingQuality()>=minMapQ && - !(record.getDuplicateReadFlag() && rmDup) - && Math.abs(record.getInferredInsertSize()) <= 1000 && record.getInferredInsertSize() != 0) { - int readStart = record.getAlignmentStart(); - int readStop = record.getAlignmentEnd(); -// int readStop= record.getAlignmentStart() + record.getInferredInsertSize() - 1; -// if (record.getInferredInsertSize() < 0 ) { -// readStart = record.getAlignmentEnd() + record.getInferredInsertSize() + 1; -// readStop = record.getAlignmentEnd(); -// } - - cpmScale++; - if (readStart < t.getStart()){ - readStart = t.getStart(); - } - if (readStop < t.getStart()){ - readStop = t.getStart(); - } - if (readStop >= t.getStop()){ - readStop = t.getStop()-1; - } - if (readStart >= t.getStop()){ - readStart = t.getStop()-1; + SAMRecord record = null; + try{ + record = iter.next(); + } + catch(SAMFormatException ex){ + System.out.println("SAM Record is problematic. Has mapQ != 0 for unmapped read. Will continue anyway"); + } + if(record != null){ + if (!record.getReadUnmappedFlag() + && !record.getMateUnmappedFlag() + && record.getMappingQuality() >= minMapQ + && !(record.getDuplicateReadFlag() && rmDup) + && Math.abs(record.getInferredInsertSize()) <= 1000 + && record.getInferredInsertSize() != 0) { + int readStart = record.getAlignmentStart(); + int readStop = record.getAlignmentEnd(); + // int readStop= record.getAlignmentStart() + record.getInferredInsertSize() - 1; + // if (record.getInferredInsertSize() < 0 ) { + // readStart = record.getAlignmentEnd() + record.getInferredInsertSize() + 1; + // readStop = record.getAlignmentEnd(); + // } + + cpmScale++; + if (readStart < t.getStart()) { + readStart = t.getStart(); + } + if (readStop < t.getStart()) { + readStop = t.getStart(); + } + if (readStop >= t.getStop()) { + readStop = t.getStop() - 1; + } + if (readStart >= t.getStop()) { + readStart = t.getStop() - 1; + } + temp[readStart - t.getStart()]++; + temp[readStop - t.getStart()]--; + } - temp[readStart - t.getStart()]++; - temp[readStop - t.getStart()]--; - - } + } iter.close(); reader.close();