Forge Tools digest_sequence

digest_sequence read

scidex.forge.digest_sequence

Simulate restriction enzyme digestion → return resulting fragments. Closes Biomni-parity port of `digest_sequence` (SPEC-195 §1 molecular_biology row 7; iter 25). Pairs with iter-21's `scidex.forge.restriction_sites`.

HTTP: POST /api/scidex/forge/digest_sequence

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 (ACGT). Length capped at 200,000 bases.",
      "maxLength": 200000,
      "minLength": 1,
      "title": "Sequence",
      "type": "string"
    },
    "enzymes": {
      "description": "Restriction enzyme names (e.g. ['EcoRI', 'BamHI']). Must be from the catalog used by `scidex.forge.restriction_sites`.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "title": "Enzymes",
      "type": "array"
    },
    "circular": {
      "default": false,
      "description": "If true, treat the sequence as circular (plasmid). The first and last fragments are joined through the origin.",
      "title": "Circular",
      "type": "boolean"
    }
  },
  "required": [
    "sequence",
    "enzymes"
  ],
  "title": "DigestSequenceIn",
  "type": "object"
}
Output schema
{
  "$defs": {
    "CutSite": {
      "properties": {
        "position": {
          "description": "1-indexed cut position (where the top strand is cut).",
          "title": "Position",
          "type": "integer"
        },
        "enzyme": {
          "description": "Enzyme name that cuts here.",
          "title": "Enzyme",
          "type": "string"
        }
      },
      "required": [
        "position",
        "enzyme"
      ],
      "title": "CutSite",
      "type": "object"
    },
    "Fragment": {
      "properties": {
        "start": {
          "description": "1-indexed start position in the original sequence.",
          "title": "Start",
          "type": "integer"
        },
        "end": {
          "description": "1-indexed inclusive end position in the original sequence.",
          "title": "End",
          "type": "integer"
        },
        "length": {
          "description": "Fragment length in nucleotides.",
          "title": "Length",
          "type": "integer"
        },
        "sequence": {
          "description": "The fragment's DNA sequence.",
          "title": "Sequence",
          "type": "string"
        },
        "left_enzyme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Enzyme that bounded this fragment on the 5' side; None for linear-DNA's first fragment.",
          "title": "Left Enzyme"
        },
        "right_enzyme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Enzyme that bounded this fragment on the 3' side; None for linear-DNA's last fragment.",
          "title": "Right Enzyme"
        }
      },
      "required": [
        "start",
        "end",
        "length",
        "sequence"
      ],
      "title": "Fragment",
      "type": "object"
    }
  },
  "properties": {
    "sequence_length": {
      "description": "Length of input sequence (nt).",
      "title": "Sequence Length",
      "type": "integer"
    },
    "circular": {
      "description": "Whether the digest was performed on circular DNA.",
      "title": "Circular",
      "type": "boolean"
    },
    "cut_sites": {
      "description": "Ordered list of cut sites (by position).",
      "items": {
        "$ref": "#/$defs/CutSite"
      },
      "title": "Cut Sites",
      "type": "array"
    },
    "fragments": {
      "description": "Resulting fragments, ordered 5'→3'.",
      "items": {
        "$ref": "#/$defs/Fragment"
      },
      "title": "Fragments",
      "type": "array"
    },
    "fragment_count": {
      "description": "Convenience: len(fragments).",
      "title": "Fragment Count",
      "type": "integer"
    }
  },
  "required": [
    "sequence_length",
    "circular",
    "cut_sites",
    "fragments",
    "fragment_count"
  ],
  "title": "DigestSequenceOut",
  "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/digest_sequence' \
  -H 'authorization: Bearer $SCIDEX_JWT' \
  -H 'content-type: application/json' \
  -d '{
  "sequence": "",
  "enzymes": []
}'

Discussion

Posting anonymously. Sign in for attribution.

No comments yet — be the first.