{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "bedtools_shift",
  "description": "Shift genomic intervals by a specified number of base pairs.\n\nbedtools shift moves genomic intervals (BED/GFF/VCF) by a user-specified number of base pairs.\nThe tool can shift all features by the same amount, or apply strand-specific shifts to features\non the positive and negative strands separately. Shifts can be absolute values or proportional\nto feature length.\n\nThis tool is commonly used for:\n- Adjusting genomic coordinates for analysis offsets\n- Creating flanking regions around features\n- Simulating experimental bias or systematic shifts\n- Generating control regions at specified distances\n- Converting between different coordinate systems\n- Modeling positional uncertainty in genomic data\n",
  "type": "object",
  "$defs": {
    "inputs": {
      "title": "Inputs",
      "type": "object",
      "description": "No description",
      "properties": {
        "input": {
          "type": "string",
          "format": "path",
          "exists": true,
          "description": "Input file containing genomic intervals to shift.\n\n**Format:** BED, GFF, or VCF file\n**Content:** Genomic intervals with coordinates to be shifted\n**Requirements:** Must contain valid genomic coordinates\n**Usage:** Each interval will be shifted according to specified parameters\n",
          "help_text": "Type: `file`, multiple: `False`, required, direction: `input`, example: `\"intervals.bed\"`. "
        },
        "genome": {
          "type": "string",
          "format": "path",
          "exists": true,
          "description": "Genome file defining chromosome sizes.\n\n**Format:** Tab-delimited text file with chromosome names and sizes\n**Content:** Each line contains: <chromName><TAB><chromSize>\n**Usage:** Prevents shifted coordinates from exceeding chromosome boundaries\n**Creation:** Can be generated with 'samtools faidx' or UCSC Table Browser\n**Example format:**\n  chr1    249250621\n  chr2    243199373\n",
          "help_text": "Type: `file`, multiple: `False`, required, direction: `input`, example: `\"hg19.genome\"`. "
        }
      }
    },
    "outputs": {
      "title": "Outputs",
      "type": "object",
      "description": "No description",
      "properties": {
        "output": {
          "type": "string",
          "format": "path",
          "description": "Output file with shifted genomic intervals.\n\n**Format:** Same format as input file\n**Content:** Original intervals with shifted coordinates\n**Boundaries:** Coordinates clamped to [0, chromosome_length] range\n",
          "help_text": "Type: `file`, multiple: `False`, required, default: `\"$id.$key.output.bed\"`, direction: `output`, example: `\"shifted_intervals.bed\"`. ",
          "default": "$id.$key.output.bed"
        }
      }
    },
    "shift options": {
      "title": "Shift Options",
      "type": "object",
      "description": "No description",
      "properties": {
        "shift": {
          "type": "number",
          "description": "Shift all features by this number of base pairs.\n\n**Usage:** Positive values shift downstream, negative values shift upstream\n**Interaction:** Cannot be used together with --plus_shift and --minus_shift\n**Percentage mode:** When --pct is used, this becomes a fraction (e.g., 0.1 = 10%)\n**Boundary handling:** Results clamped to valid chromosome coordinates\n",
          "help_text": "Type: `double`, multiple: `False`, example: `1000.0`. "
        },
        "plus_shift": {
          "type": "number",
          "description": "Shift features on the positive strand by this number of base pairs.\n\n**Usage:** Applied only to features on the + strand\n**Requirement:** Must be used together with --minus_shift\n**Interaction:** Cannot be used with --shift parameter\n**Percentage mode:** When --pct is used, this becomes a fraction\n",
          "help_text": "Type: `double`, multiple: `False`, example: `500.0`. "
        },
        "minus_shift": {
          "type": "number",
          "description": "Shift features on the negative strand by this number of base pairs.\n\n**Usage:** Applied only to features on the - strand\n**Requirement:** Must be used together with --plus_shift\n**Interaction:** Cannot be used with --shift parameter\n**Percentage mode:** When --pct is used, this becomes a fraction\n",
          "help_text": "Type: `double`, multiple: `False`, example: `-500.0`. "
        },
        "percentage": {
          "type": "boolean",
          "description": "Interpret shift values as fractions of feature length.\n\n**Effect:** Shift distances calculated as fraction × feature_length\n**Example:** -s 0.5 shifts each feature by 50% of its length\n**Applications:** Proportional shifts, relative positioning\n**Default:** false (absolute base pair values)\n",
          "help_text": "Type: `boolean_true`, multiple: `False`, default: `false`. ",
          "default": false
        }
      }
    },
    "output options": {
      "title": "Output Options",
      "type": "object",
      "description": "No description",
      "properties": {
        "header": {
          "type": "boolean",
          "description": "Include the original file header in output.\n\n**Usage:** Preserves metadata and format information from input\n**Applications:** Maintaining file structure, format compatibility\n**Formats:** Particularly useful for VCF and GFF files\n**Default:** false (no header included)\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/shift options"
    },
    {
      "$ref": "#/$defs/output options"
    },
    {
      "$ref": "#/$defs/nextflow input-output arguments"
    }
  ]
}
