PedReader support for ; separated lines, not only newline
This commit is contained in:
parent
52f670c8b8
commit
0604ce55d1
|
|
@ -30,10 +30,7 @@ import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||||
import org.broadinstitute.sting.utils.text.XReadLines;
|
import org.broadinstitute.sting.utils.text.XReadLines;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.Reader;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -146,6 +143,11 @@ public class PedReader {
|
||||||
return parse(new FileReader(source), missingFields, sampleDB);
|
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) {
|
public final List<Sample> parse(Reader reader, EnumSet<MissingPedField> missingFields, SampleDataSource sampleDB) {
|
||||||
final List<String> lines = new XReadLines(reader).readLines();
|
final List<String> lines = new XReadLines(reader).readLines();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ public class PedReaderUnitTest extends BaseTest {
|
||||||
logger.warn("Test " + test);
|
logger.warn("Test " + test);
|
||||||
PedReader reader = new PedReader();
|
PedReader reader = new PedReader();
|
||||||
SampleDataSource sampleDB = new SampleDataSource();
|
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");
|
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));
|
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) {
|
public void testPedReaderWithComments(PedReaderTest test) {
|
||||||
runTest(test, String.format("#comment%n%s", test.fileContents), EnumSet.noneOf(PedReader.MissingPedField.class));
|
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
|
// missing format field tests
|
||||||
// -----------------------------------------------------------------
|
// -----------------------------------------------------------------
|
||||||
|
|
@ -218,7 +225,6 @@ public class PedReaderUnitTest extends BaseTest {
|
||||||
|
|
||||||
@DataProvider(name = "readerTestMissing")
|
@DataProvider(name = "readerTestMissing")
|
||||||
public Object[][] createPEDFilesWithMissing() {
|
public Object[][] createPEDFilesWithMissing() {
|
||||||
|
|
||||||
new PedReaderTestMissing("missingFam",
|
new PedReaderTestMissing("missingFam",
|
||||||
"fam1 kid dad mom 1 2",
|
"fam1 kid dad mom 1 2",
|
||||||
EnumSet.of(PedReader.MissingPedField.NO_FAMILY_ID),
|
EnumSet.of(PedReader.MissingPedField.NO_FAMILY_ID),
|
||||||
|
|
@ -253,7 +259,7 @@ public class PedReaderUnitTest extends BaseTest {
|
||||||
return PedReaderTestMissing.getTests(PedReaderTestMissing.class);
|
return PedReaderTestMissing.getTests(PedReaderTestMissing.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(enabled = true, dataProvider = "readerTestMissing", dependsOnMethods = "testPedReader")
|
@Test(enabled = true, dataProvider = "readerTestMissing")
|
||||||
public void testPedReaderWithMissing(PedReaderTestMissing test) {
|
public void testPedReaderWithMissing(PedReaderTestMissing test) {
|
||||||
final String contents = sliceContents(test.missingFields, test.fileContents);
|
final String contents = sliceContents(test.missingFields, test.fileContents);
|
||||||
logger.warn("Test " + test);
|
logger.warn("Test " + test);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue