Added Basic Unit Tests for ReadClipper
Tests some but not all functions Some tests have been disabled because they are not working
This commit is contained in:
parent
b7c33116af
commit
1202a809cb
|
|
@ -30,9 +30,12 @@ import org.broadinstitute.sting.BaseTest;
|
||||||
import org.broadinstitute.sting.utils.sam.ArtificialSAMUtils;
|
import org.broadinstitute.sting.utils.sam.ArtificialSAMUtils;
|
||||||
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.BeforeClass;
|
import org.testng.annotations.BeforeTest;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by IntelliJ IDEA.
|
* Created by IntelliJ IDEA.
|
||||||
* User: roger
|
* User: roger
|
||||||
|
|
@ -44,44 +47,57 @@ public class ReadClipperUnitTest extends BaseTest {
|
||||||
|
|
||||||
// TODO: Add error messages on failed tests
|
// TODO: Add error messages on failed tests
|
||||||
|
|
||||||
|
|
||||||
|
//int debug = 0;
|
||||||
|
|
||||||
GATKSAMRecord read, expected;
|
GATKSAMRecord read, expected;
|
||||||
ReadClipper readClipper;
|
ReadClipper readClipper;
|
||||||
final static String BASES = "ACTG";
|
final static String BASES = "ACTG";
|
||||||
final static String QUALS = "!+5?"; //ASCII values = 33,43,53,63
|
final static String QUALS = "!+5?"; //ASCII values = 33,43,53,63
|
||||||
|
|
||||||
@BeforeClass
|
// What the test read looks like
|
||||||
|
// Ref: 1 2 3 4 5 6 7 8
|
||||||
|
// Read: 0 1 2 3 - - - -
|
||||||
|
// -----------------------------
|
||||||
|
// Bases: A C T G - - - -
|
||||||
|
// Quals: ! + 5 ? - - - -
|
||||||
|
|
||||||
|
@BeforeTest
|
||||||
public void init() {
|
public void init() {
|
||||||
SAMFileHeader header = ArtificialSAMUtils.createArtificialSamHeader(1, 1, 1000);
|
SAMFileHeader header = ArtificialSAMUtils.createArtificialSamHeader(1, 1, 1000);
|
||||||
read = ArtificialSAMUtils.createArtificialRead(header, "read1", 0, 1, BASES.length());
|
read = ArtificialSAMUtils.createArtificialRead(header, "read1", 0, 1, BASES.length());
|
||||||
read.setReadUnmappedFlag(true);
|
|
||||||
read.setReadBases(new String(BASES).getBytes());
|
read.setReadBases(new String(BASES).getBytes());
|
||||||
read.setBaseQualityString(new String(QUALS));
|
read.setBaseQualityString(new String(QUALS));
|
||||||
|
|
||||||
readClipper = new ReadClipper(read);
|
readClipper = new ReadClipper(read);
|
||||||
|
//logger.warn(read.getCigarString());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test ( enabled = false )
|
@Test ( enabled = true )
|
||||||
public void testHardClipBothEndsByReferenceCoordinates() {
|
public void testHardClipBothEndsByReferenceCoordinates() {
|
||||||
|
init();
|
||||||
logger.warn("Executing testHardClipBothEndsByReferenceCoordinates");
|
logger.warn("Executing testHardClipBothEndsByReferenceCoordinates");
|
||||||
|
//int debug = 1;
|
||||||
//Clip whole read
|
//Clip whole read
|
||||||
Assert.assertEquals(readClipper.hardClipBothEndsByReferenceCoordinates(0,0), new GATKSAMRecord(read.getHeader()));
|
Assert.assertEquals(readClipper.hardClipBothEndsByReferenceCoordinates(1,1), new GATKSAMRecord(read.getHeader()));
|
||||||
//clip 1 base
|
//clip 1 base
|
||||||
expected = readClipper.hardClipBothEndsByReferenceCoordinates(0,3);
|
expected = readClipper.hardClipBothEndsByReferenceCoordinates(1,4);
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,3).getBytes());
|
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,3).getBytes());
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,3));
|
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,3));
|
||||||
Assert.assertEquals(expected.getCigarString(), "1H2M1H");
|
Assert.assertEquals(expected.getCigarString(), "1H2M1H");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test ( enabled = false )
|
@Test ( enabled = false ) // TODO This fails at hardClipCigar and returns a NullPointerException
|
||||||
public void testHardClipByReadCoordinates() {
|
public void testHardClipByReadCoordinates() {
|
||||||
|
init();
|
||||||
logger.warn("Executing testHardClipByReadCoordinates");
|
logger.warn("Executing testHardClipByReadCoordinates");
|
||||||
|
|
||||||
//Clip whole read
|
//Clip whole read
|
||||||
Assert.assertEquals(readClipper.hardClipByReadCoordinates(0,3), new GATKSAMRecord(read.getHeader()));
|
Assert.assertEquals(readClipper.hardClipByReadCoordinates(0,3), new GATKSAMRecord(read.getHeader()));
|
||||||
|
|
||||||
//clip 1 base at start
|
//clip 1 base at start
|
||||||
|
System.out.println(readClipper.read.getCigarString());
|
||||||
expected = readClipper.hardClipByReadCoordinates(0,0);
|
expected = readClipper.hardClipByReadCoordinates(0,0);
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,4).getBytes());
|
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,4).getBytes());
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,4));
|
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,4));
|
||||||
|
|
@ -107,83 +123,101 @@ public class ReadClipperUnitTest extends BaseTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test ( enabled = false )
|
public void testIfEqual( GATKSAMRecord read, byte[] readBases, String baseQuals, String cigar) {
|
||||||
|
Assert.assertEquals(read.getReadBases(), readBases);
|
||||||
|
Assert.assertEquals(read.getBaseQualityString(), baseQuals);
|
||||||
|
Assert.assertEquals(read.getCigarString(), cigar);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class testParameter {
|
||||||
|
int inputStart;
|
||||||
|
int inputStop;
|
||||||
|
int substringStart;
|
||||||
|
int substringStop;
|
||||||
|
String cigar;
|
||||||
|
|
||||||
|
public testParameter(int InputStart, int InputStop, int SubstringStart, int SubstringStop, String Cigar) {
|
||||||
|
inputStart = InputStart;
|
||||||
|
inputStop = InputStop;
|
||||||
|
substringStart = SubstringStart;
|
||||||
|
substringStop = SubstringStop;
|
||||||
|
cigar = Cigar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test ( enabled = true )
|
||||||
public void testHardClipByReferenceCoordinates() {
|
public void testHardClipByReferenceCoordinates() {
|
||||||
logger.warn("Executing testHardClipByReferenceCoordinates");
|
logger.warn("Executing testHardClipByReferenceCoordinates");
|
||||||
|
//logger.warn(debug);
|
||||||
//Clip whole read
|
//Clip whole read
|
||||||
Assert.assertEquals(readClipper.hardClipByReferenceCoordinates(1,4), new GATKSAMRecord(read.getHeader()));
|
Assert.assertEquals(readClipper.hardClipByReferenceCoordinates(1,4), new GATKSAMRecord(read.getHeader()));
|
||||||
|
|
||||||
//clip 1 base at start
|
List<testParameter> testList = new LinkedList<testParameter>();
|
||||||
expected = readClipper.hardClipByReferenceCoordinates(-1,1);
|
testList.add(new testParameter(-1,1,1,4,"1H3M"));//clip 1 base at start
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,4).getBytes());
|
testList.add(new testParameter(4,-1,0,3,"3M1H"));//clip 1 base at end
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,4));
|
testList.add(new testParameter(-1,2,2,4,"2H2M"));//clip 2 bases at start
|
||||||
Assert.assertEquals(expected.getCigarString(), "1H3M");
|
testList.add(new testParameter(3,-1,0,2,"2M2H"));//clip 2 bases at end
|
||||||
|
|
||||||
//clip 1 base at end
|
for ( testParameter p : testList ) {
|
||||||
expected = readClipper.hardClipByReferenceCoordinates(3,-1);
|
init();
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(0,3).getBytes());
|
//logger.warn("Testing Parameters: " + p.inputStart+","+p.inputStop+","+p.substringStart+","+p.substringStop+","+p.cigar);
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(0,3));
|
testIfEqual( readClipper.hardClipByReferenceCoordinates(p.inputStart,p.inputStop),
|
||||||
Assert.assertEquals(expected.getCigarString(), "3M1H");
|
BASES.substring(p.substringStart,p.substringStop).getBytes(),
|
||||||
|
QUALS.substring(p.substringStart,p.substringStop),
|
||||||
//clip 2 bases at start
|
p.cigar );
|
||||||
expected = readClipper.hardClipByReferenceCoordinates(-1,2);
|
}
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(2,4).getBytes());
|
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(2,4));
|
|
||||||
Assert.assertEquals(expected.getCigarString(), "2H2M");
|
|
||||||
|
|
||||||
//clip 2 bases at end
|
|
||||||
expected = readClipper.hardClipByReferenceCoordinates(2,-1);
|
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(0,2).getBytes());
|
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(0,2));
|
|
||||||
Assert.assertEquals(expected.getCigarString(), "2M2H");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test ( enabled = false )
|
@Test ( enabled = true )
|
||||||
public void testHardClipByReferenceCoordinatesLeftTail() {
|
public void testHardClipByReferenceCoordinatesLeftTail() {
|
||||||
|
init();
|
||||||
logger.warn("Executing testHardClipByReferenceCoordinatesLeftTail");
|
logger.warn("Executing testHardClipByReferenceCoordinatesLeftTail");
|
||||||
|
|
||||||
//Clip whole read
|
//Clip whole read
|
||||||
Assert.assertEquals(readClipper.hardClipByReferenceCoordinatesLeftTail(4), new GATKSAMRecord(read.getHeader()));
|
Assert.assertEquals(readClipper.hardClipByReferenceCoordinatesLeftTail(4), new GATKSAMRecord(read.getHeader()));
|
||||||
|
|
||||||
//clip 1 base at start
|
List<testParameter> testList = new LinkedList<testParameter>();
|
||||||
expected = readClipper.hardClipByReferenceCoordinatesLeftTail(1);
|
testList.add(new testParameter(1,-1,1,4,"1H3M"));//clip 1 base at start
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,4).getBytes());
|
testList.add(new testParameter(2,-1,2,4,"2H2M"));//clip 2 bases at start
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,4));
|
|
||||||
Assert.assertEquals(expected.getCigarString(), "1H3M");
|
|
||||||
|
|
||||||
//clip 2 bases at start
|
for ( testParameter p : testList ) {
|
||||||
expected = readClipper.hardClipByReferenceCoordinatesLeftTail(2);
|
init();
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(2,4).getBytes());
|
//logger.warn("Testing Parameters: " + p.inputStart+","+p.substringStart+","+p.substringStop+","+p.cigar);
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(2,4));
|
testIfEqual( readClipper.hardClipByReferenceCoordinatesLeftTail(p.inputStart),
|
||||||
Assert.assertEquals(expected.getCigarString(), "2H2M");
|
BASES.substring(p.substringStart,p.substringStop).getBytes(),
|
||||||
|
QUALS.substring(p.substringStart,p.substringStop),
|
||||||
|
p.cigar );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test ( enabled = false )
|
@Test ( enabled = true )
|
||||||
public void testHardClipByReferenceCoordinatesRightTail() {
|
public void testHardClipByReferenceCoordinatesRightTail() {
|
||||||
|
init();
|
||||||
logger.warn("Executing testHardClipByReferenceCoordinatesRightTail");
|
logger.warn("Executing testHardClipByReferenceCoordinatesRightTail");
|
||||||
|
|
||||||
//Clip whole read
|
//Clip whole read
|
||||||
Assert.assertEquals(readClipper.hardClipByReferenceCoordinatesRightTail(1), new GATKSAMRecord(read.getHeader()));
|
Assert.assertEquals(readClipper.hardClipByReferenceCoordinatesRightTail(1), new GATKSAMRecord(read.getHeader()));
|
||||||
|
|
||||||
//clip 1 base at end
|
List<testParameter> testList = new LinkedList<testParameter>();
|
||||||
expected = readClipper.hardClipByReferenceCoordinatesRightTail(3);
|
testList.add(new testParameter(-1,4,0,3,"3M1H"));//clip 1 base at end
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(0,3).getBytes());
|
testList.add(new testParameter(-1,3,0,2,"2M2H"));//clip 2 bases at end
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(0,3));
|
|
||||||
Assert.assertEquals(expected.getCigarString(), "3M1H");
|
|
||||||
|
|
||||||
//clip 2 bases at end
|
for ( testParameter p : testList ) {
|
||||||
expected = readClipper.hardClipByReferenceCoordinatesRightTail(2);
|
init();
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(0,2).getBytes());
|
//logger.warn("Testing Parameters: " + p.inputStop+","+p.substringStart+","+p.substringStop+","+p.cigar);
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(0,2));
|
testIfEqual( readClipper.hardClipByReferenceCoordinatesRightTail(p.inputStop),
|
||||||
Assert.assertEquals(expected.getCigarString(), "2M2H");
|
BASES.substring(p.substringStart,p.substringStop).getBytes(),
|
||||||
|
QUALS.substring(p.substringStart,p.substringStop),
|
||||||
|
p.cigar );
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test ( enabled = false )
|
@Test ( enabled = false ) // TODO This function is returning null reads
|
||||||
public void testHardClipLowQualEnds() {
|
public void testHardClipLowQualEnds() {
|
||||||
|
init();
|
||||||
logger.warn("Executing testHardClipByReferenceCoordinates");
|
logger.warn("Executing testHardClipByReferenceCoordinates");
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -192,6 +226,7 @@ public class ReadClipperUnitTest extends BaseTest {
|
||||||
|
|
||||||
//clip 1 base at start
|
//clip 1 base at start
|
||||||
expected = readClipper.hardClipLowQualEnds((byte)34);
|
expected = readClipper.hardClipLowQualEnds((byte)34);
|
||||||
|
logger.warn(expected.getBaseQualities().toString()+","+expected.getBaseQualityString());
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,4).getBytes());
|
Assert.assertEquals(expected.getReadBases(), BASES.substring(1,4).getBytes());
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,4));
|
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(1,4));
|
||||||
Assert.assertEquals(expected.getCigarString(), "1H3M");
|
Assert.assertEquals(expected.getCigarString(), "1H3M");
|
||||||
|
|
@ -203,10 +238,11 @@ public class ReadClipperUnitTest extends BaseTest {
|
||||||
Assert.assertEquals(expected.getCigarString(), "2H2M");
|
Assert.assertEquals(expected.getCigarString(), "2H2M");
|
||||||
|
|
||||||
// Reverse Quals sequence
|
// Reverse Quals sequence
|
||||||
readClipper.getRead().setBaseQualityString("?5+!"); // 63,53,43,33
|
//readClipper.getRead().setBaseQualityString("?5+!"); // 63,53,43,33
|
||||||
|
|
||||||
//clip 1 base at end
|
//clip 1 base at end
|
||||||
expected = readClipper.hardClipLowQualEnds((byte)34);
|
expected = readClipper.hardClipLowQualEnds((byte)'!');
|
||||||
|
logger.warn(expected.getBaseQualities().toString()+","+expected.getBaseQualityString());
|
||||||
Assert.assertEquals(expected.getReadBases(), BASES.substring(0,3).getBytes());
|
Assert.assertEquals(expected.getReadBases(), BASES.substring(0,3).getBytes());
|
||||||
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(0,3));
|
Assert.assertEquals(expected.getBaseQualityString(), QUALS.substring(0,3));
|
||||||
Assert.assertEquals(expected.getCigarString(), "3M1H");
|
Assert.assertEquals(expected.getCigarString(), "3M1H");
|
||||||
|
|
@ -220,4 +256,4 @@ public class ReadClipperUnitTest extends BaseTest {
|
||||||
// revert Qual sequence
|
// revert Qual sequence
|
||||||
readClipper.getRead().setBaseQualityString(QUALS);
|
readClipper.getRead().setBaseQualityString(QUALS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue