Skip to content

Commit 4ea3285

Browse files
authored
Treat .vcf.bgz as a valid vcf extension in FileExtension (#1727)
* Fix so that .vcf.bgz is treated as a valid compressed vcf extension.
1 parent fd56496 commit 4ea3285

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

src/main/java/htsjdk/beta/codecs/variants/vcf/VCFCodec.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public abstract class VCFCodec implements VariantsCodec {
3232
{
3333
add(FileExtensions.VCF);
3434
add(FileExtensions.COMPRESSED_VCF);
35-
add(".vcf.bgz");
35+
add(FileExtensions.COMPRESSED_VCF_BGZ);
3636
}
3737
};
3838

src/main/java/htsjdk/beta/plugin/variants/VariantsBundle.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ private static <T extends IOPath> Optional<Tuple<String, String>> getInferredCon
206206
final String ext = extension.get();
207207
if (ext.equals(FileExtensions.VCF)) {
208208
return Optional.of(new Tuple<>(BundleResourceType.CT_VARIANT_CONTEXTS, BundleResourceType.FMT_VARIANTS_VCF));
209-
} else if (ext.equals(FileExtensions.COMPRESSED_VCF)) {
209+
} else if (ext.equals(FileExtensions.COMPRESSED_VCF) || ext.equals(FileExtensions.COMPRESSED_VCF_BGZ)) {
210210
return Optional.of(new Tuple<>(BundleResourceType.CT_VARIANT_CONTEXTS, BundleResourceType.FMT_VARIANTS_VCF));
211211
}
212212
}

src/main/java/htsjdk/samtools/util/FileExtensions.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,10 @@ public final class FileExtensions {
6565
public static final String VCF = ".vcf";
6666
public static final String VCF_INDEX = TRIBBLE_INDEX;
6767
public static final String BCF = ".bcf";
68+
public static final String COMPRESSED_VCF_BGZ = ".vcf.bgz"; // suffix used by gnomad see https://gnomad.broadinstitute.org/data#v4
6869
public static final String COMPRESSED_VCF = ".vcf.gz";
6970
public static final String COMPRESSED_VCF_INDEX = ".tbi";
70-
public static final List<String> VCF_LIST = Collections.unmodifiableList(Arrays.asList(VCF, COMPRESSED_VCF, BCF));
71+
public static final List<String> VCF_LIST = Collections.unmodifiableList(Arrays.asList(VCF, COMPRESSED_VCF, COMPRESSED_VCF_BGZ, BCF));
7172

7273
public static final String INTERVAL_LIST = ".interval_list";
7374
public static final String COMPRESSED_INTERVAL_LIST = ".interval_list.gz";

src/test/java/htsjdk/variant/variantcontext/writer/VCFWriterUnitTest.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ private void createTemporaryDirectory() {
9090
public void testBasicWriteAndRead(final String extension) throws IOException {
9191
final File fakeVCFFile = File.createTempFile("testBasicWriteAndRead.", extension, tempDir);
9292
fakeVCFFile.deleteOnExit();
93-
if (FileExtensions.COMPRESSED_VCF.equals(extension)) {
93+
if (FileExtensions.COMPRESSED_VCF.equals(extension) || FileExtensions.COMPRESSED_VCF_BGZ.equals(extension)) {
9494
new File(fakeVCFFile.getAbsolutePath() + FileExtensions.VCF_INDEX);
9595
} else {
9696
Tribble.indexFile(fakeVCFFile).deleteOnExit();
@@ -136,7 +136,7 @@ public void testBasicWriteAndRead(final String extension) throws IOException {
136136
public void testWriteAndReadVCFHeaderless(final String extension) throws IOException {
137137
final File fakeVCFFile = File.createTempFile("testWriteAndReadVCFHeaderless.", extension, tempDir);
138138
fakeVCFFile.deleteOnExit();
139-
if (FileExtensions.COMPRESSED_VCF.equals(extension)) {
139+
if (FileExtensions.COMPRESSED_VCF.equals(extension) || FileExtensions.COMPRESSED_VCF_BGZ.equals(extension)) {
140140
new File(fakeVCFFile.getAbsolutePath() + ".tbi");
141141
} else {
142142
Tribble.indexFile(fakeVCFFile).deleteOnExit();
@@ -159,7 +159,7 @@ public void testWriteAndReadVCFHeaderless(final String extension) throws IOExcep
159159
try (BlockCompressedInputStream bcis = new BlockCompressedInputStream(fakeVCFFile);
160160
FileInputStream fis = new FileInputStream(fakeVCFFile)) {
161161
AsciiLineReaderIterator iterator =
162-
new AsciiLineReaderIterator(new AsciiLineReader(".vcf.gz".equals(extension) ? bcis : fis));
162+
new AsciiLineReaderIterator(new AsciiLineReader(FileExtensions.COMPRESSED_VCF.equals(extension) || FileExtensions.COMPRESSED_VCF_BGZ.equals(extension) ? bcis : fis));
163163
int counter = 0;
164164
while (iterator.hasNext()) {
165165
VariantContext context = codec.decode(iterator.next());
@@ -300,7 +300,7 @@ public void TestWritingLargeVCF(final String extension) throws FileNotFoundExcep
300300

301301
final File vcf = new File(tempDir, "test" + extension);
302302
final String indexExtension;
303-
if (extension.equals(FileExtensions.COMPRESSED_VCF)) {
303+
if (extension.equals(FileExtensions.COMPRESSED_VCF) || extension.equals(FileExtensions.COMPRESSED_VCF_BGZ)) {
304304
indexExtension = FileExtensions.TABIX_INDEX;
305305
} else {
306306
indexExtension = FileExtensions.TRIBBLE_INDEX;
@@ -333,7 +333,8 @@ public void TestWritingLargeVCF(final String extension) throws FileNotFoundExcep
333333
// TODO: BCF doesn't work because header is not properly constructed.
334334
// {".bcf"},
335335
{FileExtensions.VCF},
336-
{FileExtensions.COMPRESSED_VCF}
336+
{FileExtensions.COMPRESSED_VCF},
337+
{FileExtensions.COMPRESSED_VCF_BGZ}
337338
};
338339
}
339340

0 commit comments

Comments
 (0)