now uses the new RMDT getVariantContext() functions instead of doing the work itself.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2802 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
depristo 2010-02-06 16:23:06 +00:00
parent 33760834d6
commit 995d55da81
6 changed files with 51 additions and 50 deletions

View File

@ -37,6 +37,8 @@ public class CountVariants extends VariantEvaluator {
return "counter";
}
public boolean enabled() { return true; }
public int getComparisonOrder() {
return 1; // we only need to see each eval track
}

View File

@ -60,6 +60,8 @@ public class DbSNPPercentage extends VariantEvaluator {
return HEADER;
}
public boolean enabled() { return true; }
public List<List<String>> getTableRows() {
return Arrays.asList(Arrays.asList(summaryLine().split(" ")));
}

View File

@ -64,7 +64,7 @@ public class MendelianViolationEvaluator extends VariantEvaluator {
}
}
private boolean enabled() {
public boolean enabled() {
return parent.FAMILY_STRUCTURE != null;
}

View File

@ -16,6 +16,8 @@ public class TiTvVariantEvaluator extends VariantEvaluator {
// don't do anything
}
public boolean enabled() { return true; }
public String getName() {
return "titv";
}

View File

@ -39,6 +39,10 @@ import java.lang.reflect.InvocationTargetException;
// todo -- new contexts for each comparison object too!
//
//
// todo -- write or find a simple way to organize the table like output of variant eval 2. A generic table of strings?
//
/**
* Test routine for new VariantContext object
*/
@ -205,22 +209,24 @@ public class VariantEval2Walker extends RodWalker<Integer, Integer> {
boolean evalWantsVC = applyVCtoEvaluation(evaluationName, vc, comps, group);
for ( VariantEvaluator evaluation : evaluations ) {
// we always call update0 in case the evaluation tracks things like number of bases covered
evaluation.update0(tracker, ref, context);
if ( evaluation.enabled() ) {
// we always call update0 in case the evaluation tracks things like number of bases covered
evaluation.update0(tracker, ref, context);
// now call the single or paired update function
switch ( evaluation.getComparisonOrder() ) {
case 1:
if ( evalWantsVC && vc != null )
evaluation.update1(vc, tracker, ref, context);
break;
case 2:
for ( VariantContext comp : comps.values() ) {
evaluation.update2( evalWantsVC ? vc : null, comp, tracker, ref, context);
}
break;
default:
throw new StingException("BUG: Unexpected evaluation order " + evaluation);
// now call the single or paired update function
switch ( evaluation.getComparisonOrder() ) {
case 1:
if ( evalWantsVC && vc != null )
evaluation.update1(vc, tracker, ref, context);
break;
case 2:
for ( VariantContext comp : comps.values() ) {
evaluation.update2( evalWantsVC ? vc : null, comp, tracker, ref, context);
}
break;
default:
throw new StingException("BUG: Unexpected evaluation order " + evaluation);
}
}
}
}
@ -252,18 +258,6 @@ public class VariantEval2Walker extends RodWalker<Integer, Integer> {
return true;
}
private Map<String, VariantContext> getCompVariantContexts(RefMetaDataTracker tracker, AlignmentContext context) {
Map<String, VariantContext> comps = new HashMap<String, VariantContext>();
for ( String compName : compNames ) {
comps.put(compName, getVariantContext(compName, tracker, context));
}
// todo -- remove me when the loop works correctly for comparisons of eval x comp for each comp
if ( comps.size() > 1 ) throw new StingException("VariantEval2 currently only supports comparisons of N eval tracks vs. a single comparison track. Yes, I know...");
return comps;
}
private boolean vcIsKnown(VariantContext vc, Map<String, VariantContext> comps, String[] knownNames ) {
for ( String knownName : knownNames ) {
VariantContext known = comps.get(knownName);
@ -281,22 +275,20 @@ public class VariantEval2Walker extends RodWalker<Integer, Integer> {
//
//logger.info(String.format("Ignore second+ events at locus %s in rod %s => rec is %s", context.getLocation(), rodList.getName(), rec));
private VariantContext getVariantContext(String name, RefMetaDataTracker tracker, AlignmentContext context) {
if ( tracker != null ) {
RODRecordList<ReferenceOrderedDatum> rodList = tracker.getTrackData(name, null);
if ( rodList != null ) {
for ( ReferenceOrderedDatum rec : rodList.getRecords() ) {
if ( rec.getLocation().getStart() == context.getLocation().getStart() ) {
VariantContext vc = VariantContextAdaptors.toVariantContext(name, rec);
if ( vc != null ) {
return vc;
}
}
}
}
private Map<String, VariantContext> getCompVariantContexts(RefMetaDataTracker tracker, AlignmentContext context) {
Map<String, VariantContext> comps = new HashMap<String, VariantContext>();
for ( String compName : compNames ) {
comps.put(compName, getVariantContext(compName, tracker, context));
}
return null;
// todo -- remove me when the loop works correctly for comparisons of eval x comp for each comp
if ( comps.size() > 1 ) throw new StingException("VariantEval2 currently only supports comparisons of N eval tracks vs. a single comparison track. Yes, I know...");
return comps;
}
private VariantContext getVariantContext(String name, RefMetaDataTracker tracker, AlignmentContext context) {
return tracker.getVariantContext(name, null, context.getLocation(), true);
}
// --------------------------------------------------------------------------------------------------------------
@ -374,14 +366,16 @@ public class VariantEval2Walker extends RodWalker<Integer, Integer> {
Set<VariantEvaluator> evalSet = group.get(evalSubgroupName);
VariantEvaluator eval = getEvalByName(evalName, evalSet);
String keyWord = contextName + "." + evalSubgroupName;
if ( eval.enabled() ) {
if ( first ) {
out.printf("%20s %s %s%n", evalName, formatKeyword(CONTEXT_HEADER), Utils.join("\t", eval.getTableHeader()));
first = false;
if ( first ) {
out.printf("%20s %s %s%n", evalName, formatKeyword(CONTEXT_HEADER), Utils.join("\t", eval.getTableHeader()));
first = false;
}
for ( List<String> row : eval.getTableRows() )
out.printf("%20s %s %s%n", evalName, formatKeyword(keyWord), Utils.join("\t", row));
}
for ( List<String> row : eval.getTableRows() )
out.printf("%20s %s %s%n", evalName, formatKeyword(keyWord), Utils.join("\t", row));
}
}
}

View File

@ -35,8 +35,9 @@ abstract class VariantEvaluator {
System.out.printf("%40s %s%n", interestingSitePrefix, why);
}
public boolean processedAnySites() { return processedASite; }
protected void markSiteAsProcessed() { processedASite = true; }
public abstract boolean enabled();
//public boolean processedAnySites() { return processedASite; }
//protected void markSiteAsProcessed() { processedASite = true; }
/** Should return the number of VariantContexts expected as inputs to update. Can be 1 or 2 */
public abstract int getComparisonOrder();