Removing extended event related unit tests
This commit is contained in:
parent
99d27ddcc4
commit
326220c91c
|
|
@ -43,49 +43,6 @@ public class LocusIteratorByStateUnitTest extends BaseTest {
|
||||||
return new LocusIteratorByState(new FakeCloseableIterator<SAMRecord>(reads.iterator()), readAttributes, genomeLocParser, LocusIteratorByState.sampleListForSAMWithoutReadGroups());
|
return new LocusIteratorByState(new FakeCloseableIterator<SAMRecord>(reads.iterator()), readAttributes, genomeLocParser, LocusIteratorByState.sampleListForSAMWithoutReadGroups());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testIndelBaseQualityFiltering() {
|
|
||||||
final byte[] bases = new byte[] {'A','A','A','A','A','A','A','A','A','A'};
|
|
||||||
|
|
||||||
// create a test version of the Reads object
|
|
||||||
ReadProperties readAttributes = createTestReadProperties();
|
|
||||||
JVMUtils.setFieldValue(JVMUtils.findField(ReadProperties.class,"generateExtendedEvents"),readAttributes,true);
|
|
||||||
|
|
||||||
SAMRecord before = ArtificialSAMUtils.createArtificialRead(header,"before",0,1,10);
|
|
||||||
before.setReadBases(bases);
|
|
||||||
before.setBaseQualities(new byte[] {20,20,20,20,0,20,20,20,20,20});
|
|
||||||
before.setCigarString("10M");
|
|
||||||
|
|
||||||
SAMRecord during = ArtificialSAMUtils.createArtificialRead(header,"during",0,2,10);
|
|
||||||
during.setReadBases(bases);
|
|
||||||
during.setBaseQualities(new byte[] {20,20,20,20,20,20,20,20,20,20,20});
|
|
||||||
during.setCigarString("4M1I6M");
|
|
||||||
|
|
||||||
SAMRecord after = ArtificialSAMUtils.createArtificialRead(header,"after",0,3,10);
|
|
||||||
after.setReadBases(bases);
|
|
||||||
after.setBaseQualities(new byte[] {20,20,0,20,20,20,20,20,20,20});
|
|
||||||
after.setCigarString("10M");
|
|
||||||
|
|
||||||
List<SAMRecord> reads = Arrays.asList(before,during,after);
|
|
||||||
|
|
||||||
// create the iterator by state with the fake reads and fake records
|
|
||||||
li = makeLTBS(reads,readAttributes);
|
|
||||||
|
|
||||||
boolean foundExtendedEventPileup = false;
|
|
||||||
while (li.hasNext()) {
|
|
||||||
AlignmentContext context = li.next();
|
|
||||||
if(!context.hasExtendedEventPileup())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ReadBackedExtendedEventPileup pileup = context.getExtendedEventPileup().getBaseFilteredPileup(10);
|
|
||||||
Assert.assertEquals(pileup.getLocation().getStart(), 5, "Extended event pileup at wrong location");
|
|
||||||
Assert.assertEquals(pileup.getNumberOfElements(), 3, "Pileup size is incorrect");
|
|
||||||
|
|
||||||
foundExtendedEventPileup = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Assert.assertTrue(foundExtendedEventPileup,"Extended event pileup not found");
|
|
||||||
}
|
|
||||||
@Test
|
@Test
|
||||||
public void testIndelsInRegularPileup() {
|
public void testIndelsInRegularPileup() {
|
||||||
final byte[] bases = new byte[] {'A','A','A','A','A','A','A','A','A','A'};
|
final byte[] bases = new byte[] {'A','A','A','A','A','A','A','A','A','A'};
|
||||||
|
|
@ -93,7 +50,6 @@ public class LocusIteratorByStateUnitTest extends BaseTest {
|
||||||
|
|
||||||
// create a test version of the Reads object
|
// create a test version of the Reads object
|
||||||
ReadProperties readAttributes = createTestReadProperties();
|
ReadProperties readAttributes = createTestReadProperties();
|
||||||
JVMUtils.setFieldValue(JVMUtils.findField(ReadProperties.class,"generateExtendedEvents"),readAttributes,true);
|
|
||||||
|
|
||||||
SAMRecord before = ArtificialSAMUtils.createArtificialRead(header,"before",0,1,10);
|
SAMRecord before = ArtificialSAMUtils.createArtificialRead(header,"before",0,1,10);
|
||||||
before.setReadBases(bases);
|
before.setReadBases(bases);
|
||||||
|
|
@ -136,59 +92,6 @@ public class LocusIteratorByStateUnitTest extends BaseTest {
|
||||||
Assert.assertTrue(foundIndel,"Indel in pileup not found");
|
Assert.assertTrue(foundIndel,"Indel in pileup not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Right now, the GATK's extended event pileup DOES NOT include reads which stop immediately before an insertion
|
|
||||||
* but DOES include reads which stop immediately after an insertion. This is almost certainly WRONG. Eric is
|
|
||||||
* figuring out the right way to handle this; in the meantime, adding this test to monitor that:
|
|
||||||
* A) the behavior is consistent
|
|
||||||
* B) so that we do end up with an automated test for this case when the model is fixed.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testIndelPileupContainsAbuttingReads() {
|
|
||||||
final byte[] bases = new byte[] {'A','A','A','A','A','A','A','A','A','A'};
|
|
||||||
final byte[] quals = new byte[] { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
|
|
||||||
|
|
||||||
// create a test version of the Reads object
|
|
||||||
ReadProperties readAttributes = createTestReadProperties();
|
|
||||||
JVMUtils.setFieldValue(JVMUtils.findField(ReadProperties.class,"generateExtendedEvents"),readAttributes,true);
|
|
||||||
|
|
||||||
SAMRecord before = ArtificialSAMUtils.createArtificialRead(header,"before",0,1,10);
|
|
||||||
before.setReadBases(bases);
|
|
||||||
before.setBaseQualities(quals);
|
|
||||||
before.setCigarString("10M");
|
|
||||||
|
|
||||||
SAMRecord during = ArtificialSAMUtils.createArtificialRead(header,"during",0,6,10);
|
|
||||||
during.setReadBases(bases);
|
|
||||||
during.setBaseQualities(quals);
|
|
||||||
during.setCigarString("5M1I5M");
|
|
||||||
|
|
||||||
SAMRecord after = ArtificialSAMUtils.createArtificialRead(header,"after",0,11,10);
|
|
||||||
after.setReadBases(bases);
|
|
||||||
after.setBaseQualities(quals);
|
|
||||||
after.setCigarString("10M");
|
|
||||||
|
|
||||||
List<SAMRecord> reads = Arrays.asList(before,during,after);
|
|
||||||
|
|
||||||
// create the iterator by state with the fake reads and fake records
|
|
||||||
li = makeLTBS(reads,readAttributes);
|
|
||||||
|
|
||||||
boolean foundExtendedEventPileup = false;
|
|
||||||
while (li.hasNext()) {
|
|
||||||
AlignmentContext context = li.next();
|
|
||||||
if(!context.hasExtendedEventPileup())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Assert.assertEquals(context.getLocation().getStart(), 10, "Extended event pileup at wrong location");
|
|
||||||
Assert.assertEquals(context.size(), 2, "Pileup size is incorrect");
|
|
||||||
Assert.assertEquals(context.getExtendedEventPileup().getReads().get(0), during, "Read in pileup is incorrect");
|
|
||||||
Assert.assertEquals(context.getExtendedEventPileup().getReads().get(1), after, "Read in pileup is incorrect");
|
|
||||||
|
|
||||||
foundExtendedEventPileup = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Assert.assertTrue(foundExtendedEventPileup,"Extended event pileup not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testWholeIndelReadInIsolation() {
|
public void testWholeIndelReadInIsolation() {
|
||||||
final int firstLocus = 44367789;
|
final int firstLocus = 44367789;
|
||||||
|
|
@ -214,17 +117,6 @@ public class LocusIteratorByStateUnitTest extends BaseTest {
|
||||||
ReadBackedPileup basePileup = alignmentContext.getBasePileup();
|
ReadBackedPileup basePileup = alignmentContext.getBasePileup();
|
||||||
Assert.assertEquals(basePileup.getReads().size(),1,"Pileup is of incorrect size");
|
Assert.assertEquals(basePileup.getReads().size(),1,"Pileup is of incorrect size");
|
||||||
Assert.assertSame(basePileup.getReads().get(0),indelOnlyRead,"Read in pileup is incorrect");
|
Assert.assertSame(basePileup.getReads().get(0),indelOnlyRead,"Read in pileup is incorrect");
|
||||||
|
|
||||||
// Turn on extended events, and make sure the event is found.
|
|
||||||
JVMUtils.setFieldValue(JVMUtils.findField(ReadProperties.class,"generateExtendedEvents"),readAttributes,true);
|
|
||||||
li = makeLTBS(reads, readAttributes);
|
|
||||||
|
|
||||||
Assert.assertTrue(li.hasNext(),"LocusIteratorByState with extended events should contain exactly one pileup");
|
|
||||||
alignmentContext = li.next();
|
|
||||||
Assert.assertEquals(alignmentContext.getLocation().getStart(),firstLocus-1,"Extended event pileup is at incorrect location.");
|
|
||||||
ReadBackedExtendedEventPileup extendedEventPileup = alignmentContext.getExtendedEventPileup();
|
|
||||||
Assert.assertEquals(extendedEventPileup.getReads().size(),1,"Pileup is of incorrect size");
|
|
||||||
Assert.assertSame(extendedEventPileup.getReads().get(0),indelOnlyRead,"Read in pileup is incorrect");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -232,7 +124,7 @@ public class LocusIteratorByStateUnitTest extends BaseTest {
|
||||||
* not negatively influence the ordering of the pileup.
|
* not negatively influence the ordering of the pileup.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testWholeIndelReadWithoutExtendedEvents() {
|
public void testWholeIndelRead() {
|
||||||
final int firstLocus = 44367788, secondLocus = firstLocus + 1;
|
final int firstLocus = 44367788, secondLocus = firstLocus + 1;
|
||||||
|
|
||||||
SAMRecord leadingRead = ArtificialSAMUtils.createArtificialRead(header,"leading",0,firstLocus,76);
|
SAMRecord leadingRead = ArtificialSAMUtils.createArtificialRead(header,"leading",0,firstLocus,76);
|
||||||
|
|
@ -280,70 +172,6 @@ public class LocusIteratorByStateUnitTest extends BaseTest {
|
||||||
Assert.assertEquals(numAlignmentContextsFound,2,"Found incorrect number of alignment contexts");
|
Assert.assertEquals(numAlignmentContextsFound,2,"Found incorrect number of alignment contexts");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test to make sure that reads supporting only an indel (example cigar string: 76I) do
|
|
||||||
* not negatively influence the ordering of the pileup.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testWholeIndelReadWithExtendedEvents() {
|
|
||||||
final int firstLocus = 44367788, secondLocus = firstLocus + 1;
|
|
||||||
|
|
||||||
// create a test version of the Reads object
|
|
||||||
ReadProperties readAttributes = createTestReadProperties();
|
|
||||||
JVMUtils.setFieldValue(JVMUtils.findField(ReadProperties.class,"generateExtendedEvents"),readAttributes,true);
|
|
||||||
|
|
||||||
SAMRecord leadingRead = ArtificialSAMUtils.createArtificialRead(header,"leading",0,firstLocus,76);
|
|
||||||
leadingRead.setReadBases(Utils.dupBytes((byte)'A',76));
|
|
||||||
leadingRead.setBaseQualities(Utils.dupBytes((byte)'@',76));
|
|
||||||
leadingRead.setCigarString("1M75I");
|
|
||||||
|
|
||||||
SAMRecord indelOnlyRead = ArtificialSAMUtils.createArtificialRead(header,"indelOnly",0,secondLocus,76);
|
|
||||||
indelOnlyRead.setReadBases(Utils.dupBytes((byte)'A',76));
|
|
||||||
indelOnlyRead.setBaseQualities(Utils.dupBytes((byte)'@',76));
|
|
||||||
indelOnlyRead.setCigarString("76I");
|
|
||||||
|
|
||||||
SAMRecord fullMatchAfterIndel = ArtificialSAMUtils.createArtificialRead(header,"fullMatch",0,secondLocus,1);
|
|
||||||
fullMatchAfterIndel.setReadBases(Utils.dupBytes((byte)'A',1));
|
|
||||||
fullMatchAfterIndel.setBaseQualities(Utils.dupBytes((byte)'@',1));
|
|
||||||
fullMatchAfterIndel.setCigarString("1M");
|
|
||||||
|
|
||||||
List<SAMRecord> reads = Arrays.asList(leadingRead,indelOnlyRead,fullMatchAfterIndel);
|
|
||||||
|
|
||||||
// create the iterator by state with the fake reads and fake records
|
|
||||||
li = makeLTBS(reads,readAttributes);
|
|
||||||
|
|
||||||
Assert.assertTrue(li.hasNext(),"Missing first locus at " + firstLocus);
|
|
||||||
AlignmentContext alignmentContext = li.next();
|
|
||||||
Assert.assertEquals(alignmentContext.getLocation().getStart(),firstLocus,"Incorrect locus at this position; should be " + firstLocus);
|
|
||||||
List<GATKSAMRecord> readsAtLocus = alignmentContext.getBasePileup().getReads();
|
|
||||||
Assert.assertEquals(readsAtLocus.size(),1,"Wrong number of reads at locus " + firstLocus);
|
|
||||||
Assert.assertSame(readsAtLocus.get(0),leadingRead,"leadingRead absent from pileup at locus " + firstLocus);
|
|
||||||
|
|
||||||
Assert.assertTrue(li.hasNext(),"Missing extended event at " + firstLocus);
|
|
||||||
alignmentContext = li.next();
|
|
||||||
Assert.assertEquals(alignmentContext.getLocation().getStart(),firstLocus,"Incorrect extended event locus at this position; should be " + firstLocus);
|
|
||||||
readsAtLocus = alignmentContext.getExtendedEventPileup().getReads();
|
|
||||||
Assert.assertEquals(readsAtLocus.size(),3,"Wrong number of reads at extended event locus " + firstLocus);
|
|
||||||
Assert.assertSame(readsAtLocus.get(0),leadingRead,"leadingRead absent from pileup at extended event locus " + firstLocus);
|
|
||||||
Assert.assertSame(readsAtLocus.get(1),indelOnlyRead,"indelOnlyRead absent from pileup at extended event locus " + firstLocus);
|
|
||||||
// Weird, but as above, reads immediately after the indel are included in the extended event pileup
|
|
||||||
Assert.assertSame(readsAtLocus.get(2),fullMatchAfterIndel,"fullMatchAfterIndel absent from pileup at extended event locus " + firstLocus);
|
|
||||||
|
|
||||||
// Traditionally, reads that end with indels bleed into the pileup at the following locus. Verify that the next pileup contains this read
|
|
||||||
// and considers it to be an indel-containing read.
|
|
||||||
Assert.assertTrue(li.hasNext(),"Missing base pileup at " + secondLocus);
|
|
||||||
alignmentContext = li.next();
|
|
||||||
Assert.assertEquals(alignmentContext.getLocation().getStart(),secondLocus,"Incorrect extended event locus at this position; should be " + secondLocus);
|
|
||||||
readsAtLocus = alignmentContext.getBasePileup().getReads();
|
|
||||||
Assert.assertEquals(readsAtLocus.size(),3,"Wrong number of reads at extended event locus " + secondLocus);
|
|
||||||
Assert.assertSame(readsAtLocus.get(0),leadingRead,"leadingRead absent from pileup at extended event locus " + secondLocus);
|
|
||||||
Assert.assertSame(readsAtLocus.get(1),indelOnlyRead,"indelOnlyRead absent from pileup at extended event locus " + secondLocus);
|
|
||||||
// Weird, but as above, reads immediately after the indel are included in the extended event pileup
|
|
||||||
Assert.assertSame(readsAtLocus.get(2),fullMatchAfterIndel,"fullMatchAfterIndel absent from pileup at extended event locus " + secondLocus);
|
|
||||||
|
|
||||||
Assert.assertFalse(li.hasNext(),"Too many alignment contexts");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ReadProperties createTestReadProperties() {
|
private static ReadProperties createTestReadProperties() {
|
||||||
return new ReadProperties(
|
return new ReadProperties(
|
||||||
Collections.<SAMReaderID>emptyList(),
|
Collections.<SAMReaderID>emptyList(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue