install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/crn-topology" ~/.claude/skills/plurigrid-asi-crn-topology-1a9b29 && rm -rf "$T"
manifest:
skills/crn-topology/SKILL.mdsource content
CRN Topology Skill: Reaction Network Generation
Status: ✅ Production Ready Trit: +1 (PLUS - generator) Color: #D82626 (Red) Principle: Network structure → Dynamical behavior Frame: Hypergraph topology of chemical reactions
Overview
CRN Topology generates and analyzes the graph structure of chemical reaction networks. The topology determines qualitative dynamics—multistability, oscillations, and computational capacity.
- Species-reaction graph: Bipartite hypergraph
- Stoichiometric matrix: Linear algebra of reactions
- Deficiency: Gap between complexes and rank
- Persistence: Network admits no extinctions
Core Formula
Deficiency δ = n - ℓ - s n = number of complexes ℓ = number of linkage classes s = rank of stoichiometric matrix Zero deficiency theorem: δ = 0 and weakly reversible ⟹ unique stable equilibrium
def crn_deficiency(network: CRN) -> int: n = len(network.complexes) l = network.linkage_classes() s = np.linalg.matrix_rank(network.stoichiometry) return n - l - s
Key Concepts
1. Stoichiometric Matrix Generation
class CRNGenerator: def __init__(self, species: list[str]): self.species = species def random_reaction(self) -> Reaction: """Generate topology-valid reaction.""" reactants = self.sample_complex() products = self.sample_complex() return Reaction(reactants, products) def stoichiometry_matrix(self, reactions) -> np.ndarray: """S[i,j] = net change in species i from reaction j.""" S = np.zeros((len(self.species), len(reactions))) for j, rxn in enumerate(reactions): S[:, j] = rxn.products - rxn.reactants return S
2. Network Motif Generation
def generate_oscillator_topology() -> CRN: """Generate Brusselator-like topology.""" return CRN([ "A → X", "2X + Y → 3X", "B + X → Y + D", "X → E" ]) def generate_bistable_topology() -> CRN: """Generate Schlögl-like bistability.""" return CRN([ "A + 2X ⇌ 3X", "X ⇌ B" ])
3. Deficiency Analysis
def analyze_topology(crn: CRN) -> dict: """Determine dynamical properties from topology.""" delta = crn_deficiency(crn) wr = is_weakly_reversible(crn) return { "deficiency": delta, "weakly_reversible": wr, "unique_equilibrium": delta == 0 and wr, "multistability_possible": delta > 0, "complex_balanced": check_complex_balance(crn) }
Commands
# Generate CRN with target properties just crn-generate --oscillator --species 3 # Compute deficiency just crn-deficiency network.crn # Visualize reaction hypergraph just crn-topology network.crn
Integration with GF(3) Triads
assembly-index (-1) ⊗ turing-chemputer (0) ⊗ crn-topology (+1) = 0 ✓ [Molecular Complexity] persistent-homology (-1) ⊗ turing-chemputer (0) ⊗ crn-topology (+1) = 0 ✓ [Topological CRN]
Related Skills
- turing-chemputer (0): Execute reactions in CRN
- assembly-index (-1): Validate molecular complexity
- acsets (0): Algebraic representation of CRN hypergraph
Skill Name: crn-topology Type: Reaction Network Generator Trit: +1 (PLUS) Color: #D82626 (Red)