Fixes for PooledConcordance bugs and lack of safety checking

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1984 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
depristo 2009-11-07 01:54:10 +00:00
parent 7cb51dbc31
commit bf1bc94060
1 changed files with 26 additions and 16 deletions

View File

@ -26,9 +26,9 @@ import java.util.*;
* *
*/ */
@Requires(value={DataSource.REFERENCE},referenceMetaData={@RMD(name="eval",type=ReferenceOrderedDatum.class)}) // right now we have no base variant class for rods, this should change @Requires(value={DataSource.REFERENCE},referenceMetaData={@RMD(name="eval",type=ReferenceOrderedDatum.class)}) // right now we have no base variant class for rods, this should change
@Allows(value={DataSource.REFERENCE},referenceMetaData = {@RMD(name="eval",type=ReferenceOrderedDatum.class), @RMD(name="dbsnp",type=rodDbSNP.class),@RMD(name="hapmap-chip",type=ReferenceOrderedDatum.class), @RMD(name="interval",type=IntervalRod.class), @RMD(name="validation",type=RodGenotypeChipAsGFF.class)}) //@Allows(value={DataSource.REFERENCE},referenceMetaData = {@RMD(name="eval",type=ReferenceOrderedDatum.class), @RMD(name="dbsnp",type=rodDbSNP.class),@RMD(name="hapmap-chip",type=ReferenceOrderedDatum.class), @RMD(name="interval",type=IntervalRod.class), @RMD(name="validation",type=RodGenotypeChipAsGFF.class)})
//public class VariantEvalWalker extends RefWalker<Integer, Integer> { public class VariantEvalWalker extends RefWalker<Integer, Integer> {
public class VariantEvalWalker extends RodWalker<Integer, Integer> { //public class VariantEvalWalker extends RodWalker<Integer, Integer> {
@Argument(shortName="minConfidenceScore", doc="Minimum confidence score to consider an evaluation SNP a variant", required=false) @Argument(shortName="minConfidenceScore", doc="Minimum confidence score to consider an evaluation SNP a variant", required=false)
public int minConfidenceScore = -1; public int minConfidenceScore = -1;
@ -129,10 +129,12 @@ public class VariantEvalWalker extends RodWalker<Integer, Integer> {
// Add new analyses here! // Add new analyses here!
// //
analyses.add(new ValidationDataAnalysis()); analyses.add(new ValidationDataAnalysis());
analyses.add(new PooledGenotypeConcordance(samplesFile));
// todo -- chris remove?
//analyses.add(new PooledGenotypeConcordance(samplesFile));
analyses.add(new VariantCounter()); analyses.add(new VariantCounter());
analyses.add(new VariantDBCoverage(knownSNPDBName)); analyses.add(new VariantDBCoverage(knownSNPDBName));
analyses.add(new PooledFrequencyAnalysis(numPeopleInPool,knownSNPDBName)); //analyses.add(new PooledFrequencyAnalysis(numPeopleInPool,knownSNPDBName));
if ( samplesFile == null ) if ( samplesFile == null )
analyses.add(new GenotypeConcordance(genotypeChipName, false)); analyses.add(new GenotypeConcordance(genotypeChipName, false));
else else
@ -150,15 +152,23 @@ public class VariantEvalWalker extends RodWalker<Integer, Integer> {
Iterator<VariantAnalysis> iter = analyses.iterator(); Iterator<VariantAnalysis> iter = analyses.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
VariantAnalysis analysis = iter.next(); VariantAnalysis analysis = iter.next();
boolean disableForGenotyping = evalContainsGenotypes && !(analysis instanceof GenotypeAnalysis); VariantAnalysis removed = null;
boolean disableForPopulation = !evalContainsGenotypes && !(analysis instanceof PopulationAnalysis); if ( evalContainsGenotypes ) {
boolean disableForPools = numPeopleInPool < 1 && analysis instanceof PoolAnalysis; if ( ! (analysis instanceof GenotypeAnalysis ) ) {
boolean disable = disableForGenotyping | disableForPopulation | disableForPools; removed = analysis;
String causeName = disableForGenotyping ? "population" : (disableForPopulation ? "genotype" : (disableForPools ? "pool" : null));
if (disable) {
logger.info(String.format("Disabling %s-only analysis %s in set %s", causeName, analysis, setName));
iter.remove(); iter.remove();
} }
} else if ( ! (analysis instanceof PopulationAnalysis || analysis instanceof PoolAnalysis) ) {
removed = analysis;
iter.remove();
} else if ( numPeopleInPool > 1 && ! ( analysis instanceof PoolAnalysis ) ) {
removed = analysis;
iter.remove();
}
if ( removed != null ) {
logger.info(String.format("Disabling analysis %s in set %s", removed, setName));
}
} }