{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "cutadapt",
  "description": "Cutadapt removes adapter sequences from high-throughput sequencing reads.\n",
  "type": "object",
  "$defs": {
    "specify adapters for r1": {
      "title": "Specify Adapters for R1",
      "type": "object",
      "description": "No description",
      "properties": {
        "adapter": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sequence of an adapter ligated to the 3' end (paired data:\nof the first read)",
          "help_text": "Type: `string`, multiple: `True`. "
        },
        "front": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sequence of an adapter ligated to the 5' end (paired data:\nof the first read)",
          "help_text": "Type: `string`, multiple: `True`. "
        },
        "anywhere": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sequence of an adapter that may be ligated to the 5' or 3'\nend (paired data: of the first read)",
          "help_text": "Type: `string`, multiple: `True`. "
        }
      }
    },
    "specify adapters using fasta files for r1": {
      "title": "Specify Adapters using Fasta files for R1",
      "type": "object",
      "description": "No description",
      "properties": {
        "adapter_fasta": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "format": "path",
          "description": "Fasta file containing sequences of an adapter ligated to the 3' end (paired data:\nof the first read)",
          "help_text": "Type: `file`, multiple: `True`, direction: `input`. "
        },
        "front_fasta": {
          "type": "string",
          "format": "path",
          "description": "Fasta file containing sequences of an adapter ligated to the 5' end (paired data:\nof the first read)",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "anywhere_fasta": {
          "type": "string",
          "format": "path",
          "description": "Fasta file containing sequences of an adapter that may be ligated to the 5' or 3'\nend (paired data: of the first read)",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        }
      }
    },
    "specify adapters for r2": {
      "title": "Specify Adapters for R2",
      "type": "object",
      "description": "No description",
      "properties": {
        "adapter_r2": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sequence of an adapter ligated to the 3' end (paired data:\nof the first read)",
          "help_text": "Type: `string`, multiple: `True`. "
        },
        "front_r2": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sequence of an adapter ligated to the 5' end (paired data:\nof the first read)",
          "help_text": "Type: `string`, multiple: `True`. "
        },
        "anywhere_r2": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sequence of an adapter that may be ligated to the 5' or 3'\nend (paired data: of the first read)",
          "help_text": "Type: `string`, multiple: `True`. "
        }
      }
    },
    "specify adapters using fasta files for r2": {
      "title": "Specify Adapters using Fasta files for R2",
      "type": "object",
      "description": "No description",
      "properties": {
        "adapter_r2_fasta": {
          "type": "string",
          "format": "path",
          "description": "Fasta file containing sequences of an adapter ligated to the 3' end (paired data:\nof the first read)",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "front_r2_fasta": {
          "type": "string",
          "format": "path",
          "description": "Fasta file containing sequences of an adapter ligated to the 5' end (paired data:\nof the first read)",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "anywhere_r2_fasta": {
          "type": "string",
          "format": "path",
          "description": "Fasta file containing sequences of an adapter that may be ligated to the 5' or 3'\nend (paired data: of the first read)",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        }
      }
    },
    "paired-end options": {
      "title": "Paired-end options",
      "type": "object",
      "description": "No description",
      "properties": {
        "pair_adapters": {
          "type": "boolean",
          "description": "Treat adapters given with -a/-A etc",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "pair_filter": {
          "type": "string",
          "description": "Which of the reads in a paired-end read have to match the\nfiltering criterion in order for the pair to be filtered.\n",
          "help_text": "Type: `string`, multiple: `False`, choices: ``any`, `both`, `first``. ",
          "enum": [
            "any",
            "both",
            "first"
          ]
        },
        "interleaved": {
          "type": "boolean",
          "description": "Read and/or write interleaved paired-end reads.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "input parameters": {
      "title": "Input parameters",
      "type": "object",
      "description": "No description",
      "properties": {
        "input": {
          "type": "string",
          "format": "path",
          "exists": true,
          "description": "Input fastq file for single-end reads or R1 for paired-end reads.\n",
          "help_text": "Type: `file`, multiple: `False`, required, direction: `input`. "
        },
        "input_r2": {
          "type": "string",
          "format": "path",
          "description": "Input fastq file for R2 in the case of paired-end reads.\n",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "error_rate": {
          "type": "number",
          "description": "Maximum allowed error rate (if 0 <= E < 1), or absolute\nnumber of errors for full-length adapter match (if E is an\ninteger >= 1)",
          "help_text": "Type: `double`, multiple: `False`, example: `0.1`. "
        },
        "no_indels": {
          "type": "boolean",
          "description": "Allow only mismatches in alignments.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "times": {
          "type": "integer",
          "description": "Remove up to COUNT adapters from each read",
          "help_text": "Type: `integer`, multiple: `False`, example: `1`. "
        },
        "overlap": {
          "type": "integer",
          "description": "Require MINLENGTH overlap between read and adapter for an\nadapter to be found",
          "help_text": "Type: `integer`, multiple: `False`, example: `3`. "
        },
        "match_read_wildcards": {
          "type": "boolean",
          "description": "Interpret IUPAC wildcards in reads.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "no_match_adapter_wildcards": {
          "type": "boolean",
          "description": "Do not interpret IUPAC wildcards in adapters.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "action": {
          "type": "string",
          "description": "What to do if a match was found",
          "help_text": "Type: `string`, multiple: `False`, example: `\"trim\"`, choices: ``trim`, `retain`, `mask`, `lowercase`, `none``. ",
          "enum": [
            "trim",
            "retain",
            "mask",
            "lowercase",
            "none"
          ]
        },
        "revcomp": {
          "type": "boolean",
          "description": "Check both the read and its reverse complement for adapter\nmatches",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "demultiplexing options": {
      "title": "Demultiplexing options",
      "type": "object",
      "description": "No description",
      "properties": {
        "demultiplex_mode": {
          "type": "string",
          "description": "Enable demultiplexing and set the mode for it.\nWith mode 'unique_dual', adapters from the first and second read are used,\nand the indexes from the reads are only used in pairs",
          "help_text": "Type: `string`, multiple: `False`, choices: ``single`, `unique_dual`, `combinatorial_dual``. ",
          "enum": [
            "single",
            "unique_dual",
            "combinatorial_dual"
          ]
        }
      }
    },
    "read modifications": {
      "title": "Read modifications",
      "type": "object",
      "description": "No description",
      "properties": {
        "cut": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Remove LEN bases from each read (or R1 if paired; use --cut_r2\noption for R2)",
          "help_text": "Type: `integer`, multiple: `True`. "
        },
        "cut_r2": {
          "type": "array",
          "items": {
            "type": "integer"
          },
          "description": "Remove LEN bases from each read (for R2)",
          "help_text": "Type: `integer`, multiple: `True`. "
        },
        "nextseq_trim": {
          "type": "string",
          "description": "NextSeq-specific quality trimming (each read)",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "quality_cutoff": {
          "type": "string",
          "description": "Trim low-quality bases from 5' and/or 3' ends of each read\nbefore adapter removal",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "quality_cutoff_r2": {
          "type": "string",
          "description": "Quality-trimming cutoff for R2",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "quality_base": {
          "type": "integer",
          "description": "Assume that quality values in FASTQ are encoded as\nascii(quality + N)",
          "help_text": "Type: `integer`, multiple: `False`, example: `33`. "
        },
        "poly_a": {
          "type": "boolean",
          "description": "Trim poly-A tails",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "length": {
          "type": "integer",
          "description": "Shorten reads to LENGTH",
          "help_text": "Type: `integer`, multiple: `False`. "
        },
        "trim_n": {
          "type": "boolean",
          "description": "Trim N's on ends of reads.",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "length_tag": {
          "type": "string",
          "description": "Search for TAG followed by a decimal number in the\ndescription field of the read",
          "help_text": "Type: `string`, multiple: `False`, example: `\"length=\"`. "
        },
        "strip_suffix": {
          "type": "string",
          "description": "Remove this suffix from read names if present",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "prefix": {
          "type": "string",
          "description": "Add this prefix to read names",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "suffix": {
          "type": "string",
          "description": "Add this suffix to read names; can also include {name}\n",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "rename": {
          "type": "string",
          "description": "Rename reads using TEMPLATE containing variables such as\n{id}, {adapter_name} etc",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "zero_cap": {
          "type": "boolean",
          "description": "Change negative quality values to zero.",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "filtering of processed reads": {
      "title": "Filtering of processed reads",
      "type": "object",
      "description": "Filters are applied after above read modifications. Paired-end reads are\nalways discarded pairwise (see also --pair_filter).\n",
      "properties": {
        "minimum_length": {
          "type": "string",
          "description": "Discard reads shorter than LEN",
          "help_text": "Type: `string`, multiple: `False`, example: `\"0\"`. "
        },
        "maximum_length": {
          "type": "string",
          "description": "Discard reads longer than LEN",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "max_n": {
          "type": "string",
          "description": "Discard reads with more than COUNT 'N' bases",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "max_expected_errors": {
          "type": "string",
          "description": "Discard reads whose expected number of errors (computed\nfrom quality values) exceeds ERRORS.\n",
          "help_text": "Type: `long`, multiple: `False`. "
        },
        "max_average_error_rate": {
          "type": "string",
          "description": "as --max_expected_errors (see above), but divided by\nlength to account for reads of varying length.\n",
          "help_text": "Type: `long`, multiple: `False`. "
        },
        "discard_trimmed": {
          "type": "boolean",
          "description": "Discard reads that contain an adapter",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "discard_untrimmed": {
          "type": "boolean",
          "description": "Discard reads that do not contain an adapter.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "discard_casava": {
          "type": "boolean",
          "description": "Discard reads that did not pass CASAVA filtering (header\nhas :Y:).\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "output parameters": {
      "title": "Output parameters",
      "type": "object",
      "description": "No description",
      "properties": {
        "report": {
          "type": "string",
          "description": "Which type of report to print: 'full' (default) or 'minimal'.\n",
          "help_text": "Type: `string`, multiple: `False`, example: `\"full\"`, choices: ``full`, `minimal``. ",
          "enum": [
            "full",
            "minimal"
          ]
        },
        "json": {
          "type": "boolean",
          "description": "Write report in JSON format to this file.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "output": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "format": "path",
          "description": "Glob pattern for matching the expected output files.\nShould include `$output_dir`",
          "help_text": "Type: `file`, multiple: `True`, required, default: `\"$id.$key.output_*.gz\"`, direction: `output`, example: `[\"fastq/*_001.fastq.gz\"]`. ",
          "default": "$id.$key.output_*.gz"
        },
        "fasta": {
          "type": "boolean",
          "description": "Output FASTA to standard output even on FASTQ input.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "info_file": {
          "type": "boolean",
          "description": "Write information about each read and its adapter matches\ninto info.txt in the output directory.\nSee the documentation for the file format.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "debug": {
      "title": "Debug",
      "type": "object",
      "description": "No description",
      "properties": {
        "debug": {
          "type": "boolean",
          "description": "Print debug information",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "nextflow input-output arguments": {
      "title": "Nextflow input-output arguments",
      "type": "object",
      "description": "Input/output parameters for Nextflow itself. Please note that both publishDir and publish_dir are supported but at least one has to be configured.",
      "properties": {
        "publish_dir": {
          "type": "string",
          "description": "Path to an output directory.",
          "help_text": "Type: `string`, multiple: `False`, required, example: `\"output/\"`. "
        }
      }
    }
  },
  "allOf": [
    {
      "$ref": "#/$defs/specify adapters for r1"
    },
    {
      "$ref": "#/$defs/specify adapters using fasta files for r1"
    },
    {
      "$ref": "#/$defs/specify adapters for r2"
    },
    {
      "$ref": "#/$defs/specify adapters using fasta files for r2"
    },
    {
      "$ref": "#/$defs/paired-end options"
    },
    {
      "$ref": "#/$defs/input parameters"
    },
    {
      "$ref": "#/$defs/demultiplexing options"
    },
    {
      "$ref": "#/$defs/read modifications"
    },
    {
      "$ref": "#/$defs/filtering of processed reads"
    },
    {
      "$ref": "#/$defs/output parameters"
    },
    {
      "$ref": "#/$defs/debug"
    },
    {
      "$ref": "#/$defs/nextflow input-output arguments"
    }
  ]
}
