Calculating/generating reaction stoichiometry matrix with unclear definition

165 Views Asked by At

My question comes from section 2.1 of the paper Reachability Problems in Continuous Chemical Reaction Networks - to quote:

A continuous chemical reaction network (CCRN) is a pair $C = (\Lambda, R)$, where $\Lambda$ is a finite set of species, and $R$ is a finite set of reactions over $\Lambda$. We typically denote species by capital letters, so that $\Lambda = \{A, B, ...\}$. A reaction over the set of species $\Lambda$ is an element $\rho = (\mathbf{r}, \mathbf{p}) \in \mathbb{N}^{\Lambda} \times \mathbb{N}^{\Lambda}$, where $\mathbf{r}$ and $\mathbf{p}$ specify the stoichiometry of the reactants and products, respectively. We require the net change $\Delta\rho = \mathbf{p} − \mathbf{r}$ of a reaction $\rho = (\mathbf{r}, \mathbf{p})$ to be nonzero.

Later in section 2.1 it says

Each CCRN $C = (\Lambda, R)$ has an associated reaction stoichiometry matrix $\mathbf{M}$ specifying the net change of each species for every reaction. Formally, $\mathbf{M}$ is a $|\Lambda| \times |R|$ matrix over $\mathbb{Z}$ such that $\mathbf{M}(i, j)$ is the net change of the $i$th species for the $j$th reaction.

My first thought was that since it is defined as the net change of every species for every reaction you could merely iterate over the list of reactions (I'm thinking in terms of a program here) and calculate the net change for each reaction; the problem with that of course is it produces a vector not a matrix.

How are you supposed to calculate this matrix?

1

There are 1 best solutions below

0
On BEST ANSWER

Per the second quoted section, rows of $\mathbf M$ are indexed by species and columns by reaction. Therefore, the $j$th column of this matrix is precisely the vector $\Delta\rho_i=\mathbf p_i-\mathbf r_i$, the net change of the $j$th reaction. So, your idea is correct: iterate over all reactions, computing the net change, and use the resulting vector to fill the corresponding column of $\mathbf M$.