Vastly better Tribble help message
Here's a new example: ##### ERROR ------------------------------------------------------------------------------------------ ##### ERROR A USER ERROR has occurred (version 1.1-520-g76495cd): ##### ERROR The invalid arguments or inputs must be corrected before the GATK can proceed ##### ERROR Please do not post this error to the GATK forum ##### ERROR ##### ERROR See the documentation (rerun with -h) for this tool to view allowable command-line arguments. ##### ERROR Visit our wiki for extensive documentation http://www.broadinstitute.org/gsa/wiki ##### ERROR Visit our forum to view answers to commonly asked questions http://getsatisfaction.com/gsa ##### ERROR ##### ERROR MESSAGE: Invalid command line: Failed to parse value /humgen/gsa-hpprojects/GATK/data/refGene_b37.filtered.sorted.txt for argument refSeqRodBinding. Message: Invalid command line: No tribble type was provided on the command line and the type of the file could not be determined dynamically. Please add an explicit type tag :TYPE listing the correct type from among the supported types: ##### ERROR Name FeatureType Documentation ##### ERROR BEAGLE BeagleFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_beagle_BeagleCodec.html ##### ERROR BED BEDFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broad_tribble_bed_BEDCodec.html ##### ERROR BEDTABLE TableFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_table_BedTableCodec.html ##### ERROR CGVAR VariantContext http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_completegenomics_CGVarCodec.html ##### ERROR DBSNP DbSNPFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broad_tribble_dbsnp_DbSNPCodec.html ##### ERROR GELITEXT GeliTextFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broad_tribble_gelitext_GeliTextCodec.html ##### ERROR MAF MafFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_gatk_features_maf_MafCodec.html ##### ERROR MILLSDEVINE VariantContext http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_MillsDevineCodec.html ##### ERROR RAWHAPMAP RawHapMapFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_hapmap_RawHapMapCodec.html ##### ERROR REFSEQ RefSeqFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_refseq_RefSeqCodec.html ##### ERROR SAMPILEUP SAMPileupFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_sampileup_SAMPileupCodec.html ##### ERROR SAMREAD SAMReadFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_samread_SAMReadCodec.html ##### ERROR SNPEFF SnpEffFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_snpEff_SnpEffCodec.html ##### ERROR SOAPSNP VariantContext http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_soapsnp_SoapSNPCodec.html ##### ERROR TABLE TableFeature http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_table_TableCodec.html ##### ERROR VCF VariantContext http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_vcf_VCFCodec.html ##### ERROR VCF3 VariantContext http://www.broadinstitute.org/gsa/gatkdocs/release/org_broadinstitute_sting_utils_codecs_vcf_VCF3Codec.html ##### ERROR ------------------------------------------------------------------------------------------
This commit is contained in:
parent
c2287c93d7
commit
2d41ba15a4
|
|
@ -376,7 +376,7 @@ class RodBindingArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
|||
} else {
|
||||
throw new UserException.CommandLineException(
|
||||
String.format("No tribble type was provided on the command line and the type of the file could not be determined dynamically. " +
|
||||
"Please add an explicit type tag :TYPE listing the correct type from among the supported types: %s",
|
||||
"Please add an explicit type tag :TYPE listing the correct type from among the supported types:%n%s",
|
||||
manager.userFriendlyListOfAvailableFeatures()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import org.broadinstitute.sting.commandline.ArgumentCollection;
|
|||
import org.broadinstitute.sting.commandline.CommandLineProgram;
|
||||
import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection;
|
||||
import org.broadinstitute.sting.gatk.filters.ReadFilter;
|
||||
import org.broadinstitute.sting.gatk.refdata.tracks.FeatureManager;
|
||||
import org.broadinstitute.sting.gatk.walkers.Attribution;
|
||||
import org.broadinstitute.sting.gatk.walkers.Walker;
|
||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||
|
|
@ -174,6 +175,10 @@ public class CommandLineGATK extends CommandLineExecutable {
|
|||
StringBuilder additionalHelp = new StringBuilder();
|
||||
Formatter formatter = new Formatter(additionalHelp);
|
||||
|
||||
formatter.format("Available Reference Ordered Data types:%n");
|
||||
formatter.format(new FeatureManager().userFriendlyListOfAvailableFeatures());
|
||||
formatter.format("%n");
|
||||
|
||||
formatter.format("For a full description of this walker, see its GATKdocs at:%n");
|
||||
formatter.format("%s%n", HelpUtils.helpLinksToGATKDocs(walkerType));
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,9 @@ import org.broadinstitute.sting.utils.GenomeLocParser;
|
|||
import org.broadinstitute.sting.utils.Utils;
|
||||
import org.broadinstitute.sting.utils.classloader.PluginManager;
|
||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||
import org.broadinstitute.sting.utils.help.HelpUtils;
|
||||
|
||||
import javax.mail.Header;
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
|
|
@ -50,7 +52,7 @@ import java.util.*;
|
|||
* @author depristo
|
||||
*/
|
||||
public class FeatureManager {
|
||||
public static class FeatureDescriptor {
|
||||
public static class FeatureDescriptor implements Comparable<FeatureDescriptor> {
|
||||
final String name;
|
||||
final FeatureCodec codec;
|
||||
|
||||
|
|
@ -62,6 +64,7 @@ public class FeatureManager {
|
|||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public String getSimpleFeatureName() { return getFeatureClass().getSimpleName(); }
|
||||
public FeatureCodec getCodec() {
|
||||
return codec;
|
||||
}
|
||||
|
|
@ -70,13 +73,18 @@ public class FeatureManager {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("FeatureDescriptor name=%s codec=%s feature=%s", getName(), getCodecClass().getName(), getFeatureClass().getName());
|
||||
return String.format("FeatureDescriptor name=%s codec=%s feature=%s",
|
||||
getName(), getCodecClass().getName(), getFeatureClass().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(FeatureDescriptor o) {
|
||||
return getName().compareTo(o.getName());
|
||||
}
|
||||
}
|
||||
|
||||
private final PluginManager<FeatureCodec> pluginManager;
|
||||
private final Collection<FeatureDescriptor> featureDescriptors = new HashSet<FeatureDescriptor>();
|
||||
|
||||
private final Collection<FeatureDescriptor> featureDescriptors = new TreeSet<FeatureDescriptor>();
|
||||
|
||||
/**
|
||||
* Construct a FeatureManager
|
||||
|
|
@ -189,10 +197,26 @@ public class FeatureManager {
|
|||
*/
|
||||
@Ensures("result != null")
|
||||
public String userFriendlyListOfAvailableFeatures() {
|
||||
List<String> names = new ArrayList<String>();
|
||||
for ( final FeatureDescriptor descriptor : featureDescriptors )
|
||||
names.add(descriptor.getName());
|
||||
return Utils.join(",", names);
|
||||
final String nameHeader="Name", featureHeader = "FeatureType", docHeader="Documentation";
|
||||
|
||||
int maxNameLen = nameHeader.length(), maxFeatureNameLen = featureHeader.length();
|
||||
for ( final FeatureDescriptor descriptor : featureDescriptors ) {
|
||||
maxNameLen = Math.max(maxNameLen, descriptor.getName().length());
|
||||
maxFeatureNameLen = Math.max(maxFeatureNameLen, descriptor.getSimpleFeatureName().length());
|
||||
}
|
||||
|
||||
StringBuilder docs = new StringBuilder();
|
||||
String format = "%" + maxNameLen + "s %" + maxFeatureNameLen + "s %s%n";
|
||||
docs.append(String.format(format, nameHeader, featureHeader, docHeader));
|
||||
for ( final FeatureDescriptor descriptor : featureDescriptors ) {
|
||||
String oneDoc = String.format(format,
|
||||
descriptor.getName(),
|
||||
descriptor.getSimpleFeatureName(),
|
||||
HelpUtils.helpLinksToGATKDocs(descriptor.getCodecClass()));
|
||||
docs.append(oneDoc);
|
||||
}
|
||||
|
||||
return docs.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -86,9 +86,9 @@ public class HelpUtils {
|
|||
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");
|
||||
b.append(URL_ROOT_FOR_RELEASE_GATKDOCS).append(classPath);
|
||||
//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();
|
||||
}
|
||||
}
|
||||
|
|
@ -161,7 +161,7 @@ public class ListFileUtils {
|
|||
if ( ! rodBinding.getType().isAssignableFrom(descriptor.getFeatureClass()) )
|
||||
throw new UserException.BadArgumentValue(rodBinding.getName(),
|
||||
String.format("Field %s expected type %s, but the type of the input file provided on the command line was %s producing %s. Please make sure that you have provided the correct file type and/or that you are not binding your rod to a name matching one of the available types.",
|
||||
rodBinding.getName(), rodBinding.getType(), descriptor.getName(), descriptor.getFeatureClass()));
|
||||
rodBinding.getName(), rodBinding.getType(), descriptor.getName(), descriptor.getSimpleFeatureName()));
|
||||
|
||||
|
||||
rodBindings.add(triplet);
|
||||
|
|
|
|||
Loading…
Reference in New Issue