package edu.mayo.bior.pipeline.VEP; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.apache.commons.lang.StringUtils; import org.junit.Test; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** * @author Michael Meiners (m054457) * Date created: Apr 26, 2013 */ public class VepFunctionsTest { private Gson mGson = new Gson(); VepFunctions mVepFunc = new VepFunctions(); @Test public void parseEffects() { String actual = mVepFunc.vepCsqToJsonList( "CSQ=" + "A|ENSG00000154719|ENST00000352957|Transcript|intron_variant|||||||MRPL39||||," + "A|ENSG00000154719|ENST00000307301|Transcript|missense_variant|1043|1001|334|T/M|aCg/aTg||MRPL39||||," + "A|ENSG00000154719|ENST00000307301|Transcript|missense_variant|1043|1001|334|T/M|aCg/aTg||MRPL39||tolerated(0.05)|benign(0.001)|" ).toString(); String expected = "[{\"Allele\":\"A\",\"Gene\":\"ENSG00000154719\",\"Feature\":\"ENST00000352957\",\"Feature_type\":\"Transcript\",\"Consequence\":\"intron_variant\",\"HGNC\":\"MRPL39\"}," + "{\"Allele\":\"A\",\"Gene\":\"ENSG00000154719\",\"Feature\":\"ENST00000307301\",\"Feature_type\":\"Transcript\",\"Consequence\":\"missense_variant\",\"cDNA_position\":\"1043\",\"CDS_position\":\"1001\",\"Protein_position\":\"334\",\"Amino_acids\":\"T/M\",\"Codons\":\"aCg/aTg\",\"HGNC\":\"MRPL39\"}," + "{\"Allele\":\"A\",\"Gene\":\"ENSG00000154719\",\"Feature\":\"ENST00000307301\",\"Feature_type\":\"Transcript\",\"Consequence\":\"missense_variant\",\"cDNA_position\":\"1043\",\"CDS_position\":\"1001\",\"Protein_position\":\"334\",\"Amino_acids\":\"T/M\",\"Codons\":\"aCg/aTg\",\"HGNC\":\"MRPL39\",\"SIFT\":\"tolerated(0.05)\",\"PolyPhen\":\"benign(0.001)\",\"SIFT_TERM\":\"tolerated\",\"SIFT_Score\":0.05,\"PolyPhen_TERM\":\"benign\",\"PolyPhen_Score\":0.001}" + "]"; assertEquals(expected, actual); } @Test public void getWorstBlank() { JsonArray jsonArray = mVepFunc.vepCsqToJsonList("CSQ="); String actual = mVepFunc.getWorstCase(jsonArray).toString(); String expected = "{}"; assertEquals(expected, actual); } @Test public void getWorstNoScores() { JsonArray jsonArray = mVepFunc.vepCsqToJsonList( "CSQ=" + "A|ENSG00000260583|ENST00000567517|Transcript|upstream_gene_variant|||||||LINC00515|4432|||," + "A|ENSG00000154719|ENST00000352957|Transcript|intron_variant|||||||MRPL39||||," + "A|ENSG00000154719|ENST00000307301|Transcript|missense_variant|1043|1001|334|T/M|aCg/aTg||MRPL39||||"); String actual = mVepFunc.getWorstCase(jsonArray).toString(); String expected = "{}"; assertEquals(expected, actual); } @Test /** 3 scores given for SIFT and Polyphen, but only one can be chosen */ public void getWorstOf3Scores() { JsonArray jsonArray = mVepFunc.vepCsqToJsonList( "CSQ=" + "A|ENSG00000260583|ENST00000567517|Transcript|upstream_gene_variant|||||||LINC00515|4432||missense(0.30)|tolerated(0.04)|," + "A|ENSG00000154719|ENST00000352957|Transcript|intron_variant|||||||MRPL39||tolerated(0.31)|benign(0.24)|," + "A|ENSG00000154719|ENST00000307301|Transcript|missense_variant|1043|1001|334|T/M|aCg/aTg||MRPL39||tolerated(0.05)|benign(0.001)|"); String actual = mVepFunc.getWorstCase(jsonArray).toString(); String expected = "{\"Allele\":\"A\",\"Gene\":\"ENSG00000154719\",\"Feature\":\"ENST00000352957\",\"Feature_type\":\"Transcript\",\"Consequence\":\"intron_variant\",\"HGNC\":\"MRPL39\"," + "\"SIFT\":\"tolerated(0.31)\",\"PolyPhen\":\"benign(0.24)\"," + "\"SIFT_TERM\":\"tolerated\",\"SIFT_Score\":0.31," + "\"PolyPhen_TERM\":\"benign\",\"PolyPhen_Score\":0.24}"; assertEquals(expected, actual); } @Test public void getWorstNoSiftScores() { JsonArray jsonArray = mVepFunc.vepCsqToJsonList( "CSQ=A|ENSG00000154719|ENST00000307301|Transcript|missense_variant|1043|1001|334|T/M|aCg/aTg||MRPL39|||benign(0.001)|"); String actual = mVepFunc.getWorstCase(jsonArray).toString(); String expected = "{}"; assertEquals(expected, actual); } @Test public void getWorstNoPolyphenScores() { JsonArray jsonArray = mVepFunc.vepCsqToJsonList( "CSQ=A|ENSG00000154719|ENST00000307301|Transcript|missense_variant|1043|1001|334|T/M|aCg/aTg||MRPL39||||"); String actual = mVepFunc.getWorstCase(jsonArray).toString(); String expected = "{}"; assertEquals(expected, actual); } private JsonObject toJsonObj(String jsonStr) { return new JsonObject().get(jsonStr).getAsJsonObject(); } private JsonArray toJsonArray(String jsonArrayStr) { return (JsonArray)(new JsonParser().parse(jsonArrayStr)); } }