X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2Fvcf%2FVCFLoaderTest.java;h=29cf9c9721d532da3d3ce1e4aeb0075997361dcc;hb=b87ae5ac68939a1b964682046e8b07958fae219a;hp=5607b4ba1afc60474edf9ac9598af9d2635ece8a;hpb=14193747f3831242bc7dfac12394eb20eb0ba480;p=jalview.git diff --git a/test/jalview/io/vcf/VCFLoaderTest.java b/test/jalview/io/vcf/VCFLoaderTest.java index 5607b4b..29cf9c9 100644 --- a/test/jalview/io/vcf/VCFLoaderTest.java +++ b/test/jalview/io/vcf/VCFLoaderTest.java @@ -1,8 +1,8 @@ package jalview.io.vcf; import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertTrue; +import jalview.bin.Cache; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; import jalview.datamodel.Mapping; @@ -21,7 +21,9 @@ import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.List; +import java.util.Map; +import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class VCFLoaderTest @@ -64,6 +66,17 @@ public class VCFLoaderTest // insertion G/GA is transferred to nucleotide but not to peptide "17\t45051613\t.\tG\tGA,C\t1666.64\tRF\tAC=15;AF=3.0e-03,2.0e-03" }; + @BeforeClass + public void setUp() + { + /* + * configure to capture all available VCF and VEP (CSQ) fields + */ + Cache.loadProperties("test/jalview/io/testProps.jvprops"); + Cache.setProperty("VCF_FIELDS", ".*"); + Cache.setProperty("VEP_FIELDS", ".*"); + } + @Test(groups = "Functional") public void testDoLoad() throws IOException { @@ -308,69 +321,89 @@ public class VCFLoaderTest /* * verify variant feature(s) added to gene2 - * gene/1-25 maps to chromosome 45051634- reverse strand - * variants A/T, A/C at 45051611 and G/GA,G/C at 45051613 map to - * T/A, T/G and C/TC,C/G at gene positions 24 and 22 respectively + * gene2/1-25 maps to chromosome 45051634- reverse strand */ List geneFeatures = al.getSequenceAt(2) .getSequenceFeatures(); SequenceFeatures.sortFeatures(geneFeatures, true); assertEquals(geneFeatures.size(), 4); - SequenceFeature sf = geneFeatures.get(0); - assertEquals(sf.getFeatureGroup(), "VCF"); - assertEquals(sf.getBegin(), 22); - assertEquals(sf.getEnd(), 22); - assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT); - assertEquals(sf.getScore(), 2.0e-03, DELTA); - assertEquals("C,G", sf.getValue(Gff3Helper.ALLELES)); - sf = geneFeatures.get(1); + /* + * variant A/T at 45051611 maps to T/A at gene position 24 + */ + SequenceFeature sf = geneFeatures.get(3); assertEquals(sf.getFeatureGroup(), "VCF"); - assertEquals(sf.getBegin(), 22); - assertEquals(sf.getEnd(), 22); + assertEquals(sf.getBegin(), 24); + assertEquals(sf.getEnd(), 24); assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT); - assertEquals(sf.getScore(), 3.0e-03, DELTA); - assertEquals("C,TC", sf.getValue(Gff3Helper.ALLELES)); + assertEquals(sf.getScore(), 5.0e-03, DELTA); + assertEquals(sf.getValue(Gff3Helper.ALLELES), "T,A"); + /* + * variant A/C at 45051611 maps to T/G at gene position 24 + */ sf = geneFeatures.get(2); assertEquals(sf.getFeatureGroup(), "VCF"); assertEquals(sf.getBegin(), 24); assertEquals(sf.getEnd(), 24); assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT); assertEquals(sf.getScore(), 4.0e-03, DELTA); - assertEquals("T,G", sf.getValue(Gff3Helper.ALLELES)); + assertEquals(sf.getValue(Gff3Helper.ALLELES), "T,G"); - sf = geneFeatures.get(3); + /* + * variant G/C at 45051613 maps to C/G at gene position 22 + */ + sf = geneFeatures.get(1); assertEquals(sf.getFeatureGroup(), "VCF"); - assertEquals(sf.getBegin(), 24); - assertEquals(sf.getEnd(), 24); + assertEquals(sf.getBegin(), 22); + assertEquals(sf.getEnd(), 22); assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT); - assertEquals(sf.getScore(), 5.0e-03, DELTA); - assertEquals("T,A", sf.getValue(Gff3Helper.ALLELES)); + assertEquals(sf.getScore(), 2.0e-03, DELTA); + assertEquals(sf.getValue(Gff3Helper.ALLELES), "C,G"); + + /* + * insertion G/GA at 45051613 maps to an insertion at + * the preceding position (21) on reverse strand gene + * reference: CAAGC -> GCTTG/21-25 + * genomic variant: CAAGAC (G/GA) + * gene variant: GTCTTG (G/GT at 21) + */ + sf = geneFeatures.get(0); + assertEquals(sf.getFeatureGroup(), "VCF"); + assertEquals(sf.getBegin(), 21); + assertEquals(sf.getEnd(), 21); + assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT); + assertEquals(sf.getScore(), 3.0e-03, DELTA); + assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,GT"); /* - * verify variant feature(s) added to transcript2 - * variants G/GA,G/C at position 22 of gene overlap and map to - * C/TC,C/G at position 17 of transcript + * verify 2 variant features added to transcript2 */ List transcriptFeatures = al.getSequenceAt(3) .getSequenceFeatures(); assertEquals(transcriptFeatures.size(), 2); + + /* + * insertion G/GT at position 21 of gene maps to position 16 of transcript + */ sf = transcriptFeatures.get(0); assertEquals(sf.getFeatureGroup(), "VCF"); - assertEquals(sf.getBegin(), 17); - assertEquals(sf.getEnd(), 17); + assertEquals(sf.getBegin(), 16); + assertEquals(sf.getEnd(), 16); assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT); - assertEquals(sf.getScore(), 2.0e-03, DELTA); - assertEquals("C,G", sf.getValue(Gff3Helper.ALLELES)); + assertEquals(sf.getScore(), 3.0e-03, DELTA); + assertEquals(sf.getValue(Gff3Helper.ALLELES), "G,GT"); + /* + * SNP C/G at position 22 of gene maps to position 17 of transcript + */ sf = transcriptFeatures.get(1); assertEquals(sf.getFeatureGroup(), "VCF"); assertEquals(sf.getBegin(), 17); assertEquals(sf.getEnd(), 17); assertEquals(sf.getType(), SequenceOntologyI.SEQUENCE_VARIANT); - assertEquals(sf.getScore(), 3.0e-03, DELTA); - assertEquals("C,TC", sf.getValue(Gff3Helper.ALLELES)); + assertEquals(sf.getScore(), 2.0e-03, DELTA); + assertEquals(sf.getValue(Gff3Helper.ALLELES), "C,G"); /* * verify variant feature(s) computed and added to protein @@ -432,49 +465,56 @@ public class VCFLoaderTest assertEquals(sf.getScore(), 0.1f, DELTA); assertEquals(sf.getValue("alleles"), "C,A"); // gene features include Consequence for all transcripts - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 2); + Map map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); sf = geneFeatures.get(1); assertEquals(sf.getBegin(), 5); assertEquals(sf.getEnd(), 5); assertEquals(sf.getScore(), 0.2f, DELTA); assertEquals(sf.getValue("alleles"), "C,T"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 2); + map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); sf = geneFeatures.get(2); assertEquals(sf.getBegin(), 9); assertEquals(sf.getEnd(), 11); // deletion over 3 positions assertEquals(sf.getScore(), 0.3f, DELTA); assertEquals(sf.getValue("alleles"), "CGG,C"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 2); + map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); sf = geneFeatures.get(3); assertEquals(sf.getBegin(), 13); assertEquals(sf.getEnd(), 13); assertEquals(sf.getScore(), 0.5f, DELTA); assertEquals(sf.getValue("alleles"), "C,T"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 2); + map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); sf = geneFeatures.get(4); assertEquals(sf.getBegin(), 13); assertEquals(sf.getEnd(), 13); assertEquals(sf.getScore(), 0.4f, DELTA); assertEquals(sf.getValue("alleles"), "C,G"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 2); + map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); sf = geneFeatures.get(5); assertEquals(sf.getBegin(), 17); assertEquals(sf.getEnd(), 17); assertEquals(sf.getScore(), 0.7f, DELTA); assertEquals(sf.getValue("alleles"), "A,G"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 2); + map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); sf = geneFeatures.get(6); assertEquals(sf.getBegin(), 17); assertEquals(sf.getEnd(), 17); // insertion assertEquals(sf.getScore(), 0.6f, DELTA); assertEquals(sf.getValue("alleles"), "A,AC"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 2); + map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); /* * verify variant feature(s) added to transcript3 @@ -492,24 +532,25 @@ public class VCFLoaderTest assertEquals(sf.getScore(), 0.2f, DELTA); assertEquals(sf.getValue("alleles"), "C,T"); // transcript features only have Consequence for that transcripts - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 1); - assertTrue(sf.getValue("CSQ").toString().contains("transcript3")); + map = (Map) sf.getValue("CSQ"); + assertEquals(map.size(), 9); + assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript3"); sf = transcriptFeatures.get(1); assertEquals(sf.getBegin(), 11); assertEquals(sf.getEnd(), 11); assertEquals(sf.getScore(), 0.7f, DELTA); assertEquals(sf.getValue("alleles"), "A,G"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 1); - assertTrue(sf.getValue("CSQ").toString().contains("transcript3")); + assertEquals(map.size(), 9); + assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript3"); sf = transcriptFeatures.get(2); assertEquals(sf.getBegin(), 11); assertEquals(sf.getEnd(), 11); assertEquals(sf.getScore(), 0.6f, DELTA); assertEquals(sf.getValue("alleles"), "A,AC"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 1); - assertTrue(sf.getValue("CSQ").toString().contains("transcript3")); + assertEquals(map.size(), 9); + assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript3"); /* * verify variants computed on protein product for transcript3 @@ -548,31 +589,31 @@ public class VCFLoaderTest assertEquals(sf.getEnd(), 7); assertEquals(sf.getScore(), 0.5f, DELTA); assertEquals(sf.getValue("alleles"), "C,T"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 1); - assertTrue(sf.getValue("CSQ").toString().contains("transcript4")); + assertEquals(map.size(), 9); + assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4"); sf = transcriptFeatures.get(1); assertEquals(sf.getBegin(), 7); assertEquals(sf.getEnd(), 7); assertEquals(sf.getScore(), 0.4f, DELTA); assertEquals(sf.getValue("alleles"), "C,G"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 1); - assertTrue(sf.getValue("CSQ").toString().contains("transcript4")); + assertEquals(map.size(), 9); + assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4"); sf = transcriptFeatures.get(2); assertEquals(sf.getBegin(), 11); assertEquals(sf.getEnd(), 11); assertEquals(sf.getScore(), 0.7f, DELTA); assertEquals(sf.getValue("alleles"), "A,G"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 1); - assertTrue(sf.getValue("CSQ").toString().contains("transcript4")); + assertEquals(map.size(), 9); + assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4"); sf = transcriptFeatures.get(3); assertEquals(sf.getBegin(), 11); assertEquals(sf.getEnd(), 11); assertEquals(sf.getScore(), 0.6f, DELTA); assertEquals(sf.getValue("alleles"), "A,AC"); - assertEquals(((String) sf.getValue("CSQ")).split(",").length, 1); - assertTrue(sf.getValue("CSQ").toString().contains("transcript4")); + assertEquals(map.size(), 9); + assertEquals(sf.getValueAsString("CSQ", "Feature"), "transcript4"); } }