Add a separate max alt alleles argument for indels that defaults to 2 instead of 3. PLEASE TAKE NOTE.

This commit is contained in:
Eric Banks 2012-10-04 13:52:14 -04:00
parent e13e61673b
commit c66ef17cd0
7 changed files with 23 additions and 16 deletions

View File

@ -47,7 +47,7 @@ public class GeneralPloidyExactAFCalculation extends ExactAFCalculation {
} }
public GeneralPloidyExactAFCalculation(final int nSamples, final int maxAltAlleles, final int ploidy) { public GeneralPloidyExactAFCalculation(final int nSamples, final int maxAltAlleles, final int ploidy) {
super(nSamples, maxAltAlleles, false, null, null, null); super(nSamples, maxAltAlleles, maxAltAlleles, null, null, null);
this.ploidy = ploidy; this.ploidy = ploidy;
} }

View File

@ -59,6 +59,16 @@ public class StandardCallerArgumentCollection {
@Argument(fullName = "max_alternate_alleles", shortName = "maxAltAlleles", doc = "Maximum number of alternate alleles to genotype", required = false) @Argument(fullName = "max_alternate_alleles", shortName = "maxAltAlleles", doc = "Maximum number of alternate alleles to genotype", required = false)
public int MAX_ALTERNATE_ALLELES = 3; public int MAX_ALTERNATE_ALLELES = 3;
/**
* If there are more than this number of alternate alleles presented to the genotyper (either through discovery or GENOTYPE_GIVEN ALLELES),
* then only this many alleles will be used. Note that genotyping sites with many alternate alleles is both CPU and memory intensive and it
* scales exponentially based on the number of alternate alleles. Unless there is a good reason to change the default value, we highly recommend
* that you not play around with this parameter.
*/
@Advanced
@Argument(fullName = "max_alternate_alleles_for_indels", shortName = "maxAltAllelesForIndels", doc = "Maximum number of alternate alleles to genotype for indels only", required = false)
public int MAX_ALTERNATE_ALLELES_FOR_INDELS = 2;
@Hidden @Hidden
@Argument(shortName = "logExactCalls", doc="x", required=false) @Argument(shortName = "logExactCalls", doc="x", required=false)
public File exactCallsLog = null; public File exactCallsLog = null;

View File

@ -63,7 +63,7 @@ public abstract class AlleleFrequencyCalculation implements Cloneable {
protected int nSamples; protected int nSamples;
protected int MAX_ALTERNATE_ALLELES_TO_GENOTYPE; protected int MAX_ALTERNATE_ALLELES_TO_GENOTYPE;
protected boolean CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS; protected int MAX_ALTERNATE_ALLELES_FOR_INDELS;
protected Logger logger; protected Logger logger;
protected PrintStream verboseWriter; protected PrintStream verboseWriter;
@ -74,12 +74,12 @@ public abstract class AlleleFrequencyCalculation implements Cloneable {
private PrintStream callReport = null; private PrintStream callReport = null;
protected AlleleFrequencyCalculation(final UnifiedArgumentCollection UAC, final int nSamples, final Logger logger, final PrintStream verboseWriter) { protected AlleleFrequencyCalculation(final UnifiedArgumentCollection UAC, final int nSamples, final Logger logger, final PrintStream verboseWriter) {
this(nSamples, UAC.MAX_ALTERNATE_ALLELES, UAC.CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS, UAC.exactCallsLog, logger, verboseWriter); this(nSamples, UAC.MAX_ALTERNATE_ALLELES, UAC.MAX_ALTERNATE_ALLELES_FOR_INDELS, UAC.exactCallsLog, logger, verboseWriter);
} }
protected AlleleFrequencyCalculation(final int nSamples, protected AlleleFrequencyCalculation(final int nSamples,
final int maxAltAlleles, final int maxAltAlleles,
final boolean capMaxAltsForIndels, final int maxAltAllelesForIndels,
final File exactCallsLog, final File exactCallsLog,
final Logger logger, final Logger logger,
final PrintStream verboseWriter) { final PrintStream verboseWriter) {
@ -88,7 +88,7 @@ public abstract class AlleleFrequencyCalculation implements Cloneable {
this.nSamples = nSamples; this.nSamples = nSamples;
this.MAX_ALTERNATE_ALLELES_TO_GENOTYPE = maxAltAlleles; this.MAX_ALTERNATE_ALLELES_TO_GENOTYPE = maxAltAlleles;
this.CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS = capMaxAltsForIndels; this.MAX_ALTERNATE_ALLELES_FOR_INDELS = maxAltAllelesForIndels;
this.logger = logger == null ? defaultLogger : logger; this.logger = logger == null ? defaultLogger : logger;
this.verboseWriter = verboseWriter; this.verboseWriter = verboseWriter;
if ( exactCallsLog != null ) if ( exactCallsLog != null )

View File

@ -38,7 +38,7 @@ public class DiploidExactAFCalculation extends ExactAFCalculation {
private final static double MAX_LOG10_ERROR_TO_STOP_EARLY = 6; // we want the calculation to be accurate to 1 / 10^6 private final static double MAX_LOG10_ERROR_TO_STOP_EARLY = 6; // we want the calculation to be accurate to 1 / 10^6
public DiploidExactAFCalculation(final int nSamples, final int maxAltAlleles) { public DiploidExactAFCalculation(final int nSamples, final int maxAltAlleles) {
super(nSamples, maxAltAlleles, false, null, null, null); super(nSamples, maxAltAlleles, maxAltAlleles, null, null, null);
} }
/** /**
@ -62,7 +62,7 @@ public class DiploidExactAFCalculation extends ExactAFCalculation {
@Override @Override
protected VariantContext reduceScope(final VariantContext vc) { protected VariantContext reduceScope(final VariantContext vc) {
final int myMaxAltAllelesToGenotype = CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS && vc.getType().equals(VariantContext.Type.INDEL) ? 2 : MAX_ALTERNATE_ALLELES_TO_GENOTYPE; final int myMaxAltAllelesToGenotype = vc.getType().equals(VariantContext.Type.INDEL) ? MAX_ALTERNATE_ALLELES_FOR_INDELS : MAX_ALTERNATE_ALLELES_TO_GENOTYPE;
// don't try to genotype too many alternate alleles // don't try to genotype too many alternate alleles
if ( vc.getAlternateAlleles().size() > myMaxAltAllelesToGenotype ) { if ( vc.getAlternateAlleles().size() > myMaxAltAllelesToGenotype ) {

View File

@ -45,8 +45,8 @@ abstract class ExactAFCalculation extends AlleleFrequencyCalculation {
super(UAC, nSamples, logger, verboseWriter); super(UAC, nSamples, logger, verboseWriter);
} }
protected ExactAFCalculation(final int nSamples, int maxAltAlleles, boolean capMaxAltsForIndels, File exactCallsLog, Logger logger, PrintStream verboseWriter) { protected ExactAFCalculation(final int nSamples, int maxAltAlleles, int maxAltAllelesForIndels, File exactCallsLog, Logger logger, PrintStream verboseWriter) {
super(nSamples, maxAltAlleles, capMaxAltsForIndels, exactCallsLog, logger, verboseWriter); super(nSamples, maxAltAlleles, maxAltAllelesForIndels, exactCallsLog, logger, verboseWriter);
} }
/** /**

View File

@ -38,7 +38,7 @@ public class OptimizedDiploidExactAFCalculation extends ExactAFCalculation {
private final static double MAX_LOG10_ERROR_TO_STOP_EARLY = 6; // we want the calculation to be accurate to 1 / 10^6 private final static double MAX_LOG10_ERROR_TO_STOP_EARLY = 6; // we want the calculation to be accurate to 1 / 10^6
public OptimizedDiploidExactAFCalculation(final int nSamples, final int maxAltAlleles) { public OptimizedDiploidExactAFCalculation(final int nSamples, final int maxAltAlleles) {
super(nSamples, maxAltAlleles, false, null, null, null); super(nSamples, maxAltAlleles, maxAltAlleles, null, null, null);
} }
/** /**
@ -62,7 +62,7 @@ public class OptimizedDiploidExactAFCalculation extends ExactAFCalculation {
@Override @Override
protected VariantContext reduceScope(final VariantContext vc) { protected VariantContext reduceScope(final VariantContext vc) {
final int myMaxAltAllelesToGenotype = CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS && vc.getType().equals(VariantContext.Type.INDEL) ? 2 : MAX_ALTERNATE_ALLELES_TO_GENOTYPE; final int myMaxAltAllelesToGenotype = vc.getType().equals(VariantContext.Type.INDEL) ? MAX_ALTERNATE_ALLELES_FOR_INDELS : MAX_ALTERNATE_ALLELES_TO_GENOTYPE;
// don't try to genotype too many alternate alleles // don't try to genotype too many alternate alleles
if ( vc.getAlternateAlleles().size() > myMaxAltAllelesToGenotype ) { if ( vc.getAlternateAlleles().size() > myMaxAltAllelesToGenotype ) {

View File

@ -75,10 +75,6 @@ public class UnifiedArgumentCollection extends StandardCallerArgumentCollection
@Argument(fullName = "max_deletion_fraction", shortName = "deletions", doc = "Maximum fraction of reads with deletions spanning this locus for it to be callable [to disable, set to < 0 or > 1; default:0.05]", required = false) @Argument(fullName = "max_deletion_fraction", shortName = "deletions", doc = "Maximum fraction of reads with deletions spanning this locus for it to be callable [to disable, set to < 0 or > 1; default:0.05]", required = false)
public Double MAX_DELETION_FRACTION = 0.05; public Double MAX_DELETION_FRACTION = 0.05;
@Hidden
@Argument(fullName = "cap_max_alternate_alleles_for_indels", shortName = "capMaxAltAllelesForIndels", doc = "Cap the maximum number of alternate alleles to genotype for indel calls at 2; overrides the --max_alternate_alleles argument; GSA production use only", required = false)
public boolean CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS = false;
// indel-related arguments // indel-related arguments
/** /**
* A candidate indel is genotyped (and potentially called) if there are this number of reads with a consensus indel at a site. * A candidate indel is genotyped (and potentially called) if there are this number of reads with a consensus indel at a site.
@ -211,7 +207,7 @@ public class UnifiedArgumentCollection extends StandardCallerArgumentCollection
uac.INDEL_HAPLOTYPE_SIZE = INDEL_HAPLOTYPE_SIZE; uac.INDEL_HAPLOTYPE_SIZE = INDEL_HAPLOTYPE_SIZE;
uac.alleles = alleles; uac.alleles = alleles;
uac.MAX_ALTERNATE_ALLELES = MAX_ALTERNATE_ALLELES; uac.MAX_ALTERNATE_ALLELES = MAX_ALTERNATE_ALLELES;
uac.CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS = CAP_MAX_ALTERNATE_ALLELES_FOR_INDELS; uac.MAX_ALTERNATE_ALLELES_FOR_INDELS = MAX_ALTERNATE_ALLELES_FOR_INDELS;
uac.GLmodel = GLmodel; uac.GLmodel = GLmodel;
uac.TREAT_ALL_READS_AS_SINGLE_POOL = TREAT_ALL_READS_AS_SINGLE_POOL; uac.TREAT_ALL_READS_AS_SINGLE_POOL = TREAT_ALL_READS_AS_SINGLE_POOL;
uac.referenceSampleRod = referenceSampleRod; uac.referenceSampleRod = referenceSampleRod;
@ -239,6 +235,7 @@ public class UnifiedArgumentCollection extends StandardCallerArgumentCollection
this.GenotypingMode = SCAC.GenotypingMode; this.GenotypingMode = SCAC.GenotypingMode;
this.heterozygosity = SCAC.heterozygosity; this.heterozygosity = SCAC.heterozygosity;
this.MAX_ALTERNATE_ALLELES = SCAC.MAX_ALTERNATE_ALLELES; this.MAX_ALTERNATE_ALLELES = SCAC.MAX_ALTERNATE_ALLELES;
this.MAX_ALTERNATE_ALLELES_FOR_INDELS = SCAC.MAX_ALTERNATE_ALLELES_FOR_INDELS;
this.OutputMode = SCAC.OutputMode; this.OutputMode = SCAC.OutputMode;
this.STANDARD_CONFIDENCE_FOR_CALLING = SCAC.STANDARD_CONFIDENCE_FOR_CALLING; this.STANDARD_CONFIDENCE_FOR_CALLING = SCAC.STANDARD_CONFIDENCE_FOR_CALLING;
this.STANDARD_CONFIDENCE_FOR_EMITTING = SCAC.STANDARD_CONFIDENCE_FOR_EMITTING; this.STANDARD_CONFIDENCE_FOR_EMITTING = SCAC.STANDARD_CONFIDENCE_FOR_EMITTING;