Don't fail in annotations if the wrong tools are calling them, just silently skip them.

This is important for cases when users want to use annotation groups (like all experimental annotations).
This commit is contained in:
Eric Banks 2013-12-31 23:45:21 -05:00
parent 5a1564d1f2
commit 9665f75ad4
1 changed files with 4 additions and 4 deletions

View File

@ -80,12 +80,9 @@ public class StrandBiasBySample extends GenotypeAnnotation implements Experiment
final Genotype g,
final GenotypeBuilder gb,
final PerReadAlleleLikelihoodMap alleleLikelihoodMap) {
if ( g == null || !g.isCalled() || ( stratifiedContext == null && alleleLikelihoodMap == null) )
if ( ! isAppropriateInput(alleleLikelihoodMap, g) )
return;
if (alleleLikelihoodMap == null )
throw new IllegalStateException("StrandBiasBySample can only be used with likelihood based annotations in the HaplotypeCaller");
final int[][] table = FisherStrand.getContingencyTable(Collections.singletonMap(g.getSampleName(), alleleLikelihoodMap), vc);
gb.attribute(STRAND_BIAS_BY_SAMPLE_KEY_NAME, FisherStrand.getContingencyArray(table));
@ -97,4 +94,7 @@ public class StrandBiasBySample extends GenotypeAnnotation implements Experiment
@Override
public List<VCFFormatHeaderLine> getDescriptions() { return Collections.singletonList(new VCFFormatHeaderLine(getKeyNames().get(0), 4, VCFHeaderLineType.Integer, "Per-sample component statistics which comprise the Fisher's Exact Test to detect strand bias.")); }
private boolean isAppropriateInput(final PerReadAlleleLikelihoodMap map, final Genotype g) {
return ! (map == null || g == null || !g.isCalled());
}
}