{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "samtools_view",
  "description": "Views and converts SAM/BAM/CRAM files.",
  "type": "object",
  "$defs": {
    "inputs": {
      "title": "Inputs",
      "type": "object",
      "description": "No description",
      "properties": {
        "input": {
          "type": "string",
          "format": "path",
          "exists": true,
          "description": "Input SAM, BAM, or CRAM file.",
          "help_text": "Type: `file`, multiple: `False`, required, direction: `input`. "
        },
        "fai_reference": {
          "type": "string",
          "format": "path",
          "description": "A tab-delimited FILE",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "reference": {
          "type": "string",
          "format": "path",
          "description": "A FASTA format reference FILE, optionally compressed by bgzip and ideally indexed by samtools faidx.\nIf an index is not present one will be generated for you, if the reference file is local.\nIf the reference file is not local, but is accessed instead via an https://, s3:// or other URL,\nthe index file will need to be supplied by the server alongside the reference",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "target_file": {
          "type": "string",
          "format": "path",
          "description": "Only output alignments overlapping the input BED FILE [null].\n",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "region_file": {
          "type": "string",
          "format": "path",
          "description": "Use an index and multi-region iterator to only output alignments overlapping the input BED FILE.\nEquivalent to --use_index --target_file FILE.\n",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "qname_file": {
          "type": "string",
          "format": "path",
          "description": "Output only alignments with read names listed in FILE",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "read_group_file": {
          "type": "string",
          "format": "path",
          "description": "Output alignments in read groups listed in FILE [null]",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "use_index": {
          "type": "boolean",
          "description": "Use the multi-region iterator on the union of a BED file and command-line region arguments.\nThis avoids re-reading the same regions of files so can sometimes be much faster",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "outputs": {
      "title": "Outputs",
      "type": "object",
      "description": "No description",
      "properties": {
        "output": {
          "type": "string",
          "format": "path",
          "description": "Output to FILE instead of [stdout].",
          "help_text": "Type: `file`, multiple: `False`, required, default: `\"$id.$key.output.bam\"`, direction: `output`, example: `\"output.bam\"`. ",
          "default": "$id.$key.output.bam"
        },
        "bam": {
          "type": "boolean",
          "description": "Output in the BAM format.",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "cram": {
          "type": "boolean",
          "description": "Output in the CRAM format (requires --reference).\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "fast": {
          "type": "boolean",
          "description": "Enable fast compression",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "uncompressed": {
          "type": "boolean",
          "description": "Output uncompressed data",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "with_header": {
          "type": "boolean",
          "description": "Include the header in the output.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "header_only": {
          "type": "boolean",
          "description": "Output the header only.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "no_header": {
          "type": "boolean",
          "description": "When producing SAM format, output alignment records but not headers.\nThis is the default; the option can be used to reset the effect of \n--with_header/--header_only.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "count": {
          "type": "boolean",
          "description": "Instead of printing the alignments, only count them and print the total number.\nAll filter options, such as --require_flags, --excl_flags, and --min_MQ, are taken\ninto account",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "output_unselected": {
          "type": "string",
          "format": "path",
          "description": "Write alignments that are not selected by the various filter options to FILE.\nWhen this option is used, all alignments (or all alignments intersecting the regions\nspecified) are written to either the output file or this file, but never both.\n",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "unmap": {
          "type": "boolean",
          "description": "Set the UNMAP flag on alignments that are not selected by the filter options.\nThese alignments are then written to the normal output",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "read_group": {
          "type": "string",
          "description": "Output alignments in read group STR [null]",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "tag": {
          "type": "string",
          "description": "Only output alignments with tag STR1 and associated value STR2, which can be a string or an integer\n[null].\nThe value can be omitted, in which case only the tag is considered.\nNote that this option does not specify a tag type",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "tag_file": {
          "type": "string",
          "format": "path",
          "description": "Only output alignments with tag STR and associated values listed in FILE.\n",
          "help_text": "Type: `file`, multiple: `False`, direction: `input`. "
        },
        "min_MQ": {
          "type": "integer",
          "description": "Skip alignments with MAPQ smaller than INT.\n",
          "help_text": "Type: `integer`, multiple: `False`, default: `0`. ",
          "default": 0
        },
        "library": {
          "type": "string",
          "description": "Only output alignments in library STR.\n",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "min_qlen": {
          "type": "integer",
          "description": "Only output alignments with number of CIGAR bases consuming query sequence >= INT.\n",
          "help_text": "Type: `integer`, multiple: `False`, default: `0`. ",
          "default": 0
        },
        "expr": {
          "type": "string",
          "description": "Only include alignments that match the filter expression STR",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "require_flags": {
          "type": "string",
          "description": "Only output alignments with all bits set in FLAG present in the FLAG field",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "excl_flags": {
          "type": "string",
          "description": "Do not output alignments with any bits set in FLAG present in the FLAG field",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "excl_all_flags": {
          "type": "integer",
          "description": "Do not output alignments with all bits set in INT present in the FLAG field",
          "help_text": "Type: `integer`, multiple: `False`. "
        },
        "incl_flags": {
          "type": "string",
          "description": "Only output alignments with any bit set in FLAG present in the FLAG field",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "remove_tag": {
          "type": "string",
          "description": "Read tag(s) to exclude from output (repeatable) [null]",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "keep_tag": {
          "type": "string",
          "description": "This keeps only tags listed in STR and is directly equivalent to --remove_tag ^STR",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "remove_B": {
          "type": "boolean",
          "description": "Collapse the backward CIGAR operation.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "add_flags": {
          "type": "string",
          "description": "Adds flag(s) to read",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "remove_flags": {
          "type": "string",
          "description": "Remove flag(s) from read",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "subsample": {
          "type": "number",
          "description": "Output only a proportion of the input alignments, as specified by 0.0 <= FLOAT <= 1.0, which gives the fraction\nof templates/pairs to be kept",
          "help_text": "Type: `double`, multiple: `False`. "
        },
        "subsample_seed": {
          "type": "integer",
          "description": "Subsampling seed used to influence which subset of reads is kept",
          "help_text": "Type: `integer`, multiple: `False`, default: `0`. ",
          "default": 0
        },
        "fetch_pairs": {
          "type": "boolean",
          "description": "Retrieve pairs even when the mate is outside of the requested region",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "customized_index": {
          "type": "boolean",
          "description": "Include customized index file as a part of arguments",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "sanitize": {
          "type": "string",
          "description": "Perform some sanity checks on the state of SAM record fields, fixing up common mistakes made by aligners.\nThese include soft-clipping alignments when they extend beyond the end of the reference, marking records as\nunmapped when they have reference * or position 0, and ensuring unmapped alignments have no CIGAR or mapping\nquality for unmapped alignments and no MD, NM, CG or SM tags.\nFLAGs is a comma-separated list of keywords chosen from the following list.\n\nunmap: The UNMAPPED BAM flag",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "no_PG": {
          "type": "boolean",
          "description": "Do not add a @PG line to the header of the output file.\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "input_fmt_option": {
          "type": "string",
          "description": "Specify a single input file format option in the form of OPTION or OPTION=VALUE.\n",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "output_fmt": {
          "type": "string",
          "description": "Specify output format (SAM, BAM, CRAM).\n",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "output_fmt_option": {
          "type": "string",
          "description": "Specify a single output file format option in the form of OPTION or OPTION=VALUE.\n",
          "help_text": "Type: `string`, multiple: `False`. "
        },
        "write_index": {
          "type": "boolean",
          "description": "Automatically index the output files.\n",
          "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/inputs"
    },
    {
      "$ref": "#/$defs/outputs"
    },
    {
      "$ref": "#/$defs/nextflow input-output arguments"
    }
  ]
}
