diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/AssociationTestRunner.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/AssociationTestRunner.java index fb376577b..30f6c6b57 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/AssociationTestRunner.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/AssociationTestRunner.java @@ -23,7 +23,7 @@ import org.broadinstitute.sting.utils.collections.Pair; public class AssociationTestRunner { static Normal standardNormal = new Normal(0.0,1.0,null); - public static List runTests(AssociationContext context) { + public static String runTests(AssociationContext context) { List results = new ArrayList(); if ( context instanceof TStatistic) { results.add(runStudentT((TStatistic) context)); @@ -37,7 +37,16 @@ public class AssociationTestRunner { results.add(runU((UStatistic) context)); } - return results; + StringBuffer buf = new StringBuffer(); + if ( results.size() > 0 ) { + buf.append(results.remove(0)); + for ( String s : results ) { + buf.append('\t'); + buf.append(s); + } + } + + return buf.toString(); } public static String runStudentT(TStatistic context) { diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationHandler.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationHandler.java index 4ec4945ad..5b38933aa 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationHandler.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationHandler.java @@ -43,11 +43,13 @@ public class RegionalAssociationHandler { * 1) Run their associated test(s) * 2) Slide the windows */ - public List runTests() { - List testResults = new ArrayList(associations.size()); + public Map runTests() { + // todo -- maybe the tdf should be the whole window rather than just the most recent loc? + Map testResults = new HashMap(associations.size()); for ( AssociationContext w : associations ) { if ( w.isFull() ) { - testResults.addAll(AssociationTestRunner.runTests(w)); + testResults.put(w,String.format("%s\t%d\t%d\t%s",maps.getReferenceContext().getLocus().getContig(), + maps.getReferenceContext().getLocus().getStart(),maps.getReferenceContext().getLocus().getStop(),AssociationTestRunner.runTests(w))); w.slide(); } } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationMultiplexer.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationMultiplexer.java new file mode 100755 index 000000000..3598ac5b9 --- /dev/null +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationMultiplexer.java @@ -0,0 +1,47 @@ +package org.broadinstitute.sting.oneoffprojects.walkers.association; + +import org.broadinstitute.sting.gatk.walkers.Multiplexer; +import org.broadinstitute.sting.utils.classloader.PluginManager; +import org.broadinstitute.sting.utils.exceptions.StingException; + +import java.util.*; + +/** + * Created by IntelliJ IDEA. + * User: chartl + * Date: 3/6/11 + * Time: 12:09 PM + * To change this template use File | Settings | File Templates. + */ +public class RegionalAssociationMultiplexer implements Multiplexer> { + + Set> contexts = null; + + public RegionalAssociationMultiplexer(String[] toUse) { + super(); + contexts = getAssociations(toUse); + + } + + public Collection> multiplex() { + return contexts; + } + + public String transformArgument(final Class context, String arg) { + return String.format("%s.%s.tdf", arg, context.getSimpleName()); + } + + private Set> getAssociations(String[] associationsToUse) { + List> contexts = new PluginManager(AssociationContext.class).getPlugins(); + Map> classNameToClass = new HashMap>(contexts.size()); + for ( Class clazz : contexts ) { + classNameToClass.put(clazz.getSimpleName(),clazz); + } + + Set> validAssociations = new HashSet>(); + for ( String s : associationsToUse ) { + validAssociations.add(classNameToClass.get(s)); + } + return validAssociations; + } +} diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationWalker.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationWalker.java index c103252f3..157c88472 100755 --- a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationWalker.java +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/association/RegionalAssociationWalker.java @@ -7,11 +7,13 @@ import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.datasources.sample.Sample; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.walkers.LocusWalker; +import org.broadinstitute.sting.gatk.walkers.Multiplex; import org.broadinstitute.sting.gatk.walkers.TreeReducible; import org.broadinstitute.sting.utils.SampleUtils; import org.broadinstitute.sting.utils.classloader.PluginManager; import org.broadinstitute.sting.utils.exceptions.StingException; import org.broadinstitute.sting.utils.exceptions.UserException; +import org.broadinstitute.sting.utils.wiggle.WiggleWriter; import java.io.PrintStream; import java.lang.reflect.Modifier; @@ -27,7 +29,8 @@ public class RegionalAssociationWalker extends LocusWalker out; public RegionalAssociationHandler reduceInit() { Set validAssociations = getAssociations(); @@ -47,17 +50,17 @@ public class RegionalAssociationWalker extends LocusWalker testsHere = rac.runTests(); + Map testsHere = rac.runTests(); // todo -- really awful shitty formatting if ( testsHere.size() > 0 ) { - out.printf("%s%n",rac.getLocation().toString()); - for ( String s : testsHere ) { - out.printf("%s%n",s); + for ( Map.Entry result : testsHere.entrySet() ) { + out.get(result.getKey().getClass()).printf("%s%n",result.getValue()); } } return rac; } - private Set getAssociations() { + + public Set getAssociations() { List> contexts = new PluginManager(AssociationContext.class).getPlugins(); Map> classNameToClass = new HashMap>(contexts.size()); for ( Class clazz : contexts ) {