Search in sources :

Example 1 with BCF2Codec

use of htsjdk.variant.bcf2.BCF2Codec in project gatk by broadinstitute.

the class GenomicsDBImportIntegrationTest method testPreserveContigOrderingInHeader.

@Test
public void testPreserveContigOrderingInHeader() throws IOException {
    final String workspace = createTempDir("testPreserveContigOrderingInHeader-").getAbsolutePath() + "/workspace";
    writeToGenomicsDB(Arrays.asList(GENOMICSDB_TEST_DIR + "testHeaderContigLineSorting1.g.vcf", GENOMICSDB_TEST_DIR + "testHeaderContigLineSorting2.g.vcf"), new SimpleInterval("chr20", 17959479, 17959479), workspace, 0, false, 0);
    try (final GenomicsDBFeatureReader<VariantContext, PositionalBufferedStream> genomicsDBFeatureReader = new GenomicsDBFeatureReader<>(new File(workspace, GenomicsDBConstants.DEFAULT_VIDMAP_FILE_NAME).getAbsolutePath(), new File(workspace, GenomicsDBConstants.DEFAULT_CALLSETMAP_FILE_NAME).getAbsolutePath(), workspace, GenomicsDBConstants.DEFAULT_ARRAY_NAME, b38_reference_20_21, null, new BCF2Codec());
        final AbstractFeatureReader<VariantContext, LineIterator> inputGVCFReader = AbstractFeatureReader.getFeatureReader(GENOMICSDB_TEST_DIR + "testHeaderContigLineSorting1.g.vcf", new VCFCodec(), true)) {
        final SAMSequenceDictionary dictionaryFromGenomicsDB = ((VCFHeader) genomicsDBFeatureReader.getHeader()).getSequenceDictionary();
        final SAMSequenceDictionary dictionaryFromInputGVCF = ((VCFHeader) inputGVCFReader.getHeader()).getSequenceDictionary();
        Assert.assertEquals(dictionaryFromGenomicsDB, dictionaryFromInputGVCF, "Sequence dictionary from GenomicsDB does not match original sequence dictionary from input GVCF");
    }
}
Also used : VCFCodec(htsjdk.variant.vcf.VCFCodec) VariantContext(htsjdk.variant.variantcontext.VariantContext) LineIterator(htsjdk.tribble.readers.LineIterator) SAMSequenceDictionary(htsjdk.samtools.SAMSequenceDictionary) GenomicsDBFeatureReader(com.intel.genomicsdb.GenomicsDBFeatureReader) PositionalBufferedStream(htsjdk.tribble.readers.PositionalBufferedStream) BCF2Codec(htsjdk.variant.bcf2.BCF2Codec) SimpleInterval(org.broadinstitute.hellbender.utils.SimpleInterval) VCFHeader(htsjdk.variant.vcf.VCFHeader) File(java.io.File) BaseTest(org.broadinstitute.hellbender.utils.test.BaseTest) Test(org.testng.annotations.Test) CommandLineProgramTest(org.broadinstitute.hellbender.CommandLineProgramTest)

Example 2 with BCF2Codec

use of htsjdk.variant.bcf2.BCF2Codec in project gatk by broadinstitute.

the class GenomicsDBImportIntegrationTest method checkGenomicsDBAgainstExpected.

private static void checkGenomicsDBAgainstExpected(final String workspace, final SimpleInterval interval, final String expectedCombinedVCF) throws IOException {
    final GenomicsDBFeatureReader<VariantContext, PositionalBufferedStream> genomicsDBFeatureReader = new GenomicsDBFeatureReader<>(new File(workspace, GenomicsDBConstants.DEFAULT_VIDMAP_FILE_NAME).getAbsolutePath(), new File(workspace, GenomicsDBConstants.DEFAULT_CALLSETMAP_FILE_NAME).getAbsolutePath(), workspace, GenomicsDBConstants.DEFAULT_ARRAY_NAME, b38_reference_20_21, null, new BCF2Codec());
    final AbstractFeatureReader<VariantContext, LineIterator> combinedVCFReader = AbstractFeatureReader.getFeatureReader(expectedCombinedVCF, new VCFCodec(), true);
    try (CloseableTribbleIterator<VariantContext> actualVcs = genomicsDBFeatureReader.query(interval.getContig(), interval.getStart(), interval.getEnd());
        CloseableTribbleIterator<VariantContext> expectedVcs = combinedVCFReader.query(interval.getContig(), interval.getStart(), interval.getEnd())) {
        BaseTest.assertCondition(actualVcs, expectedVcs, (a, e) -> {
            // TODO: Temporary hacks to make this test pass. Must be removed later
            if (// allele order
            e.getStart() != 17967343 && e.getStart() != 17966384 && // split block
            e.getEnd() != 17981447) {
                VariantContextTestUtils.assertVariantContextsAreEqual(a, e, Collections.emptyList());
            }
        });
    }
}
Also used : PositionalBufferedStream(htsjdk.tribble.readers.PositionalBufferedStream) VCFCodec(htsjdk.variant.vcf.VCFCodec) BCF2Codec(htsjdk.variant.bcf2.BCF2Codec) VariantContext(htsjdk.variant.variantcontext.VariantContext) File(java.io.File) LineIterator(htsjdk.tribble.readers.LineIterator) GenomicsDBFeatureReader(com.intel.genomicsdb.GenomicsDBFeatureReader)

Example 3 with BCF2Codec

use of htsjdk.variant.bcf2.BCF2Codec in project gatk by broadinstitute.

the class FeatureDataSource method getGenomicsDBFeatureReader.

private static FeatureReader<VariantContext> getGenomicsDBFeatureReader(final String path, final File reference) {
    if (!isGenomicsDBPath(path)) {
        throw new IllegalArgumentException("Trying to create a GenomicsDBReader from a non-GenomicsDB input");
    }
    final String noheader = path.replace(GENOMIC_DB_URI_SCHEME, "");
    final File workspace = new File(noheader);
    final File callsetJson = new File(noheader, GenomicsDBConstants.DEFAULT_CALLSETMAP_FILE_NAME);
    final File vidmapJson = new File(noheader, GenomicsDBConstants.DEFAULT_VIDMAP_FILE_NAME);
    if (!workspace.exists() || !workspace.canRead() || !workspace.isDirectory()) {
        throw new UserException("GenomicsDB workspace " + workspace.getAbsolutePath() + " does not exist, " + " is not readable, or is not a directory");
    }
    try {
        IOUtils.canReadFile(callsetJson);
        IOUtils.canReadFile(vidmapJson);
    } catch (UserException.CouldNotReadInputFile e) {
        throw new UserException("Couldn't connect to GenomicsDB because the vidmap and/or callset JSON files (" + GenomicsDBConstants.DEFAULT_VIDMAP_FILE_NAME + " and " + GenomicsDBConstants.DEFAULT_CALLSETMAP_FILE_NAME + ") could not be read from GenomicsDB workspace " + workspace.getAbsolutePath(), e);
    }
    try {
        return new GenomicsDBFeatureReader<>(vidmapJson.getAbsolutePath(), callsetJson.getAbsolutePath(), workspace.getAbsolutePath(), GenomicsDBConstants.DEFAULT_ARRAY_NAME, reference.getAbsolutePath(), null, new BCF2Codec());
    } catch (final IOException e) {
        throw new UserException("Couldn't create GenomicsDBFeatureReader", e);
    }
}
Also used : BCF2Codec(htsjdk.variant.bcf2.BCF2Codec) UserException(org.broadinstitute.hellbender.exceptions.UserException) IOException(java.io.IOException) File(java.io.File) IndexFeatureFile(org.broadinstitute.hellbender.tools.IndexFeatureFile) GenomicsDBFeatureReader(com.intel.genomicsdb.GenomicsDBFeatureReader)

Aggregations

GenomicsDBFeatureReader (com.intel.genomicsdb.GenomicsDBFeatureReader)3 BCF2Codec (htsjdk.variant.bcf2.BCF2Codec)3 File (java.io.File)3 LineIterator (htsjdk.tribble.readers.LineIterator)2 PositionalBufferedStream (htsjdk.tribble.readers.PositionalBufferedStream)2 VariantContext (htsjdk.variant.variantcontext.VariantContext)2 VCFCodec (htsjdk.variant.vcf.VCFCodec)2 SAMSequenceDictionary (htsjdk.samtools.SAMSequenceDictionary)1 VCFHeader (htsjdk.variant.vcf.VCFHeader)1 IOException (java.io.IOException)1 CommandLineProgramTest (org.broadinstitute.hellbender.CommandLineProgramTest)1 UserException (org.broadinstitute.hellbender.exceptions.UserException)1 IndexFeatureFile (org.broadinstitute.hellbender.tools.IndexFeatureFile)1 SimpleInterval (org.broadinstitute.hellbender.utils.SimpleInterval)1 BaseTest (org.broadinstitute.hellbender.utils.test.BaseTest)1 Test (org.testng.annotations.Test)1