{
 "about": {
  "generatedBy": "pipeline/sequence-toolkit/peptides.py",
  "scriptSha256": "045265f95eff57fb70cc684fdfd8f769c0ca6eb84e08898594e09136edbf725b",
  "recordedOn": "2026-10-06",
  "python": "3.11.15",
  "oracle": "RDKit 2026.03.6 Chem.MolFromSequence (flavor 0) with Chem.MolToSmiles (canonical isomeric SMILES)",
  "oracleLicence": "BSD-3-Clause",
  "rule": "No value in this file comes from the Drybench engine under test.",
  "fixture": "Peptide SMILES for the hand-off to Molecule (brief-sequence-toolkit.md §4A, H10; CSO ruling, 6 October 2026)",
  "tolerance": "The engine's SMILES, canonicalised by the same RDKit version, is identical to canonicalSmiles on every drawn case; every refusal names each offending character and its 1-based position; smilesLength over 2,000 means the Send to rule returns null",
  "conventions": {
   "stereochemistry": "all L: N[C@@H](R)C(=O) for every residue, Cys and Pro included (SMILES parity follows the written neighbour order, not CIP); Gly has no stereo mark",
   "termini": "free amine and free acid, neutral",
   "histidine": "RDKit's tautomer (the side chain as RDKit writes it)",
   "cysteine": "a free thiol; no disulfide is ever inferred",
   "letters": "the 20 standard letters, lower case and whitespace accepted; X, B, Z, J refused (a residue would be a guess); U and O refused (the oracle cannot build them); one trailing * removed and said so; any other *, - or . refused"
  },
  "badge": "= RDKit {version} MolFromSequence, identical canonical SMILES on {N} fixtures ({date})"
 },
 "cases": [
  {
   "id": "N-A",
   "input": {
    "raw": "AGA",
    "clean": "AGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "A at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 37,
    "formula": "C8H15N3O4",
    "molWt": 217.225,
    "heavyAtoms": 15,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-A",
   "input": {
    "raw": "GAA",
    "clean": "GAA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "A inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O",
    "smilesLength": 36,
    "formula": "C8H15N3O4",
    "molWt": 217.225,
    "heavyAtoms": 15,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-A",
   "input": {
    "raw": "GAA",
    "clean": "GAA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "A at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O",
    "smilesLength": 36,
    "formula": "C8H15N3O4",
    "molWt": 217.225,
    "heavyAtoms": 15,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-A",
   "input": {
    "raw": "A",
    "clean": "A",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "A alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](N)C(=O)O",
    "smilesLength": 15,
    "formula": "C3H7NO2",
    "molWt": 89.094,
    "heavyAtoms": 6,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-C",
   "input": {
    "raw": "CGA",
    "clean": "CGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "C at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CS)C(=O)O",
    "smilesLength": 38,
    "formula": "C8H15N3O4S",
    "molWt": 249.292,
    "heavyAtoms": 16,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-C",
   "input": {
    "raw": "GCA",
    "clean": "GCA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "C inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CS)NC(=O)CN)C(=O)O",
    "smilesLength": 37,
    "formula": "C8H15N3O4S",
    "molWt": 249.292,
    "heavyAtoms": 16,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-C",
   "input": {
    "raw": "GAC",
    "clean": "GAC",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "C at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CS)C(=O)O",
    "smilesLength": 38,
    "formula": "C8H15N3O4S",
    "molWt": 249.292,
    "heavyAtoms": 16,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-C",
   "input": {
    "raw": "C",
    "clean": "C",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "C alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](CS)C(=O)O",
    "smilesLength": 17,
    "formula": "C3H7NO2S",
    "molWt": 121.161,
    "heavyAtoms": 7,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-D",
   "input": {
    "raw": "DGA",
    "clean": "DGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "D at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CC(=O)O)C(=O)O",
    "smilesLength": 43,
    "formula": "C9H15N3O6",
    "molWt": 261.234,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-D",
   "input": {
    "raw": "GDA",
    "clean": "GDA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "D inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CC(=O)O)NC(=O)CN)C(=O)O",
    "smilesLength": 42,
    "formula": "C9H15N3O6",
    "molWt": 261.234,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-D",
   "input": {
    "raw": "GAD",
    "clean": "GAD",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "D at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CC(=O)O)C(=O)O",
    "smilesLength": 43,
    "formula": "C9H15N3O6",
    "molWt": 261.234,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-D",
   "input": {
    "raw": "D",
    "clean": "D",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "D alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](CC(=O)O)C(=O)O",
    "smilesLength": 22,
    "formula": "C4H7NO4",
    "molWt": 133.103,
    "heavyAtoms": 9,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-E",
   "input": {
    "raw": "EGA",
    "clean": "EGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "E at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CCC(=O)O)C(=O)O",
    "smilesLength": 44,
    "formula": "C10H17N3O6",
    "molWt": 275.261,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-E",
   "input": {
    "raw": "GEA",
    "clean": "GEA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "E inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CCC(=O)O)NC(=O)CN)C(=O)O",
    "smilesLength": 43,
    "formula": "C10H17N3O6",
    "molWt": 275.261,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-E",
   "input": {
    "raw": "GAE",
    "clean": "GAE",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "E at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CCC(=O)O)C(=O)O",
    "smilesLength": 44,
    "formula": "C10H17N3O6",
    "molWt": 275.261,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-E",
   "input": {
    "raw": "E",
    "clean": "E",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "E alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](CCC(=O)O)C(=O)O",
    "smilesLength": 23,
    "formula": "C5H9NO4",
    "molWt": 147.13,
    "heavyAtoms": 10,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-F",
   "input": {
    "raw": "FGA",
    "clean": "FGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "F at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)Cc1ccccc1)C(=O)O",
    "smilesLength": 45,
    "formula": "C14H19N3O4",
    "molWt": 293.323,
    "heavyAtoms": 21,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-F",
   "input": {
    "raw": "GFA",
    "clean": "GFA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "F inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](Cc1ccccc1)NC(=O)CN)C(=O)O",
    "smilesLength": 44,
    "formula": "C14H19N3O4",
    "molWt": 293.323,
    "heavyAtoms": 21,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-F",
   "input": {
    "raw": "GAF",
    "clean": "GAF",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "F at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](Cc1ccccc1)C(=O)O",
    "smilesLength": 45,
    "formula": "C14H19N3O4",
    "molWt": 293.323,
    "heavyAtoms": 21,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-F",
   "input": {
    "raw": "F",
    "clean": "F",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "F alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](Cc1ccccc1)C(=O)O",
    "smilesLength": 24,
    "formula": "C9H11NO2",
    "molWt": 165.192,
    "heavyAtoms": 12,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-G",
   "input": {
    "raw": "GGA",
    "clean": "GGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "G at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)CN)C(=O)O",
    "smilesLength": 29,
    "formula": "C7H13N3O4",
    "molWt": 203.198,
    "heavyAtoms": 14,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-G",
   "input": {
    "raw": "GGA",
    "clean": "GGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "G inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)CN)C(=O)O",
    "smilesLength": 29,
    "formula": "C7H13N3O4",
    "molWt": 203.198,
    "heavyAtoms": 14,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-G",
   "input": {
    "raw": "GAG",
    "clean": "GAG",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "G at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)NCC(=O)O",
    "smilesLength": 29,
    "formula": "C7H13N3O4",
    "molWt": 203.198,
    "heavyAtoms": 14,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-G",
   "input": {
    "raw": "G",
    "clean": "G",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "G alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "NCC(=O)O",
    "smilesLength": 8,
    "formula": "C2H5NO2",
    "molWt": 75.067,
    "heavyAtoms": 5,
    "stereoCentres": 0
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-H",
   "input": {
    "raw": "HGA",
    "clean": "HGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "H at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)Cc1c[nH]cn1)C(=O)O",
    "smilesLength": 47,
    "formula": "C11H17N5O4",
    "molWt": 283.288,
    "heavyAtoms": 20,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-H",
   "input": {
    "raw": "GHA",
    "clean": "GHA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "H inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)CN)C(=O)O",
    "smilesLength": 46,
    "formula": "C11H17N5O4",
    "molWt": 283.288,
    "heavyAtoms": 20,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-H",
   "input": {
    "raw": "GAH",
    "clean": "GAH",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "H at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)O",
    "smilesLength": 47,
    "formula": "C11H17N5O4",
    "molWt": 283.288,
    "heavyAtoms": 20,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-H",
   "input": {
    "raw": "H",
    "clean": "H",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "H alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](Cc1c[nH]cn1)C(=O)O",
    "smilesLength": 26,
    "formula": "C6H9N3O2",
    "molWt": 155.157,
    "heavyAtoms": 11,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-I",
   "input": {
    "raw": "IGA",
    "clean": "IGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "I at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 46,
    "formula": "C11H21N3O4",
    "molWt": 259.306,
    "heavyAtoms": 18,
    "stereoCentres": 3
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-I",
   "input": {
    "raw": "GIA",
    "clean": "GIA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "I inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](NC(=O)CN)C(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 46,
    "formula": "C11H21N3O4",
    "molWt": 259.306,
    "heavyAtoms": 18,
    "stereoCentres": 3
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-I",
   "input": {
    "raw": "GAI",
    "clean": "GAI",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "I at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O",
    "smilesLength": 45,
    "formula": "C11H21N3O4",
    "molWt": 259.306,
    "heavyAtoms": 18,
    "stereoCentres": 3
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-I",
   "input": {
    "raw": "I",
    "clean": "I",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "I alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](N)C(=O)O",
    "smilesLength": 24,
    "formula": "C6H13NO2",
    "molWt": 131.175,
    "heavyAtoms": 9,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-K",
   "input": {
    "raw": "KGA",
    "clean": "KGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "K at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CCCCN)C(=O)O",
    "smilesLength": 41,
    "formula": "C11H22N4O4",
    "molWt": 274.321,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-K",
   "input": {
    "raw": "GKA",
    "clean": "GKA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "K inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CCCCN)NC(=O)CN)C(=O)O",
    "smilesLength": 40,
    "formula": "C11H22N4O4",
    "molWt": 274.321,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-K",
   "input": {
    "raw": "GAK",
    "clean": "GAK",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "K at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CCCCN)C(=O)O",
    "smilesLength": 41,
    "formula": "C11H22N4O4",
    "molWt": 274.321,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-K",
   "input": {
    "raw": "K",
    "clean": "K",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "K alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "NCCCC[C@H](N)C(=O)O",
    "smilesLength": 19,
    "formula": "C6H14N2O2",
    "molWt": 146.19,
    "heavyAtoms": 10,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-L",
   "input": {
    "raw": "LGA",
    "clean": "LGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "L at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)C[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 42,
    "formula": "C11H21N3O4",
    "molWt": 259.306,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-L",
   "input": {
    "raw": "GLA",
    "clean": "GLA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "L inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)C[C@H](NC(=O)CN)C(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 42,
    "formula": "C11H21N3O4",
    "molWt": 259.306,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-L",
   "input": {
    "raw": "GAL",
    "clean": "GAL",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "L at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)C[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O",
    "smilesLength": 41,
    "formula": "C11H21N3O4",
    "molWt": 259.306,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-L",
   "input": {
    "raw": "L",
    "clean": "L",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "L alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)C[C@H](N)C(=O)O",
    "smilesLength": 20,
    "formula": "C6H13NO2",
    "molWt": 131.175,
    "heavyAtoms": 9,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-M",
   "input": {
    "raw": "MGA",
    "clean": "MGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "M at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CSCC[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 40,
    "formula": "C10H19N3O4S",
    "molWt": 277.346,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-M",
   "input": {
    "raw": "GMA",
    "clean": "GMA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "M inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CSCC[C@H](NC(=O)CN)C(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 40,
    "formula": "C10H19N3O4S",
    "molWt": 277.346,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-M",
   "input": {
    "raw": "GAM",
    "clean": "GAM",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "M at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CSCC[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O",
    "smilesLength": 39,
    "formula": "C10H19N3O4S",
    "molWt": 277.346,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-M",
   "input": {
    "raw": "M",
    "clean": "M",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "M alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CSCC[C@H](N)C(=O)O",
    "smilesLength": 18,
    "formula": "C5H11NO2S",
    "molWt": 149.215,
    "heavyAtoms": 9,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-N",
   "input": {
    "raw": "NGA",
    "clean": "NGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "N at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CC(N)=O)C(=O)O",
    "smilesLength": 43,
    "formula": "C9H16N4O5",
    "molWt": 260.25,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-N",
   "input": {
    "raw": "GNA",
    "clean": "GNA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "N inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CC(N)=O)NC(=O)CN)C(=O)O",
    "smilesLength": 42,
    "formula": "C9H16N4O5",
    "molWt": 260.25,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-N",
   "input": {
    "raw": "GAN",
    "clean": "GAN",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "N at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CC(N)=O)C(=O)O",
    "smilesLength": 43,
    "formula": "C9H16N4O5",
    "molWt": 260.25,
    "heavyAtoms": 18,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-N",
   "input": {
    "raw": "N",
    "clean": "N",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "N alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "NC(=O)C[C@H](N)C(=O)O",
    "smilesLength": 21,
    "formula": "C4H8N2O3",
    "molWt": 132.119,
    "heavyAtoms": 9,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-P",
   "input": {
    "raw": "PGA",
    "clean": "PGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "P at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H]1CCCN1)C(=O)O",
    "smilesLength": 39,
    "formula": "C10H17N3O4",
    "molWt": 243.263,
    "heavyAtoms": 17,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-P",
   "input": {
    "raw": "GPA",
    "clean": "GPA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "P inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@@H]1CCCN1C(=O)CN)C(=O)O",
    "smilesLength": 39,
    "formula": "C10H17N3O4",
    "molWt": 243.263,
    "heavyAtoms": 17,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-P",
   "input": {
    "raw": "GAP",
    "clean": "GAP",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "P at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N1CCC[C@H]1C(=O)O",
    "smilesLength": 38,
    "formula": "C10H17N3O4",
    "molWt": 243.263,
    "heavyAtoms": 17,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-P",
   "input": {
    "raw": "P",
    "clean": "P",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "P alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "O=C(O)[C@@H]1CCCN1",
    "smilesLength": 18,
    "formula": "C5H9NO2",
    "molWt": 115.132,
    "heavyAtoms": 8,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-Q",
   "input": {
    "raw": "QGA",
    "clean": "QGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "Q at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CCC(N)=O)C(=O)O",
    "smilesLength": 44,
    "formula": "C10H18N4O5",
    "molWt": 274.277,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-Q",
   "input": {
    "raw": "GQA",
    "clean": "GQA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "Q inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CCC(N)=O)NC(=O)CN)C(=O)O",
    "smilesLength": 43,
    "formula": "C10H18N4O5",
    "molWt": 274.277,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-Q",
   "input": {
    "raw": "GAQ",
    "clean": "GAQ",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "Q at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CCC(N)=O)C(=O)O",
    "smilesLength": 44,
    "formula": "C10H18N4O5",
    "molWt": 274.277,
    "heavyAtoms": 19,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-Q",
   "input": {
    "raw": "Q",
    "clean": "Q",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "Q alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "NC(=O)CC[C@H](N)C(=O)O",
    "smilesLength": 22,
    "formula": "C5H10N2O3",
    "molWt": 146.146,
    "heavyAtoms": 10,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-R",
   "input": {
    "raw": "RGA",
    "clean": "RGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "R at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CCCNC(=N)N)C(=O)O",
    "smilesLength": 46,
    "formula": "C11H22N6O4",
    "molWt": 302.335,
    "heavyAtoms": 21,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-R",
   "input": {
    "raw": "GRA",
    "clean": "GRA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "R inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CCCNC(=N)N)NC(=O)CN)C(=O)O",
    "smilesLength": 45,
    "formula": "C11H22N6O4",
    "molWt": 302.335,
    "heavyAtoms": 21,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-R",
   "input": {
    "raw": "GAR",
    "clean": "GAR",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "R at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CCCNC(=N)N)C(=O)O",
    "smilesLength": 46,
    "formula": "C11H22N6O4",
    "molWt": 302.335,
    "heavyAtoms": 21,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-R",
   "input": {
    "raw": "R",
    "clean": "R",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "R alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N=C(N)NCCC[C@H](N)C(=O)O",
    "smilesLength": 24,
    "formula": "C6H14N4O2",
    "molWt": 174.204,
    "heavyAtoms": 12,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-S",
   "input": {
    "raw": "SGA",
    "clean": "SGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "S at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)CO)C(=O)O",
    "smilesLength": 38,
    "formula": "C8H15N3O5",
    "molWt": 233.224,
    "heavyAtoms": 16,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-S",
   "input": {
    "raw": "GSA",
    "clean": "GSA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "S inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](CO)NC(=O)CN)C(=O)O",
    "smilesLength": 37,
    "formula": "C8H15N3O5",
    "molWt": 233.224,
    "heavyAtoms": 16,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-S",
   "input": {
    "raw": "GAS",
    "clean": "GAS",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "S at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](CO)C(=O)O",
    "smilesLength": 38,
    "formula": "C8H15N3O5",
    "molWt": 233.224,
    "heavyAtoms": 16,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-S",
   "input": {
    "raw": "S",
    "clean": "S",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "S alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](CO)C(=O)O",
    "smilesLength": 17,
    "formula": "C3H7NO3",
    "molWt": 105.093,
    "heavyAtoms": 7,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-T",
   "input": {
    "raw": "TGA",
    "clean": "TGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "T at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)[C@@H](C)O)C(=O)O",
    "smilesLength": 46,
    "formula": "C9H17N3O5",
    "molWt": 247.251,
    "heavyAtoms": 17,
    "stereoCentres": 3
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-T",
   "input": {
    "raw": "GTA",
    "clean": "GTA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "T inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@@H](NC(=O)CN)[C@@H](C)O)C(=O)O",
    "smilesLength": 46,
    "formula": "C9H17N3O5",
    "molWt": 247.251,
    "heavyAtoms": 17,
    "stereoCentres": 3
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-T",
   "input": {
    "raw": "GAT",
    "clean": "GAT",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "T at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@H](C(=O)O)[C@@H](C)O",
    "smilesLength": 45,
    "formula": "C9H17N3O5",
    "molWt": 247.251,
    "heavyAtoms": 17,
    "stereoCentres": 3
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-T",
   "input": {
    "raw": "T",
    "clean": "T",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "T alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@@H](O)[C@H](N)C(=O)O",
    "smilesLength": 24,
    "formula": "C4H9NO3",
    "molWt": 119.12,
    "heavyAtoms": 8,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-V",
   "input": {
    "raw": "VGA",
    "clean": "VGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "V at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)[C@H](N)C(=O)NCC(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 41,
    "formula": "C10H19N3O4",
    "molWt": 245.279,
    "heavyAtoms": 17,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-V",
   "input": {
    "raw": "GVA",
    "clean": "GVA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "V inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)[C@H](NC(=O)CN)C(=O)N[C@@H](C)C(=O)O",
    "smilesLength": 41,
    "formula": "C10H19N3O4",
    "molWt": 245.279,
    "heavyAtoms": 17,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-V",
   "input": {
    "raw": "GAV",
    "clean": "GAV",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "V at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)[C@H](NC(=O)[C@H](C)NC(=O)CN)C(=O)O",
    "smilesLength": 40,
    "formula": "C10H19N3O4",
    "molWt": 245.279,
    "heavyAtoms": 17,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-V",
   "input": {
    "raw": "V",
    "clean": "V",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "V alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)[C@H](N)C(=O)O",
    "smilesLength": 19,
    "formula": "C5H11NO2",
    "molWt": 117.148,
    "heavyAtoms": 8,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-W",
   "input": {
    "raw": "WGA",
    "clean": "WGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "W at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)Cc1c[nH]c2ccccc12)C(=O)O",
    "smilesLength": 53,
    "formula": "C16H20N4O4",
    "molWt": 332.36,
    "heavyAtoms": 24,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-W",
   "input": {
    "raw": "GWA",
    "clean": "GWA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "W inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](Cc1c[nH]c2ccccc12)NC(=O)CN)C(=O)O",
    "smilesLength": 52,
    "formula": "C16H20N4O4",
    "molWt": 332.36,
    "heavyAtoms": 24,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-W",
   "input": {
    "raw": "GAW",
    "clean": "GAW",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "W at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)O",
    "smilesLength": 53,
    "formula": "C16H20N4O4",
    "molWt": 332.36,
    "heavyAtoms": 24,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-W",
   "input": {
    "raw": "W",
    "clean": "W",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "W alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](Cc1c[nH]c2ccccc12)C(=O)O",
    "smilesLength": 32,
    "formula": "C11H12N2O2",
    "molWt": 204.229,
    "heavyAtoms": 15,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "N-Y",
   "input": {
    "raw": "YGA",
    "clean": "YGA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "Y at the N-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CNC(=O)[C@@H](N)Cc1ccc(O)cc1)C(=O)O",
    "smilesLength": 48,
    "formula": "C14H19N3O5",
    "molWt": 309.322,
    "heavyAtoms": 22,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "M-Y",
   "input": {
    "raw": "GYA",
    "clean": "GYA",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "Y inside the chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)[C@H](Cc1ccc(O)cc1)NC(=O)CN)C(=O)O",
    "smilesLength": 47,
    "formula": "C14H19N3O5",
    "molWt": 309.322,
    "heavyAtoms": 22,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "C-Y",
   "input": {
    "raw": "GAY",
    "clean": "GAY",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "Y at the C-terminus",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "C[C@H](NC(=O)CN)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)O",
    "smilesLength": 48,
    "formula": "C14H19N3O5",
    "molWt": 309.322,
    "heavyAtoms": 22,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "1-Y",
   "input": {
    "raw": "Y",
    "clean": "Y",
    "trailingStopRemoved": false,
    "residues": 1
   },
   "notes": "Y alone (a single residue)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "N[C@@H](Cc1ccc(O)cc1)C(=O)O",
    "smilesLength": 27,
    "formula": "C9H11NO3",
    "molWt": 181.191,
    "heavyAtoms": 13,
    "stereoCentres": 1
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "PP",
   "input": {
    "raw": "PP",
    "clean": "PP",
    "trailingStopRemoved": false,
    "residues": 2
   },
   "notes": "Pro-Pro: ring-closure digits reused",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "O=C(O)[C@@H]1CCCN1C(=O)[C@@H]1CCCN1",
    "smilesLength": 35,
    "formula": "C10H16N2O3",
    "molWt": 212.249,
    "heavyAtoms": 15,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "GPPG",
   "input": {
    "raw": "GPPG",
    "clean": "GPPG",
    "trailingStopRemoved": false,
    "residues": 4
   },
   "notes": "Pro-Pro inside a chain",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "NCC(=O)N1CCC[C@H]1C(=O)N1CCC[C@H]1C(=O)NCC(=O)O",
    "smilesLength": 47,
    "formula": "C14H22N4O5",
    "molWt": 326.353,
    "heavyAtoms": 23,
    "stereoCentres": 2
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "ITH",
   "input": {
    "raw": "ITH",
    "clean": "ITH",
    "trailingStopRemoved": false,
    "residues": 3
   },
   "notes": "Ile and Thr (side-chain stereocentres) and His (RDKit's tautomer)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](N)C(=O)N[C@H](C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)O)[C@@H](C)O",
    "smilesLength": 72,
    "formula": "C16H27N5O5",
    "molWt": 369.422,
    "heavyAtoms": 26,
    "stereoCentres": 5
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "HITH",
   "input": {
    "raw": "HITHITH",
    "clean": "HITHITH",
    "trailingStopRemoved": false,
    "residues": 7
   },
   "notes": "Ile, Thr and His repeated",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)[C@@H](NC(=O)[C@@H](NC(=O)[C@@H](N)Cc1c[nH]cn1)[C@@H](C)CC)[C@@H](C)O)C(=O)N[C@H](C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)O)[C@@H](C)O",
    "smilesLength": 170,
    "formula": "C38H59N13O10",
    "molWt": 857.971,
    "heavyAtoms": 61,
    "stereoCentres": 11
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "insulin-b",
   "input": {
    "raw": "FVNQHLCGSHLVEALYLVCGERGFFYTPKT",
    "clean": "FVNQHLCGSHLVEALYLVCGERGFFYTPKT",
    "trailingStopRemoved": false,
    "residues": 30
   },
   "notes": "Human insulin B chain, cysteines as free thiols",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC(C)C[C@H](NC(=O)[C@H](C)NC(=O)[C@H](CCC(=O)O)NC(=O)[C@@H](NC(=O)[C@H](CC(C)C)NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)[C@H](CO)NC(=O)CNC(=O)[C@H](CS)NC(=O)[C@H](CC(C)C)NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)[C@H](CCC(N)=O)NC(=O)[C@H](CC(N)=O)NC(=O)[C@@H](NC(=O)[C@@H](N)Cc1ccccc1)C(C)C)C(C)C)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](C(=O)N[C@@H](CS)C(=O)NCC(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CCCNC(=N)N)C(=O)NCC(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@H](C(=O)N1CCC[C@H]1C(=O)N[C@@H](CCCCN)C(=O)N[C@H](C(=O)O)[C@@H](C)O)[C@@H](C)O)C(C)C",
    "smilesLength": 573,
    "formula": "C158H234N40O42S2",
    "molWt": 3429.982,
    "heavyAtoms": 242,
    "stereoCentres": 29
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "albumin-under-limit",
   "input": {
    "raw": "DAHKSEVAHRFKDLGEENFKALVLIAFAQYLQQCPFEDHVKLVNEVTEFAKTCVADESAENCDKSLHTLFGDKLCTVATLRETYGEMADCCAKQEPERNECF",
    "clean": "DAHKSEVAHRFKDLGEENFKALVLIAFAQYLQQCPFEDHVKLVNEVTEFAKTCVADESAENCDKSLHTLFGDKLCTVATLRETYGEMADCCAKQEPERNECF",
    "trailingStopRemoved": false,
    "residues": 102
   },
   "notes": "102 residues of albumin: the longest SMILES under the 2,000-character link limit",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](NC(=O)[C@H](CC(C)C)NC(=O)[C@@H](NC(=O)[C@H](CC(C)C)NC(=O)[C@H](C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CCC(=O)O)NC(=O)CNC(=O)[C@H](CC(C)C)NC(=O)[C@H](CC(=O)O)NC(=O)[C@H](CCCCN)NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@H](CCCNC(=N)N)NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)[C@H](C)NC(=O)[C@@H](NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CO)NC(=O)[C@H](CCCCN)NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)[C@H](C)NC(=O)[C@@H](N)CC(=O)O)C(C)C)C(C)C)C(=O)N[C@@H](C)C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](C)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CS)C(=O)N1CCC[C@H]1C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)N[C@H](C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@H](C(=O)N[C@H](C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](C)C(=O)N[C@@H](CCCCN)C(=O)N[C@H](C(=O)N[C@@H](CS)C(=O)N[C@H](C(=O)N[C@@H](C)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CO)C(=O)N[C@@H](C)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](CS)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CO)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)N[C@H](C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](Cc1ccccc1)C(=O)NCC(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CS)C(=O)N[C@H](C(=O)N[C@H](C(=O)N[C@@H](C)C(=O)N[C@H](C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCCNC(=N)N)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@H](C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)NCC(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CCSC)C(=O)N[C@@H](C)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CS)C(=O)N[C@@H](CS)C(=O)N[C@@H](C)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CCC(=O)O)C(=O)N1CCC[C@H]1C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CCCNC(=N)N)C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CS)C(=O)N[C@@H](Cc1ccccc1)C(=O)O)[C@@H](C)O)[C@@H](C)O)C(C)C)[C@@H](C)O)[C@@H](C)O)C(C)C)[C@@H](C)O)[C@@H](C)O)C(C)C)C(C)C)C(C)C",
    "smilesLength": 1988,
    "formula": "C503H777N135O162S8",
    "molWt": 11564.068,
    "heavyAtoms": 808,
    "stereoCentres": 106
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "albumin-over-limit",
   "input": {
    "raw": "DAHKSEVAHRFKDLGEENFKALVLIAFAQYLQQCPFEDHVKLVNEVTEFAKTCVADESAENCDKSLHTLFGDKLCTVATLRETYGEMADCCAKQEPERNECFL",
    "clean": "DAHKSEVAHRFKDLGEENFKALVLIAFAQYLQQCPFEDHVKLVNEVTEFAKTCVADESAENCDKSLHTLFGDKLCTVATLRETYGEMADCCAKQEPERNECFL",
    "trailingStopRemoved": false,
    "residues": 103
   },
   "notes": "103 residues of albumin: a SMILES over the 2,000-character link limit (the Send to rule returns null)",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](NC(=O)[C@H](CC(C)C)NC(=O)[C@@H](NC(=O)[C@H](CC(C)C)NC(=O)[C@H](C)NC(=O)[C@H](CCCCN)NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@H](CC(N)=O)NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CCC(=O)O)NC(=O)CNC(=O)[C@H](CC(C)C)NC(=O)[C@H](CC(=O)O)NC(=O)[C@H](CCCCN)NC(=O)[C@H](Cc1ccccc1)NC(=O)[C@H](CCCNC(=N)N)NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)[C@H](C)NC(=O)[C@@H](NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CO)NC(=O)[C@H](CCCCN)NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)[C@H](C)NC(=O)[C@@H](N)CC(=O)O)C(C)C)C(C)C)C(=O)N[C@@H](C)C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](C)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CS)C(=O)N1CCC[C@H]1C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)N[C@H](C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CC(C)C)C(=O)N[C@H](C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@H](C(=O)N[C@H](C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](C)C(=O)N[C@@H](CCCCN)C(=O)N[C@H](C(=O)N[C@@H](CS)C(=O)N[C@H](C(=O)N[C@@H](C)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CO)C(=O)N[C@@H](C)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](CS)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CO)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](Cc1c[nH]cn1)C(=O)N[C@H](C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](Cc1ccccc1)C(=O)NCC(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CS)C(=O)N[C@H](C(=O)N[C@H](C(=O)N[C@@H](C)C(=O)N[C@H](C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCCNC(=N)N)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@H](C(=O)N[C@@H](Cc1ccc(O)cc1)C(=O)NCC(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CCSC)C(=O)N[C@@H](C)C(=O)N[C@@H](CC(=O)O)C(=O)N[C@@H](CS)C(=O)N[C@@H](CS)C(=O)N[C@@H](C)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H](CCC(=O)O)C(=O)N1CCC[C@H]1C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CCCNC(=N)N)C(=O)N[C@@H](CC(N)=O)C(=O)N[C@@H](CCC(=O)O)C(=O)N[C@@H](CS)C(=O)N[C@@H](Cc1ccccc1)C(=O)N[C@@H](CC(C)C)C(=O)O)[C@@H](C)O)[C@@H](C)O)C(C)C)[C@@H](C)O)[C@@H](C)O)C(C)C)[C@@H](C)O)[C@@H](C)O)C(C)C)C(C)C)C(C)C",
    "smilesLength": 2008,
    "formula": "C509H788N136O163S8",
    "molWt": 11677.228,
    "heavyAtoms": 816,
    "stereoCentres": 107
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "lower-case",
   "input": {
    "raw": "ac de fg\nhik",
    "clean": "ACDEFGHIK",
    "trailingStopRemoved": false,
    "residues": 9
   },
   "notes": "lower case and whitespace are accepted",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CC[C@H](C)[C@H](NC(=O)[C@H](Cc1c[nH]cn1)NC(=O)CNC(=O)[C@H](Cc1ccccc1)NC(=O)[C@H](CCC(=O)O)NC(=O)[C@H](CC(=O)O)NC(=O)[C@H](CS)NC(=O)[C@H](C)N)C(=O)N[C@@H](CCCCN)C(=O)O",
    "smilesLength": 166,
    "formula": "C44H66N12O14S",
    "molWt": 1019.149,
    "heavyAtoms": 71,
    "stereoCentres": 9
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "trailing-stop",
   "input": {
    "raw": "MKWV*",
    "clean": "MKWV",
    "trailingStopRemoved": true,
    "residues": 4
   },
   "notes": "one trailing stop is removed and said so",
   "expected": {
    "refuse": false,
    "canonicalSmiles": "CSCC[C@H](N)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](Cc1c[nH]c2ccccc12)C(=O)N[C@H](C(=O)O)C(C)C",
    "smilesLength": 86,
    "formula": "C27H42N6O5S",
    "molWt": 562.737,
    "heavyAtoms": 39,
    "stereoCentres": 4
   },
   "oracle": "RDKit Chem.MolFromSequence (flavor 0) and Chem.MolToSmiles",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-X",
   "input": {
    "raw": "GAXGA",
    "clean": "GAXGA",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "refused: an ambiguity code (any residue)",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "X",
      "position": 3
     }
    ],
    "reason": "not a standard residue: X at 3",
    "why": [
     "an ambiguity code (any residue)"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-B",
   "input": {
    "raw": "GABGA",
    "clean": "GABGA",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "refused: an ambiguity code (Asp or Asn)",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "B",
      "position": 3
     }
    ],
    "reason": "not a standard residue: B at 3",
    "why": [
     "an ambiguity code (Asp or Asn)"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-Z",
   "input": {
    "raw": "GAZGA",
    "clean": "GAZGA",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "refused: an ambiguity code (Glu or Gln)",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "Z",
      "position": 3
     }
    ],
    "reason": "not a standard residue: Z at 3",
    "why": [
     "an ambiguity code (Glu or Gln)"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-J",
   "input": {
    "raw": "GAJGA",
    "clean": "GAJGA",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "refused: an ambiguity code (Leu or Ile)",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "J",
      "position": 3
     }
    ],
    "reason": "not a standard residue: J at 3",
    "why": [
     "an ambiguity code (Leu or Ile)"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-U",
   "input": {
    "raw": "GAUGA",
    "clean": "GAUGA",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "refused: selenocysteine, which the oracle cannot build",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "U",
      "position": 3
     }
    ],
    "reason": "not a standard residue: U at 3",
    "why": [
     "selenocysteine, which the oracle cannot build"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-O",
   "input": {
    "raw": "GAOGA",
    "clean": "GAOGA",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "refused: pyrrolysine, which the oracle cannot build",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "O",
      "position": 3
     }
    ],
    "reason": "not a standard residue: O at 3",
    "why": [
     "pyrrolysine, which the oracle cannot build"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-internal-stop",
   "input": {
    "raw": "MK*WV",
    "clean": "MK*WV",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "an internal stop is refused",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "*",
      "position": 3
     }
    ],
    "reason": "not a standard residue: * at 3",
    "why": [
     "not one of the 20 standard one-letter codes"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-two-stops",
   "input": {
    "raw": "MKWV**",
    "clean": "MKWV*",
    "trailingStopRemoved": true,
    "residues": 5
   },
   "notes": "only one trailing stop is removed",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "*",
      "position": 5
     }
    ],
    "reason": "not a standard residue: * at 5",
    "why": [
     "not one of the 20 standard one-letter codes"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-gap",
   "input": {
    "raw": "MK-WV",
    "clean": "MK-WV",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "a gap is refused",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "-",
      "position": 3
     }
    ],
    "reason": "not a standard residue: - at 3",
    "why": [
     "not one of the 20 standard one-letter codes"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-dot",
   "input": {
    "raw": "MK.WV",
    "clean": "MK.WV",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "a dot is refused",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": ".",
      "position": 3
     }
    ],
    "reason": "not a standard residue: . at 3",
    "why": [
     "not one of the 20 standard one-letter codes"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-digit",
   "input": {
    "raw": "MK1WV",
    "clean": "MK1WV",
    "trailingStopRemoved": false,
    "residues": 5
   },
   "notes": "a digit is refused",
   "expected": {
    "refuse": true,
    "offendingCharacters": [
     {
      "character": "1",
      "position": 3
     }
    ],
    "reason": "not a standard residue: 1 at 3",
    "why": [
     "not one of the 20 standard one-letter codes"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  },
  {
   "id": "refuse-empty",
   "input": {
    "raw": "",
    "clean": "",
    "trailingStopRemoved": false,
    "residues": 0
   },
   "notes": "nothing to draw",
   "expected": {
    "refuse": true,
    "offendingCharacters": [],
    "reason": "no residues",
    "why": [
     "empty"
    ]
   },
   "oracle": "rule (CSO ruling, 6 October 2026); RDKit MolFromSequence returns None for these letters",
   "oracleVersion": "2026.03.6",
   "recordedOn": "2026-10-06",
   "source": "pipeline/sequence-toolkit/peptides.py"
  }
 ]
}
