Removing SlowGenotype object from GATK
This commit is contained in:
parent
a22e7a5358
commit
d8071c66ed
|
|
@ -233,10 +233,6 @@ public class GenomeAnalysisEngine {
|
||||||
if (args.nonDeterministicRandomSeed)
|
if (args.nonDeterministicRandomSeed)
|
||||||
resetRandomGenerator(System.currentTimeMillis());
|
resetRandomGenerator(System.currentTimeMillis());
|
||||||
|
|
||||||
// TODO -- REMOVE ME WHEN WE STOP BCF testing
|
|
||||||
if ( args.USE_SLOW_GENOTYPES )
|
|
||||||
GenotypeBuilder.MAKE_FAST_BY_DEFAULT = false;
|
|
||||||
|
|
||||||
// if the use specified an input BQSR recalibration table then enable on the fly recalibration
|
// if the use specified an input BQSR recalibration table then enable on the fly recalibration
|
||||||
if (args.BQSR_RECAL_FILE != null)
|
if (args.BQSR_RECAL_FILE != null)
|
||||||
setBaseRecalibration(args.BQSR_RECAL_FILE, args.quantizationLevels, args.disableIndelQuals, args.PRESERVE_QSCORES_LESS_THAN, args.emitOriginalQuals);
|
setBaseRecalibration(args.BQSR_RECAL_FILE, args.quantizationLevels, args.disableIndelQuals, args.PRESERVE_QSCORES_LESS_THAN, args.emitOriginalQuals);
|
||||||
|
|
|
||||||
|
|
@ -379,10 +379,5 @@ public class GATKArgumentCollection {
|
||||||
@Hidden
|
@Hidden
|
||||||
public boolean generateShadowBCF = false;
|
public boolean generateShadowBCF = false;
|
||||||
// TODO -- remove all code tagged with TODO -- remove me when argument generateShadowBCF is removed
|
// TODO -- remove all code tagged with TODO -- remove me when argument generateShadowBCF is removed
|
||||||
|
|
||||||
@Argument(fullName="useSlowGenotypes",shortName = "useSlowGenotypes",doc="",required=false)
|
|
||||||
@Hidden
|
|
||||||
public boolean USE_SLOW_GENOTYPES = false;
|
|
||||||
// TODO -- remove all code tagged with TODO -- remove me when argument generateShadowBCF is removed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ public final class FastGenotype extends Genotype {
|
||||||
* @param values
|
* @param values
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private final static boolean validADorPLField(final int[] values) {
|
private static boolean validADorPLField(final int[] values) {
|
||||||
if ( values != null )
|
if ( values != null )
|
||||||
for ( int v : values )
|
for ( int v : values )
|
||||||
if ( v < 0 )
|
if ( v < 0 )
|
||||||
|
|
|
||||||
|
|
@ -53,8 +53,6 @@ import java.util.*;
|
||||||
*/
|
*/
|
||||||
@Invariant({"alleles != null"})
|
@Invariant({"alleles != null"})
|
||||||
public final class GenotypeBuilder {
|
public final class GenotypeBuilder {
|
||||||
public static boolean MAKE_FAST_BY_DEFAULT = true;
|
|
||||||
|
|
||||||
private String sampleName = null;
|
private String sampleName = null;
|
||||||
private List<Allele> alleles = Collections.emptyList();
|
private List<Allele> alleles = Collections.emptyList();
|
||||||
|
|
||||||
|
|
@ -67,8 +65,6 @@ public final class GenotypeBuilder {
|
||||||
private String filters = null;
|
private String filters = null;
|
||||||
private int initialAttributeMapSize = 5;
|
private int initialAttributeMapSize = 5;
|
||||||
|
|
||||||
private boolean useFast = MAKE_FAST_BY_DEFAULT;
|
|
||||||
|
|
||||||
private final static Map<String, Object> NO_ATTRIBUTES =
|
private final static Map<String, Object> NO_ATTRIBUTES =
|
||||||
Collections.unmodifiableMap(new HashMap<String, Object>(0));
|
Collections.unmodifiableMap(new HashMap<String, Object>(0));
|
||||||
|
|
||||||
|
|
@ -78,31 +74,22 @@ public final class GenotypeBuilder {
|
||||||
//
|
//
|
||||||
// -----------------------------------------------------------------
|
// -----------------------------------------------------------------
|
||||||
|
|
||||||
public final static Genotype create(final String sampleName, final List<Allele> alleles) {
|
public static Genotype create(final String sampleName, final List<Allele> alleles) {
|
||||||
return new GenotypeBuilder(sampleName, alleles).make();
|
return new GenotypeBuilder(sampleName, alleles).make();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final static Genotype create(final String sampleName,
|
public static Genotype create(final String sampleName,
|
||||||
final List<Allele> alleles,
|
final List<Allele> alleles,
|
||||||
final Map<String, Object> attributes) {
|
final Map<String, Object> attributes) {
|
||||||
return new GenotypeBuilder(sampleName, alleles).attributes(attributes).make();
|
return new GenotypeBuilder(sampleName, alleles).attributes(attributes).make();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected final static Genotype create(final String sampleName,
|
protected static Genotype create(final String sampleName,
|
||||||
final List<Allele> alleles,
|
final List<Allele> alleles,
|
||||||
final double[] gls) {
|
final double[] gls) {
|
||||||
return new GenotypeBuilder(sampleName, alleles).PL(gls).make();
|
return new GenotypeBuilder(sampleName, alleles).PL(gls).make();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final static Genotype create(final String sampleName,
|
|
||||||
final List<Allele> alleles,
|
|
||||||
final double log10Perror,
|
|
||||||
final Map<String, Object> attributes) {
|
|
||||||
return new GenotypeBuilder(sampleName, alleles)
|
|
||||||
.GQ(log10Perror == SlowGenotype.NO_LOG10_PERROR ? -1 : (int)(log10Perror * -10))
|
|
||||||
.attributes(attributes).make();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a empty builder. Both a sampleName and alleles must be provided
|
* Create a empty builder. Both a sampleName and alleles must be provided
|
||||||
* before trying to make a Genotype from this builder.
|
* before trying to make a Genotype from this builder.
|
||||||
|
|
@ -182,23 +169,8 @@ public final class GenotypeBuilder {
|
||||||
*/
|
*/
|
||||||
@Ensures({"result != null"})
|
@Ensures({"result != null"})
|
||||||
public Genotype make() {
|
public Genotype make() {
|
||||||
if ( useFast ) {
|
|
||||||
final Map<String, Object> ea = extendedAttributes == null ? NO_ATTRIBUTES : extendedAttributes;
|
final Map<String, Object> ea = extendedAttributes == null ? NO_ATTRIBUTES : extendedAttributes;
|
||||||
return new FastGenotype(sampleName, alleles, isPhased, GQ, DP, AD, PL, filters, ea);
|
return new FastGenotype(sampleName, alleles, isPhased, GQ, DP, AD, PL, filters, ea);
|
||||||
} else {
|
|
||||||
final Map<String, Object> attributes = new LinkedHashMap<String, Object>();
|
|
||||||
if ( extendedAttributes != null ) attributes.putAll(extendedAttributes);
|
|
||||||
final double log10PError = GQ == -1 ? SlowGenotype.NO_LOG10_PERROR : (GQ == 0 ? 0 : GQ / -10.0);
|
|
||||||
if ( DP != -1 ) attributes.put(VCFConstants.DEPTH_KEY, DP);
|
|
||||||
if ( AD != null ) attributes.put(VCFConstants.GENOTYPE_ALLELE_DEPTHS, AD);
|
|
||||||
final double[] log10likelihoods = PL != null ? GenotypeLikelihoods.fromPLs(PL).getAsVector() : null;
|
|
||||||
return new SlowGenotype(sampleName, alleles, log10PError, filters, attributes, isPhased, log10likelihoods);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public GenotypeBuilder useFast(boolean useFast) {
|
|
||||||
this.useFast = useFast;
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,193 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2012, The Broad Institute
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person
|
|
||||||
* obtaining a copy of this software and associated documentation
|
|
||||||
* files (the "Software"), to deal in the Software without
|
|
||||||
* restriction, including without limitation the rights to use,
|
|
||||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the
|
|
||||||
* Software is furnished to do so, subject to the following
|
|
||||||
* conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be
|
|
||||||
* included in all copies or substantial portions of the Software.
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.broadinstitute.sting.utils.variantcontext;
|
|
||||||
|
|
||||||
|
|
||||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFConstants;
|
|
||||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class encompasses all the basic information about a genotype. It is immutable.
|
|
||||||
*
|
|
||||||
* @author Mark DePristo
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class SlowGenotype extends Genotype {
|
|
||||||
protected CommonInfo commonInfo;
|
|
||||||
public final static double NO_LOG10_PERROR = CommonInfo.NO_LOG10_PERROR;
|
|
||||||
protected List<Allele> alleles = null;
|
|
||||||
protected boolean isPhased = false;
|
|
||||||
|
|
||||||
protected SlowGenotype(final String sampleName,
|
|
||||||
final List<Allele> alleles,
|
|
||||||
final double log10PError,
|
|
||||||
final String filters,
|
|
||||||
final Map<String, Object> attributes,
|
|
||||||
final boolean isPhased,
|
|
||||||
final double[] log10Likelihoods) {
|
|
||||||
super(sampleName, filters);
|
|
||||||
|
|
||||||
if ( alleles == null || alleles.isEmpty() )
|
|
||||||
this.alleles = Collections.emptyList();
|
|
||||||
else
|
|
||||||
this.alleles = Collections.unmodifiableList(alleles);
|
|
||||||
commonInfo = new CommonInfo(sampleName, log10PError, Collections.<String>emptySet(), attributes);
|
|
||||||
if ( log10Likelihoods != null )
|
|
||||||
commonInfo.putAttribute(VCFConstants.GENOTYPE_PL_KEY, GenotypeLikelihoods.fromLog10Likelihoods(log10Likelihoods));
|
|
||||||
this.isPhased = isPhased;
|
|
||||||
validate();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public List<Allele> getAlleles() {
|
|
||||||
return alleles;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public Allele getAllele(int i) {
|
|
||||||
if ( getType() == GenotypeType.UNAVAILABLE )
|
|
||||||
throw new ReviewedStingException("Requesting alleles for an UNAVAILABLE genotype");
|
|
||||||
return alleles.get(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public boolean isPhased() { return isPhased; }
|
|
||||||
|
|
||||||
//
|
|
||||||
// Useful methods for getting genotype likelihoods for a genotype object, if present
|
|
||||||
//
|
|
||||||
@Override public boolean hasLikelihoods() {
|
|
||||||
return (commonInfo.hasAttribute(VCFConstants.GENOTYPE_PL_KEY) && !commonInfo.getAttribute(VCFConstants.GENOTYPE_PL_KEY).equals(VCFConstants.MISSING_VALUE_v4)) ||
|
|
||||||
(commonInfo.hasAttribute(VCFConstants.GENOTYPE_LIKELIHOODS_KEY) && !commonInfo.getAttribute(VCFConstants.GENOTYPE_LIKELIHOODS_KEY).equals(VCFConstants.MISSING_VALUE_v4));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override public GenotypeLikelihoods getLikelihoods() {
|
|
||||||
GenotypeLikelihoods x = getLikelihoods(VCFConstants.GENOTYPE_PL_KEY, true);
|
|
||||||
if ( x != null )
|
|
||||||
return x;
|
|
||||||
else {
|
|
||||||
x = getLikelihoods(VCFConstants.GENOTYPE_LIKELIHOODS_KEY, false);
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private GenotypeLikelihoods getLikelihoods(String key, boolean asPL) {
|
|
||||||
Object x = commonInfo.getAttribute(key);
|
|
||||||
if ( x instanceof String ) {
|
|
||||||
if ( asPL )
|
|
||||||
return GenotypeLikelihoods.fromPLField((String)x);
|
|
||||||
else
|
|
||||||
return GenotypeLikelihoods.fromGLField((String)x);
|
|
||||||
}
|
|
||||||
else if ( x instanceof GenotypeLikelihoods ) return (GenotypeLikelihoods)x;
|
|
||||||
else return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final void validate() {
|
|
||||||
if ( alleles.size() == 0) return;
|
|
||||||
|
|
||||||
for ( Allele allele : alleles ) {
|
|
||||||
if ( allele == null )
|
|
||||||
throw new IllegalArgumentException("BUG: allele cannot be null in Genotype");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// get routines to access context info fields
|
|
||||||
//
|
|
||||||
// ---------------------------------------------------------------------------------------------------------
|
|
||||||
@Override public boolean hasLog10PError() { return commonInfo.hasLog10PError(); }
|
|
||||||
@Override public double getLog10PError() { return commonInfo.getLog10PError(); }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasExtendedAttribute(String key) { return commonInfo.hasAttribute(key); }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getExtendedAttribute(String key) { return commonInfo.getAttribute(key); }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getExtendedAttribute(String key, Object defaultValue) {
|
|
||||||
return commonInfo.getAttribute(key, defaultValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
// public String getAttributeAsString(String key, String defaultValue) { return commonInfo.getAttributeAsString(key, defaultValue); }
|
|
||||||
// public int getAttributeAsInt(String key, int defaultValue) { return commonInfo.getAttributeAsInt(key, defaultValue); }
|
|
||||||
// public double getAttributeAsDouble(String key, double defaultValue) { return commonInfo.getAttributeAsDouble(key, defaultValue); }
|
|
||||||
// public boolean getAttributeAsBoolean(String key, boolean defaultValue) { return commonInfo.getAttributeAsBoolean(key, defaultValue); }
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getPL() {
|
|
||||||
return hasPL() ? getLikelihoods().getAsPLs() : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasPL() {
|
|
||||||
return hasLikelihoods();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getDP() {
|
|
||||||
return commonInfo.getAttributeAsInt(VCFConstants.DEPTH_KEY, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasDP() {
|
|
||||||
return commonInfo.hasAttribute(VCFConstants.DEPTH_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getAD() {
|
|
||||||
if ( hasAD() ) {
|
|
||||||
return (int[])commonInfo.getAttribute(VCFConstants.GENOTYPE_ALLELE_DEPTHS);
|
|
||||||
} else
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasAD() {
|
|
||||||
return commonInfo.hasAttribute(VCFConstants.GENOTYPE_ALLELE_DEPTHS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getGQ() {
|
|
||||||
if ( commonInfo.hasLog10PError() )
|
|
||||||
return (int)Math.round(commonInfo.getPhredScaledQual());
|
|
||||||
else
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasGQ() {
|
|
||||||
return hasLog10PError();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, Object> getExtendedAttributes() {
|
|
||||||
final Map<String, Object> ea = new LinkedHashMap<String, Object>(commonInfo.getAttributes());
|
|
||||||
for ( final String primary : FastGenotype.PRIMARY_KEYS )
|
|
||||||
ea.remove(primary);
|
|
||||||
return ea;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue