1
$\begingroup$

I am trying to figure out a suitable representation for given set of chemical reactions, which happen over an exhaustive set of chemicals.

The chemicals are $A, B, C, D, E$ and the reactions are given below $$A + A \rightarrow B$$ $$B + C \rightarrow D$$ $$B + D \rightarrow E$$ $$C + E \rightarrow D$$ $$E + E \rightarrow A$$

It's only obvious to form a matrix representaion of the reactions. \begin{array}{X} & A & B & C & D & E \\ A & B & * & * & * & * \\ B & - & * & D & E & * \\ C & - & - & * & * & D \\ D & - & - & - & * & * \\ E & - & - & - & - & A \\ \end{array} where $*$ means no product forms


I tried to label elements with unique integer IDs, so that the product (if any) can be treated as the weight of the edge, but I failed to incorporate this new property into a visualisation of the matrix.

Can any one tell me what form of graphs can be used to represent such data, where combinaiton of two nodes gives rise to another?

$\endgroup$
3
  • $\begingroup$ Perhaps add a "dummy" state $ Z $ and treat $ A+A \rightarrow B"$ as an edge from (A, A) to (B, Z)? $\endgroup$
    – Ian
    Apr 1, 2015 at 18:20
  • 1
    $\begingroup$ Use the language of Petri nets. $\endgroup$ Apr 1, 2015 at 18:22
  • 1
    $\begingroup$ Here is one way to do this. See also here for the stoichiometric matrix you wrote down. $\endgroup$
    – Ganesh
    Apr 1, 2015 at 18:25

1 Answer 1

1
$\begingroup$

For a matrix representation, you example seems to most naturally work as a 3D matrix, with the dimensions representing the first reactant, second reactant and product, and the value representing the yield, speed or some other property.

An alternative method might be to have a bipartite directed graph, with reactants/products in one part and the reactions themselves as nodes in the other part:

enter image description here

This might also work well as a 2D matrix, using a sentinel value of some sort to denote inputs and a yield or other value for the outputs.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .