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"