Fix off-by-one error in original implementation of read sharding. Tested by
awking output of BamToFastq vs. samtools until the outputs matched exactly. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2945 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
1ef1091f7c
commit
ee2ec7ced9
|
|
@ -148,7 +148,7 @@ class MappedReadStreamPointer extends ReadStreamPointer {
|
||||||
// over a given interval would occasionally not pick up the last read in that interval.
|
// over a given interval would occasionally not pick up the last read in that interval.
|
||||||
mergingIterator.queryOverlapping( mappedSegment.locus.getContig(),
|
mergingIterator.queryOverlapping( mappedSegment.locus.getContig(),
|
||||||
(int)mappedSegment.locus.getStart(),
|
(int)mappedSegment.locus.getStart(),
|
||||||
(int)mappedSegment.locus.getStop()+ PlusOneFixIterator.PLUS_ONE_FIX_CONSTANT);
|
(int)mappedSegment.locus.getStop()+1);
|
||||||
|
|
||||||
return StingSAMIteratorAdapter.adapt(sourceInfo,mergingIterator);
|
return StingSAMIteratorAdapter.adapt(sourceInfo,mergingIterator);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,6 @@ import org.broadinstitute.sting.gatk.Reads;
|
||||||
* Time: 10:41:02 PM
|
* Time: 10:41:02 PM
|
||||||
*/
|
*/
|
||||||
public class PlusOneFixIterator implements StingSAMIterator {
|
public class PlusOneFixIterator implements StingSAMIterator {
|
||||||
|
|
||||||
/**
|
|
||||||
* this holds the value that we use to correct our query overlapping calls with,
|
|
||||||
* but more importantly it ties the ReadStreamPointer code to this so we don't loose
|
|
||||||
* track of this adjustment across the code.
|
|
||||||
*/
|
|
||||||
public static final Integer PLUS_ONE_FIX_CONSTANT = 1;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* our interval region
|
* our interval region
|
||||||
*/
|
*/
|
||||||
|
|
@ -86,7 +78,7 @@ public class PlusOneFixIterator implements StingSAMIterator {
|
||||||
SAMRecord ret = mNextRecord;
|
SAMRecord ret = mNextRecord;
|
||||||
while (mIterator.hasNext()) {
|
while (mIterator.hasNext()) {
|
||||||
mNextRecord = mIterator.next();
|
mNextRecord = mIterator.next();
|
||||||
if (!(mNextRecord.getAlignmentStart() > (mInterval.getStop() - PLUS_ONE_FIX_CONSTANT))) return ret;
|
if (!(mNextRecord.getAlignmentStart() > mInterval.getStop())) return ret;
|
||||||
}
|
}
|
||||||
mNextRecord = null;
|
mNextRecord = null;
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
||||||
|
|
@ -51,11 +51,11 @@ public class PlusOneFixIteratorTest extends BaseTest {
|
||||||
public void testReadAtEndOfInterval() {
|
public void testReadAtEndOfInterval() {
|
||||||
int countOfReads = 0;
|
int countOfReads = 0;
|
||||||
SAMFileReader reader = new SAMFileReader(bam, true);
|
SAMFileReader reader = new SAMFileReader(bam, true);
|
||||||
final int size = 1108664;
|
final int size = 1108663;
|
||||||
reader.setValidationStringency(SAMFileReader.ValidationStringency.LENIENT);
|
reader.setValidationStringency(SAMFileReader.ValidationStringency.LENIENT);
|
||||||
|
|
||||||
GenomeLoc last = GenomeLocParser.createGenomeLoc("chr1", 1, size);
|
GenomeLoc last = GenomeLocParser.createGenomeLoc("chr1", 1, size);
|
||||||
Iterator<SAMRecord> i = new PlusOneFixIterator(last, StingSAMIteratorAdapter.adapt(null, reader.queryOverlapping("chr1", 1, size)));
|
Iterator<SAMRecord> i = new PlusOneFixIterator(last, StingSAMIteratorAdapter.adapt(null, reader.queryOverlapping("chr1", 1, 1108663)));
|
||||||
//Iterator<SAMRecord> i = reader.queryOverlapping("chr1", 1, size);
|
//Iterator<SAMRecord> i = reader.queryOverlapping("chr1", 1, size);
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
SAMRecord rec = i.next();
|
SAMRecord rec = i.next();
|
||||||
|
|
|
||||||
|
|
@ -12,13 +12,13 @@ public class BamToFastqIntegrationTest extends WalkerTest {
|
||||||
WalkerTestSpec spec1 = new WalkerTestSpec(
|
WalkerTestSpec spec1 = new WalkerTestSpec(
|
||||||
"-T BamToFastq -R " + oneKGLocation + "reference/human_b36_both.fasta -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,100-10,000,500;1:10,100,000-10,101,000;1:10,900,000-10,900,001 -o %s",
|
"-T BamToFastq -R " + oneKGLocation + "reference/human_b36_both.fasta -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,100-10,000,500;1:10,100,000-10,101,000;1:10,900,000-10,900,001 -o %s",
|
||||||
1,
|
1,
|
||||||
Arrays.asList("2ec2ff5ac405099bf48186d2c7e5fabd"));
|
Arrays.asList("49431d567524d6fd32a569504b25f212"));
|
||||||
executeTest("testBamToFasta", spec1);
|
executeTest("testBamToFasta", spec1);
|
||||||
|
|
||||||
WalkerTestSpec spec2 = new WalkerTestSpec(
|
WalkerTestSpec spec2 = new WalkerTestSpec(
|
||||||
"-T BamToFastq -reverse -R " + oneKGLocation + "reference/human_b36_both.fasta -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,100-10,000,500;1:10,100,000-10,101,000;1:10,900,000-10,900,001 -o %s",
|
"-T BamToFastq -reverse -R " + oneKGLocation + "reference/human_b36_both.fasta -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,100-10,000,500;1:10,100,000-10,101,000;1:10,900,000-10,900,001 -o %s",
|
||||||
1,
|
1,
|
||||||
Arrays.asList("5a79484da43925b0e0461be28fdad07c"));
|
Arrays.asList("f3a4a39d36270136c12bb1315fdb7dff"));
|
||||||
executeTest("testBamToFastaReverse", spec2);
|
executeTest("testBamToFastaReverse", spec2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue