From 0f7c917e7a04d878a7c3a9aacd571a75f218c908 Mon Sep 17 00:00:00 2001 From: Eric Banks Date: Thu, 17 May 2012 13:36:42 -0400 Subject: [PATCH] Better error checking and messages for bad alleles --- .../sting/utils/codecs/vcf/AbstractVCFCodec.java | 5 ++++- .../broadinstitute/sting/utils/variantcontext/Allele.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java index 2fcc3ec2f..949f488c8 100755 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java @@ -693,7 +693,10 @@ public abstract class AbstractVCFCodec extends AsciiFeatureCodec if ( a.isSymbolic() ) { clippedAlleles.add(a); } else { - clippedAlleles.add(Allele.create(Arrays.copyOfRange(a.getBases(), forwardClipping, a.getBases().length-reverseClipping), a.isReference())); + final byte[] allele = Arrays.copyOfRange(a.getBases(), forwardClipping, a.getBases().length-reverseClipping); + if ( !Allele.acceptableAlleleBases(allele) ) + generateException("Unparsable vcf record with bad allele [" + allele + "]", lineNo); + clippedAlleles.add(Allele.create(allele, a.isReference())); } } } diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/Allele.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/Allele.java index 2ca3e0055..0affcc070 100755 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/Allele.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/Allele.java @@ -160,7 +160,7 @@ public class Allele implements Comparable { case 'G': case 'g' : return isRef ? REF_G : ALT_G; case 'T': case 't' : return isRef ? REF_T : ALT_T; case 'N': case 'n' : return isRef ? REF_N : ALT_N; - default: throw new IllegalArgumentException("Illegal base: " + (char)bases[0]); + default: throw new IllegalArgumentException("Illegal base [" + (char)bases[0] + "] seen in the allele"); } } else { return new Allele(bases, isRef);