1 package jalview.ext.htsjdk;
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertTrue;
6 import htsjdk.samtools.util.CloseableIterator;
7 import htsjdk.variant.variantcontext.Allele;
8 import htsjdk.variant.variantcontext.VariantContext;
9 import htsjdk.variant.vcf.VCFFileReader;
12 import java.io.IOException;
13 import java.io.PrintWriter;
14 import java.util.List;
16 import org.testng.annotations.Test;
18 public class VCFFileReaderTest
20 private static final String[] VCF = new String[] {
21 "##fileformat=VCFv4.2",
22 "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO",
23 "20\t3\t.\tC\tG\t.\tPASS\tDP=100", // SNP C/G
24 "20\t7\t.\tG\tGA\t.\tPASS\tDP=100", // insertion G/GA
25 "18\t2\t.\tACG\tA\t.\tPASS\tDP=100" }; // deletion ACG/A
28 * A test to exercise some basic functionality of the htsjdk VCF reader
32 @Test(groups = "Functional")
33 public void testReadVcf() throws IOException
35 File f = writeVcfFile();
36 VCFFileReader reader = new VCFFileReader(f, false);
37 CloseableIterator<VariantContext> variants = reader.iterator();
42 VariantContext vc = variants.next();
43 assertTrue(vc.isSNP());
44 Allele ref = vc.getReference();
45 assertEquals(ref.getBaseString(), "C");
46 List<Allele> alleles = vc.getAlleles();
47 assertEquals(alleles.size(), 2);
48 assertTrue(alleles.get(0).isReference());
49 assertEquals(alleles.get(0).getBaseString(), "C");
50 assertFalse(alleles.get(1).isReference());
51 assertEquals(alleles.get(1).getBaseString(), "G");
57 assertFalse(vc.isSNP());
58 assertTrue(vc.isSimpleInsertion());
59 ref = vc.getReference();
60 assertEquals(ref.getBaseString(), "G");
61 alleles = vc.getAlleles();
62 assertEquals(alleles.size(), 2);
63 assertTrue(alleles.get(0).isReference());
64 assertEquals(alleles.get(0).getBaseString(), "G");
65 assertFalse(alleles.get(1).isReference());
66 assertEquals(alleles.get(1).getBaseString(), "GA");
72 assertFalse(vc.isSNP());
73 assertTrue(vc.isSimpleDeletion());
74 ref = vc.getReference();
75 assertEquals(ref.getBaseString(), "ACG");
76 alleles = vc.getAlleles();
77 assertEquals(alleles.size(), 2);
78 assertTrue(alleles.get(0).isReference());
79 assertEquals(alleles.get(0).getBaseString(), "ACG");
80 assertFalse(alleles.get(1).isReference());
81 assertEquals(alleles.get(1).getBaseString(), "A");
83 assertFalse(variants.hasNext());
90 * Creates a temporary file to be read by the htsjdk VCF reader
95 protected File writeVcfFile() throws IOException
97 File f = File.createTempFile("Test", "vcf");
99 PrintWriter pw = new PrintWriter(f);
100 for (String vcfLine : VCF) {