github Laboratoire-de-Chemoinformatique/SynPlanner v1.4.2

9 hours ago

Added

ORD (Open Reaction Database) Support

  • New synplan/utils/ord/ package for reading ORD .pb Dataset files via protobuf
    (dataset_pb2.py, reaction_pb2.py) without depending on ord-schema
  • iter_ord_reactions() iterator for lazy ORD .pb file parsing
  • convert_ord_to_smiles() utility for batch ORD-to-SMILES conversion
  • synplan ord_convert CLI command for converting ORD .pb files to .smi
  • ReactionReader and RawReactionReader now accept .pb files natively
  • _ORDReadAdapter for transparent ORD reading through the existing Reader protocol
  • 367-line test suite (test_ord_reader.py) covering ORD parsing

Configuration

  • ReactorConfig pydantic model for typed Reactor construction parameters
    (automorphism_filter, delete_atoms, one_shot, fix_aromatic_rings,
    fix_tautomers) with to_reactor_kwargs() serialization
  • load_reaction_rules() now accepts optional reactor_config parameter

Changed

Rule Extraction

  • Rule deduplication now uses CGR (condensed graph of reaction) instead of
    ReactionContainer hashing — correctly preserves query-level atom annotations
    (neighbors, hybridization) when rules contain QueryContainer molecules
  • _update_rules_statistics() and sort_rules() updated to use cgr_to_rule
    mapping for CGR-based dedup
  • process_completed_batch() receives cgr_to_rule dict

Docker

  • Added .dockerignore to exclude .git, .venv, docs, tests, tutorials,
    build caches, and data directories from Docker build context

Dependencies

  • Added protobuf>=4.21 to core dependencies (ORD .pb support)
  • Added grpcio-tools>=1.78.0 to 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 yaml imports from filtering.py and standardizing.py
  • Removed unused os import from cli.py
  • Removed unused Any import from mapping.py
  • Import order cleanup (ruff/black formatting)

Don't miss a new SynPlanner release

NewReleases is sending notifications on new releases.