pino-source-code / tests /test_material_data_integrity.py
Matthew Ford
feat: v11.6 repair/enrichment scripts + independent-candidate prep + integrity tests
1bb570d
Raw
History Blame Contribute Delete
828 Bytes
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"