private final Object decodeValue(final String field, final Object value, final VCFCompoundHeaderLine format) { if ( value instanceof String ) { if ( field.equals(VCFConstants.GENOTYPE_PL_KEY) ) return GenotypeLikelihoods.fromPLField((String)value); final String string = (String)value; if ( string.indexOf(',') != -1 ) { final String[] splits = string.split(","); final List<Object> values = new ArrayList<>(splits.length); for ( int i = 0; i < splits.length; i++ ) values.add(decodeOne(field, splits[i], format)); return values; } else { return decodeOne(field, string, format); } } else if ( value instanceof List && (((List) value).get(0)) instanceof String ) { final List<String> asList = (List<String>)value; final List<Object> values = new ArrayList<>(asList.size()); for ( final String s : asList ) values.add(decodeOne(field, s, format)); return values; } else { return value; } // allowMissingValuesComparedToHeader }
private final Object decodeValue(final String field, final Object value, final VCFCompoundHeaderLine format) { if ( value instanceof String ) { if ( field.equals(VCFConstants.GENOTYPE_PL_KEY) ) return GenotypeLikelihoods.fromPLField((String)value); final String string = (String)value; if ( string.indexOf(",") != -1 ) { final String[] splits = string.split(","); final List<Object> values = new ArrayList<Object>(splits.length); for ( int i = 0; i < splits.length; i++ ) values.add(decodeOne(field, splits[i], format)); return values; } else { return decodeOne(field, string, format); } } else if ( value instanceof List && (((List) value).get(0)) instanceof String ) { final List<String> asList = (List<String>)value; final List<Object> values = new ArrayList<Object>(asList.size()); for ( final String s : asList ) values.add(decodeOne(field, s, format)); return values; } else { return value; } // allowMissingValuesComparedToHeader }
private final Object decodeValue(final String field, final Object value, final VCFCompoundHeaderLine format) { if ( value instanceof String ) { if ( field.equals(VCFConstants.GENOTYPE_PL_KEY) ) return GenotypeLikelihoods.fromPLField((String)value); final String string = (String)value; if ( string.indexOf(',') != -1 ) { final String[] splits = string.split(","); final List<Object> values = new ArrayList<>(splits.length); for ( int i = 0; i < splits.length; i++ ) values.add(decodeOne(field, splits[i], format)); return values; } else { return decodeOne(field, string, format); } } else if ( value instanceof List && (((List) value).get(0)) instanceof String ) { final List<String> asList = (List<String>)value; final List<Object> values = new ArrayList<>(asList.size()); for ( final String s : asList ) values.add(decodeOne(field, s, format)); return values; } else { return value; } // allowMissingValuesComparedToHeader }
@Test (expectedExceptions = TribbleException.class) public void testErrorBadFormat() { GenotypeLikelihoods gl = GenotypeLikelihoods.fromPLField("adf,b,c"); gl.getAsVector(); }
} else if (variable.equals("PL")) { final GenotypeBuilder gb = new GenotypeBuilder(key); gb.PL(GenotypeLikelihoods.fromPLField(value).getAsPLs()); genotypes.add(gb.make()); } else if (variable.equals("log10PosteriorOfAFEq0")) {
@Test public void testFromString1() { GenotypeLikelihoods gl = GenotypeLikelihoods.fromPLField(vPLString); assertDoubleArraysAreEqual(gl.getAsVector(), new double[]{-9.3, 0, -3.9}); Assert.assertEquals(gl.getAsString(), vPLString); }
@Test public void testWorstGL() { final GenotypeLikelihoods gq10 = GenotypeLikelihoods.fromPLField("0,10,100"); final GenotypeLikelihoods gq20 = GenotypeLikelihoods.fromPLField("0,20,200"); final GenotypeLikelihoods gq0 = GenotypeLikelihoods.fromPLField("20,0,200"); Assert.assertSame(model.getGLwithWorstGQ(gq10, gq20), gq10); Assert.assertSame(model.getGLwithWorstGQ(gq20, gq10), gq10); Assert.assertSame(model.getGLwithWorstGQ(gq10, gq0), gq0); Assert.assertSame(model.getGLwithWorstGQ(gq0, gq10), gq0); }
@Test public void testGetLog10GQ(){ GenotypeLikelihoods gl = GenotypeLikelihoods.fromPLField(vPLString); //GQ for the best guess genotype Assert.assertEquals(gl.getLog10GQ(GenotypeType.HET),-3.9); double[] test = GeneralUtils.normalizeFromLog10(gl.getAsVector()); //GQ for the other genotypes Assert.assertEquals(gl.getLog10GQ(GenotypeType.HOM_REF), Math.log10(1.0 - test[GenotypeType.HOM_REF.ordinal()-1])); Assert.assertEquals(gl.getLog10GQ(GenotypeType.HOM_VAR), Math.log10(1.0 - test[GenotypeType.HOM_VAR.ordinal()-1])); //Test missing likelihoods gl = GenotypeLikelihoods.fromPLField("."); Assert.assertEquals(gl.getLog10GQ(GenotypeType.HOM_REF),Double.NEGATIVE_INFINITY); Assert.assertEquals(gl.getLog10GQ(GenotypeType.HET),Double.NEGATIVE_INFINITY); Assert.assertEquals(gl.getLog10GQ(GenotypeType.HOM_VAR),Double.NEGATIVE_INFINITY); }
@Test public void testGetAsMap(){ GenotypeLikelihoods gl = GenotypeLikelihoods.fromLog10Likelihoods(v); //Log scale EnumMap<GenotypeType,Double> glMap = gl.getAsMap(false); Assert.assertEquals(v[GenotypeType.HOM_REF.ordinal()-1],glMap.get(GenotypeType.HOM_REF)); Assert.assertEquals(v[GenotypeType.HET.ordinal()-1],glMap.get(GenotypeType.HET)); Assert.assertEquals(v[GenotypeType.HOM_VAR.ordinal()-1],glMap.get(GenotypeType.HOM_VAR)); //Linear scale glMap = gl.getAsMap(true); double [] vl = GeneralUtils.normalizeFromLog10(v); Assert.assertEquals(vl[GenotypeType.HOM_REF.ordinal()-1],glMap.get(GenotypeType.HOM_REF)); Assert.assertEquals(vl[GenotypeType.HET.ordinal()-1],glMap.get(GenotypeType.HET)); Assert.assertEquals(vl[GenotypeType.HOM_VAR.ordinal()-1],glMap.get(GenotypeType.HOM_VAR)); //Test missing likelihoods gl = GenotypeLikelihoods.fromPLField("."); glMap = gl.getAsMap(false); Assert.assertNull(glMap); }