PedReader support for ; separated lines, not only newline

This commit is contained in:
Mark DePristo 2011-10-03 09:19:58 -07:00
parent 52f670c8b8
commit 0604ce55d1
2 changed files with 16 additions and 8 deletions

View File

@ -30,10 +30,7 @@ import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
import org.broadinstitute.sting.utils.exceptions.UserException;
import org.broadinstitute.sting.utils.text.XReadLines;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.io.*;
import java.util.*;
/**
@ -146,6 +143,11 @@ public class PedReader {
return parse(new FileReader(source), missingFields, sampleDB);
}
public final List<Sample> parse(final String source, EnumSet<MissingPedField> missingFields, SampleDataSource sampleDB) {
logger.warn("Reading PED string: \"" + source + "\" with missing fields: " + missingFields);
return parse(new StringReader(source.replace(";", String.format("%n"))), missingFields, sampleDB);
}
public final List<Sample> parse(Reader reader, EnumSet<MissingPedField> missingFields, SampleDataSource sampleDB) {
final List<String> lines = new XReadLines(reader).readLines();

View File

@ -179,7 +179,7 @@ public class PedReaderUnitTest extends BaseTest {
logger.warn("Test " + test);
PedReader reader = new PedReader();
SampleDataSource sampleDB = new SampleDataSource();
List<Sample> readSamples = reader.parse(new StringReader(myFileContents), missing, sampleDB);
List<Sample> readSamples = reader.parse(myFileContents, missing, sampleDB);
Assert.assertEquals(new HashSet<Sample>(test.expectedSamples), new HashSet<Sample>(readSamples), "Parsed incorrect number of samples");
}
@ -188,11 +188,18 @@ public class PedReaderUnitTest extends BaseTest {
runTest(test, test.fileContents, EnumSet.noneOf(PedReader.MissingPedField.class));
}
@Test(enabled = true, dataProvider = "readerTest", dependsOnMethods = "testPedReader")
@Test(enabled = true, dataProvider = "readerTest")
public void testPedReaderWithComments(PedReaderTest test) {
runTest(test, String.format("#comment%n%s", test.fileContents), EnumSet.noneOf(PedReader.MissingPedField.class));
}
@Test(enabled = true, dataProvider = "readerTest")
public void testPedReaderWithSemicolons(PedReaderTest test) {
runTest(test,
test.fileContents.replace(String.format("%n"), ";"),
EnumSet.noneOf(PedReader.MissingPedField.class));
}
// -----------------------------------------------------------------
// missing format field tests
// -----------------------------------------------------------------
@ -218,7 +225,6 @@ public class PedReaderUnitTest extends BaseTest {
@DataProvider(name = "readerTestMissing")
public Object[][] createPEDFilesWithMissing() {
new PedReaderTestMissing("missingFam",
"fam1 kid dad mom 1 2",
EnumSet.of(PedReader.MissingPedField.NO_FAMILY_ID),
@ -253,7 +259,7 @@ public class PedReaderUnitTest extends BaseTest {
return PedReaderTestMissing.getTests(PedReaderTestMissing.class);
}
@Test(enabled = true, dataProvider = "readerTestMissing", dependsOnMethods = "testPedReader")
@Test(enabled = true, dataProvider = "readerTestMissing")
public void testPedReaderWithMissing(PedReaderTestMissing test) {
final String contents = sliceContents(test.missingFields, test.fileContents);
logger.warn("Test " + test);