diff --git a/public/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java b/public/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java
index 7e96b609e..7c567f511 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java
+++ b/public/java/src/org/broadinstitute/sting/gatk/CommandLineGATK.java
@@ -34,10 +34,7 @@ import org.broadinstitute.sting.gatk.filters.ReadFilter;
import org.broadinstitute.sting.gatk.walkers.Attribution;
import org.broadinstitute.sting.gatk.walkers.Walker;
import org.broadinstitute.sting.utils.exceptions.UserException;
-import org.broadinstitute.sting.utils.help.ApplicationDetails;
-import org.broadinstitute.sting.utils.help.DocumentedGATKFeature;
-import org.broadinstitute.sting.utils.help.GATKDocUtils;
-import org.broadinstitute.sting.utils.help.GATKDoclet;
+import org.broadinstitute.sting.utils.help.*;
import org.broadinstitute.sting.utils.text.TextFormattingUtils;
import java.util.*;
@@ -178,7 +175,7 @@ public class CommandLineGATK extends CommandLineExecutable {
Formatter formatter = new Formatter(additionalHelp);
formatter.format("For a full description of this walker, see its GATKdocs at:%n");
- formatter.format("%s%n", GATKDocUtils.helpLinksToGATKDocs(walkerType));
+ formatter.format("%s%n", HelpUtils.helpLinksToGATKDocs(walkerType));
return additionalHelp.toString();
}
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java b/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java
index 902f9d308..bf490e28c 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java
+++ b/public/java/src/org/broadinstitute/sting/gatk/refdata/VariantContextAdaptors.java
@@ -1,10 +1,11 @@
package org.broadinstitute.sting.gatk.refdata;
+import net.sf.samtools.util.SequenceUtil;
import org.broad.tribble.Feature;
+import org.broad.tribble.annotation.Strand;
import org.broad.tribble.dbsnp.DbSNPFeature;
import org.broad.tribble.gelitext.GeliTextFeature;
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
-import org.broadinstitute.sting.gatk.refdata.features.DbSNPHelper;
import org.broadinstitute.sting.utils.classloader.PluginManager;
import org.broadinstitute.sting.utils.codecs.hapmap.RawHapMapFeature;
import org.broadinstitute.sting.utils.codecs.vcf.VCFHeader;
@@ -92,6 +93,67 @@ public class VariantContextAdaptors {
// --------------------------------------------------------------------------------------------------------------
private static class DBSnpAdaptor implements VCAdaptor {
+ private static boolean isSNP(DbSNPFeature feature) {
+ return feature.getVariantType().contains("single") && feature.getLocationType().contains("exact");
+ }
+
+ private static boolean isMNP(DbSNPFeature feature) {
+ return feature.getVariantType().contains("mnp") && feature.getLocationType().contains("range");
+ }
+
+ private static boolean isInsertion(DbSNPFeature feature) {
+ return feature.getVariantType().contains("insertion");
+ }
+
+ private static boolean isDeletion(DbSNPFeature feature) {
+ return feature.getVariantType().contains("deletion");
+ }
+
+ private static boolean isIndel(DbSNPFeature feature) {
+ return isInsertion(feature) || isDeletion(feature) || isComplexIndel(feature);
+ }
+
+ public static boolean isComplexIndel(DbSNPFeature feature) {
+ return feature.getVariantType().contains("in-del");
+ }
+
+ /**
+ * gets the alternate alleles. This method should return all the alleles present at the location,
+ * NOT including the reference base. This is returned as a string list with no guarantee ordering
+ * of alleles (i.e. the first alternate allele is not always going to be the allele with the greatest
+ * frequency).
+ *
+ * @return an alternate allele list
+ */
+ public static List getAlternateAlleleList(DbSNPFeature feature) {
+ List ret = new ArrayList();
+ for (String allele : getAlleleList(feature))
+ if (!allele.equals(String.valueOf(feature.getNCBIRefBase()))) ret.add(allele);
+ return ret;
+ }
+
+ /**
+ * gets the alleles. This method should return all the alleles present at the location,
+ * including the reference base. The first allele should always be the reference allele, followed
+ * by an unordered list of alternate alleles.
+ *
+ * @return an alternate allele list
+ */
+ public static List getAlleleList(DbSNPFeature feature) {
+ List alleleList = new ArrayList();
+ // add ref first
+ if ( feature.getStrand() == Strand.POSITIVE )
+ alleleList = Arrays.asList(feature.getObserved());
+ else
+ for (String str : feature.getObserved())
+ alleleList.add(SequenceUtil.reverseComplement(str));
+ if ( alleleList.size() > 0 && alleleList.contains(feature.getNCBIRefBase())
+ && !alleleList.get(0).equals(feature.getNCBIRefBase()) )
+ Collections.swap(alleleList, alleleList.indexOf(feature.getNCBIRefBase()), 0);
+
+ return alleleList;
+ }
+
/**
* Converts non-VCF formatted dbSNP records to VariantContext.
* @return DbSNPFeature.
@@ -102,18 +164,18 @@ public class VariantContextAdaptors {
@Override
public VariantContext convert(String name, Object input, ReferenceContext ref) {
DbSNPFeature dbsnp = (DbSNPFeature)input;
- if ( ! Allele.acceptableAlleleBases(DbSNPHelper.getReference(dbsnp)) )
+ if ( ! Allele.acceptableAlleleBases(dbsnp.getNCBIRefBase()) )
return null;
- Allele refAllele = Allele.create(DbSNPHelper.getReference(dbsnp), true);
+ Allele refAllele = Allele.create(dbsnp.getNCBIRefBase(), true);
- if ( DbSNPHelper.isSNP(dbsnp) || DbSNPHelper.isIndel(dbsnp) || DbSNPHelper.isMNP(dbsnp) || dbsnp.getVariantType().contains("mixed") ) {
+ if ( isSNP(dbsnp) || isIndel(dbsnp) || isMNP(dbsnp) || dbsnp.getVariantType().contains("mixed") ) {
// add the reference allele
List alleles = new ArrayList();
alleles.add(refAllele);
// add all of the alt alleles
boolean sawNullAllele = refAllele.isNull();
- for ( String alt : DbSNPHelper.getAlternateAlleleList(dbsnp) ) {
+ for ( String alt : getAlternateAlleleList(dbsnp) ) {
if ( ! Allele.acceptableAlleleBases(alt) ) {
//System.out.printf("Excluding dbsnp record %s%n", dbsnp);
return null;
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/DbSNPHelper.java b/public/java/src/org/broadinstitute/sting/gatk/refdata/features/DbSNPHelper.java
deleted file mode 100644
index a2132cee5..000000000
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/DbSNPHelper.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2011, The Broad Institute
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package org.broadinstitute.sting.gatk.refdata.features;
-
-import net.sf.samtools.util.SequenceUtil;
-import org.broad.tribble.annotation.Strand;
-import org.broad.tribble.dbsnp.DbSNPFeature;
-import org.broadinstitute.sting.utils.Utils;
-import org.broadinstitute.sting.utils.variantcontext.VariantContext;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * this class contains static helper methods for DbSNP
- */
-public class DbSNPHelper {
-
- private DbSNPHelper() {} // don't make a DbSNPHelper
-
- public static String rsIDOfFirstRealVariant(List VCs, VariantContext.Type type) {
- if ( VCs == null )
- return null;
-
- String rsID = null;
- for ( VariantContext vc : VCs ) {
- if ( vc.getType() == type ) {
- rsID = vc.getID();
- break;
- }
- }
-
- return rsID;
- }
-
- /**
- * get the -1 * (log 10 of the error value)
- *
- * @return the log based error estimate
- */
- public static double getNegLog10PError(DbSNPFeature feature) {
- return 4; // -log10(0.0001)
- }
-
- //
- // What kind of variant are we?
- //
- // ----------------------------------------------------------------------
- public static boolean isSNP(DbSNPFeature feature) {
- return feature.getVariantType().contains("single") && feature.getLocationType().contains("exact");
- }
-
- public static boolean isMNP(DbSNPFeature feature) {
- return feature.getVariantType().contains("mnp") && feature.getLocationType().contains("range");
- }
-
- public static String toMediumString(DbSNPFeature feature) {
- String s = String.format("%s:%d:%s:%s", feature.getChr(), feature.getStart(), feature.getRsID(), Utils.join("",feature.getObserved()));
- if (isSNP(feature)) s += ":SNP";
- if (isIndel(feature)) s += ":Indel";
- if (isHapmap(feature)) s += ":Hapmap";
- if (is2Hit2Allele(feature)) s += ":2Hit";
- return s;
- }
-
- public static boolean isInsertion(DbSNPFeature feature) {
- return feature.getVariantType().contains("insertion");
- }
-
- public static boolean isDeletion(DbSNPFeature feature) {
- return feature.getVariantType().contains("deletion");
- }
-
- public static boolean isIndel(DbSNPFeature feature) {
- return DbSNPHelper.isInsertion(feature) || DbSNPHelper.isDeletion(feature) || DbSNPHelper.isComplexIndel(feature);
- }
-
- public static boolean isComplexIndel(DbSNPFeature feature) {
- return feature.getVariantType().contains("in-del");
- }
-
- public static boolean isHapmap(DbSNPFeature feature) {
- return feature.getValidationStatus().contains("by-hapmap");
- }
-
- public static boolean is2Hit2Allele(DbSNPFeature feature) {
- return feature.getValidationStatus().contains("by-2hit-2allele");
- }
-
- public static boolean is1000genomes(DbSNPFeature feature) {
- return feature.getValidationStatus().contains("by-1000genomes");
- }
-
- public static boolean isMQ1(DbSNPFeature feature) {
- return feature.getWeight() == 1;
- }
-
- /**
- * gets the alternate alleles. This method should return all the alleles present at the location,
- * NOT including the reference base. This is returned as a string list with no guarantee ordering
- * of alleles (i.e. the first alternate allele is not always going to be the allele with the greatest
- * frequency).
- *
- * @return an alternate allele list
- */
- public static List getAlternateAlleleList(DbSNPFeature feature) {
- List ret = new ArrayList();
- for (String allele : getAlleleList(feature))
- if (!allele.equals(String.valueOf(feature.getNCBIRefBase()))) ret.add(allele);
- return ret;
- }
-
- public static boolean onFwdStrand(DbSNPFeature feature) {
- return feature.getStrand() == Strand.POSITIVE;
- }
-
- public static String getReference(DbSNPFeature feature) {
- return feature.getNCBIRefBase();
- }
-
- public static String toSimpleString(DbSNPFeature feature) {
- return String.format("%s:%s:%s", feature.getRsID(), feature.getObserved(), (feature.getStrand() == Strand.POSITIVE) ? "+" : "-");
- }
-
- /**
- * gets the alleles. This method should return all the alleles present at the location,
- * including the reference base. The first allele should always be the reference allele, followed
- * by an unordered list of alternate alleles.
- *
- * @return an alternate allele list
- */
- public static List getAlleleList(DbSNPFeature feature) {
- List alleleList = new ArrayList();
- // add ref first
- if ( onFwdStrand(feature) )
- alleleList = Arrays.asList(feature.getObserved());
- else
- for (String str : feature.getObserved())
- alleleList.add(SequenceUtil.reverseComplement(str));
- if ( alleleList.size() > 0 && alleleList.contains(getReference(feature)) && !alleleList.get(0).equals(getReference(feature)) )
- Collections.swap(alleleList, alleleList.indexOf(getReference(feature)), 0);
-
- return alleleList;
- }
-}
diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java
index 6243a6cc0..4d8be4800 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java
+++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java
@@ -26,7 +26,6 @@
package org.broadinstitute.sting.gatk.walkers;
import org.broad.tribble.Feature;
-import org.broad.tribble.dbsnp.DbSNPFeature;
import org.broadinstitute.sting.commandline.Argument;
import org.broadinstitute.sting.commandline.Input;
import org.broadinstitute.sting.commandline.Output;
@@ -34,9 +33,6 @@ import org.broadinstitute.sting.commandline.RodBinding;
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.ReferenceOrderedDatum;
-import org.broadinstitute.sting.gatk.refdata.features.DbSNPHelper;
-import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature;
import org.broadinstitute.sting.utils.Utils;
import org.broadinstitute.sting.utils.collections.Pair;
import org.broadinstitute.sting.utils.pileup.ReadBackedExtendedEventPileup;
diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java
index a7837813a..01926a7f3 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java
+++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorEngine.java
@@ -29,15 +29,11 @@ import org.broadinstitute.sting.commandline.RodBinding;
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.features.DbSNPHelper;
import org.broadinstitute.sting.gatk.walkers.annotator.interfaces.AnnotationInterfaceManager;
import org.broadinstitute.sting.gatk.walkers.annotator.interfaces.AnnotatorCompatibleWalker;
import org.broadinstitute.sting.gatk.walkers.annotator.interfaces.GenotypeAnnotation;
import org.broadinstitute.sting.gatk.walkers.annotator.interfaces.InfoFieldAnnotation;
-import org.broadinstitute.sting.utils.codecs.vcf.VCFConstants;
-import org.broadinstitute.sting.utils.codecs.vcf.VCFHeaderLine;
-import org.broadinstitute.sting.utils.codecs.vcf.VCFHeaderLineType;
-import org.broadinstitute.sting.utils.codecs.vcf.VCFInfoHeaderLine;
+import org.broadinstitute.sting.utils.codecs.vcf.*;
import org.broadinstitute.sting.utils.exceptions.UserException;
import org.broadinstitute.sting.utils.variantcontext.Genotype;
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
@@ -158,7 +154,7 @@ public class VariantAnnotatorEngine {
private void annotateDBs(RefMetaDataTracker tracker, ReferenceContext ref, VariantContext vc, Map infoAnnotations) {
for ( Map.Entry, String> dbSet : dbAnnotations.entrySet() ) {
if ( dbSet.getValue().equals(VCFConstants.DBSNP_KEY) ) {
- String rsID = DbSNPHelper.rsIDOfFirstRealVariant(tracker.getValues(dbSet.getKey(), ref.getLocus()), vc.getType());
+ String rsID = VCFUtils.rsIDOfFirstRealVariant(tracker.getValues(dbSet.getKey(), ref.getLocus()), vc.getType());
infoAnnotations.put(VCFConstants.DBSNP_KEY, rsID != null);
// annotate dbsnp id if available and not already there
if ( rsID != null && (!vc.hasID() || vc.getID().equals(VCFConstants.EMPTY_ID_FIELD)) )
diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java
index 51fe543df..60f0fcb0a 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java
+++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/beagle/BeagleOutputToVCFWalker.java
@@ -31,7 +31,7 @@ import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
import org.broadinstitute.sting.gatk.datasources.rmd.ReferenceOrderedDataSource;
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
-import org.broadinstitute.sting.gatk.refdata.features.beagle.BeagleFeature;
+import org.broadinstitute.sting.utils.codecs.beagle.BeagleFeature;
import org.broadinstitute.sting.gatk.walkers.RodWalker;
import org.broadinstitute.sting.utils.GenomeLoc;
import org.broadinstitute.sting.utils.SampleUtils;
diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/CallableLociWalker.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/CallableLociWalker.java
index 90e6fcd77..3046ef925 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/CallableLociWalker.java
+++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/coverage/CallableLociWalker.java
@@ -42,50 +42,190 @@ import java.io.PrintStream;
/**
* Emits a data file containing information about callable, uncallable, poorly mapped, and other parts of the genome
*
- * @Author depristo
- * @Date May 7, 2010
+ *
+ * A very common question about a NGS set of reads is what areas of the genome are considered callable. The system
+ * considers the coverage at each locus and emits either a per base state or a summary interval BED file that
+ * partitions the genomic intervals into the following callable states:
+ *
+ * - REF_N
+ * - the reference base was an N, which is not considered callable the GATK
+ * - CALLABLE
+ * - the base satisfied the min. depth for calling but had less than maxDepth to avoid having EXCESSIVE_COVERAGE
+ * - NO_COVERAGE
+ * - absolutely no reads were seen at this locus, regardless of the filtering parameters
+ * - LOW_COVERAGE
+ * - there were less than min. depth bases at the locus, after applying filters
+ * - EXCESSIVE_COVERAGE
+ * - more than -maxDepth read at the locus, indicating some sort of mapping problem
+ * - POOR_MAPPING_QUALITY
+ * - more than --maxFractionOfReadsWithLowMAPQ at the locus, indicating a poor mapping quality of the reads
+ *
+ *
+ *
+ * Input
+ *
+ * A BAM file containing exactly one sample.
+ *
+ *
+ * Output
+ *
+ *
+ * - -o: a OutputFormatted (recommended BED) file with the callable status covering each base
+ * - -summary: a table of callable status x count of all examined bases
+ *
+ *
+ *
+ * Examples
+ *
+ * -T CallableLociWalker \
+ * -I my.bam \
+ * -summary my.summary \
+ * -o my.bed
+ *
+ *
+ * would produce a BED file (my.bed) that looks like:
+ *
+ *
+ * 20 10000000 10000864 CALLABLE
+ * 20 10000865 10000985 POOR_MAPPING_QUALITY
+ * 20 10000986 10001138 CALLABLE
+ * 20 10001139 10001254 POOR_MAPPING_QUALITY
+ * 20 10001255 10012255 CALLABLE
+ * 20 10012256 10012259 POOR_MAPPING_QUALITY
+ * 20 10012260 10012263 CALLABLE
+ * 20 10012264 10012328 POOR_MAPPING_QUALITY
+ * 20 10012329 10012550 CALLABLE
+ * 20 10012551 10012551 LOW_COVERAGE
+ * 20 10012552 10012554 CALLABLE
+ * 20 10012555 10012557 LOW_COVERAGE
+ * 20 10012558 10012558 CALLABLE
+ * et cetera...
+ *
+ * as well as a summary table that looks like:
+ *
+ *
+ * state nBases
+ * REF_N 0
+ * CALLABLE 996046
+ * NO_COVERAGE 121
+ * LOW_COVERAGE 928
+ * EXCESSIVE_COVERAGE 0
+ * POOR_MAPPING_QUALITY 2906
+ *
+ *
+ * @author Mark DePristo
+ * @since May 7, 2010
*/
@By(DataSource.REFERENCE)
public class CallableLociWalker extends LocusWalker {
@Output
PrintStream out;
- @Argument(fullName = "maxLowMAPQ", shortName = "mlmq", doc = "Maximum value for MAPQ to be considered a problematic mapped read. The gap between this value and mmq are reads that are not sufficiently well mapped for calling but aren't indicative of mapping problems.", required = false)
+ /**
+ * Callable loci summary counts (see outputs) will be written to this file.
+ */
+ @Output(fullName = "summary", shortName = "summary", doc = "Name of file for output summary", required = true)
+ File summaryFile;
+
+ /**
+ * The gap between this value and mmq are reads that are not sufficiently well mapped for calling but
+ * aren't indicative of mapping problems. For example, if maxLowMAPQ = 1 and mmq = 20, then reads with
+ * MAPQ == 0 are poorly mapped, MAPQ >= 20 are considered as contributing to calling, where
+ * reads with MAPQ >= 1 and < 20 are not bad in and of themselves but aren't sufficiently good to contribute to
+ * calling. In effect this reads are invisible, driving the base to the NO_ or LOW_COVERAGE states
+ */
+ @Argument(fullName = "maxLowMAPQ", shortName = "mlmq", doc = "Maximum value for MAPQ to be considered a problematic mapped read.", required = false)
byte maxLowMAPQ = 1;
- @Argument(fullName = "minMappingQuality", shortName = "mmq", doc = "Minimum mapping quality of reads to count towards depth. Defaults to 50.", required = false)
+ /**
+ * Reads with MAPQ > minMappingQuality are treated as usable for variation detection, contributing to the CALLABLE
+ * state.
+ */
+ @Argument(fullName = "minMappingQuality", shortName = "mmq", doc = "Minimum mapping quality of reads to count towards depth.", required = false)
byte minMappingQuality = 10;
- @Argument(fullName = "minBaseQuality", shortName = "mbq", doc = "Minimum quality of bases to count towards depth. Defaults to 20.", required = false)
+ /**
+ * Bases with less than minBaseQuality are viewed as not sufficiently high quality to contribute to the CALLABLE state
+ */
+ @Argument(fullName = "minBaseQuality", shortName = "mbq", doc = "Minimum quality of bases to count towards depth.", required = false)
byte minBaseQuality = 20;
+ /**
+ * If the number of QC+ bases (on reads with MAPQ > minMappingQuality and with base quality > minBaseQuality) exceeds this
+ * value and is less than maxDepth the site is considered CALLABLE.
+ */
@Argument(fullName = "minDepth", shortName = "minDepth", doc = "Minimum QC+ read depth before a locus is considered callable", required = false)
int minDepth = 4;
+ /**
+ * If the QC+ depth exceeds this value the site is considered to have EXCESSIVE_DEPTH
+ */
@Argument(fullName = "maxDepth", shortName = "maxDepth", doc = "Maximum read depth before a locus is considered poorly mapped", required = false)
int maxDepth = -1;
+ /**
+ * We don't want to consider a site as POOR_MAPPING_QUALITY just because it has two reads, and one is MAPQ. We
+ * won't assign a site to the POOR_MAPPING_QUALITY state unless there are at least minDepthForLowMAPQ reads
+ * covering the site.
+ */
@Argument(fullName = "minDepthForLowMAPQ", shortName = "mdflmq", doc = "Minimum read depth before a locus is considered a potential candidate for poorly mapped", required = false)
int minDepthLowMAPQ = 10;
- @Argument(fullName = "maxFractionOfReadsWithLowMAPQ", shortName = "frlmq", doc = "Maximum read depth before a locus is considered poorly mapped", required = false)
+ /**
+ * If the number of reads at this site is greater than minDepthForLowMAPQ and the fraction of reads with low mapping quality
+ * exceeds this fraction then the site has POOR_MAPPING_QUALITY.
+ */
+ @Argument(fullName = "maxFractionOfReadsWithLowMAPQ", shortName = "frlmq", doc = "If the fraction of reads at a base with low mapping quality exceeds this value, the site may be poorly mapped", required = false)
double maxLowMAPQFraction = 0.1;
- @Argument(fullName = "format", shortName = "format", doc = "Output format for the system: either BED or STATE_PER_BASE", required = false)
+ /**
+ * The output of this walker will be written in this format. The recommended option is BED.
+ */
+ @Argument(fullName = "format", shortName = "format", doc = "Output format", required = false)
OutputFormat outputFormat;
- @Argument(fullName = "summary", shortName = "summary", doc = "Name of file for output summary", required = true)
- File summaryFile;
+ public enum OutputFormat {
+ /**
+ * The output will be written as a BED file. There's a BED element for each
+ * continuous run of callable states (i.e., CALLABLE, REF_N, etc). This is the recommended
+ * format
+ */
+ BED,
- public enum OutputFormat { BED, STATE_PER_BASE }
+ /**
+ * Emit chr start stop state quads for each base. Produces a potentially disasterously
+ * large amount of output.
+ */
+ STATE_PER_BASE
+ }
+
+ public enum CalledState {
+ /** the reference base was an N, which is not considered callable the GATK */
+ REF_N,
+ /** the base satisfied the min. depth for calling but had less than maxDepth to avoid having EXCESSIVE_COVERAGE */
+ CALLABLE,
+ /** absolutely no reads were seen at this locus, regardless of the filtering parameters */
+ NO_COVERAGE,
+ /** there were less than min. depth bases at the locus, after applying filters */
+ LOW_COVERAGE,
+ /** more than -maxDepth read at the locus, indicating some sort of mapping problem */
+ EXCESSIVE_COVERAGE,
+ /** more than --maxFractionOfReadsWithLowMAPQ at the locus, indicating a poor mapping quality of the reads */
+ POOR_MAPPING_QUALITY
+ }
////////////////////////////////////////////////////////////////////////////////////
// STANDARD WALKER METHODS
////////////////////////////////////////////////////////////////////////////////////
+ @Override
public boolean includeReadsWithDeletionAtLoci() { return true; }
+ @Override
public void initialize() {
+ if ( getToolkit().getSamples().size() > 1 )
+ throw new UserException.BadArgumentValue("-I", "CallableLoci only works for a single sample, but multiple samples were found in the provided BAM files: " + getToolkit().getSamples());
+
try {
PrintStream summaryOut = new PrintStream(summaryFile);
summaryOut.close();
@@ -94,15 +234,15 @@ public class CallableLociWalker extends LocusWalker {
if ( tracker == null || !BaseUtils.isRegularBase(ref.getBase()) )
return 0;
- String rsID = dbsnp == null ? null : DbSNPHelper.rsIDOfFirstRealVariant(tracker.getValues(dbsnp.dbsnp, context.getLocation()), VariantContext.Type.SNP);
+ String rsID = dbsnp == null ? null : VCFUtils.rsIDOfFirstRealVariant(tracker.getValues(dbsnp.dbsnp, context.getLocation()), VariantContext.Type.SNP);
Collection contexts = getVariantContexts(tracker, ref);
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/beagle/BeagleCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleCodec.java
similarity index 99%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/beagle/BeagleCodec.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleCodec.java
index 5e536d4c1..e328c9286 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/beagle/BeagleCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleCodec.java
@@ -1,4 +1,4 @@
-package org.broadinstitute.sting.gatk.refdata.features.beagle;
+package org.broadinstitute.sting.utils.codecs.beagle;
/*
* Copyright (c) 2010 The Broad Institute
*
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/beagle/BeagleFeature.java b/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleFeature.java
similarity index 97%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/beagle/BeagleFeature.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleFeature.java
index e6832754d..0aa9ecba2 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/beagle/BeagleFeature.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleFeature.java
@@ -22,7 +22,7 @@
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-package org.broadinstitute.sting.gatk.refdata.features.beagle;
+package org.broadinstitute.sting.utils.codecs.beagle;
import org.broad.tribble.Feature;
import org.broadinstitute.sting.utils.variantcontext.Allele;
diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/completegenomics/CGVarCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/completegenomics/CGVarCodec.java
index fef6c4ea0..c30da828e 100755
--- a/public/java/src/org/broadinstitute/sting/utils/codecs/completegenomics/CGVarCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/completegenomics/CGVarCodec.java
@@ -117,7 +117,7 @@ public class CGVarCodec implements FeatureCodec {
return new VariantContext("CGI", array[3], start, end, alleles, VariantContext.NO_NEG_LOG_10PERROR, null, attrs);
}
- public Class getFeatureType() {
+ public Class getFeatureType() {
return VariantContext.class;
}
diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java
index 90878dee7..535f607a1 100644
--- a/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java
@@ -82,7 +82,7 @@ public class RawHapMapCodec implements FeatureCodec {
headerLine);
}
- public Class getFeatureType() {
+ public Class getFeatureType() {
return RawHapMapFeature.class;
}
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/RefSeqCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqCodec.java
similarity index 96%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/RefSeqCodec.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqCodec.java
index cec40b5bd..391715c63 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/RefSeqCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqCodec.java
@@ -1,6 +1,5 @@
-package org.broadinstitute.sting.gatk.refdata.features.refseq;
+package org.broadinstitute.sting.utils.codecs.refseq;
-import org.apache.commons.io.filefilter.FalseFileFilter;
import org.broad.tribble.Feature;
import org.broad.tribble.TribbleException;
import org.broad.tribble.readers.LineReader;
@@ -104,7 +103,7 @@ public class RefSeqCodec implements ReferenceDependentFeatureCodec getFeatureType() {
return RefSeqFeature.class;
}
}
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/RefSeqFeature.java b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqFeature.java
similarity index 99%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/RefSeqFeature.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqFeature.java
index a38d45428..c04ca8592 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/RefSeqFeature.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqFeature.java
@@ -1,4 +1,4 @@
-package org.broadinstitute.sting.gatk.refdata.features.refseq;
+package org.broadinstitute.sting.utils.codecs.refseq;
import org.broad.tribble.Feature;
import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature;
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/Transcript.java b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/Transcript.java
similarity index 95%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/Transcript.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/refseq/Transcript.java
index d8bf12810..3e8a4fb34 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/refseq/Transcript.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/Transcript.java
@@ -1,53 +1,53 @@
-package org.broadinstitute.sting.gatk.refdata.features.refseq;
-
-import org.broadinstitute.sting.utils.GenomeLoc;
-import org.broadinstitute.sting.utils.HasGenomeLocation;
-
-import java.util.List;
-
-/**
- * Created by IntelliJ IDEA.
- * User: asivache
- * Date: Sep 22, 2009
- * Time: 5:22:30 PM
- * To change this template use File | Settings | File Templates.
- */
-public interface Transcript extends HasGenomeLocation {
-
- /** Returns id of the transcript (RefSeq NM_* id) */
- public String getTranscriptId();
- /** Returns coding strand of the transcript, 1 or -1 for positive or negative strand, respectively */
- public int getStrand();
- /** Returns transcript's full genomic interval (includes all exons with UTRs) */
- public GenomeLoc getLocation();
- /** Returns genomic interval of the coding sequence (does not include
- * UTRs, but still includes introns, since it's a single interval on the DNA)
- */
- public GenomeLoc getCodingLocation();
- /** Name of the gene this transcript corresponds to (typically NOT gene id such as Entrez etc,
- * but the implementation can decide otherwise)
- */
- public String getGeneName();
- /** Number of exons in this transcript */
- public int getNumExons();
- /** Genomic location of the n-th exon; expected to throw an exception (runtime) if n is out of bounds */
- public GenomeLoc getExonLocation(int n);
-
- /** Returns the list of all exons in this transcript, as genomic intervals */
- public List getExons();
-
- /** Returns true if the specified interval 'that' overlaps with the full genomic interval of this transcript */
- public boolean overlapsP (GenomeLoc that);
-
- /** Returns true if the specified interval 'that' overlaps with the coding genomic interval of this transcript.
- * NOTE: since "coding interval" is still a single genomic interval, it will not contain UTRs of the outermost exons,
- * but it will still contain introns and/or exons internal to this genomic locus that are not spliced into this transcript.
- * @see #overlapsExonP
- */
- public boolean overlapsCodingP (GenomeLoc that);
-
- /** Returns true if the specified interval 'that' overlaps with any of the exons actually spliced into this transcript */
- public boolean overlapsExonP (GenomeLoc that);
-
-
-}
+package org.broadinstitute.sting.utils.codecs.refseq;
+
+import org.broadinstitute.sting.utils.GenomeLoc;
+import org.broadinstitute.sting.utils.HasGenomeLocation;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: asivache
+ * Date: Sep 22, 2009
+ * Time: 5:22:30 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface Transcript extends HasGenomeLocation {
+
+ /** Returns id of the transcript (RefSeq NM_* id) */
+ public String getTranscriptId();
+ /** Returns coding strand of the transcript, 1 or -1 for positive or negative strand, respectively */
+ public int getStrand();
+ /** Returns transcript's full genomic interval (includes all exons with UTRs) */
+ public GenomeLoc getLocation();
+ /** Returns genomic interval of the coding sequence (does not include
+ * UTRs, but still includes introns, since it's a single interval on the DNA)
+ */
+ public GenomeLoc getCodingLocation();
+ /** Name of the gene this transcript corresponds to (typically NOT gene id such as Entrez etc,
+ * but the implementation can decide otherwise)
+ */
+ public String getGeneName();
+ /** Number of exons in this transcript */
+ public int getNumExons();
+ /** Genomic location of the n-th exon; expected to throw an exception (runtime) if n is out of bounds */
+ public GenomeLoc getExonLocation(int n);
+
+ /** Returns the list of all exons in this transcript, as genomic intervals */
+ public List getExons();
+
+ /** Returns true if the specified interval 'that' overlaps with the full genomic interval of this transcript */
+ public boolean overlapsP (GenomeLoc that);
+
+ /** Returns true if the specified interval 'that' overlaps with the coding genomic interval of this transcript.
+ * NOTE: since "coding interval" is still a single genomic interval, it will not contain UTRs of the outermost exons,
+ * but it will still contain introns and/or exons internal to this genomic locus that are not spliced into this transcript.
+ * @see #overlapsExonP
+ */
+ public boolean overlapsCodingP (GenomeLoc that);
+
+ /** Returns true if the specified interval 'that' overlaps with any of the exons actually spliced into this transcript */
+ public boolean overlapsExonP (GenomeLoc that);
+
+
+}
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/sampileup/SAMPileupCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupCodec.java
similarity index 98%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/sampileup/SAMPileupCodec.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupCodec.java
index 43e2c3ff5..f4048d37d 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/sampileup/SAMPileupCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupCodec.java
@@ -23,7 +23,7 @@
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-package org.broadinstitute.sting.gatk.refdata.features.sampileup;
+package org.broadinstitute.sting.utils.codecs.sampileup;
import org.broad.tribble.Feature;
import org.broad.tribble.FeatureCodec;
@@ -35,7 +35,7 @@ import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import static org.broadinstitute.sting.gatk.refdata.features.sampileup.SAMPileupFeature.VariantType;
+import static org.broadinstitute.sting.utils.codecs.sampileup.SAMPileupFeature.VariantType;
/**
* A Tribble encoder / decoder for SAM pileup data.
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/sampileup/SAMPileupFeature.java b/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupFeature.java
similarity index 99%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/sampileup/SAMPileupFeature.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupFeature.java
index 378f26934..eb33243e3 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/sampileup/SAMPileupFeature.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupFeature.java
@@ -23,7 +23,7 @@
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-package org.broadinstitute.sting.gatk.refdata.features.sampileup;
+package org.broadinstitute.sting.utils.codecs.sampileup;
import net.sf.samtools.util.StringUtil;
import org.broad.tribble.Feature;
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/samread/SAMReadCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadCodec.java
similarity index 98%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/samread/SAMReadCodec.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadCodec.java
index 039b8adde..f6861e585 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/samread/SAMReadCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadCodec.java
@@ -22,7 +22,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
-package org.broadinstitute.sting.gatk.refdata.features.samread;
+package org.broadinstitute.sting.utils.codecs.samread;
import net.sf.samtools.Cigar;
import net.sf.samtools.TextCigarCodec;
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/samread/SAMReadFeature.java b/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadFeature.java
similarity index 98%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/samread/SAMReadFeature.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadFeature.java
index 7f12b2b2f..fc1bf89af 100644
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/samread/SAMReadFeature.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadFeature.java
@@ -22,7 +22,7 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
-package org.broadinstitute.sting.gatk.refdata.features.samread;
+package org.broadinstitute.sting.utils.codecs.samread;
import org.broad.tribble.Feature;
diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/snpEff/SnpEffCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/snpEff/SnpEffCodec.java
index eada8521f..b5efb49a7 100644
--- a/public/java/src/org/broadinstitute/sting/utils/codecs/snpEff/SnpEffCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/snpEff/SnpEffCodec.java
@@ -222,7 +222,7 @@ public class SnpEffCodec implements FeatureCodec, SelfScopingFeatureCodec {
return null;
}
- public Class getFeatureType() {
+ public Class getFeatureType() {
return SnpEffFeature.class;
}
diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/soapsnp/SoapSNPCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/soapsnp/SoapSNPCodec.java
index e169dbdfc..284c43e90 100755
--- a/public/java/src/org/broadinstitute/sting/utils/codecs/soapsnp/SoapSNPCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/soapsnp/SoapSNPCodec.java
@@ -178,7 +178,7 @@ public class SoapSNPCodec implements FeatureCodec, NameAwareCodec {
/**
* @return VariantContext
*/
- public Class getFeatureType() {
+ public Class getFeatureType() {
return VariantContext.class;
}
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/BedTableCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/table/BedTableCodec.java
similarity index 94%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/BedTableCodec.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/table/BedTableCodec.java
index 745ccdd9f..6fe1907e3 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/BedTableCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/table/BedTableCodec.java
@@ -1,4 +1,4 @@
-package org.broadinstitute.sting.gatk.refdata.features.table;
+package org.broadinstitute.sting.utils.codecs.table;
import org.broad.tribble.Feature;
import org.broadinstitute.sting.gatk.refdata.ReferenceDependentFeatureCodec;
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/TableCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableCodec.java
similarity index 96%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/TableCodec.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/table/TableCodec.java
index ab1ac59d8..2ce7c679e 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/TableCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableCodec.java
@@ -1,4 +1,4 @@
-package org.broadinstitute.sting.gatk.refdata.features.table;
+package org.broadinstitute.sting.utils.codecs.table;
import org.broad.tribble.Feature;
import org.broad.tribble.readers.LineReader;
@@ -51,7 +51,7 @@ public class TableCodec implements ReferenceDependentFeatureCodec {
}
@Override
- public Class getFeatureType() {
+ public Class getFeatureType() {
return TableFeature.class;
}
diff --git a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/TableFeature.java b/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableFeature.java
similarity index 96%
rename from public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/TableFeature.java
rename to public/java/src/org/broadinstitute/sting/utils/codecs/table/TableFeature.java
index ca73ee960..a85849f0b 100755
--- a/public/java/src/org/broadinstitute/sting/gatk/refdata/features/table/TableFeature.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableFeature.java
@@ -1,4 +1,4 @@
-package org.broadinstitute.sting.gatk.refdata.features.table;
+package org.broadinstitute.sting.utils.codecs.table;
import org.broad.tribble.Feature;
import org.broadinstitute.sting.utils.GenomeLoc;
diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java
index cb505c717..19f58ddaa 100755
--- a/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/AbstractVCFCodec.java
@@ -263,7 +263,7 @@ public abstract class AbstractVCFCodec implements FeatureCodec, NameAwareCodec,
*
* @return the type of record
*/
- public Class getFeatureType() {
+ public Class getFeatureType() {
return VariantContext.class;
}
diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/VCFUtils.java b/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/VCFUtils.java
index f43891e77..c0a04c81f 100755
--- a/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/VCFUtils.java
+++ b/public/java/src/org/broadinstitute/sting/utils/codecs/vcf/VCFUtils.java
@@ -180,4 +180,19 @@ public class VCFUtils {
return new HashSet(map.values());
}
+
+ public static String rsIDOfFirstRealVariant(List VCs, VariantContext.Type type) {
+ if ( VCs == null )
+ return null;
+
+ String rsID = null;
+ for ( VariantContext vc : VCs ) {
+ if ( vc.getType() == type ) {
+ rsID = vc.getID();
+ break;
+ }
+ }
+
+ return rsID;
+ }
}
\ No newline at end of file
diff --git a/public/java/src/org/broadinstitute/sting/utils/help/DocumentedGATKFeatureHandler.java b/public/java/src/org/broadinstitute/sting/utils/help/DocumentedGATKFeatureHandler.java
index ce03c8093..214a1716a 100644
--- a/public/java/src/org/broadinstitute/sting/utils/help/DocumentedGATKFeatureHandler.java
+++ b/public/java/src/org/broadinstitute/sting/utils/help/DocumentedGATKFeatureHandler.java
@@ -71,7 +71,7 @@ public abstract class DocumentedGATKFeatureHandler {
* @return
*/
public String getDestinationFilename(ClassDoc doc, Class clazz) {
- return GATKDocUtils.htmlFilenameForClass(clazz);
+ return HelpUtils.htmlFilenameForClass(clazz);
}
/**
diff --git a/public/java/src/org/broadinstitute/sting/utils/help/GATKDocUtils.java b/public/java/src/org/broadinstitute/sting/utils/help/GATKDocUtils.java
deleted file mode 100644
index 8efeecd7b..000000000
--- a/public/java/src/org/broadinstitute/sting/utils/help/GATKDocUtils.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2011, The Broad Institute
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use,
- * copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following
- * conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-package org.broadinstitute.sting.utils.help;
-
-/**
- * @author depristo
- * @since 8/8/11
- */
-public class GATKDocUtils {
- private final static String URL_ROOT_FOR_RELEASE_GATKDOCS = "http://www.broadinstitute.org/gsa/gatkdocs/release/";
- private final static String URL_ROOT_FOR_STABLE_GATKDOCS = "http://iwww.broadinstitute.org/gsa/gatkdocs/stable/";
- private final static String URL_ROOT_FOR_UNSTABLE_GATKDOCS = "http://iwww.broadinstitute.org/gsa/gatkdocs/unstable/";
-
- public static String htmlFilenameForClass(Class c) {
- return c.getName().replace(".", "_") + ".html";
- }
-
- public static String helpLinksToGATKDocs(Class c) {
- String classPath = htmlFilenameForClass(c);
- StringBuilder b = new StringBuilder();
- b.append("release version: ").append(URL_ROOT_FOR_RELEASE_GATKDOCS).append(classPath).append("\n");
- b.append("stable version: ").append(URL_ROOT_FOR_STABLE_GATKDOCS).append(classPath).append("\n");
- b.append("unstable version: ").append(URL_ROOT_FOR_UNSTABLE_GATKDOCS).append(classPath).append("\n");
- return b.toString();
- }
-}
diff --git a/public/java/src/org/broadinstitute/sting/utils/help/HelpUtils.java b/public/java/src/org/broadinstitute/sting/utils/help/HelpUtils.java
index 4527c6afe..da4e7bdaf 100644
--- a/public/java/src/org/broadinstitute/sting/utils/help/HelpUtils.java
+++ b/public/java/src/org/broadinstitute/sting/utils/help/HelpUtils.java
@@ -32,6 +32,10 @@ import org.broadinstitute.sting.utils.classloader.JVMUtils;
import java.lang.reflect.Field;
public class HelpUtils {
+ public final static String URL_ROOT_FOR_RELEASE_GATKDOCS = "http://www.broadinstitute.org/gsa/gatkdocs/release/";
+ public final static String URL_ROOT_FOR_STABLE_GATKDOCS = "http://iwww.broadinstitute.org/gsa/gatkdocs/stable/";
+ public final static String URL_ROOT_FOR_UNSTABLE_GATKDOCS = "http://iwww.broadinstitute.org/gsa/gatkdocs/unstable/";
+
protected static boolean implementsInterface(ProgramElementDoc classDoc, Class... interfaceClasses) {
for (Class interfaceClass : interfaceClasses)
if (assignableToClass(classDoc, interfaceClass, false))
@@ -74,4 +78,17 @@ public class HelpUtils {
String.format("%s.%s", containingPackage.name(), doc.name()) :
String.format("%s", doc.name());
}
+
+ public static String htmlFilenameForClass(Class c) {
+ return c.getName().replace(".", "_") + ".html";
+ }
+
+ public static String helpLinksToGATKDocs(Class c) {
+ String classPath = htmlFilenameForClass(c);
+ StringBuilder b = new StringBuilder();
+ b.append("release version: ").append(URL_ROOT_FOR_RELEASE_GATKDOCS).append(classPath).append("\n");
+ b.append("stable version: ").append(URL_ROOT_FOR_STABLE_GATKDOCS).append(classPath).append("\n");
+ b.append("unstable version: ").append(URL_ROOT_FOR_UNSTABLE_GATKDOCS).append(classPath).append("\n");
+ return b.toString();
+ }
}
\ No newline at end of file
diff --git a/public/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java b/public/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java
index 79e9172dd..013a37a88 100755
--- a/public/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java
+++ b/public/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java
@@ -26,7 +26,6 @@
package org.broadinstitute.sting.commandline;
import org.broad.tribble.Feature;
-import org.broadinstitute.sting.gatk.refdata.features.beagle.BeagleFeature;
import org.broadinstitute.sting.utils.exceptions.UserException;
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
import org.testng.Assert;
@@ -35,7 +34,6 @@ import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
-import javax.script.Bindings;
import java.util.List;
import java.util.EnumSet;
/**
diff --git a/public/java/test/org/broadinstitute/sting/gatk/datasources/providers/ReferenceOrderedViewUnitTest.java b/public/java/test/org/broadinstitute/sting/gatk/datasources/providers/ReferenceOrderedViewUnitTest.java
index f782580e2..85ae1e1f7 100755
--- a/public/java/test/org/broadinstitute/sting/gatk/datasources/providers/ReferenceOrderedViewUnitTest.java
+++ b/public/java/test/org/broadinstitute/sting/gatk/datasources/providers/ReferenceOrderedViewUnitTest.java
@@ -10,7 +10,7 @@ import org.testng.Assert;
import org.broadinstitute.sting.BaseTest;
import org.broadinstitute.sting.gatk.datasources.reads.Shard;
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
-import org.broadinstitute.sting.gatk.refdata.features.table.TableFeature;
+import org.broadinstitute.sting.utils.codecs.table.TableFeature;
import org.broadinstitute.sting.gatk.refdata.utils.RMDTriplet.RMDStorageType;
import org.broadinstitute.sting.utils.GenomeLocParser;
import org.broadinstitute.sting.utils.fasta.CachingIndexedFastaSequenceFile;
diff --git a/public/java/test/org/broadinstitute/sting/gatk/datasources/rmd/ReferenceOrderedDataPoolUnitTest.java b/public/java/test/org/broadinstitute/sting/gatk/datasources/rmd/ReferenceOrderedDataPoolUnitTest.java
index bd4f93d24..d45f6e667 100755
--- a/public/java/test/org/broadinstitute/sting/gatk/datasources/rmd/ReferenceOrderedDataPoolUnitTest.java
+++ b/public/java/test/org/broadinstitute/sting/gatk/datasources/rmd/ReferenceOrderedDataPoolUnitTest.java
@@ -4,7 +4,7 @@ import org.broadinstitute.sting.commandline.Tags;
import org.broadinstitute.sting.gatk.refdata.tracks.RMDTrackBuilder;
import org.testng.Assert;
import org.broadinstitute.sting.BaseTest;
-import org.broadinstitute.sting.gatk.refdata.features.table.TableFeature;
+import org.broadinstitute.sting.utils.codecs.table.TableFeature;
import org.broadinstitute.sting.gatk.refdata.utils.LocationAwareSeekableRODIterator;
import org.broadinstitute.sting.gatk.refdata.utils.RMDTriplet;
import org.broadinstitute.sting.gatk.refdata.utils.RMDTriplet.RMDStorageType;
diff --git a/public/java/test/org/broadinstitute/sting/gatk/refdata/RefMetaDataTrackerUnitTest.java b/public/java/test/org/broadinstitute/sting/gatk/refdata/RefMetaDataTrackerUnitTest.java
index fbd30bc8a..1e39fd26f 100644
--- a/public/java/test/org/broadinstitute/sting/gatk/refdata/RefMetaDataTrackerUnitTest.java
+++ b/public/java/test/org/broadinstitute/sting/gatk/refdata/RefMetaDataTrackerUnitTest.java
@@ -31,7 +31,7 @@ import org.broadinstitute.sting.BaseTest;
import org.broadinstitute.sting.commandline.RodBinding;
import org.broadinstitute.sting.commandline.Tags;
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
-import org.broadinstitute.sting.gatk.refdata.features.table.TableFeature;
+import org.broadinstitute.sting.utils.codecs.table.TableFeature;
import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature;
import org.broadinstitute.sting.gatk.refdata.utils.RODRecordList;
import org.broadinstitute.sting.utils.GenomeLoc;
diff --git a/public/java/test/org/broadinstitute/sting/gatk/refdata/tracks/FeatureManagerUnitTest.java b/public/java/test/org/broadinstitute/sting/gatk/refdata/tracks/FeatureManagerUnitTest.java
index 5d662ffed..90262b9c1 100644
--- a/public/java/test/org/broadinstitute/sting/gatk/refdata/tracks/FeatureManagerUnitTest.java
+++ b/public/java/test/org/broadinstitute/sting/gatk/refdata/tracks/FeatureManagerUnitTest.java
@@ -29,8 +29,8 @@ import net.sf.picard.reference.IndexedFastaSequenceFile;
import org.broad.tribble.Feature;
import org.broad.tribble.FeatureCodec;
import org.broadinstitute.sting.BaseTest;
-import org.broadinstitute.sting.gatk.refdata.features.table.BedTableCodec;
-import org.broadinstitute.sting.gatk.refdata.features.table.TableFeature;
+import org.broadinstitute.sting.utils.codecs.table.BedTableCodec;
+import org.broadinstitute.sting.utils.codecs.table.TableFeature;
import org.broadinstitute.sting.utils.GenomeLocParser;
import org.broadinstitute.sting.utils.codecs.vcf.VCF3Codec;
import org.broadinstitute.sting.utils.codecs.vcf.VCFCodec;