After merging with Yossi's fix I can confirm that the AD is fixed when going through the HC too. Added similar fixes to DP and FS annotations too.
This commit is contained in:
parent
b7639d7ceb
commit
e8a6460a33
|
|
@ -83,16 +83,16 @@ public class HaplotypeCallerIntegrationTest extends WalkerTest {
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// testing AD for reduced reads
|
// testing reduced reads
|
||||||
//
|
//
|
||||||
// --------------------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void HCtestADAnnotationInReducedBam() {
|
public void HCTestReducedBam() {
|
||||||
WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec(
|
WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec(
|
||||||
"-T HaplotypeCaller -R " + b37KGReference + " --no_cmdline_in_header -I " + privateTestDir + "bamExample.ReducedRead.ADAnnotation.bam -o %s -L 1:67,225,396-67,288,518", 1,
|
"-T HaplotypeCaller -R " + b37KGReference + " --no_cmdline_in_header -I " + privateTestDir + "bamExample.ReducedRead.ADAnnotation.bam -o %s -L 1:67,225,396-67,288,518", 1,
|
||||||
Arrays.asList("6ac31dbea0ffc289b6feadb47457d427")); //TODO: once the HC is fixed, update MD5
|
Arrays.asList("864abe729828248333aee14818c1d2e1"));
|
||||||
executeTest("HC test AD Annotation when calling on a ReducedRead BAM", spec);
|
executeTest("HC calling on a ReducedRead BAM", spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import org.broadinstitute.sting.utils.codecs.vcf.VCFConstants;
|
||||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFInfoHeaderLine;
|
import org.broadinstitute.sting.utils.codecs.vcf.VCFInfoHeaderLine;
|
||||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFStandardHeaderLines;
|
import org.broadinstitute.sting.utils.codecs.vcf.VCFStandardHeaderLines;
|
||||||
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
||||||
|
import org.broadinstitute.sting.utils.sam.ReadUtils;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.Allele;
|
import org.broadinstitute.sting.utils.variantcontext.Allele;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
|
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
|
||||||
|
|
||||||
|
|
@ -49,8 +50,12 @@ public class DepthOfCoverage extends InfoFieldAnnotation implements StandardAnno
|
||||||
if ( perReadAlleleLikelihoodMap.size() == 0 )
|
if ( perReadAlleleLikelihoodMap.size() == 0 )
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
for ( Map.Entry<String, PerReadAlleleLikelihoodMap> sample : perReadAlleleLikelihoodMap.entrySet() )
|
for (PerReadAlleleLikelihoodMap maps : perReadAlleleLikelihoodMap.values() ) {
|
||||||
depth += sample.getValue().getNumberOfStoredElements();
|
for (Map.Entry<GATKSAMRecord,Map<Allele,Double>> el : maps.getLikelihoodReadMap().entrySet()) {
|
||||||
|
final GATKSAMRecord read = el.getKey();
|
||||||
|
depth += (read.isReducedRead() ? read.getReducedCount(ReadUtils.getReadCoordinateForReferenceCoordinate(read, vc.getStart(), ReadUtils.ClippingTail.RIGHT_TAIL)) : 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import org.broadinstitute.sting.utils.codecs.vcf.VCFHeaderLineType;
|
||||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFInfoHeaderLine;
|
import org.broadinstitute.sting.utils.codecs.vcf.VCFInfoHeaderLine;
|
||||||
import org.broadinstitute.sting.utils.pileup.PileupElement;
|
import org.broadinstitute.sting.utils.pileup.PileupElement;
|
||||||
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
||||||
|
import org.broadinstitute.sting.utils.sam.ReadUtils;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.Allele;
|
import org.broadinstitute.sting.utils.variantcontext.Allele;
|
||||||
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
|
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
|
||||||
|
|
||||||
|
|
@ -71,7 +72,7 @@ public class FisherStrand extends InfoFieldAnnotation implements StandardAnnotat
|
||||||
}
|
}
|
||||||
else if (stratifiedPerReadAlleleLikelihoodMap != null) {
|
else if (stratifiedPerReadAlleleLikelihoodMap != null) {
|
||||||
// either SNP with no alignment context, or indels: per-read likelihood map needed
|
// either SNP with no alignment context, or indels: per-read likelihood map needed
|
||||||
final int[][] table = getContingencyTable(stratifiedPerReadAlleleLikelihoodMap, vc.getReference(), vc.getAltAlleleWithHighestAlleleCount());
|
final int[][] table = getContingencyTable(stratifiedPerReadAlleleLikelihoodMap, vc);
|
||||||
return pValueForBestTable(table, null);
|
return pValueForBestTable(table, null);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -235,14 +236,13 @@ public class FisherStrand extends InfoFieldAnnotation implements StandardAnnotat
|
||||||
* allele2 # #
|
* allele2 # #
|
||||||
* @return a 2x2 contingency table
|
* @return a 2x2 contingency table
|
||||||
*/
|
*/
|
||||||
private static int[][] getContingencyTable( final Map<String, PerReadAlleleLikelihoodMap> stratifiedPerReadAlleleLikelihoodMap,
|
private static int[][] getContingencyTable( final Map<String, PerReadAlleleLikelihoodMap> stratifiedPerReadAlleleLikelihoodMap, final VariantContext vc) {
|
||||||
final Allele ref, final Allele alt) {
|
final Allele ref = vc.getReference();
|
||||||
|
final Allele alt = vc.getAltAlleleWithHighestAlleleCount();
|
||||||
int[][] table = new int[2][2];
|
int[][] table = new int[2][2];
|
||||||
|
|
||||||
for (PerReadAlleleLikelihoodMap maps : stratifiedPerReadAlleleLikelihoodMap.values() ) {
|
for (PerReadAlleleLikelihoodMap maps : stratifiedPerReadAlleleLikelihoodMap.values() ) {
|
||||||
for (Map.Entry<GATKSAMRecord,Map<Allele,Double>> el : maps.getLikelihoodReadMap().entrySet()) {
|
for (Map.Entry<GATKSAMRecord,Map<Allele,Double>> el : maps.getLikelihoodReadMap().entrySet()) {
|
||||||
if ( el.getKey().isReducedRead() ) // ignore reduced reads
|
|
||||||
continue;
|
|
||||||
final boolean matchesRef = PerReadAlleleLikelihoodMap.getMostLikelyAllele(el.getValue()).equals(ref,true);
|
final boolean matchesRef = PerReadAlleleLikelihoodMap.getMostLikelyAllele(el.getValue()).equals(ref,true);
|
||||||
final boolean matchesAlt = PerReadAlleleLikelihoodMap.getMostLikelyAllele(el.getValue()).equals(alt,true);
|
final boolean matchesAlt = PerReadAlleleLikelihoodMap.getMostLikelyAllele(el.getValue()).equals(alt,true);
|
||||||
|
|
||||||
|
|
@ -254,7 +254,8 @@ public class FisherStrand extends InfoFieldAnnotation implements StandardAnnotat
|
||||||
int row = matchesRef ? 0 : 1;
|
int row = matchesRef ? 0 : 1;
|
||||||
int column = isFW ? 0 : 1;
|
int column = isFW ? 0 : 1;
|
||||||
|
|
||||||
table[row][column]++;
|
final GATKSAMRecord read = el.getKey();
|
||||||
|
table[row][column] += (read.isReducedRead() ? read.getReducedCount(ReadUtils.getReadCoordinateForReferenceCoordinate(read, vc.getStart(), ReadUtils.ClippingTail.RIGHT_TAIL)) : 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -275,7 +276,6 @@ public class FisherStrand extends InfoFieldAnnotation implements StandardAnnotat
|
||||||
|
|
||||||
for ( Map.Entry<String, AlignmentContext> sample : stratifiedContexts.entrySet() ) {
|
for ( Map.Entry<String, AlignmentContext> sample : stratifiedContexts.entrySet() ) {
|
||||||
for (PileupElement p : sample.getValue().getBasePileup()) {
|
for (PileupElement p : sample.getValue().getBasePileup()) {
|
||||||
// if ( ! RankSumTest.isUsableBase(p, false) || p.getRead().isReducedRead() ) // ignore deletions and reduced reads
|
|
||||||
if ( ! RankSumTest.isUsableBase(p, false) ) // ignore deletions
|
if ( ! RankSumTest.isUsableBase(p, false) ) // ignore deletions
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
@ -291,7 +291,7 @@ public class FisherStrand extends InfoFieldAnnotation implements StandardAnnotat
|
||||||
int row = matchesRef ? 0 : 1;
|
int row = matchesRef ? 0 : 1;
|
||||||
int column = isFW ? 0 : 1;
|
int column = isFW ? 0 : 1;
|
||||||
|
|
||||||
table[row][column]+=p.getRepresentativeCount();
|
table[row][column] += p.getRepresentativeCount();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -438,18 +438,19 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest {
|
||||||
Arrays.asList("22c9fd65ce3298bd7fbf400c9c209f29"));
|
Arrays.asList("22c9fd65ce3298bd7fbf400c9c209f29"));
|
||||||
executeTest("test calling on reads with Ns in CIGAR", spec);
|
executeTest("test calling on reads with Ns in CIGAR", spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
// testing AD for reduced reads
|
// testing reduced reads
|
||||||
//
|
//
|
||||||
// --------------------------------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testADAnnotationInReducedBam() {
|
public void testReducedBam() {
|
||||||
WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec(
|
WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec(
|
||||||
"-T UnifiedGenotyper -R " + b37KGReference + " -nosl --no_cmdline_in_header -I " + privateTestDir + "bamExample.ReducedRead.ADAnnotation.bam -o %s -L 1:67,225,396-67,288,518", 1,
|
"-T UnifiedGenotyper -R " + b37KGReference + " -nosl --no_cmdline_in_header -I " + privateTestDir + "bamExample.ReducedRead.ADAnnotation.bam -o %s -L 1:67,225,396-67,288,518", 1,
|
||||||
Arrays.asList("84486c88a0fd1ae996a6402490db8492"));
|
Arrays.asList("84486c88a0fd1ae996a6402490db8492"));
|
||||||
executeTest("test AD Annotation when calling on a ReducedRead BAM", spec);
|
executeTest("test calling on a ReducedRead BAM", spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue