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

de.charite.compbio.jannovar.cmd.annotate_vcf.JannovarAnnotateVCFOptions Maven / Gradle / Ivy

package de.charite.compbio.jannovar.cmd.annotate_vcf;

import de.charite.compbio.jannovar.UncheckedJannovarException;
import de.charite.compbio.jannovar.cmd.CommandLineParsingException;
import de.charite.compbio.jannovar.cmd.JannovarAnnotationOptions;
import de.charite.compbio.jannovar.cmd.JannovarBaseOptions;
import de.charite.compbio.jannovar.filter.facade.PedigreeFilterOptions;
import de.charite.compbio.jannovar.filter.facade.ThresholdFilterOptions;
import de.charite.compbio.jannovar.vardbs.generic_tsv.GenericTSVAnnotationOptions;
import de.charite.compbio.jannovar.vardbs.generic_vcf.GenericVCFAnnotationOptions;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiFunction;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.ArgumentGroup;
import net.sourceforge.argparse4j.inf.ArgumentParser;
import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparser;
import net.sourceforge.argparse4j.inf.Subparsers;

/**
 * Options for annotating VCF files
 * 
 * @author Manuel Holtgrewe
 */
public class JannovarAnnotateVCFOptions extends JannovarAnnotationOptions {

	/** Whether or not to escape ANN field */
	private boolean escapeAnnField = true;

	/** Path to input VCF file */
	private String pathInputVCF = null;

	/** Interval to annotate */
	private String interval = "";

	/** Path to output VCF file */
	private String pathOutputVCF = null;

	/** Path to dbSNP VCF file to use for the annotation */
	public String pathVCFDBSNP = null;

	/** Prefix to use for dbSNP VCF INFO Fields */
	public String prefixDBSNP = null;

	/**
	 * Path to the reference FAI-indexed FASTA file (required for dbSNP/ExAC/UK10K-based annotation
	 */
	public String pathFASTARef = null;

	/** Path to ExAC VCF file to use for the annotation */
	public String pathVCFExac;

	/** Prefix to use for ExAC VCF INFO Fields */
	public String prefixExac;

	/** Path to gnomAD exomes VCF file to use for the annotation */
	public String pathVCFGnomadExomes;

	/** Prefix to use for gnomAD exomes INFO fields */
	public String prefixGnomadExomes;

	/** Path to gnomAD genomes VCF file to use for the annotation */
	public String pathVCFGnomadGenomes;

	/** Prefix to use for gnomAD genomes INFO fields */
	public String prefixGnomadGenomes;

	/** Path to UK10K VCF file to use for the annotation */
	public String pathVCFUK10K;

	/** Prefix to use for UK10K VCF INFO Fields */
	public String prefixUK10K;

	/** Path to ClinVar VCF file to use for the annotation */
	public String pathClinVar;

	/** Prefix to use for ClinVar VCF INFO Fields */
	public String prefixClinVar;

	/** Path to COSMIC VCF file to use for the annotation */
	public String pathCosmic;

	/** Prefix to use for COSMIC VCF INFO Fields */
	public String prefixCosmic;

	/** Path to pedigree file */
	public String pathPedFile;

	/**
	 * Whether or not to perform compatible inheritance mode annotation with the assumption that the
	 * single individual is the affected index.
	 */
	public boolean annotateAsSingletonPedigree;

	/** Whether or not to use threshold-based filters */
	public boolean useThresholdFilters;

	/**
	 * Whether or not to use the advanced pedigree filters (mainly useful for de novo variants)
	 */
	public boolean useAdvancedPedigreeFilters;

	/** Threshold filter: minimal coverage at a site for heterozygous calls */
	private int threshFiltMinGtCovHet;

	/** Threshold filter: minimal coverage at a site for homozygous calls */
	private int threshFiltMinGtCovHomAlt;

	/** Threshold filter: maximal coverage at a site for any call */
	private int threshFiltMaxCov;

	/** Threshold filter: minimal genotype for calls */
	private int threshFiltMinGtGq;

	/**
	 * Threshold filter: minimal alternative allele fraction for heterozygous calls
	 */
	private double threshFiltMinGtAafHet;

	/**
	 * Threshold filter: maximal alternative allele fraction for heterozygous calls
	 */
	private double threshFiltMaxGtAafHet;

	/**
	 * Threshold filter: minimal alternative allele fraction for homozygous alternative calls
	 */
	private double threshFiltMinGtAafHomAlt;

	/**
	 * Threshold filter: maximal alternative allele fraction for homozygous ref calls
	 */
	private double threshFiltMaxGtAafHomRef;

	/**
	 * Threshold filter: maximal allele frequency for autosomal dominant inheritance mode
	 */
	private double threshFiltMaxAlleleFrequencyAd;

	/**
	 * Threshold filter: maximal allele frequency for autosomal recessive inheritance mode
	 */
	private double threshFiltMaxAlleleFrequencyAr;

	/** Enable off target filter */
	private boolean offTargetFilterEnabled;

	/** Count UTR as off-target */
	private boolean offTargetFilterUtrIsOffTarget;

	/** Count intronic splice region (non-consensus) as off-target */
	private boolean offTargetFilterIntronicSpliceIsOffTarget;

	/**
	 * Whether or not to use the variant-wise (AllAffGtFiltered, MaxFreqAd, MaxFreqAr, and OffExome)
	 * and genotype-wise filters (MaxCov, MinCovHet, MinCovHomAlt, MinGq, MinAafHet, MaxAafHet,
	 * MinAafHomAlt, MinAafHomRef) in inheritance mode compatibility annotation.
	 */
	private boolean inheritanceAnnoUseFilters;

	/** Whether or not to enable the "parent GT is filtered" GT filter, default is true. */
	private boolean useParentGtIsFiltered;

	/** Maximal support of alternative allele in parent for de novo variant. */
	private Integer threshDeNovoParentAd2;

	/** Configuration for annotation with BED files. */
	private List bedAnnotationOptions = new ArrayList<>();

	/** Column of contig name in dbNSFP. */
	private int dbNsfpColContig;

	/** Column of contig name in dbNSFP. */
	private int dbNsfpColPosition;

	/** Prefix for dbNSFP annotations. */
	private String prefixDbNsfp;

	/** Configuration for annotation with dbNSFP. */
	private String pathDbNsfp;

	/** Fields to annotate with from dbNSFP. */
	private List columnsDbNsfp = new ArrayList<>();

	/** Configuration for annotation with generic TSV files. */
	private List tsvAnnotationOptions = new ArrayList<>();

	/** Configuration for annotation with VCF files. */
	private List vcfAnnotationOptions = new ArrayList<>();

	/**
	 * Setup {@link ArgumentParser}
	 * 
	 * @param subParsers {@link Subparsers} to setup
	 */
	public static void setupParser(Subparsers subParsers) {
		BiFunction handler = (argv, args) -> {
			try {
				return new AnnotateVCFCommand(argv, args);
			} catch (CommandLineParsingException e) {
				throw new UncheckedJannovarException("Could not parse command line", e);
			}
		};

		Subparser subParser = subParsers.addParser("annotate-vcf", true).help("annotate VCF files")
				.setDefault("cmd", handler);
		subParser.description("Perform annotation of a single VCF file");

		ArgumentGroup requiredGroup = subParser.addArgumentGroup("Required arguments");
		requiredGroup.addArgument("-i", "--input-vcf").help("Path to input VCF file")
				.required(true);
		requiredGroup.addArgument("-o", "--output-vcf").help("Path to output VCF file")
				.required(true);
		requiredGroup.addArgument("-d", "--database").help("Path to database .ser file")
				.required(true);

		ArgumentGroup annotationGroup =
				subParser.addArgumentGroup("Annotation Arguments (optional)");
		requiredGroup.addArgument("--interval").help("Interval with regions to annotate (optional)")
				.required(false).setDefault("");
		annotationGroup.addArgument("--pedigree-file")
				.help("Pedigree file to use for Mendelian inheritance annotation").required(false);
		annotationGroup.addArgument("--annotate-as-singleton-pedigree")
				.help("Annotate VCF file with single individual as singleton pedigree (singleton assumed to be affected)")
				.required(false).setDefault(false).action(Arguments.storeTrue());
		annotationGroup.addArgument("--ref-fasta").help(
				"Path to FAI-indexed reference FASTA file, required for dbSNP/ExAC/UK10K-based annotation");
		annotationGroup.addArgument("--dbsnp-vcf")
				.help("Path to dbSNP VCF file, activates dbSNP annotation").required(false);
		annotationGroup.addArgument("--dbsnp-prefix").help("Prefix for dbSNP annotations")
				.setDefault("DBSNP_").required(false);
		annotationGroup.addArgument("--exac-vcf")
				.help("Path to ExAC VCF file, activates ExAC annotation").required(false);
		annotationGroup.addArgument("--exac-prefix").help("Prefix for ExAC annotations")
				.setDefault("EXAC_").required(false);
		annotationGroup.addArgument("--gnomad-exomes-vcf")
				.help("Path to gnomAD exomes VCF file, activates gnomAD exomes annotation")
				.required(false);
		annotationGroup.addArgument("--gnomad-exomes-prefix")
				.help("Prefix for ExgnomAD exomes AC annotations").setDefault("GNOMAD_EXOMES_")
				.required(false);
		annotationGroup.addArgument("--gnomad-genomes-vcf")
				.help("Path to gnomAD genomes VCF file, activates gnomAD genomes annotation")
				.required(false);
		annotationGroup.addArgument("--gnomad-genomes-prefix")
				.help("Prefix for ExgnomAD genomes AC annotations").setDefault("GNOMAD_GENOMES_")
				.required(false);
		annotationGroup.addArgument("--uk10k-vcf")
				.help("Path to UK10K VCF file, activates UK10K annotation").required(false);
		annotationGroup.addArgument("--uk10k-prefix").help("Prefix for UK10K annotations")
				.setDefault("UK10K_").required(false);
		annotationGroup.addArgument("--clinvar-vcf")
				.help("Path to ClinVar file, activates ClinVar annotation").required(false);
		annotationGroup.addArgument("--clinvar-prefix").help("Prefix for ClinVar annotations")
				.setDefault("CLINVAR_").required(false);
		annotationGroup.addArgument("--cosmic-vcf")
				.help("Path to COSMIC file, activates COSMIC annotation").required(false);
		annotationGroup.addArgument("--cosmic-prefix").help("Prefix for COSMIC annotations")
				.setDefault("COSMIC_").required(false);
		annotationGroup.addArgument("--inheritance-anno-use-filters")
				.help("Use filters in inheritance mode annotation").setDefault(false)
				.action(Arguments.storeTrue());

		ArgumentGroup dbNsfpAnnotationGroup =
				subParser.addArgumentGroup("Annotation with dbNSFP (experimental; optional)");
		dbNsfpAnnotationGroup.addArgument("--dbnsfp-tsv").help("Patht to dbNSFP TSV file")
				.required(false);
		dbNsfpAnnotationGroup.addArgument("--dbnsfp-col-contig").type(Integer.class)
				.help("Column index of contig in dbNSFP").setDefault(1);
		dbNsfpAnnotationGroup.addArgument("--dbnsfp-col-position").type(Integer.class)
				.help("Column index of position in dbNSFP").setDefault(2);
		dbNsfpAnnotationGroup.addArgument("--dbnsfp-prefix").help("Prefix for dbNSFP annotations")
				.setDefault("DBNSFP_").required(false);
		dbNsfpAnnotationGroup.addArgument("--dbnsfp-columns")
				.help("Columns from dbDSFP file to use for annotation").action(Arguments.append());

		ArgumentGroup bedAnnotationGroup =
				subParser.addArgumentGroup("BED-based Annotation (experimental; optional)");
		bedAnnotationGroup.addArgument("--bed-annotation")
				.help("Add BED file to use for annotating. The value must be of the format "
						+ "\"pathToBed:infoField:description[:colNo]\".")
				.action(Arguments.append());

		ArgumentGroup vcfAnnotationGroup =
				subParser.addArgumentGroup("Generic VCF-based Annotation (experimental; optional)");
		vcfAnnotationGroup.addArgument("--vcf-annotation")
				.help("Add VCF file to use for annotating. The value must be of the format "
						+ "\"pathToVfFile:prefix:field1,field2,field3\".")
				.action(Arguments.append());

		ArgumentGroup tsvAnnotationGroup =
				subParser.addArgumentGroup("TSV-based Annotation (experimental; optional)");
		tsvAnnotationGroup.addArgument("--tsv-annotation")
				.help("Add TSV file to use for annotating. The value must be of the format "
						+ "\"pathToTsvFile:oneBasedOffset:colContig:colStart:colEnd:colRef(or=0):"
						+ "colAlt(or=0):isRefAnnotated(R=yes,A=no):colValue:fieldType:fieldName:fieldDescription:"
						+ "accumulationStrategy\".")
				.action(Arguments.append());

		ArgumentGroup threshFilterGroup =
				subParser.addArgumentGroup("Threshold-filter related arguments");
		threshFilterGroup.addArgument("--use-threshold-filters").help("Use threshold-based filters")
				.setDefault(false).action(Arguments.storeTrue());
		ThresholdFilterOptions threshDefaults = ThresholdFilterOptions.buildDefaultOptions();
		threshFilterGroup.addArgument("--gt-thresh-filt-min-cov-het")
				.help("Minimal coverage for het. call").setDefault(threshDefaults.getMinGtCovHet())
				.type(Integer.class);
		threshFilterGroup.addArgument("--gt-thresh-filt-min-cov-hom-alt")
				.help("Minimal coverage for hom. alt calls")
				.setDefault(threshDefaults.getMinGtCovHomAlt()).type(Integer.class);
		threshFilterGroup.addArgument("--gt-thresh-filt-max-cov")
				.help("Maximal coverage for a sample").setDefault(threshDefaults.getMaxCov())
				.type(Integer.class);
		threshFilterGroup.addArgument("--gt-thresh-filt-min-gq")
				.help("Minimal genotype call quality").setDefault(threshDefaults.getMinGtGq())
				.type(Integer.class);
		threshFilterGroup.addArgument("--gt-thresh-filt-min-aaf-het")
				.help("Minimal het. call alternate allele fraction")
				.setDefault(threshDefaults.getMinGtAafHet()).type(Double.class);
		threshFilterGroup.addArgument("--gt-thresh-filt-max-aaf-het")
				.help("Maximal het. call alternate allele fraction")
				.setDefault(threshDefaults.getMaxGtAafHet()).type(Double.class);
		threshFilterGroup.addArgument("--gt-thresh-filt-min-aaf-hom-alt")
				.help("Minimal hom. alt call alternate allele fraction")
				.setDefault(threshDefaults.getMinGtAafHomAlt()).type(Double.class);
		threshFilterGroup.addArgument("--gt-thresh-filt-max-aaf-hom-ref")
				.help("Maximal hom. ref call alternate allele fraction")
				.setDefault(threshDefaults.getMaxGtAafHomRef()).type(Double.class);
		threshFilterGroup.addArgument("--var-thresh-max-allele-freq-ad")
				.help("Maximal allele fraction for autosomal dominant inheritance mode")
				.setDefault(threshDefaults.getMaxAlleleFrequencyAd()).type(Double.class);
		threshFilterGroup.addArgument("--var-thresh-max-allele-freq-ar")
				.help("Maximal allele fraction for autosomal recessive inheritance mode")
				.setDefault(threshDefaults.getMaxAlleleFrequencyAr()).type(Double.class);
		PedigreeFilterOptions pedDefaults = PedigreeFilterOptions.buildDefaultOptions();
		threshFilterGroup.addArgument("--use-advanced-pedigree-filters")
				.help("Use advanced pedigree-based filters (mainly useful for de novo variants)")
				.setDefault(false).action(Arguments.storeTrue());
		threshFilterGroup.addArgument("--de-novo-max-parent-ad2")
				.help("Maximal support of alternative allele in parent for de novo variants.")
				.type(Integer.class).setDefault(pedDefaults.getDeNovoMaxParentAd2());

		ArgumentGroup offTargetGroup = subParser.addArgumentGroup("Exome on/off target filters");
		offTargetGroup.addArgument("--enable-off-target-filter")
				.help("Enable filter for on/off-target based on effect impact").setDefault(false)
				.action(Arguments.storeTrue());
		offTargetGroup.addArgument("--utr-is-off-target")
				.help("Make UTR count as off-target (default is to count UTR as on-target)")
				.setDefault(false).action(Arguments.storeTrue());
		offTargetGroup.addArgument("--intronic-splice-is-off-target")
				.help("Make intronic (non-consensus site) splice region count as off-target (default is to count as on-target)")
				.setDefault(false).action(Arguments.storeTrue());

		ArgumentGroup optionalGroup = subParser.addArgumentGroup("Other, optional Arguments");
		optionalGroup.addArgument("--no-escape-ann-field")
				.help("Disable escaping of INFO/ANN field in VCF output").dest("escape_ann_field")
				.setDefault(true).action(Arguments.storeFalse());
		optionalGroup.addArgument("--show-all").help("Show all effects").setDefault(false)
				.action(Arguments.storeTrue());
		optionalGroup.addArgument("--no-3-prime-shifting")
				.help("Disable shifting towards 3' of transcript").dest("3_prime_shifting")
				.setDefault(true).action(Arguments.storeFalse());
		optionalGroup.addArgument("--3-letter-amino-acids")
				.help("Enable usage of 3 letter amino acid codes").setDefault(false)
				.action(Arguments.storeTrue());
		optionalGroup.addArgument("--disable-parent-gt-is-filtered").setDefault(true)
				.dest("use_parent_gt_is_filtered").action(Arguments.storeFalse());

		JannovarBaseOptions.setupParser(subParser);
	}

	@Override
	public void setFromArgs(Namespace args) throws CommandLineParsingException {
		super.setFromArgs(args);

		interval = args.getString("interval");
		escapeAnnField = args.getBoolean("escape_ann_field");
		pathInputVCF = args.getString("input_vcf");
		pathOutputVCF = args.getString("output_vcf");
		pathPedFile = args.getString("pedigree_file");
		annotateAsSingletonPedigree = args.getBoolean("annotate_as_singleton_pedigree");

		pathFASTARef = args.getString("ref_fasta");
		pathVCFDBSNP = args.getString("dbsnp_vcf");
		prefixDBSNP = args.getString("dbsnp_prefix");
		pathVCFExac = args.getString("exac_vcf");
		prefixExac = args.getString("exac_prefix");
		pathVCFGnomadExomes = args.getString("gnomad_exomes_vcf");
		prefixGnomadExomes = args.getString("gnomad_exomes_prefix");
		pathVCFGnomadGenomes = args.getString("gnomad_genomes_vcf");
		prefixGnomadGenomes = args.getString("gnomad_genomes_prefix");
		pathVCFUK10K = args.getString("uk10k_vcf");
		prefixUK10K = args.getString("uk10k_prefix");
		pathClinVar = args.getString("clinvar_vcf");
		prefixClinVar = args.getString("clinvar_prefix");
		pathCosmic = args.getString("cosmic_vcf");
		prefixCosmic = args.getString("cosmic_prefix");
		inheritanceAnnoUseFilters = args.getBoolean("inheritance_anno_use_filters");
		useParentGtIsFiltered = args.getBoolean("use_parent_gt_is_filtered");

		dbNsfpColContig = args.getInt("dbnsfp_col_contig");
		dbNsfpColPosition = args.getInt("dbnsfp_col_position");
		prefixDbNsfp = args.getString("dbnsfp_prefix");
		pathDbNsfp = args.getString("dbnsfp_tsv");
		if (args.getList("dbnsfp_columns") != null) {
			for (Object o : args.getList("dbnsfp_columns")) {
				final String s = (String) o;
				for (String s2 : s.split(",")) {
					if (!DbNsfpFields.DBNSFP_FIELDS.containsKey(s2)) {
						throw new RuntimeException(
								"Unknown field from dbNSFP or not yet supported: " + s);
					} else {
						columnsDbNsfp.add(s2);
					}
				}
			}
		}

		if (args.getList("bed_annotation") != null) {
			for (Object o : args.getList("bed_annotation")) {
				final String s = (String) o;
				bedAnnotationOptions.add(BedAnnotationOptions.parseFrom(s));
			}
		}

		if (args.getList("tsv_annotation") != null) {
			for (Object o : args.getList("tsv_annotation")) {
				final String s = (String) o;
				tsvAnnotationOptions.add(GenericTSVAnnotationOptions.parseFrom(s));
			}
		}

		if (args.getList("vcf_annotation") != null) {
			for (Object o : args.getList("vcf_annotation")) {
				final String s = (String) o;
				vcfAnnotationOptions.add(GenericVCFAnnotationOptions.parseFrom(s));
			}
		}

		useThresholdFilters = args.getBoolean("use_threshold_filters");
		threshFiltMinGtCovHet = args.getInt("gt_thresh_filt_min_cov_het");
		threshFiltMinGtCovHomAlt = args.getInt("gt_thresh_filt_min_cov_hom_alt");
		threshFiltMaxCov = args.getInt("gt_thresh_filt_max_cov");
		threshFiltMinGtGq = args.getInt("gt_thresh_filt_min_gq");
		threshFiltMinGtAafHet = args.getDouble("gt_thresh_filt_min_aaf_het");
		threshFiltMaxGtAafHet = args.getDouble("gt_thresh_filt_max_aaf_het");
		threshFiltMinGtAafHomAlt = args.getDouble("gt_thresh_filt_min_aaf_hom_alt");
		threshFiltMaxGtAafHomRef = args.getDouble("gt_thresh_filt_max_aaf_hom_ref");
		threshFiltMaxAlleleFrequencyAd = args.getDouble("var_thresh_max_allele_freq_ad");
		threshFiltMaxAlleleFrequencyAr = args.getDouble("var_thresh_max_allele_freq_ar");
		useAdvancedPedigreeFilters = args.getBoolean("use_advanced_pedigree_filters");
		setThreshDeNovoParentAd2(args.getInt("de_novo_max_parent_ad2"));

		offTargetFilterEnabled = args.getBoolean("enable_off_target_filter");
		offTargetFilterUtrIsOffTarget = args.getBoolean("utr_is_off_target");
		offTargetFilterIntronicSpliceIsOffTarget = args.getBoolean("intronic_splice_is_off_target");

		if (pathFASTARef == null && (pathVCFDBSNP != null || pathVCFExac != null
				|| pathVCFUK10K != null || pathClinVar != null || pathCosmic != null
				|| pathVCFGnomadExomes != null || pathVCFGnomadGenomes != null || pathDbNsfp != null
				|| !tsvAnnotationOptions.isEmpty() || !vcfAnnotationOptions.isEmpty()))
			throw new CommandLineParsingException(
					"Command --ref-fasta required when using dbSNP, ExAC, UK10K, ClinVar, or COSMIC annotations.");
	}

	public String getInterval() {
		return interval;
	}

	public void setInterval(String interval) {
		this.interval = interval;
	}

	public String getPathInputVCF() {
		return pathInputVCF;
	}

	public void setPathInputVCF(String pathInputVCF) {
		this.pathInputVCF = pathInputVCF;
	}

	public String getPathOutputVCF() {
		return pathOutputVCF;
	}

	public void setPathOutputVCF(String pathOutputVCF) {
		this.pathOutputVCF = pathOutputVCF;
	}

	public boolean isEscapeAnnField() {
		return escapeAnnField;
	}

	public void setEscapeAnnField(boolean escapeAnnField) {
		this.escapeAnnField = escapeAnnField;
	}

	public String getPathVCFDBSNP() {
		return pathVCFDBSNP;
	}

	public void setPathVCFDBSNP(String pathVCFDBSNP) {
		this.pathVCFDBSNP = pathVCFDBSNP;
	}

	public String getPrefixDBSNP() {
		return prefixDBSNP;
	}

	public void setPrefixDBSNP(String prefixDBSNP) {
		this.prefixDBSNP = prefixDBSNP;
	}

	public String getPathFASTARef() {
		return pathFASTARef;
	}

	public void setPathFASTARef(String pathFASTARef) {
		this.pathFASTARef = pathFASTARef;
	}

	public String getPathVCFExac() {
		return pathVCFExac;
	}

	public void setPathVCFExac(String pathVCFExac) {
		this.pathVCFExac = pathVCFExac;
	}

	public String getPrefixExac() {
		return prefixExac;
	}

	public void setPrefixExac(String prefixExac) {
		this.prefixExac = prefixExac;
	}

	public String getPathVCFUK10K() {
		return pathVCFUK10K;
	}

	public void setPathVCFUK10K(String pathVCFUK10K) {
		this.pathVCFUK10K = pathVCFUK10K;
	}

	public String getPrefixUK10K() {
		return prefixUK10K;
	}

	public void setPrefixUK10K(String prefixUK10K) {
		this.prefixUK10K = prefixUK10K;
	}

	public String getPathClinVar() {
		return pathClinVar;
	}

	public void setPathClinVar(String pathClinVar) {
		this.pathClinVar = pathClinVar;
	}

	public String getPrefixClinVar() {
		return prefixClinVar;
	}

	public void setPrefixClinVar(String prefixClinVar) {
		this.prefixClinVar = prefixClinVar;
	}

	public String getPathCosmic() {
		return pathCosmic;
	}

	public void setPathCosmic(String pathCosmic) {
		this.pathCosmic = pathCosmic;
	}

	public String getPrefixCosmic() {
		return prefixCosmic;
	}

	public void setPrefixCosmic(String prefixCosmic) {
		this.prefixCosmic = prefixCosmic;
	}

	public String getPathVCFGnomadExomes() {
		return pathVCFGnomadExomes;
	}

	public void setPathVCFGnomadExomes(String pathVCFGnomadExomes) {
		this.pathVCFGnomadExomes = pathVCFGnomadExomes;
	}

	public String getPrefixGnomadExomes() {
		return prefixGnomadExomes;
	}

	public void setPrefixGnomadExomes(String prefixGnomadExomes) {
		this.prefixGnomadExomes = prefixGnomadExomes;
	}

	public String getPathVCFGnomadGenomes() {
		return pathVCFGnomadGenomes;
	}

	public void setPathVCFGnomadGenomes(String pathVCFGnomadGenomes) {
		this.pathVCFGnomadGenomes = pathVCFGnomadGenomes;
	}

	public String getPrefixGnomadGenomes() {
		return prefixGnomadGenomes;
	}

	public void setPrefixGnomadGenomes(String prefixGnomadGenomes) {
		this.prefixGnomadGenomes = prefixGnomadGenomes;
	}

	public boolean isAnnotateAsSingletonPedigree() {
		return annotateAsSingletonPedigree;
	}

	public void setAnnotateAsSingletonPedigree(boolean annotateAsSingletonPedigree) {
		this.annotateAsSingletonPedigree = annotateAsSingletonPedigree;
	}

	public String getPathPedFile() {
		return pathPedFile;
	}

	public void setPathPedFile(String pathPedFile) {
		this.pathPedFile = pathPedFile;
	}

	public boolean isUseThresholdFilters() {
		return useThresholdFilters;
	}

	public void setUseThresholdFilters(boolean useThresholdFilters) {
		this.useThresholdFilters = useThresholdFilters;
	}

	public int getThreshFiltMinGtCovHet() {
		return threshFiltMinGtCovHet;
	}

	public void setThreshFiltMinGtCovHet(int threshFiltMinGtCovHet) {
		this.threshFiltMinGtCovHet = threshFiltMinGtCovHet;
	}

	public int getThreshFiltMinGtCovHomAlt() {
		return threshFiltMinGtCovHomAlt;
	}

	public void setThreshFiltMinGtCovHomAlt(int threshFiltMinGtCovHomAlt) {
		this.threshFiltMinGtCovHomAlt = threshFiltMinGtCovHomAlt;
	}

	public int getThreshFiltMaxCov() {
		return threshFiltMaxCov;
	}

	public void setThreshFiltMaxCov(int threshFiltMaxCov) {
		this.threshFiltMaxCov = threshFiltMaxCov;
	}

	public int getThreshFiltMinGtGq() {
		return threshFiltMinGtGq;
	}

	public void setThreshFiltMinGtGq(int threshFiltMinGtGq) {
		this.threshFiltMinGtGq = threshFiltMinGtGq;
	}

	public double getThreshFiltMinGtAafHet() {
		return threshFiltMinGtAafHet;
	}

	public void setThreshFiltMinGtAafHet(double threshFiltMinGtAafHet) {
		this.threshFiltMinGtAafHet = threshFiltMinGtAafHet;
	}

	public double getThreshFiltMaxGtAafHet() {
		return threshFiltMaxGtAafHet;
	}

	public void setThreshFiltMaxGtAafHet(double threshFiltMaxGtAafHet) {
		this.threshFiltMaxGtAafHet = threshFiltMaxGtAafHet;
	}

	public double getThreshFiltMinGtAafHomAlt() {
		return threshFiltMinGtAafHomAlt;
	}

	public void setThreshFiltMinGtAafHomAlt(double threshFiltMinGtAafHomAlt) {
		this.threshFiltMinGtAafHomAlt = threshFiltMinGtAafHomAlt;
	}

	public double getThreshFiltMaxGtAafHomRef() {
		return threshFiltMaxGtAafHomRef;
	}

	public void setThreshFiltMaxGtAafHomRef(double threshFiltMaxGtAafHomRef) {
		this.threshFiltMaxGtAafHomRef = threshFiltMaxGtAafHomRef;
	}

	public double getThreshFiltMaxAlleleFrequencyAd() {
		return threshFiltMaxAlleleFrequencyAd;
	}

	public void setThreshFiltMaxAlleleFrequencyAD(double threshFiltMaxAlleleFrequencyAd) {
		this.threshFiltMaxAlleleFrequencyAd = threshFiltMaxAlleleFrequencyAd;
	}

	public double getThreshFiltMaxAlleleFrequencyAr() {
		return threshFiltMaxAlleleFrequencyAr;
	}

	public void setThreshFiltMaxAlleleFrequencyAR(double threshFiltMaxAlleleFrequencyAr) {
		this.threshFiltMaxAlleleFrequencyAr = threshFiltMaxAlleleFrequencyAr;
	}

	public boolean isOffTargetFilterEnabled() {
		return offTargetFilterEnabled;
	}

	public void setOffTargetFilterEnabled(boolean offTargetFilterEnabled) {
		this.offTargetFilterEnabled = offTargetFilterEnabled;
	}

	public boolean isOffTargetFilterUtrIsOffTarget() {
		return offTargetFilterUtrIsOffTarget;
	}

	public void setOffTargetFilterUtrIsOffTarget(boolean offTargetFilterUtrIsOffTarget) {
		this.offTargetFilterUtrIsOffTarget = offTargetFilterUtrIsOffTarget;
	}

	public boolean isOffTargetFilterIntronicSpliceIsOffTarget() {
		return offTargetFilterIntronicSpliceIsOffTarget;
	}

	public void setOffTargetFilterIntronicSpliceIsOffTarget(
			boolean offTargetFilterIntronicSpliceIsOffTarget) {
		this.offTargetFilterIntronicSpliceIsOffTarget = offTargetFilterIntronicSpliceIsOffTarget;
	}

	public void setThreshFiltMaxAlleleFrequencyAd(double threshFiltMaxAlleleFrequencyAd) {
		this.threshFiltMaxAlleleFrequencyAd = threshFiltMaxAlleleFrequencyAd;
	}

	public void setThreshFiltMaxAlleleFrequencyAr(double threshFiltMaxAlleleFrequencyAr) {
		this.threshFiltMaxAlleleFrequencyAr = threshFiltMaxAlleleFrequencyAr;
	}

	public boolean isInheritanceAnnoUseFilters() {
		return inheritanceAnnoUseFilters;
	}

	public void setInheritanceAnnoUseFilters(boolean inheritanceAnnoUseFilters) {
		this.inheritanceAnnoUseFilters = inheritanceAnnoUseFilters;
	}

	public boolean isUseAdvancedPedigreeFilters() {
		return useAdvancedPedigreeFilters;
	}

	public void setUseAdvancedPedigreeFilters(boolean useAdvancedPedigreeFilters) {
		this.useAdvancedPedigreeFilters = useAdvancedPedigreeFilters;
	}

	public List getBedAnnotationOptions() {
		return bedAnnotationOptions;
	}

	public void setBedAnnotationOptions(List bedAnnotationOptions) {
		this.bedAnnotationOptions = bedAnnotationOptions;
	}

	public Integer getThreshDeNovoParentAd2() {
		return threshDeNovoParentAd2;
	}

	public void setThreshDeNovoParentAd2(Integer threshDeNovoParentAd2) {
		this.threshDeNovoParentAd2 = threshDeNovoParentAd2;
	}

	public String getPrefixDbNsfp() {
		return prefixDbNsfp;
	}

	public void setPrefixDbNsfp(String prefixDbNsfp) {
		this.prefixDbNsfp = prefixDbNsfp;
	}

	public String getPathDbNsfp() {
		return pathDbNsfp;
	}

	public void setPathDbNsfp(String pathDbNsfp) {
		this.pathDbNsfp = pathDbNsfp;
	}

	public List getColumnsDbNsfp() {
		return columnsDbNsfp;
	}

	public void setColumnsDbNsfp(List columnsDbNsfp) {
		this.columnsDbNsfp = columnsDbNsfp;
	}

	public List getTsvAnnotationOptions() {
		return tsvAnnotationOptions;
	}

	public void setTsvAnnotationOptions(List tsvAnnotationOptions) {
		this.tsvAnnotationOptions = tsvAnnotationOptions;
	}

	public int getDbNsfpColContig() {
		return dbNsfpColContig;
	}

	public void setDbNsfpColContig(int dbNsfpColContig) {
		this.dbNsfpColContig = dbNsfpColContig;
	}

	public int getDbNsfpColPosition() {
		return dbNsfpColPosition;
	}

	public void setDbNsfpColPosition(int dbNsfpColPosition) {
		this.dbNsfpColPosition = dbNsfpColPosition;
	}

	public List getVcfAnnotationOptions() {
		return vcfAnnotationOptions;
	}

	public void setVcfAnnotationOptions(List vcfAnnotationOptions) {
		this.vcfAnnotationOptions = vcfAnnotationOptions;
	}

	public boolean isUseParentGtIsFiltered() {
		return useParentGtIsFiltered;
	}

	public void setUseParentGtIsFiltered(boolean useParentGtIsFiltered) {
		this.useParentGtIsFiltered = useParentGtIsFiltered;
	}

	@Override
	public String toString() {
		return "JannovarAnnotateVCFOptions [escapeAnnField=" + escapeAnnField + ", pathInputVCF="
				+ pathInputVCF + ", interval=" + interval + ", pathOutputVCF=" + pathOutputVCF
				+ ", pathVCFDBSNP=" + pathVCFDBSNP + ", prefixDBSNP=" + prefixDBSNP
				+ ", pathFASTARef=" + pathFASTARef + ", pathVCFExac=" + pathVCFExac
				+ ", prefixExac=" + prefixExac + ", pathVCFGnomadExomes=" + pathVCFGnomadExomes
				+ ", prefixGnomadExomes=" + prefixGnomadExomes + ", pathVCFGnomadGenomes="
				+ pathVCFGnomadGenomes + ", prefixGnomadGenomes=" + prefixGnomadGenomes
				+ ", pathVCFUK10K=" + pathVCFUK10K + ", prefixUK10K=" + prefixUK10K
				+ ", pathClinVar=" + pathClinVar + ", prefixClinVar=" + prefixClinVar
				+ ", pathCosmic=" + pathCosmic + ", prefixCosmic=" + prefixCosmic + ", pathPedFile="
				+ pathPedFile + ", annotateAsSingletonPedigree=" + annotateAsSingletonPedigree
				+ ", useThresholdFilters=" + useThresholdFilters + ", useAdvancedPedigreeFilters="
				+ useAdvancedPedigreeFilters + ", threshFiltMinGtCovHet=" + threshFiltMinGtCovHet
				+ ", threshFiltMinGtCovHomAlt=" + threshFiltMinGtCovHomAlt + ", threshFiltMaxCov="
				+ threshFiltMaxCov + ", threshFiltMinGtGq=" + threshFiltMinGtGq
				+ ", threshFiltMinGtAafHet=" + threshFiltMinGtAafHet + ", threshFiltMaxGtAafHet="
				+ threshFiltMaxGtAafHet + ", threshFiltMinGtAafHomAlt=" + threshFiltMinGtAafHomAlt
				+ ", threshFiltMaxGtAafHomRef=" + threshFiltMaxGtAafHomRef
				+ ", threshFiltMaxAlleleFrequencyAd=" + threshFiltMaxAlleleFrequencyAd
				+ ", threshFiltMaxAlleleFrequencyAr=" + threshFiltMaxAlleleFrequencyAr
				+ ", offTargetFilterEnabled=" + offTargetFilterEnabled
				+ ", offTargetFilterUtrIsOffTarget=" + offTargetFilterUtrIsOffTarget
				+ ", offTargetFilterIntronicSpliceIsOffTarget="
				+ offTargetFilterIntronicSpliceIsOffTarget + ", inheritanceAnnoUseFilters="
				+ inheritanceAnnoUseFilters + ", useParentGtIsFiltered=" + useParentGtIsFiltered
				+ ", threshDeNovoParentAd2=" + threshDeNovoParentAd2 + ", bedAnnotationOptions="
				+ bedAnnotationOptions + ", dbNsfpColContig=" + dbNsfpColContig
				+ ", dbNsfpColPosition=" + dbNsfpColPosition + ", prefixDbNsfp=" + prefixDbNsfp
				+ ", pathDbNsfp=" + pathDbNsfp + ", columnsDbNsfp=" + columnsDbNsfp
				+ ", tsvAnnotationOptions=" + tsvAnnotationOptions + ", vcfAnnotationOptions="
				+ vcfAnnotationOptions + "]";
	}

	/**
	 * Configuration for annotation with BED file.
	 */
	public static class BedAnnotationOptions {

		/**
		 * Construct new BED annotation from command line option value.
		 * 
		 * 

* The value must have the format: pathToBed:infoField:description[:colNo] *

* * @param strValue String to parse from * @return Constructed {@link BedAnnotationOptions} from the given string value. */ public static BedAnnotationOptions parseFrom(String strValue) { String tokens[] = strValue.split(":", 4); if (tokens.length < 3) { throw new RuntimeException("Could not parse BED annotation from " + strValue); } else if (tokens.length == 3) { return new BedAnnotationOptions(tokens[0], tokens[1], tokens[2]); } else { return new BedAnnotationOptions(tokens[0], tokens[1], tokens[2], Integer.parseInt(tokens[3])); } } /** Path to BED file */ private final String pathBed; /** Label to use for INFO field. */ private final String infoField; /** Description to use for INFO field. */ private final String description; /** 0-based column to write into VCF file, if any, -1 for none */ private final int colNo; public BedAnnotationOptions(String pathBed, String infoField, String description) { this(pathBed, infoField, description, -1); } public BedAnnotationOptions(String pathBed, String infoField, String description, int colNo) { this.pathBed = pathBed; this.infoField = infoField; this.description = description; this.colNo = colNo; } public String getPathBed() { return pathBed; } public int getColNo() { return colNo; } public String getInfoField() { return infoField; } public String getDescription() { return description; } @Override public String toString() { return "BedAnnotationOptions [pathBed=" + pathBed + ", colNo=" + colNo + ", infoField=" + infoField + ", description=" + description + "]"; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy