synkit 1.6.0__tar.gz → 1.6.1b1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. synkit-1.6.1b1/.gitignore +98 -0
  2. {synkit-1.6.0 → synkit-1.6.1b1}/PKG-INFO +2 -4
  3. {synkit-1.6.0 → synkit-1.6.1b1}/README.md +1 -1
  4. {synkit-1.6.0 → synkit-1.6.1b1}/pyproject.toml +2 -5
  5. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/_ir.py +114 -9
  6. synkit-1.6.1b1/synkit/Chem/Molecule/_chirality_loci.py +169 -0
  7. synkit-1.6.1b1/synkit/Chem/Molecule/_chirality_types.py +231 -0
  8. synkit-1.6.1b1/synkit/Chem/Molecule/_helical_loci.py +172 -0
  9. synkit-1.6.1b1/synkit/Chem/Molecule/_stereo_axis_evidence.py +204 -0
  10. synkit-1.6.1b1/synkit/Chem/Molecule/_stereo_element_detection.py +196 -0
  11. synkit-1.6.1b1/synkit/Chem/Molecule/_stereo_orientation_constraints.py +530 -0
  12. synkit-1.6.1b1/synkit/Chem/Molecule/_tetrahedral_carriers.py +71 -0
  13. synkit-1.6.1b1/synkit/Chem/Molecule/chirality.py +1056 -0
  14. synkit-1.6.1b1/synkit/Chem/Molecule/cip_assignment.py +577 -0
  15. synkit-1.6.1b1/synkit/Chem/Molecule/cip_ranking.py +848 -0
  16. synkit-1.6.1b1/synkit/Chem/Molecule/coordinate_stereo.py +528 -0
  17. synkit-1.6.1b1/synkit/Chem/Molecule/derived_stereo_naming.py +165 -0
  18. synkit-1.6.1b1/synkit/Chem/Molecule/global_stereo.py +175 -0
  19. synkit-1.6.1b1/synkit/Chem/Molecule/stereo_evidence.py +179 -0
  20. synkit-1.6.1b1/synkit/Chem/Molecule/stereo_perception.py +1053 -0
  21. synkit-1.6.1b1/synkit/Graph/Canon/__init__.py +16 -0
  22. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Canon/canon_algs.py +2 -1
  23. {synkit-1.6.0/synkit/Graph → synkit-1.6.1b1/synkit/Graph/Canon}/canon_graph.py +2 -2
  24. synkit-1.6.1b1/synkit/Graph/Canon/exact.py +960 -0
  25. synkit-1.6.1b1/synkit/Graph/Canon/exact_refinement.py +396 -0
  26. synkit-1.6.1b1/synkit/Graph/Canon/nauty.py +143 -0
  27. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Mech/conversion.py +40 -0
  28. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/__init__.py +144 -0
  29. synkit-1.6.1b1/synkit/Graph/Stereo/_descriptor_core.py +207 -0
  30. synkit-1.6.1b1/synkit/Graph/Stereo/_descriptor_serialization.py +138 -0
  31. synkit-1.6.1b1/synkit/Graph/Stereo/canonical.py +635 -0
  32. synkit-1.6.1b1/synkit/Graph/Stereo/configured.py +983 -0
  33. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/descriptors.py +434 -232
  34. synkit-1.6.1b1/synkit/Graph/Stereo/enumeration.py +595 -0
  35. synkit-1.6.1b1/synkit/Graph/Stereo/extended_descriptors.py +402 -0
  36. synkit-1.6.1b1/synkit/Graph/Stereo/global_configured.py +152 -0
  37. synkit-1.6.1b1/synkit/Graph/Stereo/global_stereo.py +312 -0
  38. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/identity.py +40 -0
  39. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/matching.py +14 -0
  40. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/orbits.py +44 -0
  41. synkit-1.6.1b1/synkit/Graph/Stereo/pairwise.py +225 -0
  42. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/rdkit_adapter.py +42 -18
  43. synkit-1.6.1b1/synkit/Graph/Stereo/supports.py +257 -0
  44. synkit-1.6.1b1/synkit/Graph/canon_graph.py +14 -0
  45. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/evidence.py +10 -4
  46. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/syn_rule.py +32 -0
  47. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/__init__.py +2 -0
  48. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/graph_rewrite.py +4 -0
  49. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/product_state.py +9 -5
  50. synkit-1.6.1b1/synkit/Synthesis/Reactor/serialization_policy.py +17 -0
  51. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/syn_reactor.py +47 -11
  52. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/version.py +1 -1
  53. synkit-1.6.0/.gitignore +0 -73
  54. synkit-1.6.0/Data/Mech/README.md +0 -46
  55. synkit-1.6.0/Data/Mech/polar.json +0 -15921
  56. synkit-1.6.0/Data/Mech/radical.json +0 -12062
  57. synkit-1.6.0/Data/Mech/stereo.json +0 -7875
  58. synkit-1.6.0/LICENSES/ACS-StereoMolGraph-SI-NOTICE.md +0 -19
  59. synkit-1.6.0/LICENSES/StereoMolGraph-MIT.txt +0 -30
  60. synkit-1.6.0/synkit/Chem/Molecule/chirality.py +0 -761
  61. synkit-1.6.0/synkit/Graph/Canon/__init__.py +0 -3
  62. synkit-1.6.0/synkit/Graph/Canon/canon_graph.py +0 -530
  63. synkit-1.6.0/synkit/Graph/Canon/nauty.py +0 -320
  64. {synkit-1.6.0 → synkit-1.6.1b1}/LICENSE +0 -0
  65. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/DAG/__init__.py +0 -0
  66. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/DAG/syncrn.py +0 -0
  67. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/__init__.py +0 -0
  68. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/abstract.py +0 -0
  69. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/arity.py +0 -0
  70. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/builder.py +0 -0
  71. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/derivation.py +0 -0
  72. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/flattener.py +0 -0
  73. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/keys.py +0 -0
  74. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/mixtures.py +0 -0
  75. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/smiles.py +0 -0
  76. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/state.py +0 -0
  77. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/strategy.py +0 -0
  78. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Construct/worker.py +0 -0
  79. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Pathway/__init__.py +0 -0
  80. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Pathway/_adapter.py +0 -0
  81. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Pathway/pathfinder.py +0 -0
  82. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Pathway/reachability.py +0 -0
  83. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Pathway/realizability.py +0 -0
  84. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Petrinet/__init__.py +0 -0
  85. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Petrinet/analyzer.py +0 -0
  86. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Petrinet/net.py +0 -0
  87. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Petrinet/persistence.py +0 -0
  88. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Petrinet/semiflows.py +0 -0
  89. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Petrinet/structure.py +0 -0
  90. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Props/__init__.py +0 -0
  91. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Props/dynamics.py +0 -0
  92. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Props/helper.py +0 -0
  93. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Props/stoich.py +0 -0
  94. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Props/thermo.py +0 -0
  95. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Query/__init__.py +0 -0
  96. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Query/kegg_api.py +0 -0
  97. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Query/kegg_extract.py +0 -0
  98. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Query/kegg_impute.py +0 -0
  99. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Query/kegg_parse.py +0 -0
  100. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Structure/__init__.py +0 -0
  101. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Structure/reaction.py +0 -0
  102. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Structure/rule.py +0 -0
  103. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Structure/species.py +0 -0
  104. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Structure/syncrn.py +0 -0
  105. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/__init__.py +0 -0
  106. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/_common.py +0 -0
  107. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/automorphism.py +0 -0
  108. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/canon.py +0 -0
  109. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/isomorphism.py +0 -0
  110. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/symmetry.py +0 -0
  111. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Symmetry/wl_canon.py +0 -0
  112. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Visualize/__init__.py +0 -0
  113. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Visualize/crn_vis.py +0 -0
  114. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Visualize/labels.py +0 -0
  115. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Visualize/layout.py +0 -0
  116. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Visualize/palette.py +0 -0
  117. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Visualize/validation.py +0 -0
  118. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/Visualize/vis.py +0 -0
  119. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/__init__.py +0 -0
  120. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Structure/__init__.py +0 -0
  121. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Structure/backend.py +0 -0
  122. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Structure/conversion.py +0 -0
  123. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Structure/hyperedge.py +0 -0
  124. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Structure/hypergraph.py +0 -0
  125. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Structure/rxn.py +0 -0
  126. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Symmetry/__init__.py +0 -0
  127. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Symmetry/automorphism.py +0 -0
  128. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Symmetry/canon.py +0 -0
  129. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/Symmetry/wl_canon.py +0 -0
  130. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/__init__.py +0 -0
  131. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/configs/__init__.py +0 -0
  132. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/configs/loader.py +0 -0
  133. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/configs/models.py +0 -0
  134. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/constants.py +0 -0
  135. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/crn_formula.py +0 -0
  136. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/deficiency.py +0 -0
  137. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/enumerator.py +0 -0
  138. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/exceptions.py +0 -0
  139. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/explorer.py +0 -0
  140. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/helpers.py +0 -0
  141. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/injectivity.py +0 -0
  142. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/motif.py +0 -0
  143. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/network.py +0 -0
  144. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/pathway.py +0 -0
  145. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/properties.py +0 -0
  146. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/reaction.py +0 -0
  147. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/utils.py +0 -0
  148. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/CRN/dev_crn/viz.py +0 -0
  149. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Cluster/__init__.py +0 -0
  150. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Cluster/butina.py +0 -0
  151. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Fingerprint/__init__.py +0 -0
  152. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Fingerprint/fp_calculator.py +0 -0
  153. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Fingerprint/smiles_featurizer.py +0 -0
  154. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Fingerprint/transformation_fp.py +0 -0
  155. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Molecule/__init__.py +0 -0
  156. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Molecule/atom_features.py +0 -0
  157. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Molecule/descriptors.py +0 -0
  158. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Molecule/formula.py +0 -0
  159. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Molecule/graph_annotator.py +0 -0
  160. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Molecule/standardize.py +0 -0
  161. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Molecule/valence.py +0 -0
  162. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/__init__.py +0 -0
  163. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/aam_validator.py +0 -0
  164. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/chem/__init__.py +0 -0
  165. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/chem/aam.py +0 -0
  166. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/chem/its.py +0 -0
  167. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/chem/smiles.py +0 -0
  168. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/__init__.py +0 -0
  169. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/branching.py +0 -0
  170. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/certificate.py +0 -0
  171. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/enumerate.py +0 -0
  172. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/enumeration_result.py +0 -0
  173. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/exhaustive.py +0 -0
  174. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/kernel.py +0 -0
  175. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/exact/milp.py +0 -0
  176. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/graph/__init__.py +0 -0
  177. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/graph/automorphism.py +0 -0
  178. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/graph/blockcut.py +0 -0
  179. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/graph/labeled_graph.py +0 -0
  180. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/graph/refine.py +0 -0
  181. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/graph/synkit_adapter.py +0 -0
  182. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/io/__init__.py +0 -0
  183. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/io/idxmapstr.py +0 -0
  184. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/slap/__init__.py +0 -0
  185. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/slap/lap.py +0 -0
  186. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/Mapper/slap/sequential.py +0 -0
  187. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/__init__.py +0 -0
  188. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/aam_validator.py +0 -0
  189. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/balance_check.py +0 -0
  190. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/canon_rsmi.py +0 -0
  191. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/cleaning.py +0 -0
  192. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/deionize.py +0 -0
  193. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/explicit_h_audit.py +0 -0
  194. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/fix_aam.py +0 -0
  195. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/neutralize.py +0 -0
  196. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/radical_wildcard.py +0 -0
  197. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/standardize.py +0 -0
  198. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/Reaction/tautomerize.py +0 -0
  199. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/__init__.py +0 -0
  200. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Chem/utils.py +0 -0
  201. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Data/__init__.py +0 -0
  202. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Data/aldol.json.gz +0 -0
  203. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Data/gen_partial_aam.py +0 -0
  204. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Data/paracetamol.json.gz +0 -0
  205. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Context/__init__.py +0 -0
  206. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Context/hier_context.py +0 -0
  207. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Context/radius_expand.py +0 -0
  208. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/__init__.py +0 -0
  209. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/api.py +0 -0
  210. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/audit.py +0 -0
  211. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/catalog.py +0 -0
  212. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/detector.py +0 -0
  213. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/model.py +0 -0
  214. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/recognizers.py +0 -0
  215. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/FG/ring_system.py +0 -0
  216. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/Descriptors/topology.py +0 -0
  217. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/Fingerprint/__init__.py +0 -0
  218. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/Fingerprint/wl_rxn_fps.py +0 -0
  219. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/__init__.py +0 -0
  220. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/graph_descriptors.py +0 -0
  221. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/graph_fps.py +0 -0
  222. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/graph_signature.py +0 -0
  223. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/hash_fps.py +0 -0
  224. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/morgan_fps.py +0 -0
  225. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/path_fps.py +0 -0
  226. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Feature/wl_hash.py +0 -0
  227. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Fusion/__init__.py +0 -0
  228. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Fusion/candidate.py +0 -0
  229. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Fusion/constructor.py +0 -0
  230. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Fusion/identity.py +0 -0
  231. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Fusion/interface.py +0 -0
  232. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Fusion/search.py +0 -0
  233. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Hyrogen/__init__.py +0 -0
  234. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Hyrogen/_misc.py +0 -0
  235. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Hyrogen/hcomplete.py +0 -0
  236. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Hyrogen/hextend.py +0 -0
  237. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/__init__.py +0 -0
  238. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/its_builder.py +0 -0
  239. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/its_construction.py +0 -0
  240. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/its_decompose.py +0 -0
  241. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/its_destruction.py +0 -0
  242. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/its_expand.py +0 -0
  243. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/its_relabel.py +0 -0
  244. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/its_reverter.py +0 -0
  245. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/normalize_aam.py +0 -0
  246. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/partial_its.py +0 -0
  247. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/ITS/rc_extractor.py +0 -0
  248. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/MTG/__init__.py +0 -0
  249. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/MTG/mcs_matcher.py +0 -0
  250. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/MTG/mtg.py +0 -0
  251. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/MTG/mtg_explore.py +0 -0
  252. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/MTG/utils.py +0 -0
  253. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/__init__.py +0 -0
  254. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/approx_mcs.py +0 -0
  255. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/auto_est.py +0 -0
  256. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/automorphism.py +0 -0
  257. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/batch_cluster.py +0 -0
  258. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/dedup_matches.py +0 -0
  259. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/graph_cluster.py +0 -0
  260. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/graph_matcher.py +0 -0
  261. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/graph_morphism.py +0 -0
  262. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/mcs_matcher.py +0 -0
  263. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/multi_turbo_iso.py +0 -0
  264. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/orbit.py +0 -0
  265. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/partial_matcher.py +0 -0
  266. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/sing.py +0 -0
  267. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/subgraph_matcher.py +0 -0
  268. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/turbo_iso.py +0 -0
  269. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Matcher/wl_sel.py +0 -0
  270. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Mech/__init__.py +0 -0
  271. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Mech/conversion_debug.py +0 -0
  272. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Mech/electron_accounting.py +0 -0
  273. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Mech/lwg_editor.py +0 -0
  274. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Mech/lwg_ops.py +0 -0
  275. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Morphism/__init__.py +0 -0
  276. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Morphism/constraints.py +0 -0
  277. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Morphism/morphism.py +0 -0
  278. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Morphism/stereo.py +0 -0
  279. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Morphism/stereo_morphism.py +0 -0
  280. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Morphism/stereo_morphism_helpers.py +0 -0
  281. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Morphism/stereo_morphism_types.py +0 -0
  282. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/changes.py +0 -0
  283. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/couplings.py +0 -0
  284. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/interchange.py +0 -0
  285. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/legacy.py +0 -0
  286. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Stereo/outcomes.py +0 -0
  287. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Wildcard/__init__.py +0 -0
  288. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Wildcard/fuse_graph.py +0 -0
  289. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Wildcard/graph_wc.py +0 -0
  290. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Wildcard/its_merge.py +0 -0
  291. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Wildcard/radwc.py +0 -0
  292. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Wildcard/wc_matcher.py +0 -0
  293. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/Wildcard/wildcard.py +0 -0
  294. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/__init__.py +0 -0
  295. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/syn_graph.py +0 -0
  296. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Graph/utils.py +0 -0
  297. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/__init__.py +0 -0
  298. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/chem_converter.py +0 -0
  299. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/combinatorial/__init__.py +0 -0
  300. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/combinatorial/gml_to_graph.py +0 -0
  301. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/combinatorial/graph_to_gml.py +0 -0
  302. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/combinatorial/graph_to_smarts.py +0 -0
  303. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/combinatorial/smarts_expander.py +0 -0
  304. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/combinatorial/smarts_generalizer.py +0 -0
  305. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/combinatorial/smarts_to_graph.py +0 -0
  306. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/conversion.py +0 -0
  307. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/data_io.py +0 -0
  308. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/data_process.py +0 -0
  309. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/debug.py +0 -0
  310. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/gml_to_nx.py +0 -0
  311. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/graph_to_mol.py +0 -0
  312. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/mol_to_graph.py +0 -0
  313. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/mol_to_graph_chemistry.py +0 -0
  314. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/nx_to_gml.py +0 -0
  315. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/IO/smiles_to_id.py +0 -0
  316. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/__init__.py +0 -0
  317. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/adapters.py +0 -0
  318. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/audit.py +0 -0
  319. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/benchmark.py +0 -0
  320. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/compatibility.py +0 -0
  321. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/drawing.py +0 -0
  322. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/electron_models.py +0 -0
  323. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/equivalence.py +0 -0
  324. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/interchange.py +0 -0
  325. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/model.py +0 -0
  326. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/radical_data.py +0 -0
  327. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/replay.py +0 -0
  328. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/schema.py +0 -0
  329. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/stereo_state.py +0 -0
  330. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Mechanism/symbols.py +0 -0
  331. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Apply/__init__.py +0 -0
  332. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Apply/rule_matcher.py +0 -0
  333. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Compose/__init__.py +0 -0
  334. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Compose/_identity.py +0 -0
  335. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Modify/__init__.py +0 -0
  336. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Modify/implict_rule.py +0 -0
  337. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Modify/longest_path.py +0 -0
  338. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Modify/molecule_rule.py +0 -0
  339. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Modify/prune_templates.py +0 -0
  340. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Modify/rule_utils.py +0 -0
  341. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/Modify/strip_rule.py +0 -0
  342. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/__init__.py +0 -0
  343. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/generic_stereo.py +0 -0
  344. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Rule/stereo_identity.py +0 -0
  345. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/MSR/__init__.py +0 -0
  346. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/MSR/path_finder.py +0 -0
  347. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Metrics/__init__.py +0 -0
  348. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Metrics/_base.py +0 -0
  349. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Metrics/_plot.py +0 -0
  350. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Metrics/_ranking.py +0 -0
  351. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/assignment.py +0 -0
  352. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/batch_reactor.py +0 -0
  353. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/benchmark.py +0 -0
  354. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/deduplication.py +0 -0
  355. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/fusion_validation.py +0 -0
  356. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/imba_engine.py +0 -0
  357. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/partial_engine.py +0 -0
  358. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/post_syn.py +0 -0
  359. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/rbl_engine.py +0 -0
  360. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/rbl_matching.py +0 -0
  361. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/rbl_policy.py +0 -0
  362. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/rbl_reaction.py +0 -0
  363. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/reactor_matching.py +0 -0
  364. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/reactor_stereo.py +0 -0
  365. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/rule_filter.py +0 -0
  366. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/serialization.py +0 -0
  367. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/Reactor/strategy.py +0 -0
  368. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/__init__.py +0 -0
  369. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Synthesis/reactor_utils.py +0 -0
  370. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Utils/__init__.py +0 -0
  371. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Utils/utils.py +0 -0
  372. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/__init__.py +0 -0
  373. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/crn/__init__.py +0 -0
  374. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/crn/visualizer.py +0 -0
  375. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/__init__.py +0 -0
  376. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/arrows.py +0 -0
  377. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/chem.py +0 -0
  378. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/constants.py +0 -0
  379. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/layout.py +0 -0
  380. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/mapping.py +0 -0
  381. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/models.py +0 -0
  382. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/render.py +0 -0
  383. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/utils.py +0 -0
  384. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/epd/visualizer.py +0 -0
  385. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/graph_visualizer.py +0 -0
  386. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/its/__init__.py +0 -0
  387. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/its/drawer.py +0 -0
  388. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/its_drawer.py +0 -0
  389. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/molecule/__init__.py +0 -0
  390. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/molecule/drawer.py +0 -0
  391. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/molecule/reaction.py +0 -0
  392. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/molecule_drawer.py +0 -0
  393. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/mtg/__init__.py +0 -0
  394. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/mtg/drawer.py +0 -0
  395. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/mtg_drawer.py +0 -0
  396. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/pdf_writer.py +0 -0
  397. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/reaction/__init__.py +0 -0
  398. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/reaction/rule.py +0 -0
  399. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/reaction/rxn.py +0 -0
  400. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/reaction_drawer.py +0 -0
  401. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/space/__init__.py +0 -0
  402. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/space/chemical.py +0 -0
  403. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/space/embedding.py +0 -0
  404. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/vis_synedu/Vis/__init__.py +0 -0
  405. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/vis_synedu/Vis/dpo.py +0 -0
  406. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/vis_synedu/rxn_vis.py +0 -0
  407. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/vis_synedu/vis.py +0 -0
  408. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/visual_drawer.py +0 -0
  409. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/Vis/visual_model.py +0 -0
  410. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/__init__.py +0 -0
  411. {synkit-1.6.0 → synkit-1.6.1b1}/synkit/examples.py +0 -0
@@ -0,0 +1,98 @@
1
+ *.pyc
2
+ *cachedir
3
+ *.csv
4
+ !Experiment/Lewis/Data/all.csv
5
+ !Experiment/Lewis/Data/combinatorial_all.csv
6
+ !Experiment/Lewis/mech_path/Data/reconstruction_audit/polar-failures.csv
7
+ !Experiment/Lewis/mech_path/Data/reconstruction_audit/radical-failures.csv
8
+ !Experiment/Lewis/mech_path/Data/reconstruction_audit/radical-arrow-review.csv
9
+ */catboost_info/*
10
+
11
+
12
+ *.pkl.gz
13
+ *.pdf
14
+
15
+ .coverage
16
+ dev/*
17
+ # Local development, audit, and debugging helpers.
18
+ /tools/
19
+ !/tools/
20
+ /tools/*
21
+ !/tools/stereo_conformance.py
22
+ !/tools/check_python_file_size.py
23
+ /debug/
24
+ /Test/Conformance/
25
+ *.rdf
26
+ test_syn_reactor.py
27
+
28
+ Data/Benchmark/*
29
+ !Data/Benchmark/partial_expand/
30
+ !Data/Benchmark/partial_expand/**
31
+ Data/Benchmark/partial_expand/results/
32
+ !Data/Benchmark/mech/
33
+ Data/Benchmark/mech/*
34
+ !Data/Benchmark/mech/README.md
35
+ !Data/Benchmark/mech/polar-failures.csv
36
+ !Data/Benchmark/mech/radical-failures.csv
37
+ *.json.gz
38
+ !Experiment/Lewis/Data/benchmark.json.gz
39
+ # *.png
40
+
41
+ run.sh
42
+ docs/*
43
+ run_rdcanon.py
44
+ Data/Fragment/*
45
+ test_partial.py
46
+ Data/Benchmark/synthesis/*
47
+ Data/USPTO/*
48
+ crn/*
49
+ test_run.py
50
+ Data/Study/CRN/case_formose/*
51
+
52
+ synkit/Graph/dev/*
53
+ *.ipynb
54
+ *.json
55
+ # Stereo benchmark inputs are versioned for reproducible fresh-clone runs.
56
+ # Generated reports stay Git-visible so completed results can be committed
57
+ # explicitly, including reports created by the long raw stress stages.
58
+ !Experiment/Stereo/Data/**/*.csv
59
+ !Experiment/Stereo/Data/**/*.json
60
+ !Data/Schema/
61
+ !Data/Schema/attribute_propagation_v1_5.json
62
+ !/tools/python_file_size_baseline.json
63
+ !Data/Mech/polar.json
64
+ !Data/Mech/radical.json
65
+ !Data/Mech/stereo.json
66
+ # Canonical reviewed MechanismBench partitions are executable test data.
67
+ !Experiment/Lewis/mech_path/Data/MechanismBench/polar.json
68
+ !Experiment/Lewis/mech_path/Data/MechanismBench/radical.json
69
+ !Experiment/Lewis/mech_path/Data/MechanismBench/stereo.json
70
+ !Experiment/Lewis/mech_path/Data/MechanismBench/evidence/mechanismbench_evidence.json
71
+ !Experiment/Lewis/rule_replay/Data/bidirectional-replay/results.json
72
+ !Experiment/Lewis/rule_replay/Data/relative-lone-pair/results.json
73
+ !Experiment/Stereo/Data/manifest.json
74
+ !Experiment/Stereo/Data/Perception/perception_conformance_cases.json
75
+ !Experiment/Stereo/Data/Perception/full_detection_report.json
76
+ !Test/Synthesis/Reactor/fixtures/small_rewrite_conformance.json
77
+ !Data/Conformance/stereomolgraph_graph_conformance.json
78
+ !Data/Benchmark/Stereo/
79
+ !Data/Benchmark/Stereo/**
80
+ *.txt
81
+ !LICENSES/*.txt
82
+ *.log
83
+ /dist/
84
+ sprint/
85
+ sprint/*
86
+ test_syn.py
87
+ .gitignore
88
+ measure_candidate_stages.py
89
+ run_valid_bug_cases.py
90
+ paper/*
91
+
92
+ # Fresh benchmark runs are reproducible and can be large. Retained reference
93
+ # outputs live inside each experiment's Data directory.
94
+ Experiment/Lewis/Runs/
95
+
96
+ # Keep generated Python bytecode ignored after directory re-inclusions above.
97
+ **/__pycache__/
98
+ *.py[cod]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synkit
3
- Version: 1.6.0
3
+ Version: 1.6.1b1
4
4
  Summary: Utility for reaction modeling using graph grammar
5
5
  Project-URL: homepage, https://github.com/TieuLongPhan/SynKit
6
6
  Project-URL: source, https://github.com/TieuLongPhan/SynKit
@@ -9,8 +9,6 @@ Project-URL: documentation, https://tieulongphan.github.io/SynKit/
9
9
  Author-email: Tieu Long Phan <tieu@bioinf.uni-leipzig.de>
10
10
  License: MIT
11
11
  License-File: LICENSE
12
- License-File: LICENSES/ACS-StereoMolGraph-SI-NOTICE.md
13
- License-File: LICENSES/StereoMolGraph-MIT.txt
14
12
  Classifier: License :: OSI Approved :: MIT License
15
13
  Classifier: Operating System :: OS Independent
16
14
  Classifier: Programming Language :: Python :: 3
@@ -78,7 +76,7 @@ Canonical internal electron loci are `lp`, `σ`, `π`, and `∙`; adapters accep
78
76
  documented ASCII and legacy spellings. Curved arrows carry two electrons and
79
77
  fishhooks carry one electron. Coupled radical events commit atomically.
80
78
 
81
- The current package version is `1.6.0`.
79
+ The current package version is `1.6.1b1`.
82
80
 
83
81
  For more details on each utility within the repository, please refer to the documentation provided in the respective folders.
84
82
 
@@ -37,7 +37,7 @@ Canonical internal electron loci are `lp`, `σ`, `π`, and `∙`; adapters accep
37
37
  documented ASCII and legacy spellings. Curved arrows carry two electrons and
38
38
  fishhooks carry one electron. Coupled radical events commit atomically.
39
39
 
40
- The current package version is `1.6.0`.
40
+ The current package version is `1.6.1b1`.
41
41
 
42
42
  For more details on each utility within the repository, please refer to the documentation provided in the respective folders.
43
43
 
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "synkit"
7
- version = "1.6.0"
7
+ version = "1.6.1b1"
8
8
  description = "Utility for reaction modeling using graph grammar"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  license = { text = "MIT" }
12
- license-files = ["LICENSE", "LICENSES/*"]
12
+ license-files = ["LICENSE", "synkit/Graph/Stereo/LICENSES/*"]
13
13
  authors = [
14
14
  { name = "Tieu Long Phan", email = "tieu@bioinf.uni-leipzig.de" }
15
15
  ]
@@ -67,12 +67,10 @@ packages = ["synkit"]
67
67
  [tool.hatch.build.targets.wheel.force-include]
68
68
  "synkit/Data/aldol.json.gz" = "synkit/Data/aldol.json.gz"
69
69
  "synkit/Data/paracetamol.json.gz" = "synkit/Data/paracetamol.json.gz"
70
- "Data/Mech" = "synkit/Data/Mech"
71
70
 
72
71
  [tool.hatch.build.targets.sdist]
73
72
  include = [
74
73
  "/synkit",
75
- "/Data/Mech",
76
74
  "/LICENSE",
77
75
  "/LICENSES",
78
76
  "/README.md",
@@ -82,4 +80,3 @@ include = [
82
80
  [tool.hatch.build.targets.sdist.force-include]
83
81
  "synkit/Data/aldol.json.gz" = "synkit/Data/aldol.json.gz"
84
82
  "synkit/Data/paracetamol.json.gz" = "synkit/Data/paracetamol.json.gz"
85
- "Data/Mech" = "Data/Mech"
@@ -7,6 +7,13 @@ from typing import Any, Dict, List, Optional, Sequence, Tuple
7
7
 
8
8
  import networkx as nx
9
9
 
10
+ from synkit.Graph.Canon.exact import (
11
+ CanonicalSearchIncomplete,
12
+ ExactCanonicalResult,
13
+ ExactColoredGraphCanonicalizer,
14
+ IncompleteCanonicalResult,
15
+ )
16
+
10
17
  from ._common import (
11
18
  AutomorphismResult,
12
19
  CanonicalResult,
@@ -723,6 +730,91 @@ class IRCanonicalEngine:
723
730
  Exact-search internal result.
724
731
  :rtype: IRInternalResult
725
732
  """
733
+ if max_count is not None or timeout_sec is not None or stop_after_two:
734
+ return self._run_bounded_compatibility(
735
+ max_count=max_count,
736
+ timeout_sec=timeout_sec,
737
+ stop_after_two=stop_after_two,
738
+ )
739
+ cached = self._reuse_cached_run(
740
+ max_count=max_count,
741
+ timeout_sec=timeout_sec,
742
+ stop_after_two=stop_after_two,
743
+ )
744
+ if cached is not None:
745
+ return cached
746
+
747
+ native = ExactColoredGraphCanonicalizer(
748
+ self.G,
749
+ node_color=lambda attrs: node_token(attrs, self.config),
750
+ edge_color=lambda attrs: edge_token(attrs, self.config),
751
+ ).search(timeout_seconds=timeout_sec)
752
+ if isinstance(native, IncompleteCanonicalResult):
753
+ raise CanonicalSearchIncomplete(
754
+ "CRN canonicalization did not complete: " f"{native.reason}."
755
+ )
756
+ if not isinstance(native, ExactCanonicalResult):
757
+ raise RuntimeError("Native exact canonicalizer returned no result.")
758
+
759
+ full_mappings = [witness.as_dict() for witness in native.automorphisms]
760
+ cap = 2 if stop_after_two else max_count
761
+ stopped = cap is not None and len(full_mappings) > cap
762
+ sample_mappings = full_mappings if cap is None else full_mappings[:cap]
763
+ best_order = list(native.canonical_order)
764
+ sample_perms = [
765
+ [mapping[node] for node in best_order] for mapping in sample_mappings
766
+ ]
767
+ orbits = orbits_from_mappings(
768
+ best_order,
769
+ (
770
+ sample_mappings
771
+ if sample_mappings
772
+ else [{node: node for node in best_order}]
773
+ ),
774
+ )
775
+ result = IRInternalResult(
776
+ canonical_order=best_order,
777
+ canonical_key=graph_key_from_order(
778
+ self.G,
779
+ best_order,
780
+ self.config,
781
+ ),
782
+ automorphism_count=len(sample_mappings),
783
+ sample_permutations=sample_perms,
784
+ sample_mappings=sample_mappings,
785
+ orbits=orbits,
786
+ elapsed_seconds=native.statistics.elapsed_seconds,
787
+ stopped_early=stopped,
788
+ )
789
+ if timeout_sec is None:
790
+ full_result = IRInternalResult(
791
+ canonical_order=best_order,
792
+ canonical_key=result.canonical_key,
793
+ automorphism_count=len(full_mappings),
794
+ sample_permutations=[
795
+ [mapping[node] for node in best_order] for mapping in full_mappings
796
+ ],
797
+ sample_mappings=full_mappings,
798
+ orbits=[set(cell) for cell in native.orbits],
799
+ elapsed_seconds=native.statistics.elapsed_seconds,
800
+ stopped_early=False,
801
+ )
802
+ self._exact_full_cache = full_result
803
+ return result
804
+
805
+ def _run_bounded_compatibility(
806
+ self,
807
+ *,
808
+ max_count: Optional[int],
809
+ timeout_sec: Optional[float],
810
+ stop_after_two: bool,
811
+ ) -> IRInternalResult:
812
+ """Run the historical bounded diagnostic IR traversal.
813
+
814
+ This path preserves CRN automorphism-count and timeout diagnostics.
815
+ ``stopped_early`` is authoritative: callers may inspect the partial
816
+ evidence, but :meth:`canonical_result` refuses to promote it.
817
+ """
726
818
  cached = self._reuse_cached_run(
727
819
  max_count=max_count,
728
820
  timeout_sec=timeout_sec,
@@ -742,7 +834,12 @@ class IRCanonicalEngine:
742
834
  nonlocal best_key, best_order, sample_perms, count, stopped
743
835
  if stopped:
744
836
  return
745
- if should_stop(start, timeout_sec, count=count, max_count=max_count):
837
+ if should_stop(
838
+ start,
839
+ timeout_sec,
840
+ count=count,
841
+ max_count=max_count,
842
+ ):
746
843
  stopped = True
747
844
  return
748
845
 
@@ -770,18 +867,25 @@ class IRCanonicalEngine:
770
867
 
771
868
  target = self._target_cell(refined)
772
869
  ordered_candidates = sorted(
773
- target, key=lambda v: self._candidate_order_key(v, refined)
870
+ target,
871
+ key=lambda value: self._candidate_order_key(
872
+ value,
873
+ refined,
874
+ ),
774
875
  )
775
- for v in ordered_candidates:
776
- child = self._build_child_partition(refined, target, v)
876
+ for value in ordered_candidates:
877
+ child = self._build_child_partition(
878
+ refined,
879
+ target,
880
+ value,
881
+ )
777
882
  dfs(child)
778
883
  if stopped:
779
884
  return
780
885
 
781
886
  dfs(init)
782
887
  assert best_key is not None and best_order is not None
783
-
784
- result = self._assemble_result(
888
+ return self._assemble_result(
785
889
  start=start,
786
890
  best_key=best_key,
787
891
  best_order=best_order,
@@ -789,9 +893,6 @@ class IRCanonicalEngine:
789
893
  count=count,
790
894
  stopped=stopped,
791
895
  )
792
- if timeout_sec is None and not result.stopped_early and not stop_after_two:
793
- self._exact_full_cache = result
794
- return result
795
896
 
796
897
  def canonical_result(
797
898
  self, *, timeout_sec: Optional[float] = None
@@ -808,6 +909,10 @@ class IRCanonicalEngine:
808
909
  :rtype: CanonicalResult
809
910
  """
810
911
  res = self.run(timeout_sec=timeout_sec)
912
+ if res.stopped_early:
913
+ raise CanonicalSearchIncomplete(
914
+ "CRN canonical identity requires a complete search."
915
+ )
811
916
  return CanonicalResult(
812
917
  canonical_order=res.canonical_order,
813
918
  canonical_key=res.canonical_key,
@@ -0,0 +1,169 @@
1
+ """Topology-only detection of potential molecular stereo axes."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import networkx as nx
6
+ from rdkit import Chem
7
+
8
+ from synkit.Graph.Stereo.descriptors import Reference, virtual_reference
9
+ from synkit.Graph.Stereo.supports import AxisStereoSupport
10
+
11
+
12
+ def _cumulene_end_references(
13
+ atom: Chem.Atom,
14
+ axis_neighbor: int,
15
+ ) -> tuple[Reference, Reference] | None:
16
+ """Return zero-based terminal references for one cumulene end."""
17
+ center = atom.GetIdx()
18
+ references: list[Reference] = [
19
+ neighbor.GetIdx()
20
+ for neighbor in atom.GetNeighbors()
21
+ if neighbor.GetIdx() != axis_neighbor
22
+ ]
23
+ hidden_hydrogens = int(atom.GetNumExplicitHs()) + int(atom.GetNumImplicitHs())
24
+ references.extend(virtual_reference("H", center) for _ in range(hidden_hydrogens))
25
+ if len(references) == 1 and atom.GetAtomicNum() == 15:
26
+ references.append(virtual_reference("LP", center))
27
+ if len(references) != 2 or references[0] == references[1]:
28
+ return None
29
+ return references[0], references[1]
30
+
31
+
32
+ def _potential_cumulene_supports(
33
+ molecule: Chem.Mol,
34
+ ) -> tuple[AxisStereoSupport, ...]:
35
+ """Detect even-cumulene axes without assigning their orientation."""
36
+ double_graph = nx.Graph()
37
+ double_graph.add_edges_from(
38
+ (bond.GetBeginAtomIdx(), bond.GetEndAtomIdx())
39
+ for bond in molecule.GetBonds()
40
+ if bond.GetBondType() == Chem.BondType.DOUBLE
41
+ )
42
+ supports = []
43
+ for component in nx.connected_components(double_graph):
44
+ axis = double_graph.subgraph(component)
45
+ edge_count = axis.number_of_edges()
46
+ if edge_count < 2 or edge_count % 2 != 0:
47
+ continue
48
+ if edge_count != axis.number_of_nodes() - 1:
49
+ continue
50
+ degrees = dict(axis.degree())
51
+ if any(degree > 2 for degree in degrees.values()):
52
+ continue
53
+ ends = sorted(node for node, degree in degrees.items() if degree == 1)
54
+ if len(ends) != 2:
55
+ continue
56
+ path = nx.shortest_path(axis, ends[0], ends[1])
57
+ if any(molecule.GetAtomWithIdx(node).GetDegree() != 2 for node in path[1:-1]):
58
+ continue
59
+ left_refs = _cumulene_end_references(
60
+ molecule.GetAtomWithIdx(path[0]),
61
+ path[1],
62
+ )
63
+ right_refs = _cumulene_end_references(
64
+ molecule.GetAtomWithIdx(path[-1]),
65
+ path[-2],
66
+ )
67
+ if left_refs is None or right_refs is None:
68
+ continue
69
+ supports.append(AxisStereoSupport(tuple(path), (left_refs, right_refs)))
70
+ return tuple(supports)
71
+
72
+
73
+ def _potential_biaryl_supports(
74
+ molecule: Chem.Mol,
75
+ *,
76
+ include_extended_ring_axes: bool,
77
+ ) -> tuple[AxisStereoSupport, ...]:
78
+ """Detect ring-associated bond axes without orientation or barrier claims."""
79
+ supports = []
80
+ for bond in molecule.GetBonds():
81
+ if bond.GetBondType() not in {
82
+ Chem.BondType.SINGLE,
83
+ Chem.BondType.AROMATIC,
84
+ }:
85
+ continue
86
+ left_atom = bond.GetBeginAtom()
87
+ right_atom = bond.GetEndAtom()
88
+ hybridizations = {
89
+ left_atom.GetHybridization(),
90
+ right_atom.GetHybridization(),
91
+ }
92
+ containing_ring_sizes = tuple(
93
+ len(ring)
94
+ for ring in molecule.GetRingInfo().BondRings()
95
+ if bond.GetIdx() in ring
96
+ )
97
+ aromatic_ring_axis = (
98
+ bond.GetIsAromatic()
99
+ and left_atom.GetIsAromatic()
100
+ and right_atom.GetIsAromatic()
101
+ and any(size > 6 for size in containing_ring_sizes)
102
+ )
103
+ linked_ring_axis = (
104
+ not bond.GetIsAromatic()
105
+ and (
106
+ left_atom.IsInRing()
107
+ or right_atom.IsInRing()
108
+ )
109
+ and Chem.HybridizationType.SP2 in hybridizations
110
+ and hybridizations
111
+ <= {
112
+ Chem.HybridizationType.SP2,
113
+ Chem.HybridizationType.SP3,
114
+ }
115
+ )
116
+ standard_biaryl_axis = (
117
+ not bond.GetIsAromatic()
118
+ and left_atom.GetIsAromatic()
119
+ and right_atom.GetIsAromatic()
120
+ )
121
+ if not standard_biaryl_axis and not (
122
+ include_extended_ring_axes
123
+ and (aromatic_ring_axis or linked_ring_axis)
124
+ ):
125
+ continue
126
+ left, right = left_atom.GetIdx(), right_atom.GetIdx()
127
+ left_refs = tuple(
128
+ neighbor.GetIdx()
129
+ for neighbor in left_atom.GetNeighbors()
130
+ if neighbor.GetIdx() != right_atom.GetIdx()
131
+ )
132
+ right_refs = tuple(
133
+ neighbor.GetIdx()
134
+ for neighbor in right_atom.GetNeighbors()
135
+ if neighbor.GetIdx() != left_atom.GetIdx()
136
+ )
137
+ if len(left_refs) != 2 or len(right_refs) != 2:
138
+ continue
139
+ supports.append(
140
+ AxisStereoSupport(
141
+ (left, right),
142
+ (left_refs, right_refs),
143
+ )
144
+ )
145
+ return tuple(supports)
146
+
147
+
148
+ def detect_potential_axis_supports(
149
+ molecule: Chem.Mol,
150
+ *,
151
+ include_extended_ring_axes: bool = False,
152
+ ) -> tuple[tuple[str, AxisStereoSupport], ...]:
153
+ """Return typed topology supports for potential molecular stereo axes."""
154
+ if molecule is None:
155
+ raise ValueError("Potential stereo-locus detection requires a molecule.")
156
+ working = Chem.Mol(molecule)
157
+ return (
158
+ *(
159
+ ("cumulene_axis", support)
160
+ for support in _potential_cumulene_supports(working)
161
+ ),
162
+ *(
163
+ ("atrop_axis", support)
164
+ for support in _potential_biaryl_supports(
165
+ working,
166
+ include_extended_ring_axes=include_extended_ring_axes,
167
+ )
168
+ ),
169
+ )