From 7d2df3f511addd46cedf78451ce526053d46bbc1 Mon Sep 17 00:00:00 2001 From: aaron Date: Fri, 7 May 2010 17:12:50 +0000 Subject: [PATCH] example windowed ROD walker for Kristian, and updates to Tribble git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3325 348d0f76-0448-11de-a6fe-93d51630548a --- .../builders/TribbleRMDTrackBuilder.java | 35 ++++++-- .../walkers/DbSNPWindowCounter.java | 81 ++++++++++++++++++ .../TribbleRMDTrackBuilderUnitTest.java | 1 + settings/repository/org.broad/tribble-77.xml | 3 - .../{tribble-77.jar => tribble-79.jar} | Bin 193446 -> 211708 bytes settings/repository/org.broad/tribble-79.xml | 3 + 6 files changed, 114 insertions(+), 9 deletions(-) create mode 100644 java/src/org/broadinstitute/sting/oneoffprojects/walkers/DbSNPWindowCounter.java delete mode 100644 settings/repository/org.broad/tribble-77.xml rename settings/repository/org.broad/{tribble-77.jar => tribble-79.jar} (82%) create mode 100644 settings/repository/org.broad/tribble-79.xml diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilder.java b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilder.java index f1a6d57c6..c46f012b6 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilder.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilder.java @@ -52,6 +52,17 @@ import java.util.Map; * * This class keeps track of the available codecs, and knows how to put together a track of * that gets iterators from the FeatureReader using Tribble. + * + * Here's an example run command to find SNPs 200 base pairs up and downstream of the target file. + * + * java -jar dist/GenomeAnalysisTK.jar \ + * -R /broad/1KG/reference/human_b36_both.fasta \ + * -L 1:1863 \ + * -L MT:16520 \ + * -db /humgen/gsa-hpprojects/GATK/data/Comparisons/Validated/dbSNP/dbsnp_129_b36.rod \ + * -dbw 200 \ + * -l INFO \ + * -T DbSNPWindowCounter */ public class TribbleRMDTrackBuilder extends PluginManager implements RMDTrackBuilder { /** @@ -92,6 +103,19 @@ public class TribbleRMDTrackBuilder extends PluginManager implemen public RMDTrack createInstanceOfTrack(Class targetClass, String name, File inputFile) throws RMDTrackCreationException { // make a feature reader FeatureReader reader; + reader = createFeatureReader(targetClass, inputFile); + // return a feature reader track + return new FeatureReaderTrack(targetClass, name, inputFile, reader); + } + + /** + * create a feature reader of the specified type + * @param targetClass the target codec type + * @param inputFile the input file to create the track from (of the codec type) + * @return the FeatureReader instance + */ + public FeatureReader createFeatureReader(Class targetClass, File inputFile) { + FeatureReader reader = null; try { // check to see if the input file has an index if (requireIndex(inputFile)) { @@ -107,8 +131,7 @@ public class TribbleRMDTrackBuilder extends PluginManager implemen } catch (IOException e) { throw new StingException("Unable to make the index file for " + inputFile, e); } - // return a feature reader track - return new FeatureReaderTrack(targetClass, name, inputFile, reader); + return reader; } /** @@ -120,13 +143,13 @@ public class TribbleRMDTrackBuilder extends PluginManager implemen */ public static LinearIndex createIndex(File inputFile, FeatureCodec codec) throws IOException { LinearIndexCreator create = new LinearIndexCreator(inputFile, codec); - create.setDisplayProgress(false); // don't display progress indicators - + // if we can write the index, we should, but if not just create it in memory - if (new File(inputFile.getAbsoluteFile() + linearIndexExtension).canWrite()) + File indexFile = new File(inputFile.getAbsoluteFile() + linearIndexExtension); + if (indexFile.getParentFile().canWrite() && (!indexFile.exists() || indexFile.canWrite())) return create.createIndex(); else { - logger.info("Unable to write to location " + inputFile.getAbsoluteFile() + linearIndexExtension + " for index file, creating index in memory only"); + logger.info("Unable to write to location " + indexFile + " for index file, creating index in memory only"); return create.createIndex(null); } diff --git a/java/src/org/broadinstitute/sting/oneoffprojects/walkers/DbSNPWindowCounter.java b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/DbSNPWindowCounter.java new file mode 100644 index 000000000..30b84a3dd --- /dev/null +++ b/java/src/org/broadinstitute/sting/oneoffprojects/walkers/DbSNPWindowCounter.java @@ -0,0 +1,81 @@ +package org.broadinstitute.sting.oneoffprojects.walkers; + +import org.broad.tribble.FeatureIterator; +import org.broad.tribble.FeatureReader; +import org.broad.tribble.dbsnp.DbSNPCodec; +import org.broad.tribble.dbsnp.DbSNPFeature; +import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.gatk.contexts.AlignmentContext; +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; +import org.broadinstitute.sting.gatk.refdata.tracks.builders.TribbleRMDTrackBuilder; +import org.broadinstitute.sting.gatk.walkers.By; +import org.broadinstitute.sting.gatk.walkers.DataSource; +import org.broadinstitute.sting.gatk.walkers.LocusWalker; +import org.broadinstitute.sting.gatk.walkers.Requires; +import org.broadinstitute.sting.utils.StingException; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +/** + * DbSNPWindowCounter + * + * Count the number of upstream and downstream dbSNP entries from the current position using the specified window size. + * (really the window size upstream and downstream, so windowSize * 2) + * + * @Author Aaron + * @Date May 7th, 2010 + */ +@By(DataSource.REFERENCE) +@Requires({DataSource.REFERENCE, DataSource.REFERENCE_BASES}) +public class DbSNPWindowCounter extends LocusWalker { + + // what we read in new tracks with + private FeatureReader reader; + + @Argument(fullName = "dbSNPFile", shortName = "db", doc="The dbsnp file to search upstream and downstream for nearby snps", required = true) + private File myDbSNPFile; + + @Argument(fullName = "dbSNPWindowSize", shortName = "dbw", doc="The distance to look both upstream and downstream for SNPs", required = true) + private int windowSize; + + + public void initialize() { + TribbleRMDTrackBuilder builder = new TribbleRMDTrackBuilder(); + reader = builder.createFeatureReader(DbSNPCodec.class,myDbSNPFile); + } + + + public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { + FeatureIterator dbSNPs; + + // our upstream and downstream window locations + int windowStart = (int)Math.max(context.getLocation().getStart()-windowSize,0); + int windowStop = (int)context.getLocation().getStop()+windowSize; + + // query the dnSNP iterator + try { + dbSNPs = reader.query(context.getContig(), + windowStart, + windowStop); + } catch (IOException e) { + throw new StingException("Unable to query dbSNP track due to IO Exception",e); + } + + // count the number of dbSNPs we've seen + int counter = 0; + for (DbSNPFeature feature: dbSNPs) + counter++; + out.println(context.getContig() + ":" + windowStart + "-" + context.getContig() + ":" + windowStop + "=" + + counter + " (dnSNP records)"); + return 1; + } + + public Long reduceInit() { return 0l; } + + public Long reduce(Integer value, Long sum) { + return value + sum; + } +} \ No newline at end of file diff --git a/java/test/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilderUnitTest.java b/java/test/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilderUnitTest.java index af39ecd98..b5a5d5ac3 100644 --- a/java/test/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilderUnitTest.java +++ b/java/test/org/broadinstitute/sting/gatk/refdata/tracks/builders/TribbleRMDTrackBuilderUnitTest.java @@ -23,6 +23,7 @@ package org.broadinstitute.sting.gatk.refdata.tracks.builders; + import org.broad.tribble.vcf.VCFCodec; import org.broadinstitute.sting.BaseTest; import org.junit.Assert; diff --git a/settings/repository/org.broad/tribble-77.xml b/settings/repository/org.broad/tribble-77.xml deleted file mode 100644 index 0db99f214..000000000 --- a/settings/repository/org.broad/tribble-77.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/settings/repository/org.broad/tribble-77.jar b/settings/repository/org.broad/tribble-79.jar similarity index 82% rename from settings/repository/org.broad/tribble-77.jar rename to settings/repository/org.broad/tribble-79.jar index fcc69ef140db39e617be6bbf68511cf6fe248a67..2d2da49da8cefe3e4964c4d08411e44e3aa235c1 100644 GIT binary patch delta 17190 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 delta 6728 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 L1K$5oegOOjm@1Z? diff --git a/settings/repository/org.broad/tribble-79.xml b/settings/repository/org.broad/tribble-79.xml new file mode 100644 index 000000000..9d57d65d0 --- /dev/null +++ b/settings/repository/org.broad/tribble-79.xml @@ -0,0 +1,3 @@ + + +