@Override public boolean equals(Object aThat) { //check for self-comparison if ( this == aThat ) return true; if ( !(aThat instanceof GenotypeLikelihoods) ) return false; GenotypeLikelihoods that = (GenotypeLikelihoods)aThat; // now a proper field-by-field evaluation can be made. // GLs are considered equal if the corresponding PLs are equal return Arrays.equals(getAsPLs(), that.getAsPLs()); }
@Override public boolean equals(Object aThat) { //check for self-comparison if ( this == aThat ) return true; if ( !(aThat instanceof GenotypeLikelihoods) ) return false; GenotypeLikelihoods that = (GenotypeLikelihoods)aThat; // now a proper field-by-field evaluation can be made. // GLs are considered equal if the corresponding PLs are equal return Arrays.equals(getAsPLs(), that.getAsPLs()); }
@Override public boolean equals(Object aThat) { //check for self-comparison if ( this == aThat ) return true; if ( !(aThat instanceof GenotypeLikelihoods) ) return false; GenotypeLikelihoods that = (GenotypeLikelihoods)aThat; // now a proper field-by-field evaluation can be made. // GLs are considered equal if the corresponding PLs are equal return Arrays.equals(getAsPLs(), that.getAsPLs()); }
/** * This genotype has this PL value, converted from double[]. SLOW * @return */ public GenotypeBuilder PL(final double[] GLs) { this.PL = GenotypeLikelihoods.fromLog10Likelihoods(GLs).getAsPLs(); return this; }
/** * This genotype has this PL value, converted from double[]. SLOW * @return */ public GenotypeBuilder PL(final double[] GLs) { this.PL = GenotypeLikelihoods.fromLog10Likelihoods(GLs).getAsPLs(); return this; }
/** * This genotype has this PL value, converted from double[]. SLOW * @return */ @Requires("PL == null || PL.length > 0") @Ensures({"this.PL == PL"}) public GenotypeBuilder PL(final double[] GLs) { this.PL = GenotypeLikelihoods.fromLog10Likelihoods(GLs).getAsPLs(); return this; }
@Test public void testIndelLikelihoods() { GenotypeLikelihoods prev = model.getIndelPLs(HomoSapiensConstants.DEFAULT_PLOIDY,0); Assert.assertEquals(prev.getAsPLs(), new int[]{0, 0, 0}); Assert.assertEquals(-10 * prev.getLog10GQ(GenotypeType.HOM_REF), 0.0); for ( int i = 1; i <= ReferenceConfidenceModel.MAX_N_INDEL_INFORMATIVE_READS; i++ ) { final GenotypeLikelihoods current = model.getIndelPLs(HomoSapiensConstants.DEFAULT_PLOIDY,i); final double prevGQ = -10 * prev.getLog10GQ(GenotypeType.HOM_REF); final double currGQ = -10 * current.getLog10GQ(GenotypeType.HOM_REF); Assert.assertTrue(prevGQ < currGQ, "GQ Failed with prev " + prev + " curr " + current + " at " + i); Assert.assertTrue(prev.getAsPLs()[1] < current.getAsPLs()[1], "het PL failed with prev " + prev + " curr " + current + " at " + i); Assert.assertTrue(prev.getAsPLs()[2] < current.getAsPLs()[2], "hom-var PL Failed with prev " + prev + " curr " + current + " at " + i); // logger.warn("result at " + i + " is " + current); prev = current; } }
} 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")) {
gb.PL(GenotypeLikelihoods.fromGLField(genotypeValues.get(i)).getAsPLs());
gb.PL(GenotypeLikelihoods.fromGLField(genotypeValues.get(i)).getAsPLs());
gb.PL(decodeInts(genotypeValues.get(i))); } else if (gtKey.equals(VCFConstants.GENOTYPE_LIKELIHOODS_KEY)) { gb.PL(GenotypeLikelihoods.fromGLField(genotypeValues.get(i)).getAsPLs()); GenotypeLikelihoods glField = GenotypeLikelihoods.fromGLField(genotypeValues.get(i)); gb.PL(glField.getAsPLs()); gb.attribute(gtKey, genotypeValues.get(i)); } else if (gtKey.equals(VCFConstants.DEPTH_KEY)) {
gb.PL(decodeInts(genotypeValues.get(i))); } else if (gtKey.equals(VCFConstants.GENOTYPE_LIKELIHOODS_KEY)) { gb.PL(GenotypeLikelihoods.fromGLField(genotypeValues.get(i)).getAsPLs()); } else if (gtKey.equals(VCFConstants.DEPTH_KEY)) { gb.DP(Integer.valueOf(genotypeValues.get(i)));
private Genotype getUpdatedGenotype(final VariantContext vc, final Genotype genotype, final double jointLikelihood, final double jointPosteriorProb, final double[] log10Posteriors){ //Don't update null, missing or unavailable genotypes if(genotype == null || !hasCalledGT(genotype.getType())) return genotype; int phredScaledJL = -1; int phredScaledJP = -1; if(jointLikelihood != NO_JOINT_VALUE){ double dphredScaledJL = QualityUtils.phredScaleLog10ErrorRate(Math.log10(1-jointLikelihood)); phredScaledJL = dphredScaledJL < Byte.MAX_VALUE ? (byte)dphredScaledJL : Byte.MAX_VALUE; } if(jointPosteriorProb != NO_JOINT_VALUE){ double dphredScaledJP = QualityUtils.phredScaleLog10ErrorRate(Math.log10(1-jointPosteriorProb)); phredScaledJP = dphredScaledJP < Byte.MAX_VALUE ? (byte)dphredScaledJP : Byte.MAX_VALUE; } //Add the joint trio calculations final Map<String, Object> genotypeAttributes = new HashMap<>(); genotypeAttributes.putAll(genotype.getExtendedAttributes()); genotypeAttributes.put(GATKVCFConstants.JOINT_LIKELIHOOD_TAG_NAME, phredScaledJL); genotypeAttributes.put(GATKVCFConstants.JOINT_POSTERIOR_TAG_NAME, phredScaledJP); final GenotypeBuilder builder = new GenotypeBuilder(genotype); //final double[] log10Posteriors = MathUtils.toLog10(normalizedPosteriors); //update genotype types based on posteriors GATKVariantContextUtils.updateGenotypeAfterSubsetting(vc.getAlleles(), genotype.getPloidy(), builder, GATKVariantContextUtils.GenotypeAssignmentMethod.USE_PLS_TO_ASSIGN, log10Posteriors, vc.getAlleles()); builder.attribute(GATKVCFConstants.PHRED_SCALED_POSTERIORS_KEY, Utils.listFromPrimitives(GenotypeLikelihoods.fromLog10Likelihoods(log10Posteriors).getAsPLs())); builder.attributes(genotypeAttributes); return builder.make(); }
gb.PL(decodeInts(GTValueArray[i])); } else if (gtKey.equals(VCFConstants.GENOTYPE_LIKELIHOODS_KEY)) { gb.PL(GenotypeLikelihoods.fromGLField(GTValueArray[i]).getAsPLs()); } else if (gtKey.equals(VCFConstants.DEPTH_KEY)) { gb.DP(Integer.valueOf(GTValueArray[i]));
GATKVariantContextUtils.GenotypeAssignmentMethod.USE_PLS_TO_ASSIGN, posteriors.get(genoIdx), vc1.getAlleles()); builder.attribute(GATKVCFConstants.PHRED_SCALED_POSTERIORS_KEY, Utils.listFromPrimitives(GenotypeLikelihoods.fromLog10Likelihoods(posteriors.get(genoIdx)).getAsPLs())); GenotypeLikelihoods.fromLog10Likelihoods(getDirichletPrior(alleleCounts, vc1.getMaxPloidy(2),useFlatPriors)).getAsPLs());
final int[] leastConfidenceGLsAsPLs = leastConfidenceGLs.getAsPLs(); gb.GQ(GATKVariantContextUtils.calculateGQFromPLs(leastConfidenceGLsAsPLs)); gb.PL(leastConfidenceGLsAsPLs);
/** * For a particular event described in inputVC, form PL vector for each sample by looking into allele read map and filling likelihood matrix for each allele * @param readLikelihoods Allele map describing mapping from reads to alleles and corresponding likelihoods * @return GenotypesContext object wrapping genotype objects with PLs */ @Requires({"readLikelihoods!= null", "mergedVC != null"}) @Ensures("result != null") private GenotypesContext calculateGLsForThisEvent(final ReadLikelihoods<Allele> readLikelihoods, final List<Allele> noCallAlleles) { final GenotypingLikelihoods<Allele> likelihoods = genotypingModel.calculateLikelihoods(readLikelihoods, new GenotypingData<>(ploidyModel, readLikelihoods)); final int sampleCount = samples.sampleCount(); final GenotypesContext result = GenotypesContext.create(sampleCount); for (int s = 0; s < sampleCount; s++) result.add(new GenotypeBuilder(samples.sampleAt(s)).alleles(noCallAlleles).PL(likelihoods.sampleLikelihoods(s).getAsPLs()).make()); return result; }