{
    "$schema": "http://json-schema.org/draft-07/schema",
    "$id": "https://raw.githubusercontent.com/nf-core/sarek/master/nextflow_schema.json",
    "title": "nf-core/sarek pipeline parameters",
    "description": "An open-source analysis pipeline to detect germline or somatic variants from whole genome or targeted sequencing",
    "type": "object",
    "definitions": {
        "input_output_options": {
            "title": "Input/output options",
            "type": "object",
            "fa_icon": "fas fa-terminal",
            "description": "Define where the pipeline should find input data and save output data.",
            "required": [
                "input",
                "step"
            ],
            "properties": {
                "input": {
                    "type": "string",
                    "fa_icon": "fas fa-dna",
                    "description": "Path to input file(s).",
                    "help_text": "Use this to specify the location of your input TSV file on `mapping`, `prepare_recalibration`, `recalibrate`, `variant_calling` and `Control-FREEC` steps (multiple files can be specified with quotes).\nIt can also be used to specify the path to a directory on `mapping` step with a single germline sample only.\nAlternatively, it can be used to specify the path to VCF input file on `annotate` step (multiple files can be specified with quotes)."
                },
                "step": {
                    "type": "string",
                    "default": "mapping",
                    "fa_icon": "fas fa-play",
                    "description": "Starting step.",
                    "help_text": "Only one step.\n> **NB** step can be specified with no concern for case, or the presence of `-` or `_`\n",
                    "enum": [
                        "mapping",
                        "prepare_recalibration",
                        "recalibrate",
                        "variant_calling",
                        "annotate",
                        "Control-FREEC",
                        "ControlFREEC",
                        "preparerecalibration",
                        "variantCalling",
                        "variantcalling",
                        "controlfreec"
                    ]
                },
                "outdir": {
                    "type": "string",
                    "description": "The output directory where the results will be saved.",
                    "default": "./results",
                    "fa_icon": "fas fa-folder-open"
                }
            },
            "help_text": ""
        },
        "main_options": {
            "title": "Main options",
            "type": "object",
            "description": "Option used for most of the pipeline",
            "default": "",
            "properties": {
                "tools": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-toolbox",
                    "description": "Tools to use for variant calling and/or for annotation.",
                    "help_text": "Multiple separated with commas.\n\nGermline variant calling can currently only be performed with the following variant callers:\n- FreeBayes, HaplotypeCaller, Manta, mpileup, Strelka, TIDDIT\n\nSomatic variant calling can currently only be performed with the following variant callers:\n- ASCAT, Control-FREEC, FreeBayes, Manta, MSIsensor, Mutect2, Strelka\n\nTumor-only somatic variant calling can currently only be performed with the following variant callers:\n- Control-FREEC, Manta, mpileup, Mutect2, TIDDIT\n\nAnnotation is done using snpEff, VEP, or even both consecutively.\n\n> **NB** As Sarek will use bgzip and tabix to compress and index VCF files annotated, it expects VCF files to be sorted.\n\n\n\n`DNAseq`, `DNAscope` and `TNscope` are only available with `--sentieon`\n\n> **NB** tools can be specified with no concern for case, or the presence of `-` or `_`\n",
                    "list": [
                        "null",
                        "ASCAT",
                        "CNVkit",
                        "ControlFREEC",
                        "FreeBayes",
                        "HaplotypeCaller",
                        "Manta",
                        "mpileup",
                        "MSIsensor",
                        "Mutect2",
                        "Strelka",
                        "TIDDIT",
                        "snpEff",
                        "VEP",
                        "merge",
                        "DNAseq",
                        "DNAscope",
                        "TNscope",
                        "ascat",
                        "cnvkit",
                        "controlfreec",
                        "freebayes",
                        "haplotypecaller",
                        "manta",
                        "msisensor",
                        "mutect2",
                        "strelka",
                        "tiddit",
                        "snpeff",
                        "vep",
                        "dnaseq",
                        "dnascope",
                        "tnscope"
                    ]
                },
                "no_intervals": {
                    "type": "boolean",
                    "fa_icon": "fas fa-ban",
                    "description": "Disable usage of intervals.",
                    "help_text": "Intervals are part of the genome chopped up, used to speed up preprocessing and variant calling"
                },
                "nucleotides_per_second": {
                    "type": "number",
                    "fa_icon": "fas fa-clock",
                    "description": "Estimate interval size.",
                    "help_text": "Intervals are part of the genome chopped up, used to speed up preprocessing and variant calling",
                    "default": 1000
                },
                "sentieon": {
                    "type": "boolean",
                    "fa_icon": "fas fa-tools",
                    "description": "Enable Sentieon if available.",
                    "help_text": "Sentieon is a commercial solution to process genomics data with high computing efficiency, fast turnaround time, exceptional accuracy, and 100% consistency.\n\n> **NB** Adds the following tools for the `--tools` options: `DNAseq`, `DNAscope` and `TNscope`."
                },
                "skip_qc": {
                    "type": "string",
                    "fa_icon": "fas fa-forward",
                    "description": "Disable specified QC and Reporting tools.",
                    "help_text": "Multiple tools can be specified, separated by commas.\n\n> **NB** `--skip_qc BaseRecalibrator` is actually just not saving the reports.\n> **NB** `--skip_qc MarkDuplicates` does not skip `MarkDuplicates` but prevent the collection of duplicate metrics that slows down performance.\n> **NB** tools can be specified with no concern for case, or the presence of `-` or `_`",
                    "list": [
                        "null",
                        "all",
                        "bamQC",
                        "BaseRecalibrator",
                        "BCFtools",
                        "Documentation",
                        "FastQC",
                        "MarkDuplicates",
                        "MultiQC",
                        "samtools",
                        "vcftools",
                        "versions"
                    ],
                    "default": "null"
                },
                "target_bed": {
                    "type": "string",
                    "fa_icon": "fas fa-crosshairs",
                    "description": "Target BED file for whole exome or targeted sequencing.",
                    "help_text": "This parameter does _not_  imply that the workflow is running alignment or variant calling only for the supplied targets.\nInstead, we are aligning for the whole genome, and selecting variants only at the very end by intersecting with the provided target file.\nAdding every exon as an interval in case of `WES` can generate >200K processes or jobs, much more forks, and similar number of directories in the Nextflow work directory.\nFurthermore, primers and/or baits are not 100% specific, (certainly not for MHC and KIR, etc.), quite likely there going to be reads mapping to multiple locations.\nIf you are certain that the target is unique for your genome (all the reads will certainly map to only one location), and aligning to the whole genome is an overkill, it is actually better to change the reference itself.\n\nThe recommended flow for targeted sequencing data is to use the workflow as it is, but also provide a `BED` file containing targets for all steps using the `--target_bed` option.\nThe workflow will pick up these intervals, and activate any `--exome` flag in any tools that allow it to process deeper coverage.\nIt is advised to pad the variant calling regions (exons or target) to some extent before submitting to the workflow."
                }
            },
            "fa_icon": "fas fa-user-cog"
        },
        "trim_split_fastq": {
            "title": "Trim/split FASTQ",
            "type": "object",
            "description": "",
            "default": "",
            "fa_icon": "fas fa-cut",
            "properties": {
                "trim_fastq": {
                    "type": "boolean",
                    "fa_icon": "fas fa-cut",
                    "description": "Run Trim Galore.",
                    "hidden": true,
                    "help_text": "Use this to perform adapter trimming with Trim Galore.\ncf [Trim Galore User Guide](https://github.com/FelixKrueger/TrimGalore/blob/master/Docs/Trim_Galore_User_Guide.md)"
                },
                "clip_r1": {
                    "type": "integer",
                    "fa_icon": "fas fa-cut",
                    "description": "Remove bp from the 5' end of read 1.",
                    "help_text": "This may be useful if the qualities were very poor, or if there is some sort of unwanted bias at the 5' end.\n",
                    "hidden": true
                },
                "clip_r2": {
                    "type": "integer",
                    "description": "Remove bp from the 5' end of read 2.",
                    "help_text": "This may be useful if the qualities were very poor, or if there is some sort of unwanted bias at the 5' end.\n",
                    "fa_icon": "fas fa-cut",
                    "hidden": true
                },
                "three_prime_clip_r1": {
                    "type": "integer",
                    "fa_icon": "fas fa-cut",
                    "description": "Remove bp from the 3' end of read 1 AFTER adapter/quality trimming has been performed.",
                    "help_text": "This may remove some unwanted bias from the 3' end that is not directly related to adapter sequence or basecall quality.\n",
                    "hidden": true
                },
                "three_prime_clip_r2": {
                    "type": "integer",
                    "fa_icon": "fas fa-cut",
                    "description": "Remove bp from the 3' end of read 2 AFTER adapter/quality trimming has been performed.",
                    "help_text": "This may remove some unwanted bias from the 3' end that is not directly related to adapter sequence or basecall quality.\n",
                    "hidden": true
                },
                "trim_nextseq": {
                    "type": "integer",
                    "fa_icon": "fas fa-cut",
                    "description": "Apply the --nextseq=X option, to trim based on quality after removing poly-G tails.",
                    "help_text": "This may remove some unwanted bias from the 3' end that is not directly related to adapter sequence or basecall quality.",
                    "hidden": true
                },
                "save_trimmed": {
                    "type": "boolean",
                    "fa_icon": "fas fa-save",
                    "description": "Save trimmed FastQ file intermediates",
                    "hidden": true
                },
                "split_fastq": {
                    "type": "number",
                    "fa_icon": "fas fa-cut",
                    "description": "Specify how many reads should be contained in the split FastQ file",
                    "help_text": "Use the Nextflow splitFastq operator to specify how many reads should be contained in the split FASTQ file.\ncf [splitfastq documentation](https://www.nextflow.io/docs/latest/operator.html#splitfastq)",
                    "hidden": true
                }
            }
        },
        "preprocessing": {
            "title": "Preprocessing",
            "type": "object",
            "description": "",
            "default": "",
            "fa_icon": "fas fa-toolbox",
            "properties": {
                "aligner": {
                    "type": "string",
                    "default": "bwa-mem",
                    "fa_icon": "fas fa-puzzle-piece",
                    "enum": [
                        "bwa-mem",
                        "bwa-mem2"
                    ],
                    "description": "Specify aligner to be used to map reads to reference genome.",
                    "help_text": "> **WARNING** Current indices for `bwa` in AWS iGenomes are not compatible with `bwa-mem2`.\n> Use `--bwa=false` to have `Sarek` build them automatically.\n\n> **WARNING** BWA-mem2 is in active development\n> Sarek might not be able to require the right amount of resources for it at the moment\n> We recommend to use pre-built indexes",
                    "hidden": true
                },
                "markdup_java_options": {
                    "type": "string",
                    "default": "-Xms4000m -Xmx7g",
                    "fa_icon": "fas fa-memory",
                    "description": "Establish values for GATK MarkDuplicates memory consumption",
                    "help_text": "See [SciLifeLab/Sarek/pull/689](https://github.com/SciLifeLab/Sarek/pull/689)",
                    "hidden": true
                },
                "use_gatk_spark": {
                    "type": "boolean",
                    "fa_icon": "fas fa-forward",
                    "description": "Enable usage of GATK Spark implementation"
                },
                "save_bam_mapped": {
                    "type": "boolean",
                    "fa_icon": "fas fa-download",
                    "description": "Save Mapped BAMs"
                },
                "skip_markduplicates": {
                    "type": "boolean",
                    "fa_icon": "fas fa-fast-forward",
                    "description": "Skip GATK MarkDuplicates",
                    "help_text": "This params will also save the mapped BAMS, to enable restart from step `prepare_recalibration`"
                }
            }
        },
        "variant_calling": {
            "title": "Variant Calling",
            "type": "object",
            "description": "",
            "default": "",
            "fa_icon": "fas fa-toolbox",
            "properties": {
                "ascat_ploidy": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-wrench",
                    "description": "Overwrite ASCAT ploidy",
                    "help_text": "Requires that `--ascat_purity` is set"
                },
                "ascat_purity": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-wrench",
                    "description": "Overwrite ASCAT purity",
                    "help_text": "Requires that `--ascat_ploidy` is set"
                },
                "cf_coeff": {
                    "type": "number",
                    "default": 0.05,
                    "fa_icon": "fas fa-wrench",
                    "description": "Overwrite Control-FREEC coefficientOfVariation"
                },
                "cf_contamination_adjustment": {
                    "type": "boolean",
                    "fa_icon": "fas fa-wrench",
                    "description": "Overwrite Control-FREEC contaminationAdjustement"
                },
                "cf_contamination": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-wrench",
                    "description": "Design known contamination value for Control-FREEC"
                },
                "cf_ploidy": {
                    "type": "number",
                    "default": "2",
                    "fa_icon": "fas fa-wrench",
                    "description": "Overwrite Control-FREEC ploidy"
                },
                "cf_window": {
                    "type": "number",
                    "fa_icon": "fas fa-wrench",
                    "description": "Overwrite Control-FREEC window size",
                    "help_text": "It is recommended to use a window size of 0 for exome data"
                },
                "generate_gvcf": {
                    "type": "boolean",
                    "fa_icon": "fas fa-copy",
                    "description": "Generate g.vcf output from GATK HaplotypeCaller"
                },
                "no_strelka_bp": {
                    "type": "boolean",
                    "fa_icon": "fas fa-ban",
                    "description": "Will not use Manta candidateSmallIndels for Strelka",
                    "help_text": "Not recommended by Best Practices"
                },
                "pon": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Panel-of-normals VCF (bgzipped) for GATK Mutect2 / Sentieon TNscope",
                    "help_text": "Without PON, there will be no calls with PASS in the INFO field, only an unfiltered VCF is written.\nIt is recommended to make your own PON, as it depends on sequencer and library preparation.\nFor tests in iGenomes there is a dummy PON file in the Annotation/GermlineResource directory, but it should not be used as a real PON file.\n\nSee [PON documentation](https://gatk.broadinstitute.org/hc/en-us/articles/360042479112-CreateSomaticPanelOfNormals-BETA)\n> **NB** PON file should be bgzipped."
                },
                "pon_index": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Index of PON panel-of-normals VCF",
                    "help_text": "If none provided, will be generated automatically from the PON bgzipped VCF file."
                },
                "ignore_soft_clipped_bases": {
                    "type": "boolean",
                    "fa_icon": "fas fa-ban",
                    "description": "Do not analyze soft clipped bases in the reads for GATK Mutect2",
                    "help_text": "use the `--dont-use-soft-clipped-bases` params with GATK."
                },
                "umi": {
                    "type": "boolean",
                    "fa_icon": "fas fa-tape",
                    "description": "If provided, UMIs steps will be run to extract and annotate the reads with UMI and create consensus reads",
                    "help_text": "This part of the pipeline uses fgbio to convert the FASTQ files into a unmapped BAM, where reads are tagged with the UMIs extracted from the FASTQ sequences.\nIn order to allow the correct tagging, the UMI sequence must be contained in the read sequence itself, and not in the FASTQ filename.\nFollowing this step, the unmapped BAM is aligned and reads are then grouped based on mapping position and UMI tag.\nFinally, reads in the same groups are collapsed to create a consensus read.\nTo create consensus, we have chosen to use the adjacency method\n\ncf [fgbio](https://github.com/fulcrumgenomics/fgbio)\ncf [UMIs, the problem, the solution and the proof](https://cgatoxford.wordpress.com/2015/08/14/unique-molecular-identifiers-the-problem-the-solution-and-the-proof/)\n\n> **NB** In order for the correct tagging to be performed, a read structure needs to be specified with `--read_structure1` and `--readstructure2`"
                },
                "read_structure1": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-clipboard-list",
                    "description": "When processing UMIs, a read structure should always be provided for each of the fastq files.",
                    "help_text": "If the read does not contain any UMI, the structure will be +T (i.e. only template of any length).\nThe read structure follows a format adopted by different tools and described in the [fgbio documentation](https://github.com/fulcrumgenomics/fgbio/wiki/Read-Structures)"
                },
                "read_structure2": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-clipboard-list",
                    "description": "When processing UMIs, a read structure should always be provided for each of the fastq files.",
                    "help_text": "If the read does not contain any UMI, the structure will be +T (i.e. only template of any length).\nThe read structure follows a format adopted by different tools and described in the [fgbio documentation](https://github.com/fulcrumgenomics/fgbio/wiki/Read-Structures)"
                }
            }
        },
        "annotation": {
            "title": "Annotation",
            "type": "object",
            "description": "",
            "default": "",
            "fa_icon": "fas fa-toolbox",
            "properties": {
                "annotate_tools": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-hammer",
                    "description": "Specify from which tools Sarek should look for VCF files to annotate",
                    "help_text": "Only for step `annotate`",
                    "list": [
                        "null",
                        "HaplotypeCaller",
                        "Manta",
                        "Mutect2",
                        "Strelka",
                        "TIDDIT",
                        "haplotypecaller",
                        "manta",
                        "mutect2",
                        "strelka",
                        "tiddit"
                    ],
                    "hidden": true
                },
                "annotation_cache": {
                    "type": "boolean",
                    "fa_icon": "fas fa-database",
                    "description": "Enable the use of cache for annotation",
                    "help_text": "And disable usage of Sarek snpeff and vep specific containers for annotation\n\nTo be used with `--snpeff_cache` and/or `--vep_cache`",
                    "hidden": true
                },
                "cadd_cache": {
                    "type": "boolean",
                    "fa_icon": "fas fa-database",
                    "description": "Enable CADD cache.",
                    "hidden": true
                },
                "cadd_indels": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-file",
                    "description": "Path to CADD InDels file.",
                    "hidden": true
                },
                "cadd_indels_tbi": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-file",
                    "description": "Path to CADD InDels index.",
                    "hidden": true
                },
                "cadd_wg_snvs": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-file",
                    "description": "Path to CADD SNVs file.",
                    "hidden": true
                },
                "cadd_wg_snvs_tbi": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-file",
                    "description": "Path to CADD SNVs index.",
                    "hidden": true
                },
                "genesplicer": {
                    "type": "boolean",
                    "fa_icon": "fas fa-gavel",
                    "description": "Enable the use of the VEP GeneSplicer plugin.",
                    "hidden": true
                },
                "snpeff_cache": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-database",
                    "description": "Path to snpEff cache",
                    "help_text": "To be used with `--annotation_cache`",
                    "hidden": true
                },
                "vep_cache": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-database",
                    "description": "Path to VEP cache",
                    "help_text": "To be used with `--annotation_cache`",
                    "hidden": true
                }
            }
        },
        "reference_genome_options": {
            "title": "Reference genome options",
            "type": "object",
            "fa_icon": "fas fa-dna",
            "description": "Options for the reference genome files",
            "properties": {
                "genome": {
                    "type": "string",
                    "description": "Name of iGenomes reference.",
                    "fa_icon": "fas fa-book",
                    "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`.\n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.\n"
                },
                "ac_loci": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to ASCAT loci file."
                },
                "ac_loci_gc": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to ASCAT GC correction file."
                },
                "bwa": {
                    "type": "string",
                    "fa_icon": "fas fa-copy",
                    "description": "Path to BWA mem indices.",
                    "help_text": "> **NB** If none provided, will be generated automatically from the FASTA reference."
                },
                "chr_dir": {
                    "type": "string",
                    "fa_icon": "fas fa-folder-open",
                    "description": "Path to chromosomes folder."
                },
                "chr_length": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to chromosomes length file."
                },
                "dbsnp": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to dbsnp file."
                },
                "dbsnp_index": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to dbsnp index.",
                    "help_text": "> **NB** If none provided, will be generated automatically from the dbsnp file."
                },
                "dict": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to FASTA dictionary file.",
                    "help_text": "> **NB** If none provided, will be generated automatically from the FASTA reference."
                },
                "fasta": {
                    "type": "string",
                    "fa_icon": "fas fa-font",
                    "description": "Path to FASTA genome file.",
                    "help_text": "If you have no genome reference available, the pipeline can build one using a FASTA file. This requires additional time and resources, so it's better to use a pre-build index if possible."
                },
                "fasta_fai": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "help_text": "> **NB** If none provided, will be generated automatically from the FASTA reference",
                    "description": "Path to FASTA reference index."
                },
                "germline_resource": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to GATK Mutect2 Germline Resource File",
                    "help_text": "The germline resource VCF file (bgzipped and tabixed) needed by GATK4 Mutect2 is a collection of calls that are likely present in the sample, with allele frequencies.\nThe AF info field must be present.\nYou can find a smaller, stripped gnomAD VCF file (most of the annotation is removed and only calls signed by PASS are stored) in the AWS iGenomes Annotation/GermlineResource folder."
                },
                "germline_resource_index": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to GATK Mutect2 Germline Resource Index",
                    "help_text": "> **NB** If none provided, will be generated automatically from the Germline Resource file, if provided"
                },
                "intervals": {
                    "type": "string",
                    "fa_icon": "fas fa-file-alt",
                    "help_text": "To speed up some preprocessing and variant calling processes, the reference is chopped into smaller pieces.\nThe intervals are chromosomes cut at their centromeres (so each chromosome arm processed separately) also additional unassigned contigs.\nWe are ignoring the `hs37d5` contig that contains concatenated decoy sequences.\nParts of preprocessing and variant calling are done by these intervals, and the different resulting files are then merged.\nThis can parallelize processes, and push down wall clock time significantly.\n\nThe calling intervals can be defined using a .list or a BED file.\nA .list file contains one interval per line in the format `chromosome:start-end` (1-based coordinates).\nA BED file must be a tab-separated text file with one interval per line.\nThere must be at least three columns: chromosome, start, and end (0-based coordinates).\nAdditionally, the score column of the BED file can be used to provide an estimate of how many seconds it will take to call variants on that interval.\nThe fourth column remains unused.\n\n```\n|chr1|10000|207666|NA|47.3|\n```\nThis indicates that variant calling on the interval chr1:10001-207666 takes approximately 47.3 seconds.\n\nThe runtime estimate is used in two different ways.\nFirst, when there are multiple consecutive intervals in the file that take little time to compute, they are processed as a single job, thus reducing the number of processes that needs to be spawned.\nSecond, the jobs with largest processing time are started first, which reduces wall-clock time.\nIf no runtime is given, a time of 1000 nucleotides per second is assumed.\nActual figures vary from 2 nucleotides/second to 30000 nucleotides/second.\nIf you prefer, you can specify the full path to your reference genome when you run the pipeline:\n\n> **NB** If none provided, will be generated automatically from the FASTA reference\n> **NB** Use --no_intervals to disable automatic generation",
                    "description": "Path to intervals file"
                },
                "known_indels": {
                    "type": "string",
                    "fa_icon": "fas fa-copy",
                    "description": "Path to known indels file"
                },
                "known_indels_index": {
                    "type": "string",
                    "fa_icon": "fas fa-copy",
                    "description": "Path to known indels file index",
                    "help_text": "> **NB** If none provided, will be generated automatically from the known index file, if provided"
                },
                "mappability": {
                    "type": "string",
                    "fa_icon": "fas fa-file",
                    "description": "Path to Control-FREEC mappability file"
                },
                "snpeff_db": {
                    "type": "string",
                    "fa_icon": "fas fa-database",
                    "description": "snpEff DB version"
                },
                "species": {
                    "type": "string",
                    "fa_icon": "fas fa-microscope",
                    "description": "snpEff species",
                    "help_text": "If you use AWS iGenomes or a local resource with genomes.conf, this has already been set for you appropriately."
                },
                "vep_cache_version": {
                    "type": "string",
                    "fa_icon": "fas fa-tag",
                    "description": "VEP cache version"
                },
                "save_reference": {
                    "type": "boolean",
                    "fa_icon": "fas fa-download",
                    "description": "Save built references"
                },
                "igenomes_base": {
                    "type": "string",
                    "description": "Directory / URL base for iGenomes references.",
                    "default": "s3://ngi-igenomes/igenomes",
                    "fa_icon": "fas fa-cloud-download-alt"
                },
                "genomes_base": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-map-marker-alt",
                    "description": "Directory / URL base for genomes references.",
                    "help_text": "All files are supposed to be in the same folder"
                },
                "igenomes_ignore": {
                    "type": "boolean",
                    "description": "Do not load the iGenomes reference config.",
                    "fa_icon": "fas fa-ban",
                    "help_text": "Do not load `igenomes.config` when running the pipeline.\nYou may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`.\nThis option will load the `genomes.config` file instead.\n\n> **NB** You can then specify the genome custom and specify at least a FASTA genome file."
                }
            },
            "help_text": "The pipeline config files come bundled with paths to the Illumina iGenomes reference index files.\nThe configuration is set up to use the AWS-iGenomes resource\ncf https://ewels.github.io/AWS-iGenomes/\n"
        },
        "generic_options": {
            "title": "Generic options",
            "type": "object",
            "fa_icon": "fas fa-file-import",
            "description": "Less common options for the pipeline, typically set in a config file.",
            "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.",
            "properties": {
                "help": {
                    "type": "boolean",
                    "description": "Display help text.",
                    "fa_icon": "fas fa-question-circle",
                    "help_text": "You're reading it."
                },
                "publish_dir_mode": {
                    "type": "string",
                    "default": "copy",
                    "description": "Method used to save pipeline results to output directory.",
                    "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.",
                    "fa_icon": "fas fa-copy",
                    "enum": [
                        "symlink",
                        "rellink",
                        "link",
                        "copy",
                        "copyNoFollow",
                        "move"
                    ],
                    "hidden": true
                },
                "email": {
                    "type": "string",
                    "description": "Email address for completion summary.",
                    "fa_icon": "fas fa-envelope",
                    "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.",
                    "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$"
                },
                "validate_params": {
                    "type": "boolean",
                    "description": "Boolean whether to validate parameters against the schema at runtime",
                    "default": true,
                    "fa_icon": "fas fa-check-square",
                    "hidden": true
                },
                "email_on_fail": {
                    "type": "string",
                    "description": "Email address for completion summary, only when pipeline fails.",
                    "fa_icon": "fas fa-exclamation-triangle",
                    "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$",
                    "hidden": true,
                    "help_text": "This works exactly as with `--email`, except emails are only sent if the workflow is not successful."
                },
                "plaintext_email": {
                    "type": "boolean",
                    "description": "Send plain-text email instead of HTML.",
                    "fa_icon": "fas fa-remove-format",
                    "hidden": true,
                    "help_text": "Set to receive plain-text e-mails instead of HTML formatted."
                },
                "max_multiqc_email_size": {
                    "type": "string",
                    "description": "File size limit when attaching MultiQC reports to summary emails.",
                    "default": "25.MB",
                    "fa_icon": "fas fa-file-upload",
                    "hidden": true,
                    "help_text": "If file generated by pipeline exceeds the threshold, it will not be attached."
                },
                "monochrome_logs": {
                    "type": "boolean",
                    "description": "Do not use coloured log outputs.",
                    "fa_icon": "fas fa-palette",
                    "hidden": true,
                    "help_text": "Set to disable colourful command line output and live life in monochrome."
                },
                "multiqc_config": {
                    "type": "string",
                    "description": "Path to MultiQC custom config file.",
                    "fa_icon": "fas fa-cog",
                    "hidden": true
                },
                "tracedir": {
                    "type": "string",
                    "description": "Directory to keep pipeline Nextflow logs and reports.",
                    "default": "${params.outdir}/pipeline_info",
                    "fa_icon": "fas fa-cogs",
                    "hidden": true
                },
                "sequencing_center": {
                    "type": "string",
                    "default": "null",
                    "fa_icon": "fas fa-university",
                    "description": "Name of sequencing center to be displayed in BAM file",
                    "help_text": "It will be in the CN field",
                    "hidden": true
                },
                "show_hidden_params": {
                    "type": "boolean",
                    "fa_icon": "far fa-eye-slash",
                    "description": "Show all params when using `--help`",
                    "hidden": true,
                    "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters."
                }
            }
        },
        "max_job_request_options": {
            "title": "Max job request options",
            "type": "object",
            "fa_icon": "fab fa-acquisitions-incorporated",
            "description": "Set the top limit for requested resources for any single job.",
            "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.",
            "properties": {
                "cpus": {
                    "type": "integer",
                    "default": 8,
                    "fa_icon": "fas fa-microchip",
                    "help_text": "Should be an integer e.g. `--cpus 7`"
                },
                "single_cpu_mem": {
                    "type": "string",
                    "default": "7 GB",
                    "fa_icon": "fas fa-sd-card",
                    "description": "Use to set memory for a single CPU.",
                    "help_text": "Should be a string in the format integer-unit eg. `--single_cpu_mem '8.GB'`"
                },
                "max_cpus": {
                    "type": "integer",
                    "description": "Maximum number of CPUs that can be requested for any single job.",
                    "default": 16,
                    "fa_icon": "fas fa-microchip",
                    "hidden": true,
                    "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`"
                },
                "max_memory": {
                    "type": "string",
                    "description": "Maximum amount of memory that can be requested for any single job.",
                    "default": "128.GB",
                    "fa_icon": "fas fa-memory",
                    "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$",
                    "hidden": true,
                    "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`"
                },
                "max_time": {
                    "type": "string",
                    "description": "Maximum amount of time that can be requested for any single job.",
                    "default": "240.h",
                    "fa_icon": "far fa-clock",
                    "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$",
                    "hidden": true,
                    "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`"
                }
            }
        },
        "institutional_config_options": {
            "title": "Institutional config options",
            "type": "object",
            "fa_icon": "fas fa-university",
            "description": "Parameters used to describe centralised config profiles. These should not be edited.",
            "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.",
            "properties": {
                "custom_config_version": {
                    "type": "string",
                    "description": "Git commit id for Institutional configs.",
                    "default": "master",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog",
                    "help_text": "Provide git commit id for custom Institutional configs hosted at `nf-core/configs`. This was implemented for reproducibility purposes. Default: `master`.\n\n```bash\n## Download and use config file with following git commit id\n--custom_config_version d52db660777c4bf36546ddb188ec530c3ada1b96\n```"
                },
                "custom_config_base": {
                    "type": "string",
                    "description": "Base directory for Institutional configs.",
                    "default": "https://raw.githubusercontent.com/nf-core/configs/master",
                    "hidden": true,
                    "help_text": "If you're running offline, nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell nextflow where to find them with the `custom_config_base` option. For example:\n\n```bash\n## Download and unzip the config files\ncd /path/to/my/configs\nwget https://github.com/nf-core/configs/archive/master.zip\nunzip master.zip\n\n## Run the pipeline\ncd /path/to/my/data\nnextflow run /path/to/pipeline/ --custom_config_base /path/to/my/configs/configs-master/\n```\n\n> Note that the nf-core/tools helper package has a `download` command to download all required pipeline files + singularity containers + institutional configs in one go for you, to make this process easier.",
                    "fa_icon": "fas fa-users-cog"
                },
                "hostnames": {
                    "type": "string",
                    "description": "Institutional configs hostname.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_name": {
                    "type": "string",
                    "description": "Institutional config name.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_description": {
                    "type": "string",
                    "description": "Institutional config description.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_contact": {
                    "type": "string",
                    "description": "Institutional config contact information.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                },
                "config_profile_url": {
                    "type": "string",
                    "description": "Institutional config URL link.",
                    "hidden": true,
                    "fa_icon": "fas fa-users-cog"
                }
            }
        }
    },
    "allOf": [
        {
            "$ref": "#/definitions/input_output_options"
        },
        {
            "$ref": "#/definitions/main_options"
        },
        {
            "$ref": "#/definitions/trim_split_fastq"
        },
        {
            "$ref": "#/definitions/preprocessing"
        },
        {
            "$ref": "#/definitions/variant_calling"
        },
        {
            "$ref": "#/definitions/annotation"
        },
        {
            "$ref": "#/definitions/reference_genome_options"
        },
        {
            "$ref": "#/definitions/generic_options"
        },
        {
            "$ref": "#/definitions/max_job_request_options"
        },
        {
            "$ref": "#/definitions/institutional_config_options"
        }
    ]
}