X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=test%2Fjalview%2Fext%2Fhtsjdk%2FVCFReaderTest.java;h=befdab1399520e88c745399c9146e6ff341cf4ed;hb=32a2c42a535d809dfcb48db1e8cc91bb03193f8e;hp=29d752c212701fa6da5020aefcf96ce89371e875;hpb=9317cd655af4803461acc71581ecbdc0a6677069;p=jalview.git
diff --git a/test/jalview/ext/htsjdk/VCFReaderTest.java b/test/jalview/ext/htsjdk/VCFReaderTest.java
index 29d752c..befdab1 100644
--- a/test/jalview/ext/htsjdk/VCFReaderTest.java
+++ b/test/jalview/ext/htsjdk/VCFReaderTest.java
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.htsjdk;
import static org.testng.Assert.assertEquals;
@@ -16,8 +36,7 @@ import org.testng.annotations.Test;
public class VCFReaderTest
{
- private static final String[] VCF = new String[] {
- "##fileformat=VCFv4.2",
+ private static final String[] VCF = new String[] { "##fileformat=VCFv4.2",
"#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO",
"20\t3\t.\tC\tG\t.\tPASS\tDP=100", // SNP C/G
"20\t7\t.\tG\tGA\t.\tPASS\tDP=100", // insertion G/GA
@@ -29,7 +48,8 @@ public class VCFReaderTest
// "https://storage.cloud.google.com/gnomad-public/release/2.0.1/vcf/exomes/gnomad.exomes.r2.0.1.sites.vcf.gz";
/**
- * A test to exercise some basic functionality of the htsjdk VCF reader
+ * A test to exercise some basic functionality of the htsjdk VCF reader,
+ * reading from a non-index VCF file
*
* @throws IOException
*/
@@ -101,13 +121,14 @@ public class VCFReaderTest
File f = File.createTempFile("Test", "vcf");
f.deleteOnExit();
PrintWriter pw = new PrintWriter(f);
- for (String vcfLine : VCF) {
+ for (String vcfLine : VCF)
+ {
pw.println(vcfLine);
}
pw.close();
return f;
}
-
+
/**
* A 'test' that demonstrates querying an indexed VCF file for features in a
* specified interval
@@ -121,7 +142,7 @@ public class VCFReaderTest
* if not specified, assumes index file is filename.tbi
*/
VCFReader reader = new VCFReader(VCF_PATH);
-
+
/*
* gene NMT1 (human) is on chromosome 17
* GCHR38 (Ensembl): 45051610-45109016
@@ -156,4 +177,44 @@ public class VCFReaderTest
System.out.println(next.toString());
return next.getStart();
}
+
+ // "https://storage.cloud.google.com/gnomad-public/release/2.0.1/vcf/exomes/gnomad.exomes.r2.0.1.sites.vcf.gz";
+
+ /**
+ * Test the query method that wraps a non-indexed VCF file
+ *
+ * @throws IOException
+ */
+ @Test(groups = "Functional")
+ public void testQuery_plain() throws IOException
+ {
+ File f = writeVcfFile();
+ VCFReader reader = new VCFReader(f.getAbsolutePath());
+
+ /*
+ * query for overlap of 5-8 - should find variant at 7
+ */
+ CloseableIterator variants = reader.query("20", 5, 8);
+
+ /*
+ * INDEL G/GA variant
+ */
+ VariantContext vc = variants.next();
+ assertTrue(vc.isIndel());
+ assertEquals(vc.getStart(), 7);
+ assertEquals(vc.getEnd(), 7);
+ Allele ref = vc.getReference();
+ assertEquals(ref.getBaseString(), "G");
+ List alleles = vc.getAlleles();
+ assertEquals(alleles.size(), 2);
+ assertTrue(alleles.get(0).isReference());
+ assertEquals(alleles.get(0).getBaseString(), "G");
+ assertFalse(alleles.get(1).isReference());
+ assertEquals(alleles.get(1).getBaseString(), "GA");
+
+ assertFalse(variants.hasNext());
+
+ variants.close();
+ reader.close();
+ }
}