Merged bug fix from Stable into Unstable

This commit is contained in:
Eric Banks 2012-11-27 10:27:08 -05:00
commit a82ec7ad80
14 changed files with 30 additions and 22 deletions

View File

@ -33,6 +33,7 @@ import org.broadinstitute.sting.gatk.CommandLineGATK;
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
import org.broadinstitute.sting.utils.help.ApplicationDetails; import org.broadinstitute.sting.utils.help.ApplicationDetails;
import org.broadinstitute.sting.utils.help.HelpFormatter; import org.broadinstitute.sting.utils.help.HelpFormatter;
import org.broadinstitute.sting.utils.help.HelpUtils;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
@ -288,7 +289,7 @@ public abstract class CommandLineProgram {
*/ */
private static void printDocumentationReference() { private static void printDocumentationReference() {
errorPrintf("Visit our website and forum for extensive documentation and answers to %n"); errorPrintf("Visit our website and forum for extensive documentation and answers to %n");
errorPrintf("commonly asked questions http://www.broadinstitute.org/gatk%n"); errorPrintf("commonly asked questions " + HelpUtils.BASE_GATK_URL + "%n");
} }

View File

@ -39,6 +39,7 @@ import org.broadinstitute.sting.utils.exceptions.UserException;
import org.broadinstitute.sting.utils.help.ApplicationDetails; import org.broadinstitute.sting.utils.help.ApplicationDetails;
import org.broadinstitute.sting.utils.help.DocumentedGATKFeature; import org.broadinstitute.sting.utils.help.DocumentedGATKFeature;
import org.broadinstitute.sting.utils.help.GATKDocUtils; import org.broadinstitute.sting.utils.help.GATKDocUtils;
import org.broadinstitute.sting.utils.help.HelpUtils;
import org.broadinstitute.sting.utils.text.TextFormattingUtils; import org.broadinstitute.sting.utils.text.TextFormattingUtils;
import java.util.*; import java.util.*;
@ -160,7 +161,7 @@ public class CommandLineGATK extends CommandLineExecutable {
List<String> header = new ArrayList<String>(); List<String> header = new ArrayList<String>();
header.add(String.format("The Genome Analysis Toolkit (GATK) v%s, Compiled %s",getVersionNumber(), getBuildTime())); header.add(String.format("The Genome Analysis Toolkit (GATK) v%s, Compiled %s",getVersionNumber(), getBuildTime()));
header.add("Copyright (c) 2010 The Broad Institute"); header.add("Copyright (c) 2010 The Broad Institute");
header.add("For support and documentation go to http://www.broadinstitute.org/gatk"); header.add("For support and documentation go to " + HelpUtils.BASE_GATK_URL);
return header; return header;
} }

View File

@ -25,11 +25,9 @@
package org.broadinstitute.sting.gatk.filters; package org.broadinstitute.sting.gatk.filters;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import org.broadinstitute.sting.utils.Utils;
import org.broadinstitute.sting.utils.classloader.PluginManager; import org.broadinstitute.sting.utils.classloader.PluginManager;
import org.broadinstitute.sting.utils.help.GATKDocUtils; import org.broadinstitute.sting.utils.help.GATKDocUtils;
import org.broadinstitute.sting.utils.help.HelpUtils;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -73,7 +71,7 @@ public class FilterManager extends PluginManager<ReadFilter> {
return String.format("Read filter %s not found. Available read filters:%n%n%s%n%n%s",pluginName, return String.format("Read filter %s not found. Available read filters:%n%n%s%n%n%s",pluginName,
userFriendlyListofReadFilters(availableFilters), userFriendlyListofReadFilters(availableFilters),
"Please consult the GATK Documentation (http://www.broadinstitute.org/gatk/gatkdocs/) for more information."); "Please consult the GATK Documentation (" + HelpUtils.GATK_DOCS_URL + ") for more information.");
} }
private String userFriendlyListofReadFilters(List<Class<? extends ReadFilter>> filters) { private String userFriendlyListofReadFilters(List<Class<? extends ReadFilter>> filters) {

View File

@ -282,7 +282,8 @@ public class DiffEngine {
// now that we have a specific list of values we want to show, display them // now that we have a specific list of values we want to show, display them
GATKReport report = new GATKReport(); GATKReport report = new GATKReport();
final String tableName = "differences"; final String tableName = "differences";
report.addTable(tableName, "Summarized differences between the master and test files. See http://www.broadinstitute.org/gsa/wiki/index.php/DiffEngine for more information", 3); // TODO for Geraldine -- link needs to be updated below
report.addTable(tableName, "Summarized differences between the master and test files. See [ask Geraldine to fix link to DiffEngine wiki] for more information", 3);
final GATKReportTable table = report.getTable(tableName); final GATKReportTable table = report.getTable(tableName);
table.addColumn("Difference"); table.addColumn("Difference");
table.addColumn("NumberOfOccurrences"); table.addColumn("NumberOfOccurrences");

View File

@ -138,6 +138,7 @@ public class DiffObjects extends RodWalker<Integer, Integer> {
/** /**
* Writes out a file of the DiffEngine format: * Writes out a file of the DiffEngine format:
* *
* TODO for Geraldine -- link needs to be updated below (and also in SelectVariants and RefSeqCodec GATK docs)
* http://www.broadinstitute.org/gsa/wiki/index.php/DiffEngine * http://www.broadinstitute.org/gsa/wiki/index.php/DiffEngine
*/ */
@Output(doc="File to which results should be written",required=true) @Output(doc="File to which results should be written",required=true)

View File

@ -13,7 +13,7 @@ import java.util.Set;
/** /**
* Stratifies the eval RODs by user-supplied JEXL expressions * Stratifies the eval RODs by user-supplied JEXL expressions
* *
* See http://www.broadinstitute.org/gsa/wiki/index.php/Using_JEXL_expressions for more details * See http://gatkforums.broadinstitute.org/discussion/1255/what-are-jexl-expressions-and-how-can-i-use-them-with-the-gatk for more details
*/ */
public class JexlExpression extends VariantStratifier implements StandardStratification { public class JexlExpression extends VariantStratifier implements StandardStratification {
// needs to know the jexl expressions // needs to know the jexl expressions

View File

@ -32,6 +32,7 @@ import org.broadinstitute.sting.utils.GenomeLoc;
import org.broadinstitute.sting.utils.MathUtils; import org.broadinstitute.sting.utils.MathUtils;
import org.broadinstitute.sting.utils.codecs.vcf.VCFConstants; import org.broadinstitute.sting.utils.codecs.vcf.VCFConstants;
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
import org.broadinstitute.sting.utils.help.HelpUtils;
import org.broadinstitute.sting.utils.variantcontext.writer.VariantContextWriter; import org.broadinstitute.sting.utils.variantcontext.writer.VariantContextWriter;
import org.broadinstitute.sting.utils.collections.ExpandingArrayList; import org.broadinstitute.sting.utils.collections.ExpandingArrayList;
import org.broadinstitute.sting.utils.exceptions.UserException; import org.broadinstitute.sting.utils.exceptions.UserException;
@ -80,7 +81,7 @@ public class VariantDataManager {
final double theSTD = standardDeviation(theMean, iii); final double theSTD = standardDeviation(theMean, iii);
logger.info( annotationKeys.get(iii) + String.format(": \t mean = %.2f\t standard deviation = %.2f", theMean, theSTD) ); logger.info( annotationKeys.get(iii) + String.format(": \t mean = %.2f\t standard deviation = %.2f", theMean, theSTD) );
if( Double.isNaN(theMean) ) { if( Double.isNaN(theMean) ) {
throw new UserException.BadInput("Values for " + annotationKeys.get(iii) + " annotation not detected for ANY training variant in the input callset. VariantAnnotator may be used to add these annotations. See http://www.broadinstitute.org/gsa/wiki/index.php/VariantAnnotator"); throw new UserException.BadInput("Values for " + annotationKeys.get(iii) + " annotation not detected for ANY training variant in the input callset. VariantAnnotator may be used to add these annotations. See " + HelpUtils.GATK_FORUM_URL + "discussion/49/using-variant-annotator");
} }
foundZeroVarianceAnnotation = foundZeroVarianceAnnotation || (theSTD < 1E-6); foundZeroVarianceAnnotation = foundZeroVarianceAnnotation || (theSTD < 1E-6);

View File

@ -51,8 +51,7 @@ import java.util.*;
* The Variant Validation Assessor is a tool for vetting/assessing validation data (containing genotypes). * The Variant Validation Assessor is a tool for vetting/assessing validation data (containing genotypes).
* The tool produces a VCF that is annotated with information pertaining to plate quality control and by * The tool produces a VCF that is annotated with information pertaining to plate quality control and by
* default is soft-filtered by high no-call rate or low Hardy-Weinberg probability. * default is soft-filtered by high no-call rate or low Hardy-Weinberg probability.
* If you have .ped files, please first convert them to VCF format * If you have .ped files, please first convert them to VCF format.
* (see http://www.broadinstitute.org/gsa/wiki/index.php/Converting_ped_to_vcf).
* *
* <h2>Input</h2> * <h2>Input</h2>
* <p> * <p>

View File

@ -30,6 +30,7 @@ import net.sf.samtools.SAMSequenceDictionary;
import org.broadinstitute.sting.gatk.phonehome.GATKRunReport; import org.broadinstitute.sting.gatk.phonehome.GATKRunReport;
import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.GenomeLoc;
import org.broadinstitute.sting.utils.help.DocumentedGATKFeature; import org.broadinstitute.sting.utils.help.DocumentedGATKFeature;
import org.broadinstitute.sting.utils.help.HelpUtils;
import org.broadinstitute.sting.utils.sam.ReadUtils; import org.broadinstitute.sting.utils.sam.ReadUtils;
import org.broadinstitute.sting.utils.variantcontext.VariantContext; import org.broadinstitute.sting.utils.variantcontext.VariantContext;
@ -267,7 +268,7 @@ public class UserException extends ReviewedStingException {
public static class ReadMissingReadGroup extends MalformedBAM { public static class ReadMissingReadGroup extends MalformedBAM {
public ReadMissingReadGroup(SAMRecord read) { public ReadMissingReadGroup(SAMRecord read) {
super(read, String.format("Read %s is either missing the read group or its read group is not defined in the BAM header, both of which are required by the GATK. Please use http://www.broadinstitute.org/gsa/wiki/index.php/ReplaceReadGroups to fix this problem", read.getReadName())); super(read, String.format("Read %s is either missing the read group or its read group is not defined in the BAM header, both of which are required by the GATK. Please use " + HelpUtils.GATK_FORUM_URL + "discussion/59/companion-utilities-replacereadgroups to fix this problem", read.getReadName()));
} }
} }
@ -343,7 +344,7 @@ public class UserException extends ReviewedStingException {
super(String.format("Lexicographically sorted human genome sequence detected in %s." super(String.format("Lexicographically sorted human genome sequence detected in %s."
+ "\nFor safety's sake the GATK requires human contigs in karyotypic order: 1, 2, ..., 10, 11, ..., 20, 21, 22, X, Y with M either leading or trailing these contigs." + "\nFor safety's sake the GATK requires human contigs in karyotypic order: 1, 2, ..., 10, 11, ..., 20, 21, 22, X, Y with M either leading or trailing these contigs."
+ "\nThis is because all distributed GATK resources are sorted in karyotypic order, and your processing will fail when you need to use these files." + "\nThis is because all distributed GATK resources are sorted in karyotypic order, and your processing will fail when you need to use these files."
+ "\nYou can use the ReorderSam utility to fix this problem: http://www.broadinstitute.org/gsa/wiki/index.php/ReorderSam" + "\nYou can use the ReorderSam utility to fix this problem: " + HelpUtils.GATK_FORUM_URL + "discussion/58/companion-utilities-reordersam"
+ "\n %s contigs = %s", + "\n %s contigs = %s",
name, name, ReadUtils.prettyPrintSequenceRecords(dict))); name, name, ReadUtils.prettyPrintSequenceRecords(dict)));
} }

View File

@ -44,14 +44,13 @@ public class ForumAPIUtils {
/** /**
* How we post to the forum * How we post to the forum
*/ */
private final static String API_URL = "https://gatkforums.broadinstitute.org/api/v1/";
final private static String ACCESS_TOKEN = "access_token="; final private static String ACCESS_TOKEN = "access_token=";
public static List<String> getPostedTools(String forumKey) { public static List<String> getPostedTools(String forumKey) {
Gson gson = new Gson(); Gson gson = new Gson();
List<String> output = new ArrayList<String>(); List<String> output = new ArrayList<String>();
String text = httpGet(API_URL + "categories.json?CategoryIdentifier=tool-bulletin&page=1-100000&" + ACCESS_TOKEN + forumKey); String text = httpGet(HelpUtils.GATK_FORUM_API_URL + "categories.json?CategoryIdentifier=tool-bulletin&page=1-100000&" + ACCESS_TOKEN + forumKey);
APIQuery details = gson.fromJson(text, APIQuery.class); APIQuery details = gson.fromJson(text, APIQuery.class);
ForumDiscussion[] discussions = details.Discussions; ForumDiscussion[] discussions = details.Discussions;
@ -159,7 +158,7 @@ public class ForumAPIUtils {
Gson gson = new Gson(); Gson gson = new Gson();
String data = gson.toJson(post.getPostData()); String data = gson.toJson(post.getPostData());
httpPost(data, API_URL + "post/discussion.json?" + ACCESS_TOKEN + forumKey); httpPost(data, HelpUtils.GATK_FORUM_API_URL + "post/discussion.json?" + ACCESS_TOKEN + forumKey);
} }
@ -167,8 +166,7 @@ public class ForumAPIUtils {
class APIQuery { class APIQuery {
ForumDiscussion[] Discussions; ForumDiscussion[] Discussions;
public APIQuery() { public APIQuery() {}
}
} }
} }

View File

@ -28,7 +28,7 @@ public class GATKDocUtils {
/** /**
* The URL root for RELEASED GATKDOC units * The URL root for RELEASED GATKDOC units
*/ */
public final static String URL_ROOT_FOR_RELEASE_GATKDOCS = "http://www.broadinstitute.org/gatk/gatkdocs/"; public final static String URL_ROOT_FOR_RELEASE_GATKDOCS = HelpUtils.GATK_DOCS_URL;
/** /**
* The URL root for STABLE GATKDOC units * The URL root for STABLE GATKDOC units
*/ */

View File

@ -32,6 +32,15 @@ import org.broadinstitute.sting.utils.classloader.JVMUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
public class HelpUtils { public class HelpUtils {
public final static String BASE_GATK_URL = "http://www.broadinstitute.org/gatk";
public final static String GATK_DOCS_URL = BASE_GATK_URL + "/gatkdocs/";
public final static String GATK_FORUM_URL = "http://gatkforums.broadinstitute.org/";
public final static String GATK_FORUM_API_URL = "https://gatkforums.broadinstitute.org/api/v1/";
protected static boolean assignableToClass(ProgramElementDoc classDoc, Class lhsClass, boolean requireConcrete) { protected static boolean assignableToClass(ProgramElementDoc classDoc, Class lhsClass, boolean requireConcrete) {
try { try {
Class type = getClassForDoc(classDoc); Class type = getClassForDoc(classDoc);

View File

@ -71,7 +71,6 @@ abstract class SortingVariantContextWriterBase implements VariantContextWriter {
this.takeOwnershipOfInner = takeOwnershipOfInner; this.takeOwnershipOfInner = takeOwnershipOfInner;
// has to be PriorityBlockingQueue to be thread-safe // has to be PriorityBlockingQueue to be thread-safe
// see http://getsatisfaction.com/gsa/topics/missing_loci_output_in_multi_thread_mode_when_implement_sortingvcfwriterbase?utm_content=topic_link&utm_medium=email&utm_source=new_topic
this.queue = new PriorityBlockingQueue<VCFRecord>(50, new VariantContextComparator()); this.queue = new PriorityBlockingQueue<VCFRecord>(50, new VariantContextComparator());
this.mostUpstreamWritableLoc = BEFORE_MOST_UPSTREAM_LOC; this.mostUpstreamWritableLoc = BEFORE_MOST_UPSTREAM_LOC;

View File

@ -28,7 +28,6 @@ public class VCFIntegrationTest extends WalkerTest {
} }
@Test(enabled = true) @Test(enabled = true)
// See https://getsatisfaction.com/gsa/topics/support_vcf_4_1_structural_variation_breakend_alleles?utm_content=topic_link&utm_medium=email&utm_source=new_topic
public void testReadingAndWritingBreakpointAlleles() { public void testReadingAndWritingBreakpointAlleles() {
String testVCF = privateTestDir + "breakpoint-example.vcf"; String testVCF = privateTestDir + "breakpoint-example.vcf";