Added
ORD (Open Reaction Database) Support
- New
synplan/utils/ord/package for reading ORD.pbDataset files via protobuf
(dataset_pb2.py,reaction_pb2.py) without depending onord-schema iter_ord_reactions()iterator for lazy ORD.pbfile parsingconvert_ord_to_smiles()utility for batch ORD-to-SMILES conversionsynplan ord_convertCLI command for converting ORD.pbfiles to.smiReactionReaderandRawReactionReadernow accept.pbfiles natively_ORDReadAdapterfor transparent ORD reading through the existingReaderprotocol- 367-line test suite (
test_ord_reader.py) covering ORD parsing
Configuration
ReactorConfigpydantic model for typed Reactor construction parameters
(automorphism_filter,delete_atoms,one_shot,fix_aromatic_rings,
fix_tautomers) withto_reactor_kwargs()serializationload_reaction_rules()now accepts optionalreactor_configparameter
Changed
Rule Extraction
- Rule deduplication now uses CGR (condensed graph of reaction) instead of
ReactionContainerhashing — correctly preserves query-level atom annotations
(neighbors, hybridization) when rules containQueryContainermolecules _update_rules_statistics()andsort_rules()updated to usecgr_to_rule
mapping for CGR-based dedupprocess_completed_batch()receivescgr_to_ruledict
Docker
- Added
.dockerignoreto exclude.git,.venv,docs,tests,tutorials,
build caches, and data directories from Docker build context
Dependencies
- Added
protobuf>=4.21to core dependencies (ORD.pbsupport) - Added
grpcio-tools>=1.78.0to dev dependencies (protobuf code generation)
Fixes & Cleanup
depict_settings()calls updated to module-level function (was
MoleculeContainer.depict_settings())routes_clustering_report/routes_subclustering_report: safer target SMILES
lookup with.get()fallback instead of direct key access- Removed unused
yamlimports fromfiltering.pyandstandardizing.py - Removed unused
osimport fromcli.py - Removed unused
Anyimport frommapping.py - Import order cleanup (ruff/black formatting)