Forge Tools open_reading_frames

open_reading_frames read

scidex.forge.open_reading_frames

Find ORFs across all 6 reading frames in a DNA sequence. Closes Biomni-parity port of `annotate_open_reading_frames` (SPEC-195 §1 molecular_biology row 1; iter 20).

HTTP: POST /api/scidex/forge/open_reading_frames

Invoke

Calls scidex.tool.invoke on the substrate with this tool name. Edit the JSON below — it must match the input schema. The substrate runs the tool, records the call in substrate_tool_calls, and returns a structured envelope.

Sign in to invoke this tool. Schema and curl snippet are visible to anyone.

Schemas

Input schema
{
  "properties": {
    "sequence": {
      "description": "DNA sequence in standard one-letter code (ACGT). Length capped at 100,000 bases. Case-insensitive; whitespace stripped. Ambiguity codes (N/R/Y/...) are rejected for clarity.",
      "maxLength": 100000,
      "minLength": 3,
      "title": "Sequence",
      "type": "string"
    },
    "min_protein_length": {
      "default": 30,
      "description": "Minimum protein length (excluding the stop codon) for an ORF to be reported. Default 30 matches the common heuristic for non-trivial CDS.",
      "maximum": 10000,
      "minimum": 1,
      "title": "Min Protein Length",
      "type": "integer"
    },
    "include_protein": {
      "default": false,
      "description": "If true, include the translated protein sequence in each result row. Off by default to keep payload small for long inputs.",
      "title": "Include Protein",
      "type": "boolean"
    }
  },
  "required": [
    "sequence"
  ],
  "title": "OpenReadingFramesIn",
  "type": "object"
}
Output schema
{
  "$defs": {
    "ORFHit": {
      "properties": {
        "strand": {
          "description": "'+' for forward strand, '-' for reverse complement.",
          "title": "Strand",
          "type": "string"
        },
        "frame": {
          "description": "Reading frame: 0, 1, or 2 (offset from the strand's 5' end). Combined with strand, this uniquely identifies one of 6 frames.",
          "maximum": 2,
          "minimum": 0,
          "title": "Frame",
          "type": "integer"
        },
        "start": {
          "description": "1-indexed start position of the ATG codon, relative to the strand's 5' end. For strand='-', positions are relative to the reverse complement.",
          "title": "Start",
          "type": "integer"
        },
        "end": {
          "description": "1-indexed inclusive end position of the stop codon. Length in nucleotides = end - start + 1, always a multiple of 3.",
          "title": "End",
          "type": "integer"
        },
        "protein_length": {
          "description": "Length of the encoded protein (excluding the stop codon).",
          "title": "Protein Length",
          "type": "integer"
        },
        "protein": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Translated protein sequence (single-letter, no trailing '*'). Only set when include_protein=True.",
          "title": "Protein"
        }
      },
      "required": [
        "strand",
        "frame",
        "start",
        "end",
        "protein_length"
      ],
      "title": "ORFHit",
      "type": "object"
    }
  },
  "properties": {
    "sequence_length": {
      "description": "Length of the validated input sequence (nt).",
      "title": "Sequence Length",
      "type": "integer"
    },
    "orfs": {
      "description": "ORFs satisfying min_protein_length on either strand.",
      "items": {
        "$ref": "#/$defs/ORFHit"
      },
      "title": "Orfs",
      "type": "array"
    },
    "count": {
      "description": "Convenience: len(orfs).",
      "title": "Count",
      "type": "integer"
    },
    "counts_by_strand": {
      "additionalProperties": {
        "type": "integer"
      },
      "description": "Map: {'+': forward_count, '-': reverse_count}.",
      "title": "Counts By Strand",
      "type": "object"
    }
  },
  "required": [
    "sequence_length",
    "orfs",
    "count",
    "counts_by_strand"
  ],
  "title": "OpenReadingFramesOut",
  "type": "object"
}

curl snippet

Replace $SCIDEX_JWT with a valid bearer token. Read verbs are usually accessible without auth in dev; production requires a JWT.

curl -sS -X POST '/api/scidex/forge/open_reading_frames' \
  -H 'authorization: Bearer $SCIDEX_JWT' \
  -H 'content-type: application/json' \
  -d '{
  "sequence": ""
}'

Discussion

Posting anonymously. Sign in for attribution.

No comments yet — be the first.