diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/utils/helpers/DbSNPHelper.java b/java/src/org/broadinstitute/sting/gatk/refdata/utils/helpers/DbSNPHelper.java index 6f8be0a58..d2a5d17ed 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/utils/helpers/DbSNPHelper.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/utils/helpers/DbSNPHelper.java @@ -56,6 +56,28 @@ public class DbSNPHelper { return rsID; } + public static String rsIDOfFirstRealIndel(List featureList) { + if (featureList == null) + return null; + + String rsID = null; + for ( Object d : featureList ) { + if ( d instanceof DbSNPFeature ) { + if ( DbSNPHelper.isIndel((DbSNPFeature)d) ) { + rsID = ((DbSNPFeature)d).getRsID(); + break; + } + } else if ( d instanceof VariantContext) { + if ( ((VariantContext)d).isIndel() ) { + rsID = ((VariantContext)d).getID(); + break; + } + } + } + + return rsID; + } + /** * get the -1 * (log 10 of the error value) * diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java b/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java index 5f9974123..17d2b7b29 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperEngine.java @@ -160,6 +160,12 @@ public class UnifiedGenotyperEngine { if ( UAC.COVERAGE_AT_WHICH_TO_ABORT > 0 && rawContext.size() > UAC.COVERAGE_AT_WHICH_TO_ABORT ) return null; + // special case handling - avoid extended event pileups when calling indels if we're genotyping given alleles + // TODO - is this the right solution? otherwise we trigger twice and we get duplicate entries + /* if ( UAC.GLmodel == GenotypeLikelihoodsCalculationModel.Model.DINDEL && rawContext.hasExtendedEventPileup() + && UAC.GenotypingMode == GenotypeLikelihoodsCalculationModel.GENOTYPING_MODE.GENOTYPE_GIVEN_ALLELES) + return null; + */ Map stratifiedContexts = getFilteredAndStratifiedContexts(UAC, refContext, rawContext); if ( stratifiedContexts == null ) return (UAC.OutputMode != OUTPUT_MODE.EMIT_ALL_SITES ? null : new VariantCallContext(generateEmptyContext(tracker, refContext, stratifiedContexts, rawContext), refContext.getBase(), false)); @@ -349,7 +355,13 @@ public class UnifiedGenotyperEngine { // *** note that calculating strand bias involves overwriting data structures, so we do that last HashMap attributes = new HashMap(); - String rsID = DbSNPHelper.rsIDOfFirstRealSNP(tracker.getReferenceMetaData(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME)); + String rsID = null; + + if (vc.isSNP()) + rsID = DbSNPHelper.rsIDOfFirstRealSNP(tracker.getReferenceMetaData(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME)); + else if (vc.isIndel()) + rsID = DbSNPHelper.rsIDOfFirstRealIndel(tracker.getReferenceMetaData(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME)); + if ( rsID != null ) attributes.put(VariantContext.ID_KEY, rsID);