# Chemical concrete machine, pit stop

I think it’s pretty clear already what the chemical concrete machine is and that’s a fair idea about the things it can do, in principle. It is time to prepare a more conservative presentation, aka an article or two,  based  on the  list:

There are lots of other features which were not yet discussed here, as well as surprising paths which demand future investigations.

I need as much input as possible from those who are interested in this subject. Because there are many ways to tell a story, depending on the story teller and on the audience. As you know, I am a mathematician who wants to stir an interdisciplinary collaboration on this subject which seems to fall in the algorithmic chemistry  or biological computing fields.

So I need help from you, in two directions:

• to calm down my math habits, for the sake of presenting a reasonably comprehensible story to non-mathematicians
• to tell me which parts need more development, which are more interesting, so to say.

## 11 thoughts on “Chemical concrete machine, pit stop”

1. Thanks for the links. No, I have not seen those, please tell me more about or send me more links. [UPDATE: I see that Kappa is related to Fontana lab, which interests me a lot because of their “algorithmic chemistry”]

I’m basically a geometer, two years ago I had no idea about what lambda calculus is, but it was clear to me that I need to learn about what computation is. That’s the fun part of doing research, to learn fast and to come to a subject from a direction orthogonal to what it has been done.

Back to the subject: there is no way to do this alone, reinventing the wheel in order to build eventually a rocket. My goals are to (a) construct simple graph rewriting systems which might be relevant for biology, so that (b) they can be implemented in reality, by recognizing real molecules and reactions which satisfy the rules and then use them, for computation purposes in particular. The chemical concrete machine is an example of an abstract basic chemistry, like a proof of principle that we can attach and exploit computational meaning to a network of chemical reactions, much like we can modulate radio waves to transmit a melody.

The functional programming path, different from the boolean logic/circuits one, seems simpler and more powerful.

1. ine says:

Well, superficially they are the same thing. These are languages which allow you to describe a set of agents (molecules) with possible binding sites, and then a set of rules according to which the binding and unbinding happens. The rules have the rates associated with them, describing their probabilities. It is also possible to have molecules appearing/disappearing and other useful stuff.

Then you describe your initial state, which molecules are present and how they are connected,
and it can simulate the time evolution of the system. This is done according to Gillespie algorithm,
which can sample a single trajectory of a system described by these rules. Other analysis methods are possible, like deterministic approximation, steady state and so on.

This has a connection to stochastic pi calculus, a formalism used to model parallel computation. One of the things seemingly missing from your work (I didn’t read it fully yet, though) is the consideration that in chemistry all reactions happen a) concurrently, b) stochastically. That’s why lambda calculus is inappropriate to model chemistry, and stochastic pi calculus is usually preferred.

If you still want to pursue the deterministic and sequential, “logical” way of modeling,
you can also do it in their software. Just make sure no two reactions can happen at the same time. If you can’t build a model like that, it’s likely that it’ll also be impossible in reality.

1. I am against the “deterministic and sequential, “logical” way of modeling”, that’s the whole point of the graphic lambda calculus which is behind the concrete machine. It is naturally parallel. The only way in which a net of reactions becomes sequential is by the fact that there’s only one type of reaction site available at a moment, and after the respective reaction appears another reaction site, and so on.

Pi calculus is great for modeling parallelism, but in my opinion it is designed more as a way to accommodate parallelism in a sequential mindframe. There is nothing in the part of the lambda calculus used by me which makes it sequential.

Another “advantage” of the graphic lambda calculus is that it does not need variables, maybe that has to be stressed more. So, for example, you don’t need a number of species of molecules proportional with the memory space, if you want to implement a program chemically.

Finally, the “stochastic” part is of course necessary, but (excuse my math biases) is essentially an independent part from the graph rewriting part, in the sense that there is a procedure by which you can attach such a stochastic calculus to any given chemical reaction network. I’m not saying that’s easy, or straightforward in practice, only that it can be done (is “trivial” in the annoying math nerdy lingo).

2. I started to read this article from the documentation on kappa. If you are one of the authors, or if you simply like a more discrete communication channel, please contact me by mail, thank you.

1. ine says:

No, I’m not one of them, although I know them. And it’s fine for me to discuss here. You know my email if you prefer that.

3. ine says:

OK, so if I understood you right, you made a lambda calculus rewriting system out of chemical reactions. So that the rules and the types of molecules are fixed, and only the input graph is varied, which specifies the function you want to compute.

What I wanted to add is that in chemical setting you can’t enforce a particular evaluation strategy, so the outcomes will be random unless you construct the system such that only one path is possible. Then you perhaps don’t need to add probabilities, indeed, at least in theory.
You can try to implement your system in, say, kappa, run it and see how it works.

Some other things to consider:
All of your reactions are reversible, so there is no way to make the system go in one direction. In this case it will just find the lowest energy steady state and stay there.

In the reality there is always degradation and errors, which will break down the calculations. That’s why the stochastic stuff is inevitable in practice.

Molecules can’t form arbitrary graphs.

1. Thanks for the comment. Yes, it’s well understood. Only two remarks: 1) yes, in graphic lambda all reactions are reversible, but in the chemical machine are not 2) yes, molecules can’t form arbitrary graphs, but in the chemical concrete machine there are not any molecules, but a very small family of those (that is why I call it “concrete”, instead of “abstract”, besides the pun). In fact, any family of 4 or 5 molecules which can react as in the formalism will do.
Of course, there is another issue, concerning how to get those initial molecules. In the formalism, the allowed reactions can be used to construct them also, but in reality is of course very hard to control this. That is why my guess is that the first use of such formalisms in computationally complex situations is to attach meaning to small parts of real chemical reactions, which happen in a cell, say, so that better understand the gigantic edifice. I believe we are very far from being able to attach meaning to the mechanisms of life, clearly we are using great seals to crack nuts, but it helps.

4. Maybe you find this review helpful: The biological microprocessor, or how to build a computer with biological parts http://bit.ly/1cwM43X

5. Ine, re your pi-calculus suggestion, just discovered Interaction combinators by Yves Lafont. See his figure 2, at page 9, there’s one DIST -like move, I see also a LOC PRUNING and, depending on the interpretation, there might be beta move. Interesting. There is also Milner, with several things, of course, among them about how lambda calculus can be done in pi calculus and the bigraphs.
One thing to look for would be a pi-calculus without names (for channels or terms).