diff --git a/java/src/org/broadinstitute/sting/utils/sam/ArtificialPatternedSAMIterator.java b/java/src/org/broadinstitute/sting/utils/sam/ArtificialPatternedSAMIterator.java index 02ef42286..4fa6c0c1d 100644 --- a/java/src/org/broadinstitute/sting/utils/sam/ArtificialPatternedSAMIterator.java +++ b/java/src/org/broadinstitute/sting/utils/sam/ArtificialPatternedSAMIterator.java @@ -113,7 +113,11 @@ public class ArtificialPatternedSAMIterator extends ArtificialSAMIterator { return false; } else { ++totalReadCount; - this.next = ArtificialSAMUtils.createArtificialRead(this.header, String.valueOf(totalReadCount), -1, -1, 50); + this.next = ArtificialSAMUtils.createArtificialRead(this.header, + String.valueOf(totalReadCount), + SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX, + SAMRecord.NO_ALIGNMENT_START, + 50); --unmappedRemaining; return true; } diff --git a/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMIterator.java b/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMIterator.java index 51cbeb154..574a3a781 100644 --- a/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMIterator.java +++ b/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMIterator.java @@ -139,7 +139,11 @@ public class ArtificialSAMIterator implements StingSAMIterator { return false; } else { ++totalReadCount; - this.next = ArtificialSAMUtils.createArtificialRead(this.header, String.valueOf(totalReadCount), -1, -1, 50); + this.next = ArtificialSAMUtils.createArtificialRead(this.header, + String.valueOf(totalReadCount), + SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX, + SAMRecord.NO_ALIGNMENT_START, + 50); --unmappedRemaining; return true; } diff --git a/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMUtils.java b/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMUtils.java index a311ee5bd..d1f5fe3e7 100755 --- a/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMUtils.java +++ b/java/src/org/broadinstitute/sting/utils/sam/ArtificialSAMUtils.java @@ -143,7 +143,8 @@ public class ArtificialSAMUtils { * @return the artificial read */ public static SAMRecord createArtificialRead( SAMFileHeader header, String name, int refIndex, int alignmentStart, int length ) { - if (alignmentStart == 0) + if( (refIndex == SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX && alignmentStart != SAMRecord.NO_ALIGNMENT_START) || + (refIndex != SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX && alignmentStart == SAMRecord.NO_ALIGNMENT_START) ) throw new StingException("Invalid alignment start for artificial read, start = " + alignmentStart); SAMRecord record = new SAMRecord(header); record.setReadName(name); @@ -153,7 +154,7 @@ public class ArtificialSAMUtils { elements.add(new CigarElement(length, CigarOperator.characterToEnum('M'))); record.setCigar(new Cigar(elements)); record.setProperPairFlag(false); - if (refIndex == -1) { + if (refIndex == SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX) { record.setReadUmappedFlag(true); } return record; diff --git a/java/src/org/broadinstitute/sting/utils/sam/SAMReadValidator.java b/java/src/org/broadinstitute/sting/utils/sam/SAMReadValidator.java index b2e590a00..10b091fb8 100644 --- a/java/src/org/broadinstitute/sting/utils/sam/SAMReadValidator.java +++ b/java/src/org/broadinstitute/sting/utils/sam/SAMReadValidator.java @@ -79,7 +79,7 @@ public class SAMReadValidator { if( read.getReferenceIndex() == SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX && read.getAlignmentStart() != SAMRecord.NO_ALIGNMENT_START ) throw new SAMReadValidationException("Read is aligned to nonexistent contig"); SAMSequenceRecord contigHeader = header.getSequence( read.getReferenceIndex() ); - if( read.getReadUnmappedFlag() && read.getAlignmentStart() > contigHeader.getSequenceLength() ) + if( !read.getReadUnmappedFlag() && read.getAlignmentStart() > contigHeader.getSequenceLength() ) throw new SAMReadValidationException("Read is aligned to a point after the end of the contig"); }