All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.broadinstitute.hellbender.utils.help.HelpConstants Maven / Gradle / Ivy

The newest version!
package org.broadinstitute.hellbender.utils.help;

import org.broadinstitute.hellbender.utils.Utils;

import java.util.HashMap;
import java.util.Map;

public final class HelpConstants {

    private HelpConstants() {};

    public static final String LEGACY_GATK_FORUM_URL = "http://gatkforums.broadinstitute.org/";
    public static final String GATK_FORUM_URL = "https://gatk.broadinstitute.org/hc/en-us/community/topics";
    public static final String GATK_MAIN_SITE = "https://software.broadinstitute.org/gatk/";
    public static final String GATK_DOCS_SITE = "https://gatk.broadinstitute.org/hc/";

    //TODO anything using this is a dead link, we should move any remaining references to this into some technical docs for the future.
    public static String forumPost(String post) {
        return LEGACY_GATK_FORUM_URL + post;
    }

    public static String forumArticle(String article) {
        return GATK_DOCS_SITE + "articles/" + article;
    }

    /**
     * Definition of the group names / descriptions for documentation/help purposes.
     *
     */

    // Start GATK Program groups
    public final static String DOC_CAT_ANNOTATORS = "Variant Annotations";
    public final static String DOC_CAT_ANNOTATORS_SUMMARY = "Available to HaplotypeCaller, Mutect2, VariantAnnotator and GenotypeGVCFs. " +
            "See https://software.broadinstitute.org/gatk/documentation/article?id=10836";

    public final static String DOC_CAT_FLOW_ANNOTATORS = "Flow Annotations";
    public final static String DOC_CAT_FLOW_ANNOTATORS_SUMMARY = "Flow annotataions available to HaplotypeCaller, Mutect2, VariantAnnotator and GenotypeGVCFs";


    public final static String DOC_CAT_COVERAGE_ANALYSIS = "Coverage Analysis";
    public final static String DOC_CAT_COVERAGE_ANALYSIS_SUMMARY = "Tools that count coverage, e.g. depth per allele";

    public final static String DOC_CAT_CNV = "Copy Number Variant Discovery";
    public final static String DOC_CAT_CNV_SUMMARY = "Tools that analyze read coverage to detect copy number variants.";

    public final static String DOC_CAT_EXAMPLE = "Example Tools";
    public final static String DOC_CAT_EXAMPLE_SUMMARY = "Example tools that show developers how to implement new tools";

    public final static String DOC_CAT_METAGENOMICS = "Metagenomics";
    public final static String DOC_CAT_METAGENOMICS_SUMMARY = "Tools that perform metagenomic analysis, e.g. microbial community composition and pathogen detection";

    public final static String DOC_CAT_READFILTERS = "Read Filters";
    public final static String DOC_CAT_READFILTERS_SUMMARY = "Applied by engine to select reads for analysis";

    public final static String DOC_CAT_SHORT_VARIANT_DISCOVERY = "Short Variant Discovery";
    public final static String DOC_CAT_SHORT_VARIANT_DISCOVERY_SUMMARY = "Tools that perform variant calling and genotyping for short variants (SNPs, SNVs and Indels)";

    public final static String DOC_CAT_SV_DISCOVERY = "Structural Variant Discovery";
    public final static String DOC_CAT_SV_DISCOVERY_SUMMARY = "Tools that detect structural variants";

    public final static String DOC_CAT_TEST = "Test Tools";
    public final static String DOC_CAT_TEST_SUMMARY = "Tools for internal test purposes";

    public final static String DOC_CAT_RNA = "RNA-Specific Tools";
    public final static String DOC_CAT_RNA_SUMMARY = "Tools intended to be used for processing RNA data.";

    public final static String DOC_CAT_METHYLATION_DISCOVERY = "Methylation-Specific Tools";
    public final static String DOC_CAT_METHYLATION_DISCOVERY_SUMMARY = "Tools that perform methylation calling, processing bisulfite sequenced, methylation-aware aligned BAM";

    public final static String DOC_CAT_SHORT_FLOW_BASED = "Flow Based Tools";
    public final static String DOC_CAT_SHORT_FLOW_BASED_SUMMARY = "Tools designed specifically to operate on flow based data";

    // End GATK Program groups

    /**
     * List of "supercategory" values used for doc purposes. Every doc group name can/should be put into
     * one of the following super-categories.
     */
    private final static String DOC_SUPERCAT_TOOLS = "tools";
    private final static String DOC_SUPERCAT_UTILITIES = "utilities";
    private final static String DOC_SUPERCAT_EXCLUDE = "exclude";

    private static Map groupToSuperCategory;

    private static Map getSuperCategoryMap() {
        if (groupToSuperCategory == null) {

            // do this only on demand since we only need it during docgen
            groupToSuperCategory = new HashMap<>();

            // supercat Tools

            // start Picard program groups
            groupToSuperCategory.put(new picard.cmdline.programgroups.DiagnosticsAndQCProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(new picard.cmdline.programgroups.IntervalsManipulationProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(new picard.cmdline.programgroups.OtherProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(new picard.cmdline.programgroups.ReadDataManipulationProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(new picard.cmdline.programgroups.ReferenceProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(new picard.cmdline.programgroups.VariantEvaluationProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(new picard.cmdline.programgroups.VariantFilteringProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(new picard.cmdline.programgroups.VariantManipulationProgramGroup().getName(), DOC_SUPERCAT_TOOLS);
            // end Picard program groups

            groupToSuperCategory.put(DOC_CAT_CNV, DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(DOC_CAT_COVERAGE_ANALYSIS, DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(DOC_CAT_METAGENOMICS, DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(DOC_CAT_SHORT_VARIANT_DISCOVERY, DOC_SUPERCAT_TOOLS);
            groupToSuperCategory.put(DOC_CAT_SV_DISCOVERY, DOC_SUPERCAT_TOOLS);

            // supercat Utilities
            groupToSuperCategory.put(DOC_CAT_READFILTERS, DOC_SUPERCAT_UTILITIES);
            groupToSuperCategory.put(DOC_CAT_ANNOTATORS, DOC_SUPERCAT_UTILITIES);
            groupToSuperCategory.put(DOC_CAT_FLOW_ANNOTATORS, DOC_SUPERCAT_UTILITIES);

            // supercat Exclude
            groupToSuperCategory.put(DOC_CAT_EXAMPLE, DOC_SUPERCAT_EXCLUDE);
            groupToSuperCategory.put(DOC_CAT_TEST, DOC_SUPERCAT_EXCLUDE);
        }
        return groupToSuperCategory;
    }

    /**
     * Given a group name, return a supercategory string for use by the online doc system to determine which
     * supercateogry the group is in. The strings returned by this method should match those used in the
     * corresponding help template.
     *
     * @param groupName
     * @return supercategory string corresponding to {@code groupName} for use in for use in determining
     * which supercateogry the group is in for online doc purposes.
     */
    public static String getSuperCategoryProperty(final String groupName) {
        Utils.nonNull(groupName);
        return getSuperCategoryMap().getOrDefault(groupName, "other");
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy