Better error checking and messages for bad alleles

This commit is contained in:
Eric Banks 2012-05-17 13:36:42 -04:00
parent 6967b3de6c
commit 0f7c917e7a
2 changed files with 5 additions and 2 deletions

View File

@ -693,7 +693,10 @@ public abstract class AbstractVCFCodec extends AsciiFeatureCodec<VariantContext>
if ( a.isSymbolic() ) { if ( a.isSymbolic() ) {
clippedAlleles.add(a); clippedAlleles.add(a);
} else { } 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()));
} }
} }
} }

View File

@ -160,7 +160,7 @@ public class Allele implements Comparable<Allele> {
case 'G': case 'g' : return isRef ? REF_G : ALT_G; case 'G': case 'g' : return isRef ? REF_G : ALT_G;
case 'T': case 't' : return isRef ? REF_T : ALT_T; case 'T': case 't' : return isRef ? REF_T : ALT_T;
case 'N': case 'n' : return isRef ? REF_N : ALT_N; 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 { } else {
return new Allele(bases, isRef); return new Allele(bases, isRef);