Jason Morrison

Make stuff.

Cell Signaling, Computer Architecture, Functional Programming, and AI Blackboards

While thinking about synthetic biology, I find it useful to identify analogues of biological systems in a discipline I am already familiar with, computer science. This helps me better understand the new concept and can also raise questions about the new system that already have discussions around them in the CS world. Of course, the fidelity of such metaphors is not 100%, so I have to take care to ground such discourses with actual biology, but it’s been great for brainstorming so far.

Here are a few such metaphors.

Computer Architecture

One challenge in building composable biological systems for effective abstraction hierarchies is cell signaling crosstalk. One issue at play is a possible shortage of signal carriers; if you need ten different processes to occur at the same time and to act orthogonally, you will need ten signal carriers. Much as CPUs have a finite number of registers and data buses have finite width, there are only so many standardized signal carriers that standardized parts currently accept. Certainly, more carriers could be designed, but there may be ways around this. In computer architecture, the register shortage can be addressed by temporarily saving register data into memory, and the bus issue can be addressed with a stateful multiplexing approach. Perhaps stateful biological systems such as the repressilator or a push-on push-off switch have something to offer here.

Functional Programming

The other, more subtle, crosstalk issue is that of unintended side effects. When considering engineered biological devices, there may be side effects outside of the well-characterized and intended inputs and outputs, so the abstractions leak – figuratively and literally. These issues are also present in highly parallel computing environments when a shared resource such as a location in memory is operated upon by many processes. One must take care to ensure that the processes cooperate to ensure that they do not tread upon one another. There are many paradigms for approaching concurrent software, and it is becoming increasingly apparent that a system of threads, locks, and mutexes quickly gets difficult, if not impossible, to keep track of. Interesting discussions of other approaches:

A key element in many of these approaches to concurrency is a lack of shared state and, by association, lack of side effects. Since intracellular signaling systems are inherently parallel, two operations may only be reliably executed in tandem if they have minimal-to-no side effects (or, more realistically, minimal, orthogonal, well-characterized effects). My point here is not to imply that there is a concurrent programming paradigm that can be transferred to synthetic biology to solve the side effect issue. I mean to illustrate that, as we engineer larger systems, it will be crucial to minimize unknown side effects of synthetic biology constructs with high-quality characterization.

I realize that I am first suggesting stateful systems, immediately followed by a call for referential transparency (the property of being without formal side effects), often conflated with statelessness. It’s important to remember that, taken as an abstract concept, referentially transparent (side-effect free) operations can maintain internal state, so long as that state does not leak out of the operation, be it a computation or intracellular signalling pathway.

Also, something on my TODO list is to check out cell-free systems, and consider their applicability to the crosstalk issue:

AI Blackboards

Lastly, it also occurred to me that intracellular signaling systems are similar to the artificial intelligence blackboard architecture and, as such, it could be useful as a thought model. I’ve not pursues this idea very much, although it appears that some folks have made the same connection in the context of modeling: Modelling intracellular signalling networks using behaviour-based systems and the blackboard architecture.