synkit 1.3__tar.gz → 1.3.1a0__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.
- {synkit-1.3 → synkit-1.3.1a0}/.gitignore +4 -4
- {synkit-1.3 → synkit-1.3.1a0}/PKG-INFO +1 -1
- {synkit-1.3 → synkit-1.3.1a0}/pyproject.toml +1 -1
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Query/kegg_extract.py +39 -7
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Query/kegg_parse.py +107 -1
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/_common.py +0 -6
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/_ir.py +0 -11
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/automorphism.py +0 -24
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/canon.py +0 -10
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/isomorphism.py +0 -17
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/symmetry.py +0 -3
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/wl_canon.py +0 -14
- synkit-1.3.1a0/synkit/IO/mol_to_graph.py +1403 -0
- synkit-1.3/synkit/IO/mol_to_graph.py +0 -1117
- {synkit-1.3 → synkit-1.3.1a0}/LICENSE +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/README.md +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/DAG/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/DAG/crn.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/DAG/mod_crn.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/DAG/syncrn.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/abstract.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/arity.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/builder.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/derivation.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/flattener.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/keys.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/mixtures.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/smiles.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/state.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/strategy.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Construct/worker.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Pathway/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Pathway/_adapter.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Pathway/pathfinder.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Pathway/reachability.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Pathway/realizability.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Petrinet/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Petrinet/analyzer.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Petrinet/net.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Petrinet/persistence.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Petrinet/semiflows.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Petrinet/structure.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Props/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Props/dynamics.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Props/helper.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Props/stoich.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Props/thermo.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Query/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Query/kegg_api.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Query/kegg_impute.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Structure/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Structure/reaction.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Structure/rule.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Structure/species.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Structure/syncrn.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Symmetry/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Visualize/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Visualize/crn_vis.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Visualize/labels.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Visualize/layout.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Visualize/palette.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Visualize/validation.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/Visualize/vis.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Structure/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Structure/backend.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Structure/conversion.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Structure/hyperedge.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Structure/hypergraph.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Structure/rxn.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Symmetry/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Symmetry/automorphism.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Symmetry/canon.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/Symmetry/wl_canon.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/configs/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/configs/loader.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/configs/models.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/constants.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/crn_formula.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/deficiency.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/enumerator.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/exceptions.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/explorer.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/helpers.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/injectivity.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/motif.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/network.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/pathway.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/properties.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/reaction.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/utils.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/CRN/dev_crn/viz.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Cluster/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Cluster/butina.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Fingerprint/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Fingerprint/fp_calculator.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Fingerprint/smiles_featurizer.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Fingerprint/transformation_fp.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Molecule/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Molecule/atom_features.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Molecule/descriptors.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Molecule/formula.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Molecule/graph_annotator.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Molecule/standardize.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Molecule/valence.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/Mapper/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/Mapper/wl_mapper.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/aam_validator.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/balance_check.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/canon_rsmi.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/cleaning.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/deionize.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/fix_aam.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/neutralize.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/radical_wildcard.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/standardize.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/Reaction/tautomerize.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Chem/utils.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Data/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Data/gen_partial_aam.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Canon/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Canon/canon_algs.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Canon/canon_graph.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Canon/nauty.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Context/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Context/hier_context.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Context/radius_expand.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/Descriptors/topology.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/Fingerprint/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/Fingerprint/wl_rxn_fps.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/graph_descriptors.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/graph_fps.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/graph_signature.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/hash_fps.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/morgan_fps.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/path_fps.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Feature/wl_hash.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Hyrogen/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Hyrogen/_misc.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Hyrogen/hcomplete.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Hyrogen/hextend.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/its_builder.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/its_construction.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/its_decompose.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/its_destruction.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/its_expand.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/its_relabel.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/its_reverter.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/normalize_aam.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/partial_its.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/ITS/rc_extractor.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/MTG/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/MTG/group_comp.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/MTG/groupoid.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/MTG/mcs_matcher.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/MTG/mtg.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/MTG/mtg_explore.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/MTG/utils.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/approx_mcs.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/auto_est.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/automorphism.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/batch_cluster.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/dedup_matches.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/graph_cluster.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/graph_matcher.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/graph_morphism.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/mcs_matcher.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/multi_turbo_iso.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/orbit.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/partial_matcher.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/sing.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/subgraph_matcher.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/turbo_iso.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Matcher/wl_sel.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Wildcard/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Wildcard/fuse_graph.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Wildcard/graph_wc.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Wildcard/its_merge.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Wildcard/radwc.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Wildcard/wc_matcher.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/Wildcard/wildcard.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/canon_graph.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/syn_graph.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Graph/utils.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/chem_converter.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/combinatorial/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/combinatorial/gml_to_graph.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/combinatorial/graph_to_gml.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/combinatorial/graph_to_smarts.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/combinatorial/smarts_expander.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/combinatorial/smarts_generalizer.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/combinatorial/smarts_to_graph.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/data_io.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/data_process.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/debug.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/dg_to_gml.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/gml_to_nx.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/graph_to_mol.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/nx_to_gml.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/IO/smiles_to_id.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Apply/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Apply/reactor_rule.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Apply/retro_reactor.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Apply/rule_matcher.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Apply/rule_rbl.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Compose/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Compose/compose_rule.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Compose/rule_compose.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Compose/rule_mapping.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Compose/seq_comp.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Compose/valence_constrain.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Modify/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Modify/implict_rule.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Modify/longest_path.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Modify/molecule_rule.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Modify/prune_templates.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Modify/rule_utils.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/Modify/strip_rule.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Rule/syn_rule.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/MSR/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/MSR/multi_steps.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/MSR/path_finder.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Metrics/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Metrics/_base.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Metrics/_plot.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Metrics/_ranking.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/batch_reactor.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/benchmark.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/imba_engine.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/mod_aam.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/mod_reactor.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/partial_engine.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/post_syn.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/rbl_engine.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/rule_filter.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/single_predictor.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/strategy.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/Reactor/syn_reactor.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Synthesis/reactor_utils.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Utils/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Utils/utils.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/chemical_space.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/crn_vis.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/embedding.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/graph_visualizer.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/pdf_writer.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/rule_vis.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/Vis/rxn_vis.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/__init__.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/examples.py +0 -0
- {synkit-1.3 → synkit-1.3.1a0}/synkit/version.py +0 -0
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
*.csv
|
|
4
4
|
*/catboost_info/*
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
*.pkl.gz
|
|
8
8
|
*.pdf
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
.coverage
|
|
11
11
|
dev/*
|
|
12
12
|
*.rdf
|
|
13
13
|
test_syn_reactor.py
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
Data/Benchmark/*
|
|
16
16
|
*.json.gz
|
|
17
17
|
# *.png
|
|
@@ -26,5 +26,5 @@ Data/USPTO/*
|
|
|
26
26
|
crn/*
|
|
27
27
|
test_run.py
|
|
28
28
|
Data/Study/CRN/case_formose/*
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
synkit/Graph/dev/*
|
|
@@ -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
|
-
|
|
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
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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()
|
|
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,
|