{
  "about": "construct-cropper-v2.json's cases with the isoelectric point added, and the acidic pair that pins the C-terminal pK convention (SCI-770, the CSO's rulings of 7 November 2026). v2 recorded no pI at all, so a published verification set named the isoelectric-point method for a number no oracle had ever checked on a construct; this set closes that. v1 and v2 are unchanged and still checked.",
  "recordedOn": "2026-11-07",
  "oracle": "pipeline/protein-explorer/construct-cropper/reference.py",
  "environment": {
    "python": "3.13.18",
    "biopython": "1.88"
  },
  "isoelectricPoint": {
    "convention": "ExPASy ProtParam's: the Bjellqvist pK set with a C-terminal pK of 3.55 whatever the last residue, bisected over pH 0 to 14 and reported to two decimals.",
    "deviationsFromBiopythonAsShipped": [
      "pKcterminal, which Biopython applies at construction as {\"D\": 4.55, \"E\": 4.75}, is cleared, because ProtParam and this suite's engine use 3.55 for every last residue. For an acidic construct this changes the answer by about 0.1; for a basic one it changes nothing.",
      "pi() is called with min_=0 and max_=14 in place of Biopython's 4.05 and 12, which return the bound when the true value lies outside and would make every acidic construct read exactly 4.05."
    ],
    "noCaseAtASearchBound": true,
    "searchBounds": {
      "min": 0.0,
      "max": 14.0
    },
    "pinnedBy": [
      "p53_acidic_cterm_asp",
      "p53_acidic_cterm_glu",
      "p53_flag_acidic_tagged"
    ],
    "tagPath": {
      "pinnedBy": "p53_flag_acidic_tagged",
      "tag": "flag",
      "terminus": "n-term",
      "assembled": "MDYKDDDDKEEPQSDPSVEPPLSQETFSD",
      "isoelectricPoint": 3.63,
      "measuredNegative": {
        "case": "p53_his6tev_fulllength_negative",
        "isoelectricPoint": 6.42
      },
      "coverage": "The tag path is pinned by one histidine-free tag only. A histidine-bearing tag cannot pin the convention, because six histidines at pK 5.98 raise any acidic construct above the carboxyl range where the convention is observable; the set records that as a measured negative rather than omitting it. So the convention is checked on the tag path for tags that leave a construct acidic, and not for those that do not. A tag added to the engine later needs its assembly and its three numbers, as the other cases have, not a convention case of its own."
    }
  },
  "cases": {
    "ubq_avihis6_nterm": {
      "tagId": "avi-his6",
      "terminus": "n-term",
      "wt": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "startResidue1Based": 1,
      "endResidue1Based": 76,
      "refused": null,
      "coreSequence": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "initiatorMetAdded": false,
      "assembledTagged": "MGLNDIFEAQKIEWHEGHHHHHHQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "assembledCleaved": null,
      "wildType": {
        "length": 76,
        "molecularWeightDa": 8564.74,
        "extinctionReduced": 1490,
        "extinctionCystines": 1490,
        "aliphaticIndex": 100.0,
        "isoelectricPoint": 6.56
      },
      "tagged": {
        "length": 98,
        "molecularWeightDa": 11255.58,
        "extinctionReduced": 6990,
        "extinctionCystines": 6990,
        "aliphaticIndex": 90.5,
        "isoelectricPoint": 6.21
      },
      "cleaved": null
    },
    "ubq_avihis6_cterm": {
      "tagId": "avi-his6",
      "terminus": "c-term",
      "wt": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "startResidue1Based": 1,
      "endResidue1Based": 76,
      "refused": null,
      "coreSequence": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "initiatorMetAdded": false,
      "assembledTagged": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGGGLNDIFEAQKIEWHEGHHHHHH",
      "assembledCleaved": null,
      "wildType": {
        "length": 76,
        "molecularWeightDa": 8564.74,
        "extinctionReduced": 1490,
        "extinctionCystines": 1490,
        "aliphaticIndex": 100.0,
        "isoelectricPoint": 6.56
      },
      "tagged": {
        "length": 98,
        "molecularWeightDa": 11255.58,
        "extinctionReduced": 6990,
        "extinctionCystines": 6990,
        "aliphaticIndex": 90.5,
        "isoelectricPoint": 6.21
      },
      "cleaved": null
    },
    "ubq_his6tev_cterm_refused": {
      "tagId": "his6-tev",
      "terminus": "c-term",
      "wt": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "startResidue1Based": 1,
      "endResidue1Based": 76,
      "refused": "c-terminal-cleavage-not-modelled"
    },
    "ubq_untagged_10_70_initiator_met": {
      "tagId": "none",
      "terminus": "n-term",
      "wt": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "startResidue1Based": 10,
      "endResidue1Based": 70,
      "refused": null,
      "coreSequence": "GKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLV",
      "initiatorMetAdded": true,
      "assembledTagged": "MGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLV",
      "assembledCleaved": null,
      "wildType": {
        "length": 76,
        "molecularWeightDa": 8564.74,
        "extinctionReduced": 1490,
        "extinctionCystines": 1490,
        "aliphaticIndex": 100.0,
        "isoelectricPoint": 6.56
      },
      "tagged": {
        "length": 62,
        "molecularWeightDa": 6980.82,
        "extinctionReduced": 1490,
        "extinctionCystines": 1490,
        "aliphaticIndex": 92.7,
        "isoelectricPoint": 4.94
      },
      "cleaved": null
    },
    "ubq_untagged_full_length": {
      "tagId": "none",
      "terminus": "n-term",
      "wt": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "startResidue1Based": 1,
      "endResidue1Based": 76,
      "refused": null,
      "coreSequence": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "initiatorMetAdded": false,
      "assembledTagged": "MQIFVKTLTGKTITLEVEPSDTIENVKAKIQDKEGIPPDQQRLIFAGKQLEDGRTLSDYNIQKESTLHLVLRLRGG",
      "assembledCleaved": null,
      "wildType": {
        "length": 76,
        "molecularWeightDa": 8564.74,
        "extinctionReduced": 1490,
        "extinctionCystines": 1490,
        "aliphaticIndex": 100.0,
        "isoelectricPoint": 6.56
      },
      "tagged": {
        "length": 76,
        "molecularWeightDa": 8564.74,
        "extinctionReduced": 1490,
        "extinctionCystines": 1490,
        "aliphaticIndex": 100.0,
        "isoelectricPoint": 6.56
      },
      "cleaved": null
    },
    "gfp_his6tev_nterm": {
      "tagId": "his6-tev",
      "terminus": "n-term",
      "wt": "MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFSYGVQCFSRYPDHMKQHDFFKSAMPEGYVQERTIFFKDDGNYKTRAEVKFEGDTLVNRIELKGIDFKEDGNILGHKLEYNYNSHNVYIMADKQKNGIKVNFKIRHNIEDGSVQLADHYQQNTPIGDGPVLLPDNHYLSTQSALSKDPNEKRDHMVLLEFVTAAGITHGMDELYK",
      "startResidue1Based": 1,
      "endResidue1Based": 238,
      "refused": null,
      "coreSequence": "MSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFSYGVQCFSRYPDHMKQHDFFKSAMPEGYVQERTIFFKDDGNYKTRAEVKFEGDTLVNRIELKGIDFKEDGNILGHKLEYNYNSHNVYIMADKQKNGIKVNFKIRHNIEDGSVQLADHYQQNTPIGDGPVLLPDNHYLSTQSALSKDPNEKRDHMVLLEFVTAAGITHGMDELYK",
      "initiatorMetAdded": false,
      "assembledTagged": "MGSSHHHHHHSSGENLYFQGSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFSYGVQCFSRYPDHMKQHDFFKSAMPEGYVQERTIFFKDDGNYKTRAEVKFEGDTLVNRIELKGIDFKEDGNILGHKLEYNYNSHNVYIMADKQKNGIKVNFKIRHNIEDGSVQLADHYQQNTPIGDGPVLLPDNHYLSTQSALSKDPNEKRDHMVLLEFVTAAGITHGMDELYK",
      "assembledCleaved": "GSKGEELFTGVVPILVELDGDVNGHKFSVSGEGEGDATYGKLTLKFICTTGKLPVPWPTLVTTFSYGVQCFSRYPDHMKQHDFFKSAMPEGYVQERTIFFKDDGNYKTRAEVKFEGDTLVNRIELKGIDFKEDGNILGHKLEYNYNSHNVYIMADKQKNGIKVNFKIRHNIEDGSVQLADHYQQNTPIGDGPVLLPDNHYLSTQSALSKDPNEKRDHMVLLEFVTAAGITHGMDELYK",
      "wildType": {
        "length": 238,
        "molecularWeightDa": 26885.99,
        "extinctionReduced": 21890,
        "extinctionCystines": 22015,
        "aliphaticIndex": 74.9,
        "isoelectricPoint": 5.67
      },
      "tagged": {
        "length": 257,
        "molecularWeightDa": 29023.14,
        "extinctionReduced": 23380,
        "extinctionCystines": 23505,
        "aliphaticIndex": 70.9,
        "isoelectricPoint": 5.94
      },
      "cleaved": {
        "length": 238,
        "molecularWeightDa": 26811.85,
        "extinctionReduced": 21890,
        "extinctionCystines": 22015,
        "aliphaticIndex": 74.9,
        "isoelectricPoint": 5.67
      }
    },
    "p53_acidic_cterm_asp": {
      "tagId": "none",
      "terminus": "n-term",
      "wt": "MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",
      "startResidue1Based": 1,
      "endResidue1Based": 21,
      "refused": null,
      "coreSequence": "MEEPQSDPSVEPPLSQETFSD",
      "initiatorMetAdded": false,
      "assembledTagged": "MEEPQSDPSVEPPLSQETFSD",
      "assembledCleaved": null,
      "wildType": {
        "length": 393,
        "molecularWeightDa": 43652.71,
        "extinctionReduced": 35410,
        "extinctionCystines": 36035,
        "aliphaticIndex": 59.1,
        "isoelectricPoint": 6.33
      },
      "tagged": {
        "length": 21,
        "molecularWeightDa": 2349.44,
        "extinctionReduced": 0,
        "extinctionCystines": 0,
        "aliphaticIndex": 32.4,
        "isoelectricPoint": 3.34
      },
      "cleaved": null,
      "protparam": {
        "isoelectricPoint": 3.34,
        "source": "ExPASy ProtParam output recorded in src/lib/seq/fixtures/protparam.json, retrieved 5 October 2026, for this exact fragment"
      }
    },
    "p53_acidic_cterm_glu": {
      "tagId": "none",
      "terminus": "n-term",
      "wt": "MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",
      "startResidue1Based": 1,
      "endResidue1Based": 11,
      "refused": null,
      "coreSequence": "MEEPQSDPSVE",
      "initiatorMetAdded": false,
      "assembledTagged": "MEEPQSDPSVE",
      "assembledCleaved": null,
      "wildType": {
        "length": 393,
        "molecularWeightDa": 43652.71,
        "extinctionReduced": 35410,
        "extinctionCystines": 36035,
        "aliphaticIndex": 59.1,
        "isoelectricPoint": 6.33
      },
      "tagged": {
        "length": 11,
        "molecularWeightDa": 1247.29,
        "extinctionReduced": 0,
        "extinctionCystines": 0,
        "aliphaticIndex": 26.4,
        "isoelectricPoint": 3.5
      },
      "cleaved": null,
      "protparam": {
        "isoelectricPoint": 3.5,
        "source": "ExPASy ProtParam output recorded in src/lib/seq/fixtures/protparam.json, retrieved 5 October 2026, for this exact fragment"
      }
    },
    "p53_flag_acidic_tagged": {
      "tagId": "flag",
      "terminus": "n-term",
      "wt": "MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",
      "startResidue1Based": 1,
      "endResidue1Based": 21,
      "refused": null,
      "coreSequence": "MEEPQSDPSVEPPLSQETFSD",
      "initiatorMetAdded": false,
      "assembledTagged": "MDYKDDDDKEEPQSDPSVEPPLSQETFSD",
      "assembledCleaved": null,
      "wildType": {
        "length": 393,
        "molecularWeightDa": 43652.71,
        "extinctionReduced": 35410,
        "extinctionCystines": 36035,
        "aliphaticIndex": 59.1,
        "isoelectricPoint": 6.33
      },
      "tagged": {
        "length": 29,
        "molecularWeightDa": 3344.39,
        "extinctionReduced": 1490,
        "extinctionCystines": 1490,
        "aliphaticIndex": 23.4,
        "isoelectricPoint": 3.63
      },
      "cleaved": null,
      "pins": "The C-terminal pK convention on the tag path: a histidine-free tag keeps this construct acidic, so the choice between ProtParam's 3.55 and Biopython's 4.55 for a terminal aspartate changes the answer here."
    },
    "p53_his6tev_fulllength_negative": {
      "tagId": "his6-tev",
      "terminus": "n-term",
      "wt": "MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",
      "startResidue1Based": 1,
      "endResidue1Based": 393,
      "refused": null,
      "coreSequence": "MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",
      "initiatorMetAdded": false,
      "assembledTagged": "MGSSHHHHHHSSGENLYFQGEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",
      "assembledCleaved": "GEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGPDEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAKSVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHERCSDSDGLAPPQHLIRVEGNLRVEYLDDRNTFRHSVVVPYEPPEVGSDCTTIHYNYMCNSSCMGGMNRRPILTIITLEDSSGNLLGRNSFEVRVCACPGRDRRTEEENLRKKGEPHHELPPGSTKRALPNNTSSSPQPKKKPLDGEYFTLQIRGRERFEMFRELNEALELKDAQAGKEPGGSRAHSSHLKSKKGQSTSRHKKLMFKTEGPDSD",
      "wildType": {
        "length": 393,
        "molecularWeightDa": 43652.71,
        "extinctionReduced": 35410,
        "extinctionCystines": 36035,
        "aliphaticIndex": 59.1,
        "isoelectricPoint": 6.33
      },
      "tagged": {
        "length": 412,
        "molecularWeightDa": 45789.86,
        "extinctionReduced": 36900,
        "extinctionCystines": 37525,
        "aliphaticIndex": 57.3,
        "isoelectricPoint": 6.42
      },
      "cleaved": {
        "length": 393,
        "molecularWeightDa": 43578.57,
        "extinctionReduced": 35410,
        "extinctionCystines": 36035,
        "aliphaticIndex": 59.1,
        "isoelectricPoint": 6.35
      },
      "demonstrates": "His6-TEV on the full-length acidic protein: the C-terminal convention cannot be exercised with a histidine-bearing tag at all, because six histidines at pK 5.98 raise every acidic construct above the carboxyl range, so the tag-path pin uses FLAG, which carries no histidine. A measured negative, kept as a result."
    }
  }
}
