synkit 1.3__tar.gz → 1.3.2__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 (265) hide show
  1. {synkit-1.3 → synkit-1.3.2}/.gitignore +9 -5
  2. {synkit-1.3 → synkit-1.3.2}/PKG-INFO +1 -1
  3. {synkit-1.3 → synkit-1.3.2}/pyproject.toml +1 -1
  4. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Query/kegg_extract.py +39 -7
  5. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Query/kegg_parse.py +107 -1
  6. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/_common.py +0 -6
  7. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/_ir.py +0 -11
  8. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/automorphism.py +0 -24
  9. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/canon.py +0 -10
  10. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/isomorphism.py +0 -17
  11. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/symmetry.py +0 -3
  12. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/wl_canon.py +0 -14
  13. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Molecule/atom_features.py +0 -1
  14. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/standardize.py +56 -8
  15. synkit-1.3.2/synkit/IO/mol_to_graph.py +1432 -0
  16. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/rbl_engine.py +1 -1
  17. synkit-1.3.2/synkit/Vis/rxn_vis.py +532 -0
  18. synkit-1.3/synkit/IO/mol_to_graph.py +0 -1117
  19. synkit-1.3/synkit/Vis/rxn_vis.py +0 -159
  20. {synkit-1.3 → synkit-1.3.2}/LICENSE +0 -0
  21. {synkit-1.3 → synkit-1.3.2}/README.md +0 -0
  22. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/DAG/__init__.py +0 -0
  23. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/DAG/crn.py +0 -0
  24. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/DAG/mod_crn.py +0 -0
  25. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/DAG/syncrn.py +0 -0
  26. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/__init__.py +0 -0
  27. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/abstract.py +0 -0
  28. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/arity.py +0 -0
  29. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/builder.py +0 -0
  30. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/derivation.py +0 -0
  31. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/flattener.py +0 -0
  32. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/keys.py +0 -0
  33. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/mixtures.py +0 -0
  34. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/smiles.py +0 -0
  35. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/state.py +0 -0
  36. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/strategy.py +0 -0
  37. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Construct/worker.py +0 -0
  38. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Pathway/__init__.py +0 -0
  39. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Pathway/_adapter.py +0 -0
  40. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Pathway/pathfinder.py +0 -0
  41. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Pathway/reachability.py +0 -0
  42. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Pathway/realizability.py +0 -0
  43. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Petrinet/__init__.py +0 -0
  44. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Petrinet/analyzer.py +0 -0
  45. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Petrinet/net.py +0 -0
  46. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Petrinet/persistence.py +0 -0
  47. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Petrinet/semiflows.py +0 -0
  48. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Petrinet/structure.py +0 -0
  49. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Props/__init__.py +0 -0
  50. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Props/dynamics.py +0 -0
  51. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Props/helper.py +0 -0
  52. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Props/stoich.py +0 -0
  53. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Props/thermo.py +0 -0
  54. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Query/__init__.py +0 -0
  55. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Query/kegg_api.py +0 -0
  56. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Query/kegg_impute.py +0 -0
  57. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Structure/__init__.py +0 -0
  58. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Structure/reaction.py +0 -0
  59. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Structure/rule.py +0 -0
  60. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Structure/species.py +0 -0
  61. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Structure/syncrn.py +0 -0
  62. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Symmetry/__init__.py +0 -0
  63. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Visualize/__init__.py +0 -0
  64. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Visualize/crn_vis.py +0 -0
  65. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Visualize/labels.py +0 -0
  66. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Visualize/layout.py +0 -0
  67. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Visualize/palette.py +0 -0
  68. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Visualize/validation.py +0 -0
  69. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/Visualize/vis.py +0 -0
  70. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/__init__.py +0 -0
  71. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Structure/__init__.py +0 -0
  72. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Structure/backend.py +0 -0
  73. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Structure/conversion.py +0 -0
  74. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Structure/hyperedge.py +0 -0
  75. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Structure/hypergraph.py +0 -0
  76. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Structure/rxn.py +0 -0
  77. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Symmetry/__init__.py +0 -0
  78. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Symmetry/automorphism.py +0 -0
  79. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Symmetry/canon.py +0 -0
  80. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/Symmetry/wl_canon.py +0 -0
  81. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/__init__.py +0 -0
  82. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/configs/__init__.py +0 -0
  83. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/configs/loader.py +0 -0
  84. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/configs/models.py +0 -0
  85. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/constants.py +0 -0
  86. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/crn_formula.py +0 -0
  87. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/deficiency.py +0 -0
  88. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/enumerator.py +0 -0
  89. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/exceptions.py +0 -0
  90. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/explorer.py +0 -0
  91. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/helpers.py +0 -0
  92. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/injectivity.py +0 -0
  93. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/motif.py +0 -0
  94. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/network.py +0 -0
  95. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/pathway.py +0 -0
  96. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/properties.py +0 -0
  97. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/reaction.py +0 -0
  98. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/utils.py +0 -0
  99. {synkit-1.3 → synkit-1.3.2}/synkit/CRN/dev_crn/viz.py +0 -0
  100. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Cluster/__init__.py +0 -0
  101. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Cluster/butina.py +0 -0
  102. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Fingerprint/__init__.py +0 -0
  103. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Fingerprint/fp_calculator.py +0 -0
  104. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Fingerprint/smiles_featurizer.py +0 -0
  105. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Fingerprint/transformation_fp.py +0 -0
  106. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Molecule/__init__.py +0 -0
  107. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Molecule/descriptors.py +0 -0
  108. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Molecule/formula.py +0 -0
  109. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Molecule/graph_annotator.py +0 -0
  110. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Molecule/standardize.py +0 -0
  111. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Molecule/valence.py +0 -0
  112. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/Mapper/__init__.py +0 -0
  113. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/Mapper/wl_mapper.py +0 -0
  114. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/__init__.py +0 -0
  115. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/aam_validator.py +0 -0
  116. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/balance_check.py +0 -0
  117. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/canon_rsmi.py +0 -0
  118. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/cleaning.py +0 -0
  119. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/deionize.py +0 -0
  120. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/fix_aam.py +0 -0
  121. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/neutralize.py +0 -0
  122. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/radical_wildcard.py +0 -0
  123. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/Reaction/tautomerize.py +0 -0
  124. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/__init__.py +0 -0
  125. {synkit-1.3 → synkit-1.3.2}/synkit/Chem/utils.py +0 -0
  126. {synkit-1.3 → synkit-1.3.2}/synkit/Data/__init__.py +0 -0
  127. {synkit-1.3 → synkit-1.3.2}/synkit/Data/gen_partial_aam.py +0 -0
  128. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Canon/__init__.py +0 -0
  129. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Canon/canon_algs.py +0 -0
  130. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Canon/canon_graph.py +0 -0
  131. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Canon/nauty.py +0 -0
  132. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Context/__init__.py +0 -0
  133. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Context/hier_context.py +0 -0
  134. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Context/radius_expand.py +0 -0
  135. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/Descriptors/topology.py +0 -0
  136. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/Fingerprint/__init__.py +0 -0
  137. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/Fingerprint/wl_rxn_fps.py +0 -0
  138. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/__init__.py +0 -0
  139. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/graph_descriptors.py +0 -0
  140. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/graph_fps.py +0 -0
  141. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/graph_signature.py +0 -0
  142. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/hash_fps.py +0 -0
  143. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/morgan_fps.py +0 -0
  144. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/path_fps.py +0 -0
  145. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Feature/wl_hash.py +0 -0
  146. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Hyrogen/__init__.py +0 -0
  147. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Hyrogen/_misc.py +0 -0
  148. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Hyrogen/hcomplete.py +0 -0
  149. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Hyrogen/hextend.py +0 -0
  150. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/__init__.py +0 -0
  151. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/its_builder.py +0 -0
  152. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/its_construction.py +0 -0
  153. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/its_decompose.py +0 -0
  154. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/its_destruction.py +0 -0
  155. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/its_expand.py +0 -0
  156. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/its_relabel.py +0 -0
  157. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/its_reverter.py +0 -0
  158. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/normalize_aam.py +0 -0
  159. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/partial_its.py +0 -0
  160. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/ITS/rc_extractor.py +0 -0
  161. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/MTG/__init__.py +0 -0
  162. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/MTG/group_comp.py +0 -0
  163. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/MTG/groupoid.py +0 -0
  164. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/MTG/mcs_matcher.py +0 -0
  165. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/MTG/mtg.py +0 -0
  166. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/MTG/mtg_explore.py +0 -0
  167. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/MTG/utils.py +0 -0
  168. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/__init__.py +0 -0
  169. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/approx_mcs.py +0 -0
  170. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/auto_est.py +0 -0
  171. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/automorphism.py +0 -0
  172. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/batch_cluster.py +0 -0
  173. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/dedup_matches.py +0 -0
  174. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/graph_cluster.py +0 -0
  175. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/graph_matcher.py +0 -0
  176. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/graph_morphism.py +0 -0
  177. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/mcs_matcher.py +0 -0
  178. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/multi_turbo_iso.py +0 -0
  179. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/orbit.py +0 -0
  180. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/partial_matcher.py +0 -0
  181. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/sing.py +0 -0
  182. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/subgraph_matcher.py +0 -0
  183. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/turbo_iso.py +0 -0
  184. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Matcher/wl_sel.py +0 -0
  185. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Wildcard/__init__.py +0 -0
  186. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Wildcard/fuse_graph.py +0 -0
  187. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Wildcard/graph_wc.py +0 -0
  188. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Wildcard/its_merge.py +0 -0
  189. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Wildcard/radwc.py +0 -0
  190. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Wildcard/wc_matcher.py +0 -0
  191. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/Wildcard/wildcard.py +0 -0
  192. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/__init__.py +0 -0
  193. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/canon_graph.py +0 -0
  194. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/syn_graph.py +0 -0
  195. {synkit-1.3 → synkit-1.3.2}/synkit/Graph/utils.py +0 -0
  196. {synkit-1.3 → synkit-1.3.2}/synkit/IO/__init__.py +0 -0
  197. {synkit-1.3 → synkit-1.3.2}/synkit/IO/chem_converter.py +0 -0
  198. {synkit-1.3 → synkit-1.3.2}/synkit/IO/combinatorial/__init__.py +0 -0
  199. {synkit-1.3 → synkit-1.3.2}/synkit/IO/combinatorial/gml_to_graph.py +0 -0
  200. {synkit-1.3 → synkit-1.3.2}/synkit/IO/combinatorial/graph_to_gml.py +0 -0
  201. {synkit-1.3 → synkit-1.3.2}/synkit/IO/combinatorial/graph_to_smarts.py +0 -0
  202. {synkit-1.3 → synkit-1.3.2}/synkit/IO/combinatorial/smarts_expander.py +0 -0
  203. {synkit-1.3 → synkit-1.3.2}/synkit/IO/combinatorial/smarts_generalizer.py +0 -0
  204. {synkit-1.3 → synkit-1.3.2}/synkit/IO/combinatorial/smarts_to_graph.py +0 -0
  205. {synkit-1.3 → synkit-1.3.2}/synkit/IO/data_io.py +0 -0
  206. {synkit-1.3 → synkit-1.3.2}/synkit/IO/data_process.py +0 -0
  207. {synkit-1.3 → synkit-1.3.2}/synkit/IO/debug.py +0 -0
  208. {synkit-1.3 → synkit-1.3.2}/synkit/IO/dg_to_gml.py +0 -0
  209. {synkit-1.3 → synkit-1.3.2}/synkit/IO/gml_to_nx.py +0 -0
  210. {synkit-1.3 → synkit-1.3.2}/synkit/IO/graph_to_mol.py +0 -0
  211. {synkit-1.3 → synkit-1.3.2}/synkit/IO/nx_to_gml.py +0 -0
  212. {synkit-1.3 → synkit-1.3.2}/synkit/IO/smiles_to_id.py +0 -0
  213. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Apply/__init__.py +0 -0
  214. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Apply/reactor_rule.py +0 -0
  215. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Apply/retro_reactor.py +0 -0
  216. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Apply/rule_matcher.py +0 -0
  217. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Apply/rule_rbl.py +0 -0
  218. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Compose/__init__.py +0 -0
  219. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Compose/compose_rule.py +0 -0
  220. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Compose/rule_compose.py +0 -0
  221. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Compose/rule_mapping.py +0 -0
  222. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Compose/seq_comp.py +0 -0
  223. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Compose/valence_constrain.py +0 -0
  224. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Modify/__init__.py +0 -0
  225. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Modify/implict_rule.py +0 -0
  226. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Modify/longest_path.py +0 -0
  227. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Modify/molecule_rule.py +0 -0
  228. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Modify/prune_templates.py +0 -0
  229. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Modify/rule_utils.py +0 -0
  230. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/Modify/strip_rule.py +0 -0
  231. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/__init__.py +0 -0
  232. {synkit-1.3 → synkit-1.3.2}/synkit/Rule/syn_rule.py +0 -0
  233. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/MSR/__init__.py +0 -0
  234. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/MSR/multi_steps.py +0 -0
  235. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/MSR/path_finder.py +0 -0
  236. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Metrics/__init__.py +0 -0
  237. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Metrics/_base.py +0 -0
  238. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Metrics/_plot.py +0 -0
  239. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Metrics/_ranking.py +0 -0
  240. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/__init__.py +0 -0
  241. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/batch_reactor.py +0 -0
  242. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/benchmark.py +0 -0
  243. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/imba_engine.py +0 -0
  244. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/mod_aam.py +0 -0
  245. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/mod_reactor.py +0 -0
  246. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/partial_engine.py +0 -0
  247. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/post_syn.py +0 -0
  248. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/rule_filter.py +0 -0
  249. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/single_predictor.py +0 -0
  250. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/strategy.py +0 -0
  251. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/Reactor/syn_reactor.py +0 -0
  252. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/__init__.py +0 -0
  253. {synkit-1.3 → synkit-1.3.2}/synkit/Synthesis/reactor_utils.py +0 -0
  254. {synkit-1.3 → synkit-1.3.2}/synkit/Utils/__init__.py +0 -0
  255. {synkit-1.3 → synkit-1.3.2}/synkit/Utils/utils.py +0 -0
  256. {synkit-1.3 → synkit-1.3.2}/synkit/Vis/__init__.py +0 -0
  257. {synkit-1.3 → synkit-1.3.2}/synkit/Vis/chemical_space.py +0 -0
  258. {synkit-1.3 → synkit-1.3.2}/synkit/Vis/crn_vis.py +0 -0
  259. {synkit-1.3 → synkit-1.3.2}/synkit/Vis/embedding.py +0 -0
  260. {synkit-1.3 → synkit-1.3.2}/synkit/Vis/graph_visualizer.py +0 -0
  261. {synkit-1.3 → synkit-1.3.2}/synkit/Vis/pdf_writer.py +0 -0
  262. {synkit-1.3 → synkit-1.3.2}/synkit/Vis/rule_vis.py +0 -0
  263. {synkit-1.3 → synkit-1.3.2}/synkit/__init__.py +0 -0
  264. {synkit-1.3 → synkit-1.3.2}/synkit/examples.py +0 -0
  265. {synkit-1.3 → synkit-1.3.2}/synkit/version.py +0 -0
@@ -3,15 +3,15 @@
3
3
  *.csv
4
4
  */catboost_info/*
5
5
 
6
- *.json
6
+
7
7
  *.pkl.gz
8
8
  *.pdf
9
- *.log
9
+
10
10
  .coverage
11
11
  dev/*
12
12
  *.rdf
13
13
  test_syn_reactor.py
14
- *.ipynb
14
+
15
15
  Data/Benchmark/*
16
16
  *.json.gz
17
17
  # *.png
@@ -26,5 +26,9 @@ Data/USPTO/*
26
26
  crn/*
27
27
  test_run.py
28
28
  Data/Study/CRN/case_formose/*
29
- Data/Study/CRN/case_glycolysis/*
30
- synkit/Graph/dev/*
29
+
30
+ synkit/Graph/dev/*
31
+ *.ipynb
32
+ *.json
33
+ *.txt
34
+ *.log
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synkit
3
- Version: 1.3
3
+ Version: 1.3.2
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.3"
7
+ version = "1.3.2"
8
8
  description = "Utility for reaction modeling using graph grammar"
9
9
  readme = "README.md"
10
10
  long-description = { file = "CHANGELOG.md" }
@@ -12,11 +12,15 @@ except Exception:
12
12
 
13
13
  from .kegg_api import KEGGClient
14
14
  from .kegg_parse import (
15
+ equation_to_text,
15
16
  get_compound_ids_from_equations,
16
17
  get_compound_ids_from_text,
17
18
  molblock_to_smiles,
18
19
  normalize_module_id,
20
+ orient_equation_to_module,
21
+ parse_equation,
19
22
  parse_kegg_field_blocks,
23
+ parse_module_reaction_directions,
20
24
  reaction_smiles_from_equation,
21
25
  )
22
26
 
@@ -127,7 +131,8 @@ class KEGGExtractor:
127
131
 
128
132
  def get_reaction_ids_from_module(self, module_id: str) -> list[str]:
129
133
  """
130
- Collect KEGG reaction IDs from a module entry.
134
+ Collect KEGG reaction IDs from a module entry, preserving module order when
135
+ directional REACTION lines can be parsed.
131
136
 
132
137
  :param module_id:
133
138
  KEGG module identifier such as ``"M00001"``.
@@ -144,8 +149,11 @@ class KEGGExtractor:
144
149
  reaction_ids = extractor.get_reaction_ids_from_module("M00001")
145
150
  """
146
151
  text = self.client.get_text(f"get/{module_id}")
147
- payloads = parse_kegg_field_blocks(text, "REACTION")
152
+ directions = parse_module_reaction_directions(text)
153
+ if directions:
154
+ return list(directions.keys())
148
155
 
156
+ payloads = parse_kegg_field_blocks(text, "REACTION")
149
157
  reaction_ids: set[str] = set()
150
158
  for payload in payloads:
151
159
  reaction_ids.update(_RID_PATTERN.findall(payload))
@@ -192,11 +200,35 @@ class KEGGExtractor:
192
200
 
193
201
  equations = extractor.get_module_equations("M00001")
194
202
  """
195
- reaction_ids = self.get_reaction_ids_from_module(module_id)
196
- return {
197
- reaction_id: self.get_equation_for_reaction(reaction_id)
198
- for reaction_id in reaction_ids
199
- }
203
+ module_text = self.client.get_text(f"get/{module_id}")
204
+ directions = parse_module_reaction_directions(module_text)
205
+
206
+ reaction_ids = (
207
+ list(directions.keys())
208
+ if directions
209
+ else self.get_reaction_ids_from_module(module_id)
210
+ )
211
+
212
+ equations_by_rid: ReactionEquationMap = {}
213
+
214
+ for reaction_id in reaction_ids:
215
+ equation = self.get_equation_for_reaction(reaction_id)
216
+ if equation is None:
217
+ equations_by_rid[reaction_id] = None
218
+ continue
219
+
220
+ if reaction_id not in directions:
221
+ equations_by_rid[reaction_id] = equation
222
+ continue
223
+
224
+ left_ids, right_ids, module_arrow = directions[reaction_id]
225
+ parsed = parse_equation(equation)
226
+ oriented = orient_equation_to_module(parsed, left_ids, right_ids)
227
+ equations_by_rid[reaction_id] = equation_to_text(
228
+ oriented, arrow=module_arrow
229
+ )
230
+
231
+ return equations_by_rid
200
232
 
201
233
  def get_pathway_equations(
202
234
  self,
@@ -9,6 +9,10 @@ from rdkit import Chem
9
9
  _CID_PATTERN = re.compile(r"C\d{5}")
10
10
  _MODULE_PATTERN = re.compile(r"M\d{5}")
11
11
  _TERM_PATTERN = re.compile(r"^(?:(\d+)\s+)?(C\d{5})$")
12
+ _RID_PATTERN = re.compile(r"R\d{5}")
13
+ _MODULE_REACTION_LINE = re.compile(
14
+ r"^(?P<rids>R\d{5}(?:,R\d{5})*)\s+(?P<lhs>.+?)\s*(?P<arrow><=>|->|=>|<-|<=)\s*(?P<rhs>.+)$"
15
+ )
12
16
 
13
17
  CompoundStoich = tuple[str, int]
14
18
  CompoundRecord = Mapping[str, Any]
@@ -178,7 +182,7 @@ def parse_equation(equation: str) -> KEGGEquation:
178
182
  """
179
183
  Parse a KEGG equation string into reactants, products, and arrow type.
180
184
 
181
- Supported arrows are ``<=>``, ``=>``, and ``<=``.
185
+ Supported arrows are ``<=>``, ``<->``, ``=>``, ``->``, ``<=``, and ``<-``.
182
186
 
183
187
  :param equation:
184
188
  KEGG equation string.
@@ -200,12 +204,21 @@ def parse_equation(equation: str) -> KEGGEquation:
200
204
  if "<=>" in equation:
201
205
  lhs, rhs = equation.split("<=>")
202
206
  reversible = True
207
+ elif "<->" in equation:
208
+ lhs, rhs = equation.split("<->")
209
+ reversible = True
203
210
  elif "=>" in equation:
204
211
  lhs, rhs = equation.split("=>")
205
212
  reversible = False
213
+ elif "->" in equation:
214
+ lhs, rhs = equation.split("->")
215
+ reversible = False
206
216
  elif "<=" in equation:
207
217
  rhs, lhs = equation.split("<=")
208
218
  reversible = False
219
+ elif "<-" in equation:
220
+ rhs, lhs = equation.split("<-")
221
+ reversible = False
209
222
  else:
210
223
  raise ValueError(f"Unknown KEGG equation arrow in: {equation!r}")
211
224
 
@@ -392,3 +405,96 @@ def reaction_smiles_from_equation(
392
405
  missing["products"].append(compound_id)
393
406
 
394
407
  return ".".join(reactant_smiles) + ">>" + ".".join(product_smiles), missing
408
+
409
+
410
+ def parse_module_reaction_directions(
411
+ text: str,
412
+ ) -> dict[str, tuple[list[str], list[str], str]]:
413
+ """
414
+ Parse directional hints from a KEGG MODULE entry.
415
+
416
+ Returns
417
+ -------
418
+ dict
419
+ Mapping:
420
+ {
421
+ reaction_id: (left_compound_ids, right_compound_ids, arrow)
422
+ }
423
+ """
424
+ directions: dict[str, tuple[list[str], list[str], str]] = {}
425
+
426
+ in_reaction = False
427
+ for line in text.splitlines():
428
+ if line.startswith("REACTION"):
429
+ payload = line[len("REACTION") :].strip() # noqa
430
+ in_reaction = True
431
+ elif in_reaction and (line.startswith(" ") or line.startswith("\t")):
432
+ payload = line.strip()
433
+ else:
434
+ if in_reaction:
435
+ break
436
+ continue
437
+
438
+ match = _MODULE_REACTION_LINE.match(payload)
439
+ if not match:
440
+ continue
441
+
442
+ reaction_ids = _RID_PATTERN.findall(match.group("rids"))
443
+ left_ids = get_compound_ids_from_text(match.group("lhs"))
444
+ right_ids = get_compound_ids_from_text(match.group("rhs"))
445
+ arrow = match.group("arrow")
446
+
447
+ for rid in reaction_ids:
448
+ directions[rid] = (left_ids, right_ids, arrow)
449
+
450
+ return directions
451
+
452
+
453
+ def orient_equation_to_module(
454
+ parsed: KEGGEquation,
455
+ left_ids: list[str],
456
+ right_ids: list[str],
457
+ ) -> KEGGEquation:
458
+ """
459
+ Orient a parsed KEGG equation according to module direction.
460
+ """
461
+ reactant_ids = {cid for cid, _ in parsed.reactants}
462
+ product_ids = {cid for cid, _ in parsed.products}
463
+
464
+ left_set = set(left_ids)
465
+ right_set = set(right_ids)
466
+
467
+ keep_score = len(left_set & reactant_ids) + len(right_set & product_ids)
468
+ flip_score = len(left_set & product_ids) + len(right_set & reactant_ids)
469
+
470
+ if flip_score > keep_score:
471
+ return KEGGEquation(
472
+ reactants=list(parsed.products),
473
+ products=list(parsed.reactants),
474
+ reversible=parsed.reversible,
475
+ )
476
+
477
+ return parsed
478
+
479
+
480
+ def equation_to_text(parsed: KEGGEquation, arrow: str | None = None) -> str:
481
+ """
482
+ Convert KEGGEquation back to text, optionally forcing the arrow from the
483
+ module hint.
484
+ """
485
+
486
+ def side_to_text(items: list[tuple[str, int]]) -> str:
487
+ parts = []
488
+ for cid, coeff in items:
489
+ parts.append(f"{coeff} {cid}" if coeff != 1 else cid)
490
+ return " + ".join(parts)
491
+
492
+ if arrow == "->":
493
+ arrow = "=>"
494
+ elif arrow == "<-":
495
+ arrow = "<="
496
+
497
+ if arrow is None:
498
+ arrow = "<=>" if parsed.reversible else "=>"
499
+
500
+ return f"{side_to_text(parsed.reactants)} {arrow} {side_to_text(parsed.products)}"
@@ -542,7 +542,6 @@ def prepare_graph(
542
542
  source: Any,
543
543
  *,
544
544
  include_rule: bool = True,
545
- integer_ids: bool = False,
546
545
  include_stoich: bool = True,
547
546
  ) -> Tuple[nx.DiGraph, str]:
548
547
  """
@@ -561,10 +560,6 @@ def prepare_graph(
561
560
  species-rule graph rather than a species-only graph.
562
561
  :type include_rule: bool
563
562
 
564
- :param integer_ids:
565
- Reserved compatibility flag.
566
- :type integer_ids: bool
567
-
568
563
  :param include_stoich:
569
564
  Reserved compatibility flag.
570
565
  :type include_stoich: bool
@@ -576,7 +571,6 @@ def prepare_graph(
576
571
  :raises TypeError:
577
572
  If the input is unsupported.
578
573
  """
579
- _ = integer_ids
580
574
  _ = include_stoich
581
575
 
582
576
  if isinstance(source, (nx.Graph, nx.DiGraph, nx.MultiGraph, nx.MultiDiGraph)):
@@ -88,11 +88,6 @@ class IRCanonicalEngine:
88
88
  Whether rule/reaction node semantics should be encoded into node tokens.
89
89
  :type include_rule: bool
90
90
 
91
- :param integer_ids:
92
- Whether integer-style IDs should be preferred when supported by the
93
- upstream graph builder.
94
- :type integer_ids: bool
95
-
96
91
  :param include_stoich:
97
92
  Whether stoichiometric edge/node information should be included in the
98
93
  canonicalization tokens.
@@ -145,7 +140,6 @@ class IRCanonicalEngine:
145
140
  source: Any,
146
141
  *,
147
142
  include_rule: bool = True,
148
- integer_ids: bool = False,
149
143
  include_stoich: bool = True,
150
144
  wl_iters: int = 20,
151
145
  wl_digest_size: int = 16,
@@ -162,10 +156,6 @@ class IRCanonicalEngine:
162
156
  Whether rule/reaction semantics are included.
163
157
  :type include_rule: bool
164
158
 
165
- :param integer_ids:
166
- Whether integer IDs should be preserved or preferred when possible.
167
- :type integer_ids: bool
168
-
169
159
  :param include_stoich:
170
160
  Whether stoichiometric information is encoded into the graph tokens.
171
161
  :type include_stoich: bool
@@ -187,7 +177,6 @@ class IRCanonicalEngine:
187
177
  self.wl = WLCanonicalizer(
188
178
  source,
189
179
  include_rule=include_rule,
190
- integer_ids=integer_ids,
191
180
  include_stoich=include_stoich,
192
181
  n_iter=wl_iters,
193
182
  digest_size=wl_digest_size,
@@ -32,11 +32,6 @@ class CRNAutomorphism:
32
32
  internal graph representation.
33
33
  :type include_rule: bool
34
34
 
35
- :param integer_ids:
36
- Whether integer-style identifiers should be preferred when supported by
37
- the upstream graph builder.
38
- :type integer_ids: bool
39
-
40
35
  :param include_stoich:
41
36
  Whether stoichiometric information should be included in the internal
42
37
  representation.
@@ -80,7 +75,6 @@ class CRNAutomorphism:
80
75
  source: Any,
81
76
  *,
82
77
  include_rule: bool = True,
83
- integer_ids: bool = False,
84
78
  include_stoich: bool = True,
85
79
  wl_iters: int = 20,
86
80
  wl_digest_size: int = 16,
@@ -97,10 +91,6 @@ class CRNAutomorphism:
97
91
  Whether rule/reaction nodes are included.
98
92
  :type include_rule: bool
99
93
 
100
- :param integer_ids:
101
- Whether integer-style identifiers should be preferred.
102
- :type integer_ids: bool
103
-
104
94
  :param include_stoich:
105
95
  Whether stoichiometric information should be included.
106
96
  :type include_stoich: bool
@@ -120,7 +110,6 @@ class CRNAutomorphism:
120
110
  self.config, self.wl, self._engine = self._build_components(
121
111
  source,
122
112
  include_rule=include_rule,
123
- integer_ids=integer_ids,
124
113
  include_stoich=include_stoich,
125
114
  wl_iters=wl_iters,
126
115
  wl_digest_size=wl_digest_size,
@@ -166,7 +155,6 @@ class CRNAutomorphism:
166
155
  source: Any,
167
156
  *,
168
157
  include_rule: bool,
169
- integer_ids: bool,
170
158
  include_stoich: bool,
171
159
  wl_iters: int,
172
160
  wl_digest_size: int,
@@ -183,10 +171,6 @@ class CRNAutomorphism:
183
171
  Whether rule/reaction nodes are included.
184
172
  :type include_rule: bool
185
173
 
186
- :param integer_ids:
187
- Whether integer-style identifiers should be preferred.
188
- :type integer_ids: bool
189
-
190
174
  :param include_stoich:
191
175
  Whether stoichiometric information should be included.
192
176
  :type include_stoich: bool
@@ -211,7 +195,6 @@ class CRNAutomorphism:
211
195
  wl = WLCanonicalizer(
212
196
  source,
213
197
  include_rule=include_rule,
214
- integer_ids=integer_ids,
215
198
  include_stoich=include_stoich,
216
199
  n_iter=wl_iters,
217
200
  digest_size=wl_digest_size,
@@ -220,7 +203,6 @@ class CRNAutomorphism:
220
203
  engine = IRCanonicalEngine(
221
204
  source,
222
205
  include_rule=include_rule,
223
- integer_ids=integer_ids,
224
206
  include_stoich=include_stoich,
225
207
  wl_iters=wl_iters,
226
208
  wl_digest_size=wl_digest_size,
@@ -234,7 +216,6 @@ class CRNAutomorphism:
234
216
  source: Any,
235
217
  *,
236
218
  include_rule: bool,
237
- integer_ids: bool,
238
219
  include_stoich: bool,
239
220
  wl_iters: int,
240
221
  wl_digest_size: int,
@@ -251,10 +232,6 @@ class CRNAutomorphism:
251
232
  Whether rule/reaction nodes are included.
252
233
  :type include_rule: bool
253
234
 
254
- :param integer_ids:
255
- Whether integer-style identifiers should be preferred.
256
- :type integer_ids: bool
257
-
258
235
  :param include_stoich:
259
236
  Whether stoichiometric information should be included.
260
237
  :type include_stoich: bool
@@ -282,7 +259,6 @@ class CRNAutomorphism:
282
259
  return cls._build_fresh(
283
260
  source,
284
261
  include_rule=include_rule,
285
- integer_ids=integer_ids,
286
262
  include_stoich=include_stoich,
287
263
  wl_iters=wl_iters,
288
264
  wl_digest_size=wl_digest_size,
@@ -33,10 +33,6 @@ class CRNCanonicalizer:
33
33
  Whether rule / reaction nodes should be included explicitly in the
34
34
  canonicalization model.
35
35
  :type include_rule: bool
36
- :param integer_ids:
37
- Whether to normalize node identifiers into integer-based ids in the
38
- internal representation.
39
- :type integer_ids: bool
40
36
  :param include_stoich:
41
37
  Whether stoichiometric information should be included in the canonical
42
38
  representation and symmetry analysis.
@@ -73,7 +69,6 @@ class CRNCanonicalizer:
73
69
  source: Any,
74
70
  *,
75
71
  include_rule: bool = True,
76
- integer_ids: bool = False,
77
72
  include_stoich: bool = True,
78
73
  wl_iters: int = 20,
79
74
  wl_digest_size: int = 16,
@@ -88,9 +83,6 @@ class CRNCanonicalizer:
88
83
  :param include_rule:
89
84
  Whether rule / reaction nodes are included in the internal model.
90
85
  :type include_rule: bool
91
- :param integer_ids:
92
- Whether integer ids should be used internally.
93
- :type integer_ids: bool
94
86
  :param include_stoich:
95
87
  Whether stoichiometric information is included.
96
88
  :type include_stoich: bool
@@ -111,7 +103,6 @@ class CRNCanonicalizer:
111
103
  self.wl = WLCanonicalizer(
112
104
  source,
113
105
  include_rule=include_rule,
114
- integer_ids=integer_ids,
115
106
  include_stoich=include_stoich,
116
107
  n_iter=wl_iters,
117
108
  digest_size=wl_digest_size,
@@ -120,7 +111,6 @@ class CRNCanonicalizer:
120
111
  self._engine = IRCanonicalEngine(
121
112
  source,
122
113
  include_rule=include_rule,
123
- integer_ids=integer_ids,
124
114
  include_stoich=include_stoich,
125
115
  wl_iters=wl_iters,
126
116
  wl_digest_size=wl_digest_size,
@@ -35,11 +35,6 @@ class CRNIsomorphism:
35
35
  representation.
36
36
  :type include_rule: bool
37
37
 
38
- :param integer_ids:
39
- Whether integer-style identifiers should be preferred when supported by
40
- the upstream graph builder.
41
- :type integer_ids: bool
42
-
43
38
  :param include_stoich:
44
39
  Whether stoichiometric information should be included in the internal
45
40
  graph representation.
@@ -80,7 +75,6 @@ class CRNIsomorphism:
80
75
  source: Any,
81
76
  *,
82
77
  include_rule: bool = True,
83
- integer_ids: bool = False,
84
78
  include_stoich: bool = True,
85
79
  wl_iters: int = 20,
86
80
  wl_digest_size: int = 16,
@@ -97,10 +91,6 @@ class CRNIsomorphism:
97
91
  Whether rule/reaction nodes are included.
98
92
  :type include_rule: bool
99
93
 
100
- :param integer_ids:
101
- Whether integer-style identifiers should be preferred.
102
- :type integer_ids: bool
103
-
104
94
  :param include_stoich:
105
95
  Whether stoichiometric information should be included.
106
96
  :type include_stoich: bool
@@ -121,7 +111,6 @@ class CRNIsomorphism:
121
111
  self.wl = self._build_wl(
122
112
  source,
123
113
  include_rule=include_rule,
124
- integer_ids=integer_ids,
125
114
  include_stoich=include_stoich,
126
115
  wl_iters=wl_iters,
127
116
  wl_digest_size=wl_digest_size,
@@ -135,7 +124,6 @@ class CRNIsomorphism:
135
124
  source: Any,
136
125
  *,
137
126
  include_rule: bool,
138
- integer_ids: bool,
139
127
  include_stoich: bool,
140
128
  wl_iters: int,
141
129
  wl_digest_size: int,
@@ -152,10 +140,6 @@ class CRNIsomorphism:
152
140
  Whether rule/reaction nodes are included.
153
141
  :type include_rule: bool
154
142
 
155
- :param integer_ids:
156
- Whether integer-style identifiers should be preferred.
157
- :type integer_ids: bool
158
-
159
143
  :param include_stoich:
160
144
  Whether stoichiometric information should be included.
161
145
  :type include_stoich: bool
@@ -179,7 +163,6 @@ class CRNIsomorphism:
179
163
  return WLCanonicalizer(
180
164
  source,
181
165
  include_rule=include_rule,
182
- integer_ids=integer_ids,
183
166
  include_stoich=include_stoich,
184
167
  n_iter=wl_iters,
185
168
  digest_size=wl_digest_size,
@@ -17,7 +17,6 @@ class CRNSymmetry:
17
17
  source: Any,
18
18
  *,
19
19
  include_rule: bool = True,
20
- integer_ids: bool = False,
21
20
  include_stoich: bool = True,
22
21
  wl_iters: int = 20,
23
22
  wl_digest_size: int = 16,
@@ -26,7 +25,6 @@ class CRNSymmetry:
26
25
  self.config = config or SymmetryConfig.topological()
27
26
  self.kwargs = dict(
28
27
  include_rule=include_rule,
29
- integer_ids=integer_ids,
30
28
  include_stoich=include_stoich,
31
29
  wl_iters=wl_iters,
32
30
  wl_digest_size=wl_digest_size,
@@ -37,7 +35,6 @@ class CRNSymmetry:
37
35
  n_iter=wl_iters,
38
36
  digest_size=wl_digest_size,
39
37
  include_rule=include_rule,
40
- integer_ids=integer_ids,
41
38
  include_stoich=include_stoich,
42
39
  config=self.config,
43
40
  )
@@ -163,11 +163,6 @@ class WLCanonicalizer:
163
163
  Whether rule nodes should be included in the prepared graph.
164
164
  :type include_rule: bool
165
165
 
166
- :param integer_ids:
167
- Whether integer node identifiers should be used during graph
168
- preparation.
169
- :type integer_ids: bool
170
-
171
166
  :param include_stoich:
172
167
  Whether stoichiometric edge attributes should be preserved during graph
173
168
  preparation.
@@ -226,7 +221,6 @@ class WLCanonicalizer:
226
221
  source: Any,
227
222
  *,
228
223
  include_rule: bool = True,
229
- integer_ids: bool = False,
230
224
  include_stoich: bool = True,
231
225
  n_iter: int = 20,
232
226
  digest_size: int = 16,
@@ -247,11 +241,6 @@ class WLCanonicalizer:
247
241
  Whether rule nodes should be included in the prepared graph.
248
242
  :type include_rule: bool
249
243
 
250
- :param integer_ids:
251
- Whether integer node identifiers should be used during graph
252
- preparation.
253
- :type integer_ids: bool
254
-
255
244
  :param include_stoich:
256
245
  Whether stoichiometric edge attributes should be preserved.
257
246
  :type include_stoich: bool
@@ -301,7 +290,6 @@ class WLCanonicalizer:
301
290
  """
302
291
  self.source = source
303
292
  self.include_rule = bool(include_rule)
304
- self.integer_ids = bool(integer_ids)
305
293
  self.include_stoich = bool(include_stoich)
306
294
  self.n_iter = int(n_iter)
307
295
  self.digest_size = int(digest_size)
@@ -314,7 +302,6 @@ class WLCanonicalizer:
314
302
  self._G, self._graph_type = prepare_graph(
315
303
  source,
316
304
  include_rule=self.include_rule,
317
- integer_ids=self.integer_ids,
318
305
  include_stoich=self.include_stoich,
319
306
  )
320
307
 
@@ -400,7 +387,6 @@ class WLCanonicalizer:
400
387
  self.G.number_of_nodes(),
401
388
  self.G.number_of_edges(),
402
389
  self.include_rule,
403
- self.integer_ids,
404
390
  self.include_stoich,
405
391
  self.n_iter,
406
392
  self.digest_size,
@@ -192,7 +192,6 @@ class AtomFeatureExtractor:
192
192
  "partial_charge": round(float(gcharge), 3),
193
193
  "hybridization": str(atom.GetHybridization()),
194
194
  "in_ring": bool(atom.IsInRing()),
195
- "implicit_hcount": int(atom.GetNumImplicitHs()),
196
195
  "neighbors": neighbor_symbols,
197
196
  "atom_map": atom_map,
198
197
  }