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).
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
No comments yet — be the first.