/* Copyright 2013 University of North Carolina at Chapel Hill. All rights reserved. */ package abra; import htsjdk.samtools.SAMFileWriter; import htsjdk.samtools.SAMRecord; /** * Simple realignment writer. Does not consider read pair information when writing to output BAM. * * @author Lisle E. Mose (lmose at unc dot edu) */ public class SimpleRealignmentWriter implements RealignmentWriter { private SAMFileWriter writer; private int realignCount = 0; private IndelShifter indelShifter = new IndelShifter(); private boolean isTightAlignment = false; private CompareToReference2 c2r; public SimpleRealignmentWriter(CompareToReference2 c2r, SAMFileWriter writer, boolean isTightAlignment) { this.writer = writer; this.c2r = c2r; this.isTightAlignment = isTightAlignment; } @Override public void addAlignment(SAMRecord updatedRead, SAMRecord origRead) { if (updatedRead != null) { // Output realigned read addAlignment(updatedRead); if (updatedRead.getAttribute("YO") != null) { realignCount += 1; } } else { // Output original read // realigner.adjustForStrand(contigAlignedRead.getReadNegativeStrandFlag(), origRead); addAlignment(origRead); } } private void addAlignment(SAMRecord read) { writer.addAlignment(read); // if (isTightAlignment) { // writer.addAlignment(indelShifter.shiftIndelsLeft(read, c2r)); // } else { // writer.addAlignment(read); // } } @Override public int flush() { return realignCount; } }