From 3039c0de3c3ab34d72c3e44868441594e1356d56 Mon Sep 17 00:00:00 2001 From: hanna Date: Fri, 22 Oct 2010 23:52:11 +0000 Subject: [PATCH] Retire old ROD syntax. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@4564 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/AbstractGenomeAnalysisEngine.java | 5 +-- .../tracks/builders/RMDTrackBuilder.java | 35 +++++++++++-------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/AbstractGenomeAnalysisEngine.java b/java/src/org/broadinstitute/sting/gatk/AbstractGenomeAnalysisEngine.java index 14d7abc76..899a5ce2d 100755 --- a/java/src/org/broadinstitute/sting/gatk/AbstractGenomeAnalysisEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/AbstractGenomeAnalysisEngine.java @@ -312,15 +312,12 @@ public abstract class AbstractGenomeAnalysisEngine { sampleDataSource = new SampleDataSource(getSAMFileHeader(), argCollection.sampleFiles); - if (argCollection.DBSNPFile != null) - bindConvenienceRods(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME, "dbsnp", argCollection.DBSNPFile); - RMDTrackBuilder manager = new RMDTrackBuilder(); // set the sequence dictionary of all of Tribble tracks to the sequence dictionary of our reference manager.setSequenceDictionary(referenceDataSource.getReference().getSequenceDictionary()); - List tracks = manager.getReferenceMetaDataSources(this,argCollection.RODBindings); + List tracks = manager.getReferenceMetaDataSources(this,argCollection); validateSuppliedReferenceOrderedData(tracks); // validate all the sequence dictionaries against the reference diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RMDTrackBuilder.java b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RMDTrackBuilder.java index feba147c9..98ab07a84 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RMDTrackBuilder.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/RMDTrackBuilder.java @@ -34,10 +34,13 @@ import org.broad.tribble.index.IndexFactory; import org.broad.tribble.source.BasicFeatureSource; import org.broad.tribble.source.CachingFeatureSource; import org.broad.tribble.util.LittleEndianOutputStream; +import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection; import org.broadinstitute.sting.gatk.refdata.tracks.RMDTrack; import org.broadinstitute.sting.gatk.refdata.tracks.RMDTrackCreationException; import org.broadinstitute.sting.gatk.refdata.utils.RMDTriplet; import org.broadinstitute.sting.gatk.AbstractGenomeAnalysisEngine; +import org.broadinstitute.sting.gatk.refdata.utils.helpers.DbSNPHelper; +import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.classloader.PluginManager; import org.broadinstitute.sting.utils.exceptions.UserException; @@ -369,29 +372,39 @@ public class RMDTrackBuilder extends PluginManager { /** * find the associated reference meta data * - * @param bindings the bindings of strings from the -B command line option + * @param argCollection the input arguments to the GATK. * @param engine the GATK engine to bind the tracks to * * @return a list of RMDTracks, one for each -B option */ - public List getReferenceMetaDataSources(AbstractGenomeAnalysisEngine engine, List bindings) { - initializeBindings(engine,bindings); + public List getReferenceMetaDataSources(AbstractGenomeAnalysisEngine engine, GATKArgumentCollection argCollection) { + initializeConvenienceBindings(engine,argCollection); + initializeFullBindings(engine,argCollection); // try and make the tracks given their requests return createRequestedTrackObjects(); } + private void initializeConvenienceBindings(AbstractGenomeAnalysisEngine engine, GATKArgumentCollection argCollection) { + if (argCollection.DBSNPFile != null) + inputs.add(new RMDTriplet(DbSNPHelper.STANDARD_DBSNP_TRACK_NAME, "dbsnp", argCollection.DBSNPFile)); + } + /** * initialize our lists of bindings * @param engine The engine, used to populate tags. - * @param bindings the input to the GATK, as a list of strings passed in through the -B options + * @param argCollection input arguments to the GATK. */ - private void initializeBindings(AbstractGenomeAnalysisEngine engine,List bindings) { + private void initializeFullBindings(AbstractGenomeAnalysisEngine engine,GATKArgumentCollection argCollection) { // NOTE: Method acts as a static. Once the inputs have been passed once they are locked in. - if (inputs.size() > 0 || bindings.size() == 0) + if (argCollection.RODBindings.size() == 0) return; - for (String binding: bindings) { - if(engine != null && engine.getTags(binding).size() == 2) { + for (String binding: argCollection.RODBindings) { + if(engine != null) { + if(engine.getTags(binding).size() != 2) + throw new UserException("Invalid syntax for -B (reference-ordered data) input flag. " + + "Please use the following syntax when providing reference-ordered " + + "data: -B:, ."); // Assume that if tags are present, those tags are name and type. // Name is always first, followed by type. List parameters = engine.getTags(binding); @@ -399,12 +412,6 @@ public class RMDTrackBuilder extends PluginManager { String type = parameters.get(1); inputs.add(new RMDTriplet(name,type,binding)); } - else { - // Otherwise, use old-format bindings. - String[] split = binding.split(","); - if (split.length != 3) throw new IllegalArgumentException(binding + " is not a valid reference metadata track description"); - inputs.add(new RMDTriplet(split[0], split[1], split[2])); - } } }