Fix CleanedReadInjectorTest to work with new CleanedReadInjector.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1142 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
891f4c2bd9
commit
b43d4d909e
|
|
@ -7,14 +7,14 @@ import net.sf.samtools.util.CloseableIterator;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.List;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import org.broadinstitute.sting.utils.StingException;
|
import org.broadinstitute.sting.utils.StingException;
|
||||||
import org.broadinstitute.sting.utils.GenomeLoc;
|
import org.broadinstitute.sting.utils.GenomeLoc;
|
||||||
import org.broadinstitute.sting.utils.GenomeLocParser;
|
import org.broadinstitute.sting.utils.GenomeLocParser;
|
||||||
|
import org.broadinstitute.sting.gatk.iterators.StingSAMIteratorAdapter;
|
||||||
|
import org.broadinstitute.sting.gatk.Reads;
|
||||||
/**
|
/**
|
||||||
* User: hanna
|
* User: hanna
|
||||||
* Date: Jun 11, 2009
|
* Date: Jun 11, 2009
|
||||||
|
|
@ -40,6 +40,7 @@ public class ArtificialSAMFileReader extends SAMFileReader {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct an artificial SAM file reader.
|
* Construct an artificial SAM file reader.
|
||||||
|
* @param reads Reads to use as backing data source.
|
||||||
*/
|
*/
|
||||||
public ArtificialSAMFileReader(SAMRecord... reads) {
|
public ArtificialSAMFileReader(SAMRecord... reads) {
|
||||||
super( createEmptyInputStream(),true );
|
super( createEmptyInputStream(),true );
|
||||||
|
|
@ -69,6 +70,11 @@ public class ArtificialSAMFileReader extends SAMFileReader {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CloseableIterator<SAMRecord> iterator() {
|
||||||
|
return StingSAMIteratorAdapter.adapt( new Reads( Collections.<File>emptyList() ), reads.iterator() );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds an empty input stream for faking out the sam file reader.
|
* Builds an empty input stream for faking out the sam file reader.
|
||||||
* Derive it from a string so that, in the future, it might be possible
|
* Derive it from a string so that, in the future, it might be possible
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ package org.broadinstitute.sting.playground.gatk.walkers.indels;
|
||||||
import org.broadinstitute.sting.BaseTest;
|
import org.broadinstitute.sting.BaseTest;
|
||||||
import org.broadinstitute.sting.gatk.OutputTracker;
|
import org.broadinstitute.sting.gatk.OutputTracker;
|
||||||
import org.broadinstitute.sting.utils.fasta.IndexedFastaSequenceFile;
|
import org.broadinstitute.sting.utils.fasta.IndexedFastaSequenceFile;
|
||||||
import org.broadinstitute.sting.utils.StingException;
|
|
||||||
import org.broadinstitute.sting.utils.GenomeLocParser;
|
import org.broadinstitute.sting.utils.GenomeLocParser;
|
||||||
import org.broadinstitute.sting.utils.sam.ArtificialSAMFileReader;
|
import org.broadinstitute.sting.utils.sam.ArtificialSAMFileReader;
|
||||||
import org.broadinstitute.sting.utils.sam.ArtificialSAMFileWriter;
|
import org.broadinstitute.sting.utils.sam.ArtificialSAMFileWriter;
|
||||||
|
|
@ -14,7 +13,6 @@ import org.junit.Test;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
import net.sf.samtools.SAMFileHeader;
|
import net.sf.samtools.SAMFileHeader;
|
||||||
import net.sf.samtools.SAMRecord;
|
import net.sf.samtools.SAMRecord;
|
||||||
|
|
@ -44,6 +42,7 @@ public class CleanedReadInjectorTest extends BaseTest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the fasta.
|
* Initialize the fasta.
|
||||||
|
* @throws FileNotFoundException if fasta or index is not found.
|
||||||
*/
|
*/
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void initialize() throws FileNotFoundException {
|
public static void initialize() throws FileNotFoundException {
|
||||||
|
|
@ -55,7 +54,7 @@ public class CleanedReadInjectorTest extends BaseTest {
|
||||||
public void testNoReads() {
|
public void testNoReads() {
|
||||||
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader();
|
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader();
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
||||||
CleanedReadInjector walker = createWalker( "chr1:1-10", cleanedReads, output );
|
CleanedReadInjector walker = createWalker( cleanedReads, output );
|
||||||
|
|
||||||
walker.initialize();
|
walker.initialize();
|
||||||
walker.onTraversalDone(0);
|
walker.onTraversalDone(0);
|
||||||
|
|
@ -70,7 +69,7 @@ public class CleanedReadInjectorTest extends BaseTest {
|
||||||
|
|
||||||
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader();
|
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader();
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
||||||
CleanedReadInjector walker = createWalker( "chr1:1-10", cleanedReads, output );
|
CleanedReadInjector walker = createWalker( cleanedReads, output );
|
||||||
|
|
||||||
int result = runWalkerOverReads(walker,sourceRead);
|
int result = runWalkerOverReads(walker,sourceRead);
|
||||||
|
|
||||||
|
|
@ -89,7 +88,7 @@ public class CleanedReadInjectorTest extends BaseTest {
|
||||||
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
||||||
|
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
||||||
CleanedReadInjector walker = createWalker( "chr1:1-10", cleanedReads, output );
|
CleanedReadInjector walker = createWalker( cleanedReads, output );
|
||||||
|
|
||||||
int result = runWalkerOverReads(walker,sourceRead);
|
int result = runWalkerOverReads(walker,sourceRead);
|
||||||
|
|
||||||
|
|
@ -108,7 +107,7 @@ public class CleanedReadInjectorTest extends BaseTest {
|
||||||
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
||||||
|
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
||||||
CleanedReadInjector walker = createWalker( "chr1:4-12", cleanedReads, output );
|
CleanedReadInjector walker = createWalker( cleanedReads, output );
|
||||||
|
|
||||||
int result = runWalkerOverReads(walker,sourceRead);
|
int result = runWalkerOverReads(walker,sourceRead);
|
||||||
|
|
||||||
|
|
@ -131,7 +130,7 @@ public class CleanedReadInjectorTest extends BaseTest {
|
||||||
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
||||||
|
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
||||||
CleanedReadInjector walker = createWalker( "chr1:1-10", cleanedReads, output );
|
CleanedReadInjector walker = createWalker( cleanedReads, output );
|
||||||
|
|
||||||
int result = runWalkerOverReads(walker,sourceReads);
|
int result = runWalkerOverReads(walker,sourceReads);
|
||||||
|
|
||||||
|
|
@ -157,74 +156,20 @@ public class CleanedReadInjectorTest extends BaseTest {
|
||||||
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
||||||
|
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
||||||
CleanedReadInjector walker = createWalker( "chr1:1-10", cleanedReads, output );
|
CleanedReadInjector walker = createWalker( cleanedReads, output );
|
||||||
|
|
||||||
int result = runWalkerOverReads(walker,sourceReads);
|
int result = runWalkerOverReads(walker,sourceReads);
|
||||||
|
|
||||||
Assert.assertEquals("Result of traversal is incorrect",1,result);
|
Assert.assertEquals("Result of traversal is incorrect",1,result);
|
||||||
Assert.assertEquals("Incorrect number of records in output",3,output.getRecords().size());
|
Assert.assertEquals("Incorrect number of records in output",3,output.getRecords().size());
|
||||||
Assert.assertEquals("Incorrect read at position 1",cleanedRead,output.getRecords().get(0));
|
Assert.assertEquals("Incorrect read at position 1",sourceReads[1],output.getRecords().get(0));
|
||||||
Assert.assertEquals("Incorrect read at position 2",sourceReads[1],output.getRecords().get(1));
|
Assert.assertEquals("Incorrect read at position 2",cleanedRead,output.getRecords().get(1));
|
||||||
Assert.assertEquals("Incorrect read at position 3",sourceReads[2],output.getRecords().get(2));
|
Assert.assertEquals("Incorrect read at position 3",sourceReads[2],output.getRecords().get(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
private CleanedReadInjector createWalker( ArtificialSAMFileReader cleanedReads, ArtificialSAMFileWriter output ) {
|
||||||
public void testReadOutsideInterval() {
|
|
||||||
SAMFileHeader header = getMockSAMFileHeader();
|
|
||||||
SAMRecord sourceRead = ArtificialSAMUtils.createArtificialRead(header,"read1",1,1,5);
|
|
||||||
|
|
||||||
SAMRecord cleanedRead = ArtificialSAMUtils.createArtificialRead(header,"read1",1,1,5);
|
|
||||||
cleanedRead.setBaseQualities(getMockBaseQualityString((byte)1,cleanedRead.getReadLength()));
|
|
||||||
ArtificialSAMFileReader cleanedReads = new ArtificialSAMFileReader(cleanedRead);
|
|
||||||
|
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
|
||||||
CleanedReadInjector walker = createWalker( "chr1:20-50", cleanedReads, output );
|
|
||||||
|
|
||||||
int result = runWalkerOverReads( walker, sourceRead );
|
|
||||||
|
|
||||||
Assert.assertEquals("Result of traversal is incorrect",0,result);
|
|
||||||
Assert.assertEquals("Incorrect number of records in output",1,output.getRecords().size());
|
|
||||||
Assert.assertEquals("Output record is incorrect",sourceRead,output.getRecords().get(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMultipleIntervals() {
|
|
||||||
SAMFileHeader header = getMockSAMFileHeader();
|
|
||||||
SAMRecord[] sourceReads = new SAMRecord[] { ArtificialSAMUtils.createArtificialRead(header,"read1",1,1,10),
|
|
||||||
ArtificialSAMUtils.createArtificialRead(header,"read2",1,11,10),
|
|
||||||
ArtificialSAMUtils.createArtificialRead(header,"read3",1,21,10),
|
|
||||||
ArtificialSAMUtils.createArtificialRead(header,"read4",1,31,10),
|
|
||||||
ArtificialSAMUtils.createArtificialRead(header,"read5",1,41,10) };
|
|
||||||
SAMRecord[] cleanedReads = new SAMRecord[sourceReads.length];
|
|
||||||
for( int i = 0; i < sourceReads.length; i++ ) {
|
|
||||||
try {
|
|
||||||
cleanedReads[i] = (SAMRecord)sourceReads[i].clone();
|
|
||||||
cleanedReads[i].setBaseQualities(getMockBaseQualityString((byte)1,cleanedReads[i].getReadLength()));
|
|
||||||
}
|
|
||||||
catch( CloneNotSupportedException ex ) {
|
|
||||||
throw new StingException("Unable to clone samrecord", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ArtificialSAMFileReader cleanedReader = new ArtificialSAMFileReader(cleanedReads);
|
|
||||||
|
|
||||||
ArtificialSAMFileWriter output = new ArtificialSAMFileWriter();
|
|
||||||
CleanedReadInjector walker = createWalker( "chr1:11-20;chr1:31-40", cleanedReader, output );
|
|
||||||
int result = runWalkerOverReads( walker, sourceReads );
|
|
||||||
|
|
||||||
Assert.assertEquals("Result of traversal is incorrect",2,result);
|
|
||||||
Assert.assertEquals("Incorrect number of records in output",5,output.getRecords().size());
|
|
||||||
Assert.assertEquals("Incorrect read at position 1",sourceReads[0],output.getRecords().get(0));
|
|
||||||
Assert.assertEquals("Incorrect read at position 2",cleanedReads[1],output.getRecords().get(1));
|
|
||||||
Assert.assertEquals("Incorrect read at position 3",sourceReads[2],output.getRecords().get(2));
|
|
||||||
Assert.assertEquals("Incorrect read at position 4",cleanedReads[3],output.getRecords().get(3));
|
|
||||||
Assert.assertEquals("Incorrect read at position 5",sourceReads[4],output.getRecords().get(4));
|
|
||||||
}
|
|
||||||
|
|
||||||
private CleanedReadInjector createWalker( String intervals, ArtificialSAMFileReader cleanedReads, ArtificialSAMFileWriter output ) {
|
|
||||||
CleanedReadInjector walker = new CleanedReadInjector();
|
CleanedReadInjector walker = new CleanedReadInjector();
|
||||||
|
|
||||||
walker.intervalsSource = Collections.singletonList(intervals);
|
|
||||||
walker.cleanedReadsSource = cleanedReads;
|
walker.cleanedReadsSource = cleanedReads;
|
||||||
walker.outputBAM = output;
|
walker.outputBAM = output;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue