Skip to content

Chemical reaction network theory analysis #117

Open

Description

@akutuva21

Chemical reaction network theory analysis

Repository: RuleWorld/PyBioNetGen

Title: Add chemical reaction network theory analysis for generated BNGL networks

Motivation

BNGsim already computes conservation laws from the stoichiometry matrix, so conservation-law detection itself is not missing.

However, generated BioNetGen networks could support a broader set of structural chemical-reaction-network analyses, including:

  • reaction complexes;
  • linkage classes;
  • strong linkage classes;
  • weak reversibility;
  • stoichiometric rank;
  • deficiency;
  • terminal strong linkage classes;
  • network decomposition.

These properties can reveal qualitative model structure without simulation and are useful for understanding multistability, complex balancing, and network organization.

Proposed API

analysis = model.crnt()

analysis.stoichiometric_rank
analysis.deficiency
analysis.linkage_classes
analysis.weakly_reversible
analysis.conservation_laws

For rule-based models, this analysis would apply to the finite generated network and should state that explicitly.

Implementation

This could reuse:

  • BioNetGen's generated species/reactions;
  • BNGsim's stoichiometry representation where available;
  • existing conservation-law information rather than recomputing it separately.

The first version does not need to implement every theorem from CRNT. Exposing a reliable structural representation and the common network invariants would already be useful.

Activity

  1. akutuva21 commented on Sep 7, 2026

    @akutuva21
    MemberAuthor

    CRNT4SBML already accepts SBML and implements deficiency-zero/one analysis, mass-conservation approaches and bistability-oriented CRNT workflows. OUP Academic

    BioNetGen already has SBML interchange, so the simplest architecture is:

    BNGL
     ↓
    generated network / SBML
     ↓
    CRNT backend
     ↓
    PyBioNetGen result wrapper
    

    One caveat: CRNT4SBML's latest released package is old: 0.0.15 from 2021 with correspondingly old dependency pins. CRNT4SBML

    We should add a generic CRNT adapter, initially evaluating CRNT4SBML as a backend. There are newer Python CRNT projects, but some are very new and I wouldn't make BNG depend on them yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions