{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "bedtools_maskfasta",
  "description": "Mask regions in a FASTA file based on genomic coordinates.\n\nbedtools maskfasta masks sequences in a FASTA file based on coordinates defined \nin a BED/GFF/VCF file. Masked regions can be replaced with Ns (hard masking), \nconverted to lowercase (soft masking), or replaced with custom characters.\n\nThis tool is commonly used for:\n- Masking repetitive elements or low-quality regions\n- Creating masked reference genomes for alignment\n- Removing specific genomic features from sequences\n- Preparing sequences for downstream analysis\n",
  "type": "object",
  "$defs": {
    "inputs": {
      "title": "Inputs",
      "type": "object",
      "description": "No description",
      "properties": {
        "input_fasta": {
          "type": "string",
          "format": "path",
          "exists": true,
          "description": "Input FASTA file to mask.\n\n**Format:** FASTA format with nucleotide sequences\n**Content:** Reference sequences or assembled contigs\n**Usage:** Sequences will be masked at coordinates specified in the BED file\n**Requirements:** Must contain sequences referenced in the BED file\n",
          "help_text": "Type: `file`, multiple: `False`, required, direction: `input`, example: `\"reference_genome.fasta\"`. "
        },
        "input_bed": {
          "type": "string",
          "format": "path",
          "exists": true,
          "description": "BED/GFF/VCF file specifying regions to mask.\n\n**Format:** BED, GFF, or VCF file with genomic coordinates\n**Content:** Coordinates of regions to mask in the FASTA file\n**Usage:** Each interval defines a region to be masked\n**Requirements:** Chromosome names must match FASTA headers\n",
          "help_text": "Type: `file`, multiple: `False`, required, direction: `input`, example: `\"regions_to_mask.bed\"`. "
        }
      }
    },
    "outputs": {
      "title": "Outputs",
      "type": "object",
      "description": "No description",
      "properties": {
        "output": {
          "type": "string",
          "format": "path",
          "description": "Output FASTA file with masked sequences.\n\n**Format:** FASTA format with masked sequences\n**Content:** Same sequences as input with specified regions masked\n**Masking:** Regions replaced with Ns, lowercase, or custom characters\n",
          "help_text": "Type: `file`, multiple: `False`, required, default: `\"$id.$key.output.fasta\"`, direction: `output`, example: `\"masked_genome.fasta\"`. ",
          "default": "$id.$key.output.fasta"
        }
      }
    },
    "masking options": {
      "title": "Masking Options",
      "type": "object",
      "description": "No description",
      "properties": {
        "soft_mask": {
          "type": "boolean",
          "description": "Use soft masking (lowercase bases) instead of hard masking (Ns).\n\n**Default:** Hard masking with N characters\n**Soft masking:** Converts masked regions to lowercase letters\n**Usage:** Preserves sequence information while indicating masked regions\n**Applications:** Useful for some alignment tools that recognize soft masking\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        },
        "mask_character": {
          "type": "string",
          "description": "Custom character to use for masking instead of N.\n\n**Default:** N (hard masking) or lowercase (soft masking)\n**Usage:** Replace masked regions with specified character\n**Example:** X, -, or any single character\n**Note:** Overrides soft masking when specified\n",
          "help_text": "Type: `string`, multiple: `False`, example: `\"X\"`. "
        },
        "full_header": {
          "type": "boolean",
          "description": "Use complete FASTA headers in output.\n\n**Default:** Use only text before first space/tab in header\n**Full header:** Preserves entire header line including descriptions\n**Usage:** Maintains complete sequence annotations and metadata\n**Applications:** Important when headers contain essential information\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/masking options"
    },
    {
      "$ref": "#/$defs/nextflow input-output arguments"
    }
  ]
}
