From e28fc2164286ce39249b8dbf42469eae6726b08b Mon Sep 17 00:00:00 2001 From: chartl Date: Sun, 17 Apr 2011 23:17:03 +0000 Subject: [PATCH] Spurious associations can develop from including ambiguous reads in these tests. Perhaps MQ0 reads shouldn't be used for anything except MQ0, but the best way to do that is to restructure the code, so for now I'll put it off. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@5656 348d0f76-0448-11de-a6fe-93d51630548a --- .../modules/casecontrol/InsertSizeDistribution.java | 5 ++++- .../association/modules/casecontrol/MateOtherContig.java | 4 +++- .../association/modules/casecontrol/MateSameStrand.java | 3 ++- .../association/modules/casecontrol/MateUnmapped.java | 3 ++- .../association/modules/casecontrol/ProperPairs.java | 9 ++++++--- .../association/modules/casecontrol/ReadsWithIndels.java | 8 ++++++-- 6 files changed, 23 insertions(+), 9 deletions(-) diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/InsertSizeDistribution.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/InsertSizeDistribution.java index dcbe4dd13..af6d77099 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/InsertSizeDistribution.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/InsertSizeDistribution.java @@ -11,13 +11,16 @@ import java.util.List; * @author chartl */ public class InsertSizeDistribution extends ValueTest { + private final int MAPQ_THRESHOLD = 5; public boolean usePreviouslySeenReads() { return false; } public Collection map(ReadBackedPileup pileup) { List insertSizes = new ArrayList(pileup.size()); for ( PileupElement e : pileup ) { - insertSizes.add(Math.abs(e.getRead().getInferredInsertSize())); + if ( e.getMappingQual() >= MAPQ_THRESHOLD ) { + insertSizes.add(Math.abs(e.getRead().getInferredInsertSize())); + } } return (Collection) insertSizes; diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateOtherContig.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateOtherContig.java index 2fe423c5a..f13b7dd66 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateOtherContig.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateOtherContig.java @@ -13,13 +13,15 @@ import org.broadinstitute.sting.utils.pileup.ReadBackedPileup; */ public class MateOtherContig extends ProportionTest { + private final int MAPQ_THRESHOLD = 5; + public boolean usePreviouslySeenReads() { return false; } public Pair map(ReadBackedPileup pileup) { int tot = 0; int otherCon = 0; for ( PileupElement e : pileup ) { - if ( e.getRead().getReadPairedFlag() ) { + if ( e.getRead().getReadPairedFlag() && e.getRead().getMappingQuality() >= MAPQ_THRESHOLD ) { ++tot; if ( ! e.getRead().getMateReferenceIndex().equals(e.getRead().getReferenceIndex()) ) { ++otherCon; diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateSameStrand.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateSameStrand.java index 371e4897b..8e0968e51 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateSameStrand.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateSameStrand.java @@ -12,12 +12,13 @@ import org.broadinstitute.sting.utils.pileup.ReadBackedPileup; * To change this template use File | Settings | File Templates. */ public class MateSameStrand extends ProportionTest { + private final int MAPQ_THRESHOLD = 5; public Pair map(ReadBackedPileup rbp) { int numPairs = 0; int mateSameStrand = 0; for (PileupElement e : rbp ) { - if ( e.getRead().getReadPairedFlag() ) { + if ( e.getRead().getReadPairedFlag() && e.getMappingQual() >= MAPQ_THRESHOLD) { ++numPairs; if ( e.getRead().getMateNegativeStrandFlag() == e.getRead().getReadNegativeStrandFlag() ) { ++mateSameStrand; diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateUnmapped.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateUnmapped.java index 70b210ee8..9b0e195d0 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateUnmapped.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/MateUnmapped.java @@ -12,12 +12,13 @@ import org.broadinstitute.sting.utils.pileup.ReadBackedPileup; * To change this template use File | Settings | File Templates. */ public class MateUnmapped extends ProportionTest { + private final int MAPQ_THRESHOLD = 5; public Pair map(ReadBackedPileup pileup) { int numMatedReads = 0; int numPairUnmapped = 0; for (PileupElement e : pileup ) { - if (e.getRead().getReadPairedFlag() ) { + if (e.getRead().getReadPairedFlag() && e.getMappingQual() >= MAPQ_THRESHOLD ) { ++numMatedReads; if ( e.getRead().getMateUnmappedFlag() ) { ++numPairUnmapped; diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ProperPairs.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ProperPairs.java index 989adfabf..0226841e6 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ProperPairs.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ProperPairs.java @@ -12,14 +12,17 @@ import org.broadinstitute.sting.utils.pileup.ReadBackedPileup; * To change this template use File | Settings | File Templates. */ public class ProperPairs extends ProportionTest { + private final int MAPQ_THRESHOLD = 5; public Pair map(ReadBackedPileup rbp) { int numReads = 0; int numPropPair = 0; for (PileupElement e : rbp ) { - ++numReads; - if ( e.getRead().getReadPairedFlag() && e.getRead().getProperPairFlag() ) { - ++numPropPair; + if ( e.getRead().getReadPairedFlag() && e.getMappingQual() >= MAPQ_THRESHOLD ) { + ++numReads; + if ( e.getRead().getReadPairedFlag() && e.getRead().getProperPairFlag() ) { + ++numPropPair; + } } } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ReadsWithIndels.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ReadsWithIndels.java index d207886a3..eb32b4af0 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ReadsWithIndels.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/modules/casecontrol/ReadsWithIndels.java @@ -1,5 +1,6 @@ package org.broadinstitute.sting.oneoffprojects.walkers.association.modules.casecontrol; +import net.sf.samtools.CigarElement; import net.sf.samtools.CigarOperator; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.pileup.PileupElement; @@ -19,8 +20,11 @@ public class ReadsWithIndels extends ProportionTest { int numWithIndels = 0; for ( PileupElement e : pileup ) { ++numReads; - if ( e.getRead().getCigar().getCigarElements().contains(CigarOperator.DELETION) || e.getRead().getCigar().getCigarElements().contains(CigarOperator.INSERTION)) { - ++numWithIndels; + for ( CigarElement element : e.getRead().getCigar().getCigarElements() ) { + if ( element.getOperator().equals(CigarOperator.DELETION) || element.getOperator().equals(CigarOperator.INSERTION) ) { + ++numWithIndels; + break; + } } }