Temporary command-line support to enable rod walkers, if you know what you are doing this is safe.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2505 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
d8351cb9fc
commit
8d13597a27
|
|
@ -141,6 +141,11 @@ public class GATKArgumentCollection {
|
||||||
@Argument(fullName = "interval_merging", shortName = "im", doc = "What interval merging rule should we use {ALL [DEFAULT],OVERLAPPING_ONLY,NONE}.", required = false)
|
@Argument(fullName = "interval_merging", shortName = "im", doc = "What interval merging rule should we use {ALL [DEFAULT],OVERLAPPING_ONLY,NONE}.", required = false)
|
||||||
public INTERVAL_MERGING_RULE intervalMerging = INTERVAL_MERGING_RULE.ALL;
|
public INTERVAL_MERGING_RULE intervalMerging = INTERVAL_MERGING_RULE.ALL;
|
||||||
|
|
||||||
|
/** Should we enable rodWalkers? This is currently unsafe */
|
||||||
|
@Element(required = false)
|
||||||
|
@Argument(fullName = "enableRodWalkers", shortName = "erw", doc = "Enable experimental rodWalker support. TEMPORARY HACK TO ALLOW EXPERIMENTATION WITH ROD WALKERS. [default is false]}.", required = false)
|
||||||
|
public boolean enableRodWalkers = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* marshal the data out to a object
|
* marshal the data out to a object
|
||||||
*
|
*
|
||||||
|
|
@ -294,6 +299,9 @@ public class GATKArgumentCollection {
|
||||||
if (other.intervalMerging != this.intervalMerging) {
|
if (other.intervalMerging != this.intervalMerging) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (other.enableRodWalkers != this.enableRodWalkers) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import org.broadinstitute.sting.utils.GenomeLoc;
|
||||||
import org.broadinstitute.sting.utils.MergingIterator;
|
import org.broadinstitute.sting.utils.MergingIterator;
|
||||||
import org.broadinstitute.sting.utils.GenomeLocParser;
|
import org.broadinstitute.sting.utils.GenomeLocParser;
|
||||||
import org.broadinstitute.sting.utils.StingException;
|
import org.broadinstitute.sting.utils.StingException;
|
||||||
|
import org.broadinstitute.sting.utils.pileup.ReadBackedPileup;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
|
@ -87,7 +88,7 @@ public class RodLocusView extends LocusView implements ReferenceOrderedView {
|
||||||
|
|
||||||
rodQueue = new MergingIterator<RODRecordList<ReferenceOrderedDatum>>(iterators);
|
rodQueue = new MergingIterator<RODRecordList<ReferenceOrderedDatum>>(iterators);
|
||||||
|
|
||||||
throw new StingException("RodLocusView currently disabled");
|
//throw new StingException("RodLocusView currently disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
public RefMetaDataTracker getReferenceOrderedDataAtLocus( GenomeLoc loc ) {
|
public RefMetaDataTracker getReferenceOrderedDataAtLocus( GenomeLoc loc ) {
|
||||||
|
|
@ -127,7 +128,7 @@ public class RodLocusView extends LocusView implements ReferenceOrderedView {
|
||||||
// calculate the number of skipped bases, and update lastLoc so we can do that again in the next()
|
// calculate the number of skipped bases, and update lastLoc so we can do that again in the next()
|
||||||
long skippedBases = getSkippedBases( rodSite );
|
long skippedBases = getSkippedBases( rodSite );
|
||||||
lastLoc = site;
|
lastLoc = site;
|
||||||
return new AlignmentContext(site, new ArrayList<SAMRecord>(), new ArrayList<Integer>(), skippedBases);
|
return new AlignmentContext(site, new ReadBackedPileup(site), skippedBases);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RefMetaDataTracker createTracker( Collection<RODRecordList<ReferenceOrderedDatum>> allTracksHere ) {
|
private RefMetaDataTracker createTracker( Collection<RODRecordList<ReferenceOrderedDatum>> allTracksHere ) {
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package org.broadinstitute.sting.gatk.traversals;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.broadinstitute.sting.gatk.WalkerManager;
|
import org.broadinstitute.sting.gatk.WalkerManager;
|
||||||
|
import org.broadinstitute.sting.gatk.GenomeAnalysisEngine;
|
||||||
import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
|
import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
|
||||||
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
||||||
import org.broadinstitute.sting.gatk.datasources.providers.*;
|
import org.broadinstitute.sting.gatk.datasources.providers.*;
|
||||||
|
|
@ -13,6 +14,7 @@ import org.broadinstitute.sting.gatk.walkers.Walker;
|
||||||
import org.broadinstitute.sting.utils.GenomeLoc;
|
import org.broadinstitute.sting.utils.GenomeLoc;
|
||||||
import org.broadinstitute.sting.utils.Utils;
|
import org.broadinstitute.sting.utils.Utils;
|
||||||
import org.broadinstitute.sting.utils.GenomeLocParser;
|
import org.broadinstitute.sting.utils.GenomeLocParser;
|
||||||
|
import org.broadinstitute.sting.utils.pileup.ReadBackedPileup;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
|
@ -21,7 +23,7 @@ import java.util.ArrayList;
|
||||||
*/
|
*/
|
||||||
public class TraverseLoci extends TraversalEngine {
|
public class TraverseLoci extends TraversalEngine {
|
||||||
final private static String LOCI_STRING = "sites";
|
final private static String LOCI_STRING = "sites";
|
||||||
final private static boolean ENABLE_ROD_TRAVERSAL = false;
|
//final private static boolean ENABLE_ROD_TRAVERSAL = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -57,7 +59,7 @@ public class TraverseLoci extends TraversalEngine {
|
||||||
|
|
||||||
//ReferenceOrderedView referenceOrderedDataView = new ReferenceOrderedView( dataProvider );
|
//ReferenceOrderedView referenceOrderedDataView = new ReferenceOrderedView( dataProvider );
|
||||||
ReferenceOrderedView referenceOrderedDataView = null;
|
ReferenceOrderedView referenceOrderedDataView = null;
|
||||||
if ( ! ENABLE_ROD_TRAVERSAL || WalkerManager.getWalkerDataSource(walker) != DataSource.REFERENCE_ORDERED_DATA )
|
if ( ! GenomeAnalysisEngine.instance.getArguments().enableRodWalkers || WalkerManager.getWalkerDataSource(walker) != DataSource.REFERENCE_ORDERED_DATA )
|
||||||
referenceOrderedDataView = new ManagingReferenceOrderedView( dataProvider );
|
referenceOrderedDataView = new ManagingReferenceOrderedView( dataProvider );
|
||||||
else
|
else
|
||||||
referenceOrderedDataView = (RodLocusView)locusView;
|
referenceOrderedDataView = (RodLocusView)locusView;
|
||||||
|
|
@ -102,12 +104,13 @@ public class TraverseLoci extends TraversalEngine {
|
||||||
|
|
||||||
// We have a final map call to execute here to clean up the skipped based from the
|
// We have a final map call to execute here to clean up the skipped based from the
|
||||||
// last position in the ROD to that in the interval
|
// last position in the ROD to that in the interval
|
||||||
if ( ENABLE_ROD_TRAVERSAL && WalkerManager.getWalkerDataSource(walker) == DataSource.REFERENCE_ORDERED_DATA ) {
|
if ( GenomeAnalysisEngine.instance.getArguments().enableRodWalkers && WalkerManager.getWalkerDataSource(walker) == DataSource.REFERENCE_ORDERED_DATA ) {
|
||||||
RodLocusView rodLocusView = (RodLocusView)locusView;
|
RodLocusView rodLocusView = (RodLocusView)locusView;
|
||||||
long nSkipped = rodLocusView.getLastSkippedBases();
|
long nSkipped = rodLocusView.getLastSkippedBases();
|
||||||
if ( nSkipped > 0 ) {
|
if ( nSkipped > 0 ) {
|
||||||
// no sense in making the call if you don't have anything interesting to say
|
// no sense in making the call if you don't have anything interesting to say
|
||||||
AlignmentContext ac = new AlignmentContext(rodLocusView.getLocOneBeyondShard(), null, null, nSkipped);
|
GenomeLoc site = rodLocusView.getLocOneBeyondShard();
|
||||||
|
AlignmentContext ac = new AlignmentContext(site, new ReadBackedPileup(site), nSkipped);
|
||||||
M x = locusWalker.map(null, null, ac);
|
M x = locusWalker.map(null, null, ac);
|
||||||
sum = locusWalker.reduce(x, sum);
|
sum = locusWalker.reduce(x, sum);
|
||||||
}
|
}
|
||||||
|
|
@ -135,7 +138,7 @@ public class TraverseLoci extends TraversalEngine {
|
||||||
DataSource dataSource = WalkerManager.getWalkerDataSource(walker);
|
DataSource dataSource = WalkerManager.getWalkerDataSource(walker);
|
||||||
if( dataSource == DataSource.READS )
|
if( dataSource == DataSource.READS )
|
||||||
return new CoveredLocusView(dataProvider);
|
return new CoveredLocusView(dataProvider);
|
||||||
else if( dataSource == DataSource.REFERENCE || ! ENABLE_ROD_TRAVERSAL )
|
else if( dataSource == DataSource.REFERENCE || ! GenomeAnalysisEngine.instance.getArguments().enableRodWalkers )
|
||||||
return new AllLocusView(dataProvider);
|
return new AllLocusView(dataProvider);
|
||||||
else if( dataSource == DataSource.REFERENCE_ORDERED_DATA )
|
else if( dataSource == DataSource.REFERENCE_ORDERED_DATA )
|
||||||
return new RodLocusView(dataProvider);
|
return new RodLocusView(dataProvider);
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,8 @@ 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="minPhredConfidenceScore", doc="Minimum confidence score to consider an evaluation SNP a variant", required=false)
|
@Argument(shortName="minPhredConfidenceScore", doc="Minimum confidence score to consider an evaluation SNP a variant", required=false)
|
||||||
public double minConfidenceScore = -1.0;
|
public double minConfidenceScore = -1.0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -177,7 +177,7 @@ public class VariantEvalWalkerIntegrationTest extends WalkerTest {
|
||||||
@Test
|
@Test
|
||||||
public void testEvalRuntimeWithLotsOfIntervals() {
|
public void testEvalRuntimeWithLotsOfIntervals() {
|
||||||
List<String> md5 = new ArrayList<String>();
|
List<String> md5 = new ArrayList<String>();
|
||||||
md5.add("");
|
md5.add("d11ea079fc1835514d392056a2c2a28d");
|
||||||
WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec(
|
WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec(
|
||||||
"-T VariantEval -R " + oneKGLocation + "reference/human_b36_both.fasta " +
|
"-T VariantEval -R " + oneKGLocation + "reference/human_b36_both.fasta " +
|
||||||
"-B eval,Variants," + validationDataLocation + "NA12878.pilot_3.all.geli.calls " +
|
"-B eval,Variants," + validationDataLocation + "NA12878.pilot_3.all.geli.calls " +
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue