CalculateChromosomeCounts() now only calculates AC, AF, and AN when there are genotypes. Can now combine variants with headers that differ in only whether a field is a integer or a float. Updated CombineVariants integrationtest, as incorrect AC values where being calculated in the previous GS outputs.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5383 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
depristo 2011-03-06 19:25:52 +00:00
parent 5b8fdc5b1f
commit af71576a07
3 changed files with 28 additions and 19 deletions

View File

@ -113,6 +113,7 @@ public class VariantContextUtils {
return; return;
} }
if ( vc.hasGenotypes() ) {
attributes.put(VCFConstants.ALLELE_NUMBER_KEY, vc.getChromosomeCount()); attributes.put(VCFConstants.ALLELE_NUMBER_KEY, vc.getChromosomeCount());
// if there are alternate alleles, record the relevant tags // if there are alternate alleles, record the relevant tags
@ -127,14 +128,15 @@ public class VariantContextUtils {
alleleFreqs.add(freq); alleleFreqs.add(freq);
} }
attributes.put(VCFConstants.ALLELE_COUNT_KEY, alleleCounts); attributes.put(VCFConstants.ALLELE_COUNT_KEY, alleleCounts.size() == 1 ? alleleCounts.get(0) : alleleCounts);
attributes.put(VCFConstants.ALLELE_FREQUENCY_KEY, alleleFreqs); attributes.put(VCFConstants.ALLELE_FREQUENCY_KEY, alleleFreqs.size() == 1 ? alleleFreqs.get(0) : alleleFreqs);
} }
else { else {
attributes.put(VCFConstants.ALLELE_COUNT_KEY, 0); attributes.put(VCFConstants.ALLELE_COUNT_KEY, 0);
attributes.put(VCFConstants.ALLELE_FREQUENCY_KEY, 0.0); attributes.put(VCFConstants.ALLELE_FREQUENCY_KEY, 0.0);
} }
} }
}
private static String makePrecisionFormatStringFromDenominatorValue(double maxValue) { private static String makePrecisionFormatStringFromDenominatorValue(double maxValue) {
int precision = 1; int precision = 1;

View File

@ -156,6 +156,13 @@ public class VCFUtils {
// values varies, is unknown, or is unbounded, then this value should be '.'. // values varies, is unknown, or is unbounded, then this value should be '.'.
if ( logger != null ) logger.warn("Promoting header field Number to . due to number differences in header lines: " + line + " " + other); if ( logger != null ) logger.warn("Promoting header field Number to . due to number differences in header lines: " + line + " " + other);
compOther.setNumberToUnbounded(); compOther.setNumberToUnbounded();
} else if ( compLine.getType() == VCFHeaderLineType.Integer && compOther.getType() == VCFHeaderLineType.Float ) {
// promote key to Float
if ( logger != null ) logger.warn("Promoting Integer to Float in header: " + compOther);
map.put(key, compOther);
} else if ( compLine.getType() == VCFHeaderLineType.Float && compOther.getType() == VCFHeaderLineType.Integer ) {
// promote key to Float
if ( logger != null ) logger.warn("Promoting Integer to Float in header: " + compOther);
} else { } else {
throw new IllegalStateException("Incompatible header types, collision between these two types: " + line + " " + other ); throw new IllegalStateException("Incompatible header types, collision between these two types: " + line + " " + other );
} }

View File

@ -87,7 +87,7 @@ public class CombineVariantsIntegrationTest extends WalkerTest {
" -priority NA19240_BGI,NA19240_ILLUMINA,NA19240_WUGSC,denovoInfo" + " -priority NA19240_BGI,NA19240_ILLUMINA,NA19240_WUGSC,denovoInfo" +
" -genotypeMergeOptions UNIQUIFY -L 1"), " -genotypeMergeOptions UNIQUIFY -L 1"),
1, 1,
Arrays.asList("00c431243201e7dec99c2c1a1a863438")); Arrays.asList("a07995587b855f3214fb71940bf23c0f"));
executeTest("threeWayWithRefs", spec); executeTest("threeWayWithRefs", spec);
} }