计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
reactions-standardization【效率与协作】Use for RDKit reaction SMARTS/RXN workflows, product sanitization, MolStandardize cleanup/normalization/fragment/tautomer handling, R-group decomposition, stereochemistry/CIP practical workflows, and medicinal chemistry transformations. Route base molecule parsing to molecule-io-core and optional MMPA/Fraggle contrib workflows to contrib-utilities.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use this sub-skill when a task asks an agent to transform molecules with reaction SMARTS, clean medicinal chemistry structures, choose parent fragments/charge forms, enumerate or canonicalize tautomers, decompose analog series into R-groups, or preserve/debug stereochemistry through these workflows.
rdkit.Chem.rdChemReactions or AllChem.ReactionFromSmarts.rdkit.Chem.MolStandardize.rdMolStandardize for cleanup, normalization, reionization, uncharging, fragment parents, charge parents, and tautomer enumeration.rdkit.Chem.rdRGroupDecomposition.RGroupDecompose against labeled or auto-labeled cores and interpret unmatched molecules.Chem.FindPotentialStereo and rdCIPLabeler.AssignCIPLabels.None checks, and generic sanitization basics: molecule-io-core.descriptors-fingerprints.conformers-drawing.Contrib/ utilities: contrib-utilities.repo-development.references/reactions.md for reaction SMARTS construction, running reactions, product handling, and stereochemistry behavior in reactions.references/standardization-rgroups-stereo.md for MolStandardize, R-group decomposition, tautomer, uncharging, fragment-parent, and CIP/stereo recipes.references/troubleshooting.md for invalid SMARTS, unsanitized products, unmatched cores, and parameter mistakes.scripts/standardize_react_smoke.py for a tiny standalone cleanup plus reaction SMARTS smoke test.molecule-io-core, then pass checked Mol objects into reaction or standardization code.Validate(), and match the exact reactant tuple arity required by the reaction.RunReactants() output as unsanitized candidate products: copy or select products deliberately, run Chem.SanitizeMol, and report failures with the product index and SMILES when possible.Cleanup, FragmentParent, ChargeParent, Uncharger, or tautomer canonicalization rather than applying every transform blindly.unmatched indices before trusting the R-group table.isomericSmiles=True, use mapped reaction atoms, assign CIP labels after final sanitization, and document whether a transform preserves, creates, destroys, or inverts a stereocenter.from rdkit import Chem
from rdkit.Chem import rdChemReactions
rxn = rdChemReactions.ReactionFromSmarts("[C:1]=[O:2]>>[C:1][O:2]")
products = rxn.RunReactants((Chem.MolFromSmiles("CC=O"),))
product = products[0][0]
Chem.SanitizeMol(product)
smiles = Chem.MolToSmiles(product, isomericSmiles=True)
from rdkit import Chem
from rdkit.Chem.MolStandardize import rdMolStandardize
mol = Chem.MolFromSmiles("CC(=O)[O-].[Na+]")
parent = rdMolStandardize.FragmentParent(mol)
uncharged = rdMolStandardize.Uncharger().uncharge(parent)
Run the bundled helper in an environment where RDKit is importable:
python scripts/standardize_react_smoke.py --smiles "CC(=O)[O-].[Na+]" --reactant "CC=O"
It asserts that cleanup and fragment-parent selection produce valid molecules, builds a tiny reaction SMARTS, sanitizes the first product, and prints canonical SMILES outputs. Use --bad-reaction to confirm invalid reaction SMARTS are reported cleanly.