synkit 1.6.1__tar.gz → 1.6.2b1__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 (444) hide show
  1. {synkit-1.6.1 → synkit-1.6.2b1}/.gitignore +4 -0
  2. {synkit-1.6.1 → synkit-1.6.2b1}/PKG-INFO +1 -1
  3. {synkit-1.6.1 → synkit-1.6.2b1}/pyproject.toml +13 -4
  4. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/DAG/syncrn.py +1 -1
  5. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/abstract.py +52 -65
  6. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/worker.py +1 -1
  7. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Pathway/_adapter.py +24 -33
  8. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Pathway/pathfinder.py +16 -24
  9. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Pathway/reachability.py +52 -69
  10. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Pathway/realizability.py +87 -128
  11. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Petrinet/analyzer.py +53 -73
  12. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Petrinet/net.py +91 -131
  13. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Petrinet/semiflows.py +32 -40
  14. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Petrinet/structure.py +16 -24
  15. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Props/dynamics.py +59 -74
  16. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Props/stoich.py +42 -63
  17. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Props/thermo.py +24 -32
  18. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Query/kegg_api.py +11 -14
  19. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Query/kegg_extract.py +63 -79
  20. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Query/kegg_impute.py +35 -44
  21. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Query/kegg_parse.py +53 -73
  22. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Structure/reaction.py +14 -21
  23. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Structure/rule.py +4 -6
  24. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Structure/species.py +2 -3
  25. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Structure/syncrn.py +121 -163
  26. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/_common.py +63 -90
  27. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/_ir.py +41 -60
  28. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/automorphism.py +33 -46
  29. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/canon.py +43 -58
  30. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/isomorphism.py +31 -42
  31. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/wl_canon.py +95 -124
  32. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Visualize/layout.py +42 -63
  33. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Visualize/vis.py +70 -105
  34. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Structure/backend.py +2 -3
  35. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Structure/conversion.py +22 -33
  36. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Structure/hyperedge.py +3 -4
  37. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Structure/hypergraph.py +22 -39
  38. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Structure/rxn.py +15 -20
  39. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Symmetry/automorphism.py +19 -29
  40. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Symmetry/wl_canon.py +5 -5
  41. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/configs/loader.py +13 -13
  42. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/crn_formula.py +33 -48
  43. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/deficiency.py +67 -89
  44. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/enumerator.py +3 -4
  45. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/explorer.py +1 -1
  46. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/helpers.py +4 -6
  47. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/injectivity.py +58 -54
  48. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/network.py +27 -40
  49. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/pathway.py +10 -15
  50. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/properties.py +3 -4
  51. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/reaction.py +10 -15
  52. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/utils.py +3 -4
  53. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/viz.py +19 -27
  54. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Cluster/butina.py +6 -5
  55. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Fingerprint/fp_calculator.py +4 -4
  56. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Fingerprint/smiles_featurizer.py +11 -11
  57. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Fingerprint/transformation_fp.py +4 -4
  58. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/atom_features.py +12 -18
  59. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/descriptors.py +32 -44
  60. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/graph_annotator.py +3 -4
  61. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/standardize.py +83 -123
  62. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/valence.py +14 -18
  63. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/aam_validator.py +5 -5
  64. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/chem/its.py +14 -24
  65. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/branching.py +21 -29
  66. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/certificate.py +18 -26
  67. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/enumerate.py +17 -20
  68. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/exhaustive.py +14 -22
  69. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/kernel.py +35 -44
  70. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/milp.py +17 -23
  71. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/graph/automorphism.py +8 -11
  72. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/graph/blockcut.py +12 -18
  73. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/graph/refine.py +25 -35
  74. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/io/idxmapstr.py +9 -14
  75. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/slap/lap.py +22 -36
  76. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/balance_check.py +6 -6
  77. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/canon_rsmi.py +6 -8
  78. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/cleaning.py +3 -11
  79. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/deionize.py +6 -6
  80. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/explicit_h_audit.py +5 -10
  81. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/fix_aam.py +3 -3
  82. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/neutralize.py +7 -7
  83. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/radical_wildcard.py +8 -9
  84. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/standardize.py +8 -10
  85. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/tautomerize.py +5 -5
  86. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/utils.py +18 -18
  87. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Data/gen_partial_aam.py +3 -3
  88. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Canon/canon_algs.py +39 -65
  89. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Canon/canon_graph.py +34 -42
  90. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Context/hier_context.py +63 -50
  91. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Context/radius_expand.py +72 -62
  92. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/Descriptors/topology.py +14 -11
  93. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/Fingerprint/wl_rxn_fps.py +13 -22
  94. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/graph_descriptors.py +77 -69
  95. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/graph_fps.py +16 -15
  96. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/graph_signature.py +28 -26
  97. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/hash_fps.py +36 -31
  98. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/morgan_fps.py +18 -15
  99. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/path_fps.py +17 -15
  100. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/wl_hash.py +8 -10
  101. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Fusion/candidate.py +85 -4
  102. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Fusion/constructor.py +21 -0
  103. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Fusion/identity.py +1 -0
  104. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Fusion/interface.py +113 -25
  105. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Fusion/search.py +1 -1
  106. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Hyrogen/_misc.py +64 -81
  107. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Hyrogen/hcomplete.py +98 -65
  108. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Hyrogen/hextend.py +67 -54
  109. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/its_builder.py +9 -6
  110. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/its_construction.py +26 -37
  111. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/its_decompose.py +26 -29
  112. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/its_destruction.py +18 -22
  113. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/its_expand.py +16 -15
  114. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/its_relabel.py +7 -6
  115. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/its_reverter.py +21 -30
  116. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/normalize_aam.py +27 -24
  117. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/partial_its.py +6 -6
  118. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/rc_extractor.py +24 -30
  119. synkit-1.6.2b1/synkit/Graph/MTG/__init__.py +58 -0
  120. synkit-1.6.2b1/synkit/Graph/MTG/history.py +661 -0
  121. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/MTG/mcs_matcher.py +16 -18
  122. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/MTG/mtg_explore.py +4 -4
  123. synkit-1.6.2b1/synkit/Graph/MTG/process.py +562 -0
  124. synkit-1.6.2b1/synkit/Graph/MTG/series_parallel.py +107 -0
  125. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/MTG/utils.py +24 -25
  126. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/approx_mcs.py +106 -128
  127. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/auto_est.py +96 -139
  128. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/automorphism.py +58 -51
  129. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/batch_cluster.py +54 -45
  130. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/dedup_matches.py +32 -32
  131. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/graph_cluster.py +45 -41
  132. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/graph_matcher.py +92 -76
  133. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/graph_morphism.py +130 -85
  134. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/mcs_matcher.py +104 -148
  135. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/multi_turbo_iso.py +23 -19
  136. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/orbit.py +67 -103
  137. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/partial_matcher.py +146 -207
  138. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/sing.py +91 -63
  139. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/subgraph_matcher.py +241 -128
  140. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/turbo_iso.py +81 -18
  141. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/wl_sel.py +93 -68
  142. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Mech/conversion.py +55 -81
  143. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Mech/conversion_debug.py +3 -3
  144. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Mech/lwg_editor.py +10 -7
  145. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Mech/lwg_ops.py +7 -7
  146. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Morphism/__init__.py +22 -0
  147. synkit-1.6.2b1/synkit/Graph/Morphism/llg.py +918 -0
  148. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Wildcard/fuse_graph.py +19 -19
  149. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Wildcard/graph_wc.py +25 -36
  150. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Wildcard/its_merge.py +29 -41
  151. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Wildcard/radwc.py +10 -13
  152. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Wildcard/wc_matcher.py +44 -60
  153. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Wildcard/wildcard.py +15 -20
  154. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/syn_graph.py +32 -30
  155. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/utils.py +33 -48
  156. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/chem_converter.py +7 -9
  157. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/combinatorial/gml_to_graph.py +39 -70
  158. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/combinatorial/graph_to_gml.py +25 -36
  159. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/combinatorial/graph_to_smarts.py +19 -22
  160. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/combinatorial/smarts_expander.py +10 -15
  161. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/combinatorial/smarts_generalizer.py +3 -4
  162. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/combinatorial/smarts_to_graph.py +22 -26
  163. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/data_io.py +10 -10
  164. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/data_process.py +12 -10
  165. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/debug.py +2 -2
  166. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/gml_to_nx.py +4 -5
  167. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/graph_to_mol.py +2 -2
  168. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/mol_to_graph.py +16 -16
  169. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/mol_to_graph_chemistry.py +16 -16
  170. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/nx_to_gml.py +5 -5
  171. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/smiles_to_id.py +23 -18
  172. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/benchmark.py +1 -1
  173. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/model.py +63 -0
  174. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/replay.py +363 -15
  175. synkit-1.6.2b1/synkit/Rule/Apply/__init__.py +35 -0
  176. synkit-1.6.2b1/synkit/Rule/Apply/dpo.py +965 -0
  177. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Apply/rule_matcher.py +8 -8
  178. synkit-1.6.2b1/synkit/Rule/Compose/__init__.py +106 -0
  179. synkit-1.6.2b1/synkit/Rule/Compose/composition.py +848 -0
  180. synkit-1.6.2b1/synkit/Rule/Compose/laws.py +397 -0
  181. synkit-1.6.2b1/synkit/Rule/Compose/search.py +748 -0
  182. synkit-1.6.2b1/synkit/Rule/Compose/synrule.py +170 -0
  183. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Modify/implict_rule.py +13 -22
  184. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Modify/longest_path.py +8 -8
  185. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Modify/molecule_rule.py +23 -20
  186. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Modify/prune_templates.py +18 -15
  187. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Modify/rule_utils.py +10 -9
  188. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/generic_stereo.py +2 -2
  189. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/syn_rule.py +92 -53
  190. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Synthesis/MSR/path_finder.py +18 -15
  191. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Synthesis/Metrics/_base.py +13 -10
  192. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Synthesis/Metrics/_plot.py +29 -21
  193. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Synthesis/Metrics/_ranking.py +57 -51
  194. synkit-1.6.2b1/synkit/Synthesis/RBL/__init__.py +80 -0
  195. synkit-1.6.2b1/synkit/Synthesis/RBL/engine.py +1249 -0
  196. synkit-1.6.2b1/synkit/Synthesis/RBL/matching.py +652 -0
  197. synkit-1.6.2b1/synkit/Synthesis/RBL/overlap.py +336 -0
  198. synkit-1.6.2b1/synkit/Synthesis/RBL/pipeline.py +371 -0
  199. synkit-1.6.2b1/synkit/Synthesis/RBL/policy.py +139 -0
  200. synkit-1.6.2b1/synkit/Synthesis/RBL/proof.py +370 -0
  201. synkit-1.6.1/synkit/Synthesis/Reactor/rbl_reaction.py → synkit-1.6.2b1/synkit/Synthesis/RBL/reaction.py +205 -44
  202. synkit-1.6.2b1/synkit/Synthesis/RBL/state.py +169 -0
  203. synkit-1.6.2b1/synkit/Synthesis/RBL/validation.py +1060 -0
  204. synkit-1.6.2b1/synkit/Synthesis/Reactor/__init__.py +60 -0
  205. synkit-1.6.2b1/synkit/Synthesis/Reactor/core/__init__.py +1 -0
  206. synkit-1.6.1/synkit/Synthesis/Reactor/syn_reactor.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/core/engine.py +160 -192
  207. synkit-1.6.1/synkit/Synthesis/Reactor/product_state.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/core/product.py +180 -30
  208. synkit-1.6.1/synkit/Synthesis/Reactor/graph_rewrite.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/core/rewrite.py +72 -16
  209. {synkit-1.6.1/synkit/Synthesis/Reactor → synkit-1.6.2b1/synkit/Synthesis/Reactor/core}/strategy.py +7 -14
  210. synkit-1.6.2b1/synkit/Synthesis/Reactor/matching/__init__.py +1 -0
  211. synkit-1.6.1/synkit/Synthesis/Reactor/reactor_matching.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/matching/mixin.py +67 -122
  212. synkit-1.6.1/synkit/Synthesis/Reactor/matching_policy.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/matching/policy.py +120 -10
  213. synkit-1.6.2b1/synkit/Synthesis/Reactor/matching/symmetry.py +309 -0
  214. synkit-1.6.2b1/synkit/Synthesis/Reactor/output/__init__.py +1 -0
  215. {synkit-1.6.1/synkit/Synthesis/Reactor → synkit-1.6.2b1/synkit/Synthesis/Reactor/output}/deduplication.py +270 -397
  216. {synkit-1.6.1/synkit/Synthesis/Reactor → synkit-1.6.2b1/synkit/Synthesis/Reactor/output}/serialization.py +111 -23
  217. synkit-1.6.2b1/synkit/Synthesis/Reactor/output/structural.py +893 -0
  218. synkit-1.6.2b1/synkit/Synthesis/Reactor/stereo/__init__.py +1 -0
  219. synkit-1.6.1/synkit/Synthesis/Reactor/reactor_stereo.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/stereo/mixin.py +1 -1
  220. synkit-1.6.2b1/synkit/Synthesis/Reactor/variants/__init__.py +1 -0
  221. synkit-1.6.1/synkit/Synthesis/Reactor/imba_engine.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/variants/imbalanced.py +10 -13
  222. synkit-1.6.1/synkit/Synthesis/Reactor/partial_engine.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/variants/partial.py +2 -2
  223. synkit-1.6.2b1/synkit/Synthesis/Reactor/workflow/__init__.py +1 -0
  224. synkit-1.6.1/synkit/Synthesis/Reactor/batch_reactor.py → synkit-1.6.2b1/synkit/Synthesis/Reactor/workflow/batch.py +146 -33
  225. {synkit-1.6.1/synkit/Synthesis/Reactor → synkit-1.6.2b1/synkit/Synthesis/Reactor/workflow}/benchmark.py +7 -12
  226. {synkit-1.6.1/synkit/Synthesis/Reactor → synkit-1.6.2b1/synkit/Synthesis/Reactor/workflow}/rule_filter.py +17 -10
  227. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Synthesis/reactor_utils.py +51 -54
  228. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Utils/utils.py +49 -55
  229. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/crn/visualizer.py +6 -9
  230. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/models.py +4 -4
  231. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/visualizer.py +32 -61
  232. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/graph_visualizer.py +13 -20
  233. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/its/__init__.py +2 -2
  234. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/its/drawer.py +3 -3
  235. synkit-1.6.2b1/synkit/Vis/its_drawer.py +35 -0
  236. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/molecule/__init__.py +2 -2
  237. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/molecule/drawer.py +4 -6
  238. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/molecule/reaction.py +1 -1
  239. synkit-1.6.2b1/synkit/Vis/molecule_drawer.py +33 -0
  240. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/mtg/__init__.py +2 -2
  241. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/mtg/drawer.py +2 -2
  242. synkit-1.6.2b1/synkit/Vis/mtg_drawer.py +34 -0
  243. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/pdf_writer.py +29 -24
  244. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/reaction/__init__.py +2 -2
  245. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/reaction/rxn.py +7 -7
  246. synkit-1.6.2b1/synkit/Vis/reaction_drawer.py +41 -0
  247. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/space/__init__.py +2 -2
  248. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/space/embedding.py +19 -17
  249. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/vis_synedu/rxn_vis.py +28 -33
  250. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/visual_drawer.py +1 -1
  251. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/visual_model.py +2 -2
  252. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/version.py +1 -1
  253. synkit-1.6.1/synkit/Synthesis/Metrics/__init__.py +0 -0
  254. synkit-1.6.1/synkit/Synthesis/Reactor/__init__.py +0 -30
  255. synkit-1.6.1/synkit/Synthesis/Reactor/fusion_validation.py +0 -557
  256. synkit-1.6.1/synkit/Synthesis/Reactor/rbl_engine.py +0 -1345
  257. synkit-1.6.1/synkit/Synthesis/Reactor/rbl_matching.py +0 -338
  258. synkit-1.6.1/synkit/Synthesis/Reactor/rbl_policy.py +0 -81
  259. synkit-1.6.1/synkit/Synthesis/__init__.py +0 -0
  260. synkit-1.6.1/synkit/Utils/__init__.py +0 -0
  261. synkit-1.6.1/synkit/Vis/its_drawer.py +0 -615
  262. synkit-1.6.1/synkit/Vis/molecule_drawer.py +0 -565
  263. synkit-1.6.1/synkit/Vis/mtg_drawer.py +0 -769
  264. synkit-1.6.1/synkit/Vis/reaction_drawer.py +0 -285
  265. {synkit-1.6.1 → synkit-1.6.2b1}/LICENSE +0 -0
  266. {synkit-1.6.1 → synkit-1.6.2b1}/README.md +0 -0
  267. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/DAG/__init__.py +0 -0
  268. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/__init__.py +0 -0
  269. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/arity.py +0 -0
  270. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/builder.py +0 -0
  271. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/derivation.py +0 -0
  272. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/flattener.py +0 -0
  273. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/keys.py +0 -0
  274. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/mixtures.py +0 -0
  275. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/smiles.py +0 -0
  276. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/state.py +0 -0
  277. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Construct/strategy.py +0 -0
  278. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Pathway/__init__.py +0 -0
  279. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Petrinet/__init__.py +0 -0
  280. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Petrinet/persistence.py +0 -0
  281. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Props/__init__.py +0 -0
  282. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Props/helper.py +0 -0
  283. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Query/__init__.py +0 -0
  284. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Structure/__init__.py +0 -0
  285. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/__init__.py +0 -0
  286. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Symmetry/symmetry.py +0 -0
  287. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Visualize/__init__.py +0 -0
  288. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Visualize/crn_vis.py +0 -0
  289. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Visualize/labels.py +0 -0
  290. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Visualize/palette.py +0 -0
  291. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/Visualize/validation.py +0 -0
  292. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/__init__.py +0 -0
  293. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Structure/__init__.py +0 -0
  294. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Symmetry/__init__.py +0 -0
  295. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/Symmetry/canon.py +0 -0
  296. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/__init__.py +0 -0
  297. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/configs/__init__.py +0 -0
  298. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/configs/models.py +0 -0
  299. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/constants.py +0 -0
  300. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/exceptions.py +0 -0
  301. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/CRN/dev_crn/motif.py +0 -0
  302. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Cluster/__init__.py +0 -0
  303. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Fingerprint/__init__.py +0 -0
  304. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/__init__.py +0 -0
  305. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/_chirality_loci.py +0 -0
  306. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/_chirality_types.py +0 -0
  307. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/_helical_loci.py +0 -0
  308. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/_stereo_axis_evidence.py +0 -0
  309. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/_stereo_element_detection.py +0 -0
  310. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/_stereo_orientation_constraints.py +0 -0
  311. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/_tetrahedral_carriers.py +0 -0
  312. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/chirality.py +0 -0
  313. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/cip_assignment.py +0 -0
  314. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/cip_ranking.py +0 -0
  315. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/coordinate_stereo.py +0 -0
  316. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/derived_stereo_naming.py +0 -0
  317. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/formula.py +0 -0
  318. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/global_stereo.py +0 -0
  319. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/stereo_evidence.py +0 -0
  320. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Molecule/stereo_perception.py +0 -0
  321. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/__init__.py +0 -0
  322. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/chem/__init__.py +0 -0
  323. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/chem/aam.py +0 -0
  324. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/chem/smiles.py +0 -0
  325. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/__init__.py +0 -0
  326. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/exact/enumeration_result.py +0 -0
  327. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/graph/__init__.py +0 -0
  328. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/graph/labeled_graph.py +0 -0
  329. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/graph/synkit_adapter.py +0 -0
  330. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/io/__init__.py +0 -0
  331. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/slap/__init__.py +0 -0
  332. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/Mapper/slap/sequential.py +0 -0
  333. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/__init__.py +0 -0
  334. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/Reaction/aam_validator.py +0 -0
  335. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Chem/__init__.py +0 -0
  336. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Data/__init__.py +0 -0
  337. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Data/aldol.json.gz +0 -0
  338. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Data/paracetamol.json.gz +0 -0
  339. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Canon/__init__.py +0 -0
  340. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Canon/exact.py +0 -0
  341. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Canon/exact_refinement.py +0 -0
  342. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Canon/nauty.py +0 -0
  343. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Context/__init__.py +0 -0
  344. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/__init__.py +0 -0
  345. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/api.py +0 -0
  346. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/audit.py +0 -0
  347. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/catalog.py +0 -0
  348. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/detector.py +0 -0
  349. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/model.py +0 -0
  350. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/recognizers.py +0 -0
  351. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/FG/ring_system.py +0 -0
  352. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/Fingerprint/__init__.py +0 -0
  353. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Feature/__init__.py +0 -0
  354. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Fusion/__init__.py +0 -0
  355. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Hyrogen/__init__.py +0 -0
  356. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Hyrogen/hcomplete_legacy.py +0 -0
  357. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Hyrogen/hcompletion_algorithms.py +0 -0
  358. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Hyrogen/hextend_legacy.py +0 -0
  359. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/__init__.py +0 -0
  360. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/ITS/stereo.py +0 -0
  361. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/MTG/mtg.py +0 -0
  362. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Matcher/__init__.py +0 -0
  363. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Mech/__init__.py +0 -0
  364. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Mech/electron_accounting.py +0 -0
  365. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Morphism/constraints.py +0 -0
  366. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Morphism/morphism.py +0 -0
  367. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Morphism/stereo.py +0 -0
  368. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Morphism/stereo_morphism.py +0 -0
  369. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Morphism/stereo_morphism_helpers.py +0 -0
  370. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Morphism/stereo_morphism_types.py +0 -0
  371. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/__init__.py +0 -0
  372. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/_descriptor_core.py +0 -0
  373. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/_descriptor_serialization.py +0 -0
  374. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/canonical.py +0 -0
  375. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/changes.py +0 -0
  376. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/composition.py +0 -0
  377. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/configured.py +0 -0
  378. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/couplings.py +0 -0
  379. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/descriptors.py +0 -0
  380. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/enumeration.py +0 -0
  381. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/extended_descriptors.py +0 -0
  382. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/global_configured.py +0 -0
  383. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/global_stereo.py +0 -0
  384. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/identity.py +0 -0
  385. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/interchange.py +0 -0
  386. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/legacy.py +0 -0
  387. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/matching.py +0 -0
  388. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/orbits.py +0 -0
  389. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/outcomes.py +0 -0
  390. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/pairwise.py +0 -0
  391. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/rdkit_adapter.py +0 -0
  392. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/reaction_interchange.py +0 -0
  393. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/semantics.py +0 -0
  394. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/supports.py +0 -0
  395. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/Stereo/wire.py +0 -0
  396. {synkit-1.6.1/synkit/Graph/MTG → synkit-1.6.2b1/synkit/Graph/Wildcard}/__init__.py +0 -0
  397. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/__init__.py +0 -0
  398. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Graph/canon_graph.py +0 -0
  399. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/__init__.py +0 -0
  400. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/combinatorial/__init__.py +0 -0
  401. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/IO/conversion.py +0 -0
  402. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/__init__.py +0 -0
  403. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/adapters.py +0 -0
  404. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/audit.py +0 -0
  405. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/compatibility.py +0 -0
  406. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/drawing.py +0 -0
  407. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/electron_models.py +0 -0
  408. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/equivalence.py +0 -0
  409. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/evidence.py +0 -0
  410. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/interchange.py +0 -0
  411. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/neighbor_stereo.py +0 -0
  412. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/radical_data.py +0 -0
  413. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/schema.py +0 -0
  414. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/stereo_state.py +0 -0
  415. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Mechanism/symbols.py +0 -0
  416. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Compose/_identity.py +0 -0
  417. {synkit-1.6.1/synkit/Graph/Wildcard → synkit-1.6.2b1/synkit/Rule/Modify}/__init__.py +0 -0
  418. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/Modify/strip_rule.py +0 -0
  419. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/__init__.py +0 -0
  420. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Rule/stereo_identity.py +0 -0
  421. {synkit-1.6.1/synkit/Rule/Apply → synkit-1.6.2b1/synkit/Synthesis/MSR}/__init__.py +0 -0
  422. {synkit-1.6.1/synkit/Rule/Compose → synkit-1.6.2b1/synkit/Synthesis/Metrics}/__init__.py +0 -0
  423. /synkit-1.6.1/synkit/Synthesis/Reactor/serialization_policy.py → /synkit-1.6.2b1/synkit/Synthesis/Reactor/output/policy.py +0 -0
  424. {synkit-1.6.1/synkit/Synthesis/Reactor → synkit-1.6.2b1/synkit/Synthesis/Reactor/stereo}/assignment.py +0 -0
  425. /synkit-1.6.1/synkit/Synthesis/Reactor/post_syn.py → /synkit-1.6.2b1/synkit/Synthesis/Reactor/workflow/postprocess.py +0 -0
  426. {synkit-1.6.1/synkit/Rule/Modify → synkit-1.6.2b1/synkit/Synthesis}/__init__.py +0 -0
  427. {synkit-1.6.1/synkit/Synthesis/MSR → synkit-1.6.2b1/synkit/Utils}/__init__.py +0 -0
  428. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/__init__.py +0 -0
  429. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/crn/__init__.py +0 -0
  430. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/__init__.py +0 -0
  431. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/arrows.py +0 -0
  432. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/chem.py +0 -0
  433. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/constants.py +0 -0
  434. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/layout.py +0 -0
  435. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/mapping.py +0 -0
  436. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/render.py +0 -0
  437. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/epd/utils.py +0 -0
  438. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/reaction/rule.py +0 -0
  439. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/space/chemical.py +0 -0
  440. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/vis_synedu/Vis/__init__.py +0 -0
  441. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/vis_synedu/Vis/dpo.py +0 -0
  442. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/Vis/vis_synedu/vis.py +0 -0
  443. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/__init__.py +0 -0
  444. {synkit-1.6.1 → synkit-1.6.2b1}/synkit/examples.py +0 -0
@@ -106,3 +106,7 @@ Experiment/Lewis/FLOWER/replay-results*/
106
106
  # Keep generated Python bytecode ignored after directory re-inclusions above.
107
107
  **/__pycache__/
108
108
  *.py[cod]
109
+
110
+ # RBL long-run checkpoints are resumable local state, not retained evidence.
111
+ Experiment/RBL/*checkpoint*.jsonl
112
+ request.md
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synkit
3
- Version: 1.6.1
3
+ Version: 1.6.2b1
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "synkit"
7
- version = "1.6.1"
7
+ version = "1.6.2b1"
8
8
  description = "Utility for reaction modeling using graph grammar"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -39,7 +39,7 @@ docs = [
39
39
  "pydata-sphinx-theme",
40
40
  "sphinx-rtd-theme",
41
41
 
42
- # Your enabled extensions
42
+ # Sphinx extensions
43
43
  "sphinxcontrib-bibtex",
44
44
  "sphinx-design",
45
45
  "sphinx-copybutton",
@@ -49,8 +49,7 @@ docs = [
49
49
  # (still requires the system `dot` binary to render diagrams)
50
50
  "graphviz",
51
51
 
52
- # Nice-to-have for markdown in docs if you ever add .md pages
53
- # (safe even if unused)
52
+ # Markdown source support
54
53
  "myst-parser",
55
54
  ]
56
55
 
@@ -63,12 +62,14 @@ documentation = "https://tieulongphan.github.io/SynKit/"
63
62
 
64
63
  [tool.hatch.build.targets.wheel]
65
64
  packages = ["synkit"]
65
+ core-metadata-version = "2.4"
66
66
 
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
70
 
71
71
  [tool.hatch.build.targets.sdist]
72
+ core-metadata-version = "2.4"
72
73
  include = [
73
74
  "/synkit",
74
75
  "/LICENSE",
@@ -80,3 +81,11 @@ include = [
80
81
  [tool.hatch.build.targets.sdist.force-include]
81
82
  "synkit/Data/aldol.json.gz" = "synkit/Data/aldol.json.gz"
82
83
  "synkit/Data/paracetamol.json.gz" = "synkit/Data/paracetamol.json.gz"
84
+
85
+ [tool.coverage.run]
86
+ source = ["synkit"]
87
+
88
+ [tool.coverage.report]
89
+ fail_under = 70
90
+ precision = 1
91
+ show_missing = true
@@ -8,7 +8,7 @@ from itertools import combinations
8
8
 
9
9
  import networkx as nx
10
10
 
11
- from synkit.Synthesis.Reactor.syn_reactor import SynReactor
11
+ from synkit.Synthesis.Reactor import SynReactor
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
@@ -10,8 +10,7 @@ ReactionSides = Tuple[List[str], List[str]]
10
10
 
11
11
 
12
12
  def _split_reaction_smiles(reaction_smiles: str) -> ReactionSides:
13
- """
14
- Split a reaction SMILES string into reactant and product molecule lists.
13
+ """Split a reaction SMILES string into reactant and product molecule lists.
15
14
 
16
15
  The expected format is ``"A.B>>C.D"``. Empty left or right sides are allowed.
17
16
 
@@ -19,15 +18,15 @@ def _split_reaction_smiles(reaction_smiles: str) -> ReactionSides:
19
18
  Reaction SMILES string.
20
19
  :type reaction_smiles: str
21
20
 
22
- :returns:
21
+ :return:
23
22
  Tuple of reactant and product molecule lists.
24
23
  :rtype: Tuple[List[str], List[str]]
25
24
 
26
25
  :raises ValueError:
27
26
  If the reaction string does not contain ``">>"``.
28
27
 
29
- Example
30
- -------
28
+ .. rubric:: Example
29
+
31
30
  .. code-block:: python
32
31
 
33
32
  reactants, products = _split_reaction_smiles("CCO.O>>CC=O")
@@ -43,8 +42,7 @@ def _split_reaction_smiles(reaction_smiles: str) -> ReactionSides:
43
42
 
44
43
 
45
44
  def _excel_label(index: int) -> str:
46
- """
47
- Convert a zero-based integer index into an Excel-style alphabetic label.
45
+ """Convert a zero-based integer index into an Excel-style alphabetic label.
48
46
 
49
47
  Examples include ``0 -> "A"``, ``25 -> "Z"``, and ``26 -> "AA"``.
50
48
 
@@ -52,15 +50,15 @@ def _excel_label(index: int) -> str:
52
50
  Zero-based index.
53
51
  :type index: int
54
52
 
55
- :returns:
53
+ :return:
56
54
  Excel-style alphabetic label.
57
55
  :rtype: str
58
56
 
59
57
  :raises ValueError:
60
58
  If ``index`` is negative.
61
59
 
62
- Example
63
- -------
60
+ .. rubric:: Example
61
+
64
62
  .. code-block:: python
65
63
 
66
64
  label = _excel_label(27) # "AB"
@@ -77,19 +75,18 @@ def _excel_label(index: int) -> str:
77
75
 
78
76
 
79
77
  def _normalize_abstract_side(side: str) -> List[str]:
80
- """
81
- Normalize one abstract reaction side by splitting on ``"+"`` and sorting tokens.
78
+ """Normalize one abstract reaction side by splitting on ``"+"`` and sorting tokens.
82
79
 
83
80
  :param side:
84
81
  Abstract reaction side.
85
82
  :type side: str
86
83
 
87
- :returns:
84
+ :return:
88
85
  Sorted abstract token list.
89
86
  :rtype: List[str]
90
87
 
91
- Example
92
- -------
88
+ .. rubric:: Example
89
+
93
90
  .. code-block:: python
94
91
 
95
92
  tokens = _normalize_abstract_side("B+A+C")
@@ -101,8 +98,7 @@ def _first_present(
101
98
  record: Mapping[str, Any],
102
99
  keys: Sequence[str],
103
100
  ) -> Optional[Any]:
104
- """
105
- Return the first non-``None`` value found in a mapping for the given keys.
101
+ """Return the first non-``None`` value found in a mapping for the given keys.
106
102
 
107
103
  :param record:
108
104
  Input mapping.
@@ -112,12 +108,12 @@ def _first_present(
112
108
  Candidate keys to try in order.
113
109
  :type keys: Sequence[str]
114
110
 
115
- :returns:
111
+ :return:
116
112
  First matching value, or ``None`` if none are present.
117
113
  :rtype: Optional[Any]
118
114
 
119
- Example
120
- -------
115
+ .. rubric:: Example
116
+
121
117
  .. code-block:: python
122
118
 
123
119
  value = _first_present(record, ["smiles", "reaction", "rxn_smiles"])
@@ -129,8 +125,7 @@ def _first_present(
129
125
 
130
126
 
131
127
  def deduplicate_abstract_reactions(reactions: Sequence[str]) -> List[str]:
132
- """
133
- Remove identity reactions and duplicate abstract reactions.
128
+ """Remove identity reactions and duplicate abstract reactions.
134
129
 
135
130
  Reactant and product order are normalized internally before comparison.
136
131
  The original retained representative is the first encountered entry.
@@ -139,12 +134,12 @@ def deduplicate_abstract_reactions(reactions: Sequence[str]) -> List[str]:
139
134
  Abstract reactions such as ``"A+B>>C+D"``.
140
135
  :type reactions: Sequence[str]
141
136
 
142
- :returns:
137
+ :return:
143
138
  Filtered abstract reactions.
144
139
  :rtype: List[str]
145
140
 
146
- Example
147
- -------
141
+ .. rubric:: Example
142
+
148
143
  .. code-block:: python
149
144
 
150
145
  filtered = deduplicate_abstract_reactions(
@@ -203,15 +198,14 @@ class AbstractReactionNetwork:
203
198
  label_to_molecule: Dict[str, str] = field(default_factory=dict)
204
199
 
205
200
  def to_dict(self) -> Dict[str, Any]:
206
- """
207
- Convert the abstract network to a plain dictionary.
201
+ """Convert the abstract network to a plain dictionary.
208
202
 
209
- :returns:
203
+ :return:
210
204
  Dictionary representation of the abstract network.
211
205
  :rtype: Dict[str, Any]
212
206
 
213
- Example
214
- -------
207
+ .. rubric:: Example
208
+
215
209
  .. code-block:: python
216
210
 
217
211
  payload = network.to_dict()
@@ -226,19 +220,18 @@ class AbstractReactionNetwork:
226
220
  def to_json_payload(
227
221
  self, name: str = "abstract_reaction_network"
228
222
  ) -> Dict[str, Any]:
229
- """
230
- Convert the abstract network into a SynKit-style JSON payload.
223
+ """Convert the abstract network into a SynKit-style JSON payload.
231
224
 
232
225
  :param name:
233
226
  Name stored in the metadata block.
234
227
  :type name: str
235
228
 
236
- :returns:
229
+ :return:
237
230
  JSON-serializable payload.
238
231
  :rtype: Dict[str, Any]
239
232
 
240
- Example
241
- -------
233
+ .. rubric:: Example
234
+
242
235
  .. code-block:: python
243
236
 
244
237
  payload = network.to_json_payload(name="glycolysis_abstract")
@@ -256,8 +249,7 @@ class AbstractReactionNetwork:
256
249
  }
257
250
 
258
251
  def save_json(self, path: PathLike, *, name: Optional[str] = None) -> None:
259
- """
260
- Save the abstract network as a JSON file.
252
+ """Save the abstract network as a JSON file.
261
253
 
262
254
  :param path:
263
255
  Output JSON path.
@@ -267,12 +259,12 @@ class AbstractReactionNetwork:
267
259
  Optional metadata name. If omitted, the filename stem is used.
268
260
  :type name: Optional[str]
269
261
 
270
- :returns:
262
+ :return:
271
263
  ``None``
272
264
  :rtype: None
273
265
 
274
- Example
275
- -------
266
+ .. rubric:: Example
267
+
276
268
  .. code-block:: python
277
269
 
278
270
  network.save_json("abstract_network.json")
@@ -286,15 +278,14 @@ class AbstractReactionNetwork:
286
278
 
287
279
  @dataclass
288
280
  class AbstractReactionExtractor:
289
- """
290
- Build abstract symbolic reaction networks from reaction SMILES lists or
281
+ """Build abstract symbolic reaction networks from reaction SMILES lists or
291
282
  SynKit-style module/pathway JSON blocks.
292
283
 
293
284
  This class supports configurable field names when extracting reactions from
294
285
  JSON-like input records.
295
286
 
296
- Example
297
- -------
287
+ .. rubric:: Example
288
+
298
289
  .. code-block:: python
299
290
 
300
291
  extractor = KEGGExtractor()
@@ -316,24 +307,23 @@ class AbstractReactionExtractor:
316
307
  self,
317
308
  data: Mapping[str, Any],
318
309
  ) -> Iterable[Tuple[Mapping[str, Any], str]]:
319
- """
320
- Iterate over reaction records from a module-like or pathway-like JSON block.
310
+ """Iterate over reaction records from a module-like or pathway-like JSON block.
321
311
 
322
312
  Supported structures include:
323
313
 
324
- - module-like: ``{"reactions": [...]}`
314
+ - module-like: ``{"reactions": [...]}``
325
315
  - pathway-like: ``{"by_module": {"M00001": {"reactions": [...]}, ...}}``
326
316
 
327
317
  :param data:
328
318
  Input JSON-like mapping.
329
319
  :type data: Mapping[str, Any]
330
320
 
331
- :yields:
321
+ :yield:
332
322
  Tuples of ``(reaction_record, module_id)``.
333
323
  :rtype: Iterable[Tuple[Mapping[str, Any], str]]
334
324
 
335
- Example
336
- -------
325
+ .. rubric:: Example
326
+
337
327
  .. code-block:: python
338
328
 
339
329
  abstractor = AbstractReactionExtractor()
@@ -366,8 +356,7 @@ class AbstractReactionExtractor:
366
356
  reaction_smiles_keys: Optional[Sequence[str]] = None,
367
357
  template_keys: Optional[Sequence[str]] = None,
368
358
  ) -> Tuple[List[str], Dict[str, str]]:
369
- """
370
- Extract reaction SMILES and rule-template mappings from raw inputs.
359
+ """Extract reaction SMILES and rule-template mappings from raw inputs.
371
360
 
372
361
  Either a direct list of reaction SMILES or a JSON data block may be
373
362
  provided. If both are given, the explicit ``reactions`` list takes
@@ -412,12 +401,12 @@ class AbstractReactionExtractor:
412
401
  record. The keys are tried in order.
413
402
  :type template_keys: Optional[Sequence[str]]
414
403
 
415
- :returns:
404
+ :return:
416
405
  Tuple of reaction SMILES list and template mapping.
417
406
  :rtype: Tuple[List[str], Dict[str, str]]
418
407
 
419
- Example
420
- -------
408
+ .. rubric:: Example
409
+
421
410
  .. code-block:: python
422
411
 
423
412
  extractor = KEGGExtractor()
@@ -480,8 +469,7 @@ class AbstractReactionExtractor:
480
469
  *,
481
470
  order: str = "appearance",
482
471
  ) -> List[str]:
483
- """
484
- Build the unique molecule pool from parsed reactions.
472
+ """Build the unique molecule pool from parsed reactions.
485
473
 
486
474
  :param parsed_reactions:
487
475
  Parsed reaction sides as ``(reactants, products)`` tuples.
@@ -492,15 +480,15 @@ class AbstractReactionExtractor:
492
480
  ``"sorted"``.
493
481
  :type order: str
494
482
 
495
- :returns:
483
+ :return:
496
484
  Ordered unique molecule pool.
497
485
  :rtype: List[str]
498
486
 
499
487
  :raises ValueError:
500
488
  If ``order`` is not supported.
501
489
 
502
- Example
503
- -------
490
+ .. rubric:: Example
491
+
504
492
  .. code-block:: python
505
493
 
506
494
  molecule_pool = abstractor.build_molecule_pool(
@@ -544,8 +532,7 @@ class AbstractReactionExtractor:
544
532
  template_keys: Optional[Sequence[str]] = None,
545
533
  save_as: Optional[PathLike] = None,
546
534
  ) -> AbstractReactionNetwork:
547
- """
548
- Convert full reaction SMILES into an abstract symbolic reaction network.
535
+ """Convert full reaction SMILES into an abstract symbolic reaction network.
549
536
 
550
537
  You may provide either a direct list of reaction SMILES or a module/pathway
551
538
  JSON block.
@@ -607,12 +594,12 @@ class AbstractReactionExtractor:
607
594
  Optional JSON output path.
608
595
  :type save_as: Optional[PathLike]
609
596
 
610
- :returns:
597
+ :return:
611
598
  Abstract symbolic reaction network.
612
599
  :rtype: AbstractReactionNetwork
613
600
 
614
- Example
615
- -------
601
+ .. rubric:: Example
602
+
616
603
  .. code-block:: python
617
604
 
618
605
  extractor = KEGGExtractor()
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Any, List, Optional, Set, Tuple
4
4
 
5
- from synkit.Synthesis.Reactor.syn_reactor import SynReactor
5
+ from synkit.Synthesis.Reactor import SynReactor
6
6
 
7
7
 
8
8
  def apply_rule_worker(
@@ -6,8 +6,7 @@ from ..Petrinet.net import SynCRNIncidence, extract_syncrn_incidence
6
6
 
7
7
 
8
8
  def _species_token(incidence: SynCRNIncidence, sid: str, mode: str) -> str:
9
- """
10
- Convert an internal species identifier into an external token.
9
+ """Convert an internal species identifier into an external token.
11
10
 
12
11
  Supported tokenization modes are:
13
12
 
@@ -27,15 +26,15 @@ def _species_token(incidence: SynCRNIncidence, sid: str, mode: str) -> str:
27
26
  Tokenization mode. Must be one of ``"id"``, ``"label"``, or ``"source"``.
28
27
  :type mode: str
29
28
 
30
- :returns:
29
+ :return:
31
30
  Token representing the species.
32
31
  :rtype: str
33
32
 
34
33
  :raises ValueError:
35
34
  If ``mode`` is not one of the supported values.
36
35
 
37
- Examples
38
- --------
36
+ .. rubric:: Examples
37
+
39
38
  .. code-block:: python
40
39
 
41
40
  tok = _species_token(incidence, "s1", mode="label")
@@ -51,8 +50,7 @@ def _species_token(incidence: SynCRNIncidence, sid: str, mode: str) -> str:
51
50
 
52
51
 
53
52
  def _reaction_token(incidence: SynCRNIncidence, rid: str, mode: str) -> str:
54
- """
55
- Convert an internal reaction identifier into an external token.
53
+ """Convert an internal reaction identifier into an external token.
56
54
 
57
55
  Supported tokenization modes are:
58
56
 
@@ -72,15 +70,15 @@ def _reaction_token(incidence: SynCRNIncidence, rid: str, mode: str) -> str:
72
70
  Tokenization mode. Must be one of ``"id"``, ``"label"``, or ``"source"``.
73
71
  :type mode: str
74
72
 
75
- :returns:
73
+ :return:
76
74
  Token representing the reaction.
77
75
  :rtype: str
78
76
 
79
77
  :raises ValueError:
80
78
  If ``mode`` is not one of the supported values.
81
79
 
82
- Examples
83
- --------
80
+ .. rubric:: Examples
81
+
84
82
  .. code-block:: python
85
83
 
86
84
  tok = _reaction_token(incidence, "r1", mode="id")
@@ -96,8 +94,7 @@ def _reaction_token(incidence: SynCRNIncidence, rid: str, mode: str) -> str:
96
94
 
97
95
 
98
96
  def _assert_unique_tokens(tokens: Mapping[str, str], *, kind: str) -> None:
99
- """
100
- Validate that exported tokens are unique.
97
+ """Validate that exported tokens are unique.
101
98
 
102
99
  This prevents ambiguous reverse mapping from public tokens back to internal
103
100
  identifiers.
@@ -111,7 +108,7 @@ def _assert_unique_tokens(tokens: Mapping[str, str], *, kind: str) -> None:
111
108
  ``"reaction"``.
112
109
  :type kind: str
113
110
 
114
- :returns:
111
+ :return:
115
112
  ``None``.
116
113
  :rtype: None
117
114
 
@@ -133,8 +130,7 @@ def _build_species_token_map(
133
130
  *,
134
131
  species: str,
135
132
  ) -> Dict[str, str]:
136
- """
137
- Build the mapping from internal species ids to exported species tokens.
133
+ """Build the mapping from internal species ids to exported species tokens.
138
134
 
139
135
  :param incidence:
140
136
  Canonical SynCRN incidence object.
@@ -144,7 +140,7 @@ def _build_species_token_map(
144
140
  Species tokenization mode.
145
141
  :type species: str
146
142
 
147
- :returns:
143
+ :return:
148
144
  Mapping ``internal_species_id -> exported_species_token``.
149
145
  :rtype: Dict[str, str]
150
146
  """
@@ -158,8 +154,7 @@ def _build_reaction_token_map(
158
154
  *,
159
155
  reaction: str,
160
156
  ) -> Dict[str, str]:
161
- """
162
- Build the mapping from internal reaction ids to exported reaction tokens.
157
+ """Build the mapping from internal reaction ids to exported reaction tokens.
163
158
 
164
159
  :param incidence:
165
160
  Canonical SynCRN incidence object.
@@ -169,7 +164,7 @@ def _build_reaction_token_map(
169
164
  Reaction tokenization mode.
170
165
  :type reaction: str
171
166
 
172
- :returns:
167
+ :return:
173
168
  Mapping ``internal_reaction_id -> exported_reaction_token``.
174
169
  :rtype: Dict[str, str]
175
170
  """
@@ -183,8 +178,7 @@ def _tokenize_reaction_multiset(
183
178
  coeffs: Mapping[str, int],
184
179
  species_map: Mapping[str, str],
185
180
  ) -> Dict[str, int]:
186
- """
187
- Convert one incidence-side multiset from internal species ids to tokens.
181
+ """Convert one incidence-side multiset from internal species ids to tokens.
188
182
 
189
183
  :param coeffs:
190
184
  Mapping ``internal_species_id -> stoichiometric_coefficient``.
@@ -194,7 +188,7 @@ def _tokenize_reaction_multiset(
194
188
  Mapping ``internal_species_id -> exported_species_token``.
195
189
  :type species_map: Mapping[str, str]
196
190
 
197
- :returns:
191
+ :return:
198
192
  Mapping ``exported_species_token -> stoichiometric_coefficient``.
199
193
  :rtype: Dict[str, int]
200
194
  """
@@ -206,8 +200,7 @@ def _build_tokenized_edges(
206
200
  species_map: Mapping[str, str],
207
201
  reaction_map: Mapping[str, str],
208
202
  ) -> Dict[str, Tuple[Dict[str, int], Dict[str, int]]]:
209
- """
210
- Build tokenized reaction edges.
203
+ """Build tokenized reaction edges.
211
204
 
212
205
  Each reaction token maps to a pair ``(tail, head)``, where ``tail`` and
213
206
  ``head`` are tokenized stoichiometric multisets for reactants and products.
@@ -224,7 +217,7 @@ def _build_tokenized_edges(
224
217
  Mapping ``internal_reaction_id -> exported_reaction_token``.
225
218
  :type reaction_map: Mapping[str, str]
226
219
 
227
- :returns:
220
+ :return:
228
221
  Mapping
229
222
  ``reaction_token -> (reactant_multiset, product_multiset)``.
230
223
  :rtype: Dict[str, Tuple[Dict[str, int], Dict[str, int]]]
@@ -239,14 +232,13 @@ def _build_tokenized_edges(
239
232
 
240
233
 
241
234
  def _invert_token_map(token_map: Mapping[str, str]) -> Dict[str, str]:
242
- """
243
- Invert an internal-id to token mapping.
235
+ """Invert an internal-id to token mapping.
244
236
 
245
237
  :param token_map:
246
238
  Mapping ``internal_id -> token``.
247
239
  :type token_map: Mapping[str, str]
248
240
 
249
- :returns:
241
+ :return:
250
242
  Mapping ``token -> internal_id``.
251
243
  :rtype: Dict[str, str]
252
244
  """
@@ -265,8 +257,7 @@ def tokenize_syncrn_incidence(
265
257
  Dict[str, str],
266
258
  SynCRNIncidence,
267
259
  ]:
268
- """
269
- Convert SynCRN incidence into tokenized vertex and edge dictionaries.
260
+ """Convert SynCRN incidence into tokenized vertex and edge dictionaries.
270
261
 
271
262
  The returned objects are designed for downstream algorithms that prefer
272
263
  stable public-facing tokens over internal SynCRN identifiers.
@@ -285,7 +276,7 @@ def tokenize_syncrn_incidence(
285
276
  ``"source"``.
286
277
  :type reaction: str
287
278
 
288
- :returns:
279
+ :return:
289
280
  Tuple containing:
290
281
 
291
282
  - ``vertices``:
@@ -311,8 +302,8 @@ def tokenize_syncrn_incidence(
311
302
  :raises ValueError:
312
303
  If species or reaction tokenization produces non-unique exported tokens.
313
304
 
314
- Examples
315
- --------
305
+ .. rubric:: Examples
306
+
316
307
  .. code-block:: python
317
308
 
318
309
  vertices, edges, s_tok2id, r_tok2id, incidence = tokenize_syncrn_incidence(