gatk-3.8/java/src/org/broadinstitute/sting/utils/sam/SimplifyingSAMFileWriter.java

63 lines
1.7 KiB
Java

package org.broadinstitute.sting.utils.sam;
import net.sf.samtools.SAMFileHeader;
import net.sf.samtools.SAMFileWriter;
import net.sf.samtools.SAMRecord;
import org.broadinstitute.sting.gatk.iterators.StingSAMIterator;
import org.broadinstitute.sting.utils.GenomeLoc;
import org.broadinstitute.sting.utils.GenomeLocParser;
import org.broadinstitute.sting.utils.exceptions.UserException;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* XXX
*/
public class SimplifyingSAMFileWriter implements SAMFileWriter {
final SAMFileWriter dest;
public SimplifyingSAMFileWriter(final SAMFileWriter finalDestination) {
this.dest = finalDestination;
}
public void addAlignment( SAMRecord read ) {
if ( keepRead(read) ) {
dest.addAlignment(simplifyRead(read));
}
}
/**
* Retrieves the header to use when creating the new SAM file.
* @return header to use when creating the new SAM file.
*/
public SAMFileHeader getFileHeader() {
return dest.getFileHeader();
}
/**
* @{inheritDoc}
*/
public void close() {
dest.close();
}
public static final boolean keepRead(SAMRecord read) {
return ! excludeRead(read);
}
public static final boolean excludeRead(SAMRecord read) {
return read.getReadUnmappedFlag() || read.getReadFailsVendorQualityCheckFlag() || read.getDuplicateReadFlag() || read.getNotPrimaryAlignmentFlag();
}
public static final SAMRecord simplifyRead(SAMRecord read) {
// the only attribute we keep is the RG
Object rg = read.getAttribute("RG");
read.clearAttributes();
read.setAttribute("RG", rg);
return read;
}
}