diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IntervalCleanerWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IntervalCleanerWalker.java index 46e74b192..caae7e804 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IntervalCleanerWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IntervalCleanerWalker.java @@ -788,8 +788,24 @@ public class IntervalCleanerWalker extends LocusWindowWalker } public void finalizeUpdate() { - read.setCigar(newCigar); - read.setAlignmentStart(newStart); + // if it's a paired end read, we need to update the insert size + if ( read.getReadPairedFlag() ) { + int insertSize = read.getInferredInsertSize(); + if ( insertSize > 0 ) { + read.setCigar(newCigar); + read.setInferredInsertSize(insertSize + read.getAlignmentStart() - newStart); + read.setAlignmentStart(newStart); + } else { + // note that the correct order of actions is crucial here + int oldEnd = read.getAlignmentEnd(); + read.setCigar(newCigar); + read.setAlignmentStart(newStart); + read.setInferredInsertSize(insertSize + oldEnd - read.getAlignmentEnd()); + } + } else { + read.setCigar(newCigar); + read.setAlignmentStart(newStart); + } } public String getBaseQualityString() {