Matthew Ford
feat: v11.6 repair/enrichment scripts + independent-candidate prep + integrity tests
1bb570d | from __future__ import annotations | |
| from pathlib import Path | |
| from rdkit import Chem | |
| from rdkit.Chem import rdMolDescriptors | |
| from pino.substitution_v11 import load_jsonl | |
| ROOT = Path(__file__).resolve().parents[1] | |
| def test_neofolione_identity_has_matching_acyclic_structure(): | |
| profiles = load_jsonl(ROOT / "data/material_profiles_v11_5.jsonl") | |
| matches = [row for row in profiles if row.get("cas") == "111-79-5"] | |
| assert len(matches) == 1 | |
| profile = matches[0] | |
| mol = Chem.MolFromSmiles(profile["smiles"]) | |
| assert profile["name"] == "Neofolione" | |
| assert rdMolDescriptors.CalcMolFormula(mol) == "C10H18O2" | |
| assert mol.GetRingInfo().NumRings() == 0 | |
| assert profile["substantivity_log10_predicted"] is None | |
| assert profile["substantivity_model"] == "pending_recompute_after_identity_correction" | |