{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://raw.githubusercontent.com/nf-core/bacass/master/nextflow_schema.json",
    "title": "nf-core/bacass pipeline parameters",
    "description": "Simple bacterial assembly and annotation",
    "type": "object",
    "$defs": {
        "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", "outdir"],
            "properties": {
                "input": {
                    "type": "string",
                    "format": "file-path",
                    "exist": true,
                    "schema": "assets/schema_input.json",
                    "mimetype": "text/csv",
                    "description": "Path to tab-separated sample sheet",
                    "help_text": "Path to sample sheet, either tab-separated (.tsv), comma-separated (.csv), or in YAML format (.yml/.yaml), that points to compressed fastq files.\n\nThe sample sheet must have six tab-separated columns/entries with the following headers: \n- `ID` (required): Unique sample IDs, must start with a letter, and can only contain letters, numbers or underscores\n- `R1` (optional): Paths to (forward) reads zipped FastQ files\n- `R2` (optional): Paths to reverse reads zipped FastQ files, required if the data is paired-end\n- `LongFastQ` (optional): Paths to long reads zipped FastQ files\n- `Fast5` (optional): Paths to the directory containing FAST5 files\n- `GenomeSize` (optional): A number (including decimals) ending with 'm', representing genome size.\n\n Please be aware that files will be required based on the chosen assembly type specified with the '--assembly_type' option, which can be set to one of the following values: ['short', 'long', 'hybrid'].`",
                    "fa_icon": "fas fa-dna"
                },
                "outdir": {
                    "type": "string",
                    "format": "directory-path",
                    "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.",
                    "fa_icon": "fas fa-folder-open"
                },
                "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})$"
                }
            }
        },
        "qc_and_trim": {
            "title": "QC and Trim",
            "type": "object",
            "description": "Parameters for QC and trim short-reads",
            "default": "",
            "properties": {
                "fastp_args": {
                    "type": "string",
                    "description": "This can be used to pass arguments to [Fastp](https://github.com/OpenGene/fastp)"
                },
                "save_trimmed": {
                    "type": "boolean",
                    "description": "save trimmed files"
                },
                "save_trimmed_fail": {
                    "type": "boolean",
                    "description": "save files that failed to pass trimming thresholds ending in `*.fail.fastq.gz`"
                },
                "skip_fastqc": {
                    "type": "boolean",
                    "description": "Skip FastQC"
                },
                "skip_nanoplot": {
                    "type": "boolean",
                    "fa_icon": "fas fa-forward",
                    "description": "Skip Nanoplot"
                },
                "skip_toulligqc": {
                    "type": "boolean",
                    "fa_icon": "fas fa-forward",
                    "description": "Skip ToulligQC"
                },
                "skip_fastp": {
                    "type": "boolean",
                    "description": "Skip FastP"
                },
                "discard_trimmed_pass": {
                    "type": "boolean",
                    "default": false,
                    "description": "Specify true to not write any reads that pass trimming thresholds.This can be used to use fastp for the output report only."
                },
                "long_reads_filtering": {
                    "type": "string",
                    "default": "porechop",
                    "description": "Tool for ONT read filtering"
                },
                "filtlong_args": {
                    "type": "string",
                    "description": "Arguments for running Filtlong"
                },
                "filtlong_minlen": {
                    "type": "integer",
                    "default": 10,
                    "description": "Minimun length for Filtlong to work"
                }
            }
        },
        "contamination_screening": {
            "title": "Contamination Screening",
            "type": "object",
            "description": "",
            "default": "",
            "fa_icon": "fas fa-box",
            "properties": {
                "kraken2db": {
                    "type": "string",
                    "fa_icon": "fab fa-gitkraken",
                    "help_text": "See [Kraken2 homepage](https://benlangmead.github.io/aws-indexes/k2) for download\nlinks. Minikraken2 8GB is a reasonable choice, since we run Kraken here mainly just to check for\nsample purity.",
                    "description": "Path to Kraken2 database."
                },
                "kmerfinderdb": {
                    "type": "string",
                    "description": "Path to the Kmerfinder bacteria database (ie: '/path_to/kmerfinder/bacteria/ or '/path_to/kmerfinder/bacteria.tar.gz'). Only taxonomic group 'bacteria' is allowed. See database installation (guidelines)[https://bitbucket.org/genomicepidemiology/kmerfinder_db/src/master/] for details. The latest version can be downloaded from the KmerFinder Database FTP site  or directly during pipeline execution with. Example:\n\n```--kmerfinderdb 'ftp://ftp.cbs.dtu.dk/public/CGE/databases/KmerFinder/version/latest/bacteria.tar.gz'```\n(Note: Downloading the KmerFinder database (~30GB) via FTP can be time-consuming. It's recommended to pre-download the database and provide the *.tar.gz file using this parameter instead of URL site.).\nAn older version is available on (Zenodo)[https://zenodo.org/records/13447056/files/20190108_kmerfinder_stable_dirs.tar.gz]."
                },
                "reference_fasta": {
                    "type": "string",
                    "description": "Reference FASTA file."
                },
                "reference_gff": {
                    "type": "string",
                    "description": "Reference GFF file."
                }
            }
        },
        "assembly_parameters": {
            "title": "Assembly parameters",
            "type": "object",
            "description": "Parameters for the assembly",
            "default": "",
            "fa_icon": "fas fa-puzzle-piece",
            "properties": {
                "assembler": {
                    "type": "string",
                    "default": "unicycler",
                    "fa_icon": "fas fa-puzzle-piece",
                    "description": "The assembler to use for assembly. Use the appropriate assembler according to the chosen assembly_type. Refer to the README.md for further clarification.",
                    "enum": ["unicycler", "canu", "miniasm", "dragonflye"]
                },
                "assembly_type": {
                    "type": "string",
                    "fa_icon": "fas fa-fingerprint",
                    "help_text": "This adjusts the type of assembly done with the input data and can be any of `long`, `short` or `hybrid`.",
                    "description": "Which type of assembly to perform.",
                    "enum": ["short", "long", "hybrid"]
                },
                "unicycler_args": {
                    "type": "string",
                    "fa_icon": "fas fa-bicycle",
                    "description": "Extra arguments for Unicycler",
                    "help_text": "This advanced option allows you to pass extra arguments to Unicycler (e.g. `\"--mode conservative\"` or `\"--no_correct\"`). For this to work you need to quote the arguments and add at least one space."
                },
                "canu_mode": {
                    "type": "string",
                    "enum": ["-pacbio", "-nanopore", "-pacbio-hifi", "null"],
                    "description": "Allowed technologies for long read assembly."
                },
                "canu_args": {
                    "type": "string",
                    "fa_icon": "fas fa-ship",
                    "description": "This can be used to supply [extra options](https://canu.readthedocs.io/en/latest/quick-start.html) to the Canu assembler. Will be ignored when other assemblers are used."
                },
                "dragonflye_args": {
                    "type": "string",
                    "description": "Extra arguments for [Dragonflye](https://github.com/rpetit3/dragonflye#usage)",
                    "help_text": "This advanced option allows you to add extra arguments to Dragonflye (e.g.: `\"--gsize 2.4m\"`). For those arguments with no values/options associated (e.g.: `\"--nopolish\"` or `\"--nofilter\"`...) you need to add an extra space at the begining of the input string to params.dragonflye_args. Example: `--params.dragonflye_args ' --nopolish'`"
                }
            }
        },
        "busco_options": {
            "title": "BUSCO options",
            "type": "object",
            "description": "Options for running BUSCO",
            "default": "",
            "fa_icon": "fas fa-dna",
            "properties": {
                "busco_lineage": {
                    "type": "string",
                    "default": "bacteria_odb10",
                    "description": "BUSCO lineage to use, you can use other BUSCO lineages, these are available in: https://busco.ezlab.org/list_of_lineages.html"
                },
                "busco_mode": {
                    "type": "string",
                    "default": "genome",
                    "description": "BUSCO mode to use",
                    "enum": ["genome", "proteins", "transcriptome"]
                },
                "busco_db_path": {
                    "type": ["string", "null"],
                    "description": "Path to BUSCO database"
                },
                "busco_config_file": {
                    "type": ["string", "null"],
                    "description": "Path to BUSCO config file"
                },
                "busco_clean_intermediates": {
                    "type": "boolean",
                    "default": false,
                    "description": "Clean intermediate BUSCO files"
                }
            }
        },
        "assembly_polishing": {
            "title": "Assembly Polishing",
            "type": "object",
            "description": "",
            "default": "",
            "fa_icon": "fas fa-user-astronaut",
            "properties": {
                "polish_method": {
                    "type": "string",
                    "default": "medaka",
                    "fa_icon": "fas fa-hotdog",
                    "description": "Which assembly polishing method to use.",
                    "help_text": "Can be used to define which polishing method is used by default for long reads.",
                    "enum": ["medaka", "nanopolish"]
                }
            }
        },
        "annotation": {
            "title": "Annotation",
            "type": "object",
            "description": "Parameters for the annotation",
            "default": "",
            "fa_icon": "fas fa-align-left",
            "properties": {
                "annotation_tool": {
                    "type": "string",
                    "default": "prokka",
                    "description": "The annotation method to annotate the final assembly.",
                    "enum": ["prokka", "bakta", "dfast", "liftoff"]
                },
                "prokka_args": {
                    "type": "string",
                    "description": "Extra arguments for prokka annotation tool.",
                    "help_text": "This advanced option allows you to pass extra arguments to Prokka (e.g. `\" --rfam\"` or `\" --genus name\"`). For this to work you need to quote the arguments and add at least one space between the arguments. Example:\n\n```bash\n--prokka_args `--rfam --genus Escherichia Coli`\n```\n"
                },
                "prokka_proteins": {
                    "type": "string",
                    "description": "FASTA file with protein sequences to be used as reference by PROKKA.",
                    "help_text": "If a file with protein sequences are provided, PROKKA will use this to annotate proteins in the assembly."
                },
                "baktadb": {
                    "type": "string",
                    "description": "Path to Bakta database"
                },
                "baktadb_download": {
                    "type": "boolean",
                    "description": "Download Bakta database"
                },
                "baktadb_download_args": {
                    "type": "string",
                    "default": "--type light",
                    "description": "This can be used to supply [extra options](https://github.com/oschwengers/bakta#database-download) to the Bakta download module",
                    "enum": ["--type light", "--type full"]
                },
                "dfast_config": {
                    "type": "string",
                    "default": "assets/test_config_dfast.py",
                    "description": "Specifies a configuration file for the [DFAST](https://github.com/nigyta/dfast_core) annotation method.",
                    "help_text": "If you want to know how to create your config file, please refer to the [DFAST](https://github.com/nigyta/dfast_core) readme on how to create one.  The default config (`assets/test_config_dfast.py`) is just included for testing, so if you want to annotate using DFAST, you have to create a config!"
                },
                "liftoff_ref_from_kmerfinder": {
                    "type": "boolean",
                    "description": "Use the reference files (.fasta, .gff) from kmerfinder step for LIFTOFF."
                }
            }
        },
        "skipping_options": {
            "title": "Skipping Options",
            "type": "object",
            "description": "",
            "default": "",
            "fa_icon": "fas fa-forward",
            "properties": {
                "skip_kraken2": {
                    "type": "boolean",
                    "fa_icon": "fas fa-forward",
                    "description": "Skip running Kraken2 classifier on reads."
                },
                "skip_kmerfinder": {
                    "type": "boolean",
                    "description": "Skip contamination analysis with [Kmerfinder](https://bitbucket.org/genomicepidemiology/kmerfinder/src/master/)",
                    "fa_icon": "fas fa-forward"
                },
                "skip_annotation": {
                    "type": "boolean",
                    "fa_icon": "fas fa-forward",
                    "description": "Skip annotating the assembly with Prokka /DFAST."
                },
                "skip_pycoqc": {
                    "type": "boolean",
                    "fa_icon": "fas fa-forward",
                    "description": "Skip running `PycoQC` on long read input."
                },
                "skip_busco": {
                    "type": "boolean",
                    "description": "Skip BUSCO",
                    "fa_icon": "fas fa-forward"
                },
                "skip_polish": {
                    "type": "boolean",
                    "fa_icon": "fas fa-forward",
                    "description": "Skip polishing the long-read assembly with fast5 input. Will not affect short/hybrid assemblies."
                },
                "skip_multiqc": {
                    "type": "boolean",
                    "description": "Skip MultiQC",
                    "fa_icon": "fas fa-forward"
                }
            }
        },
        "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"
                },
                "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 this parameter.",
                    "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"
                }
            }
        },
        "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": {
                "version": {
                    "type": "boolean",
                    "description": "Display version and exit.",
                    "fa_icon": "fas fa-question-circle",
                    "hidden": true
                },
                "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
                },
                "multiqc_title": {
                    "type": "string",
                    "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.",
                    "fa_icon": "fas fa-file-signature"
                },
                "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})$",
                    "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.",
                    "hidden": true
                },
                "plaintext_email": {
                    "type": "boolean",
                    "description": "Send plain-text email instead of HTML.",
                    "fa_icon": "fas fa-remove-format",
                    "hidden": true
                },
                "max_multiqc_email_size": {
                    "type": "string",
                    "description": "File size limit when attaching MultiQC reports to summary emails.",
                    "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$",
                    "default": "25.MB",
                    "fa_icon": "fas fa-file-upload",
                    "hidden": true
                },
                "monochrome_logs": {
                    "type": "boolean",
                    "description": "Do not use coloured log outputs.",
                    "fa_icon": "fas fa-palette",
                    "hidden": true
                },
                "hook_url": {
                    "type": "string",
                    "description": "Incoming hook URL for messaging service",
                    "fa_icon": "fas fa-people-group",
                    "help_text": "Incoming hook URL for messaging service. Currently, MS Teams and Slack are supported.",
                    "hidden": true
                },
                "multiqc_config": {
                    "type": "string",
                    "format": "file-path",
                    "description": "Custom config file to supply to MultiQC.",
                    "fa_icon": "fas fa-cog",
                    "hidden": true
                },
                "multiqc_logo": {
                    "type": "string",
                    "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file",
                    "fa_icon": "fas fa-image",
                    "hidden": true
                },
                "multiqc_methods_description": {
                    "type": "string",
                    "description": "Custom MultiQC yaml file containing HTML including a methods description.",
                    "fa_icon": "fas fa-cog"
                },
                "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
                },
                "pipelines_testdata_base_path": {
                    "type": "string",
                    "fa_icon": "far fa-check-circle",
                    "description": "Base URL or local path to location of pipeline test dataset files",
                    "default": "https://raw.githubusercontent.com/nf-core/test-datasets/",
                    "hidden": true
                },
                "trace_report_suffix": {
                    "type": "string",
                    "fa_icon": "far calendar",
                    "description": "Suffix to add to the trace report filename. Default is the date and time in the format yyyy-MM-dd_HH-mm-ss.",
                    "hidden": true
                }
            }
        }
    },
    "allOf": [
        {
            "$ref": "#/$defs/input_output_options"
        },
        {
            "$ref": "#/$defs/qc_and_trim"
        },
        {
            "$ref": "#/$defs/contamination_screening"
        },
        {
            "$ref": "#/$defs/assembly_parameters"
        },
        {
            "$ref": "#/$defs/busco_options"
        },
        {
            "$ref": "#/$defs/assembly_polishing"
        },
        {
            "$ref": "#/$defs/annotation"
        },
        {
            "$ref": "#/$defs/skipping_options"
        },
        {
            "$ref": "#/$defs/institutional_config_options"
        },
        {
            "$ref": "#/$defs/generic_options"
        }
    ]
}
