Tag Archive for 'computer science'

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.

Bio eye for the CS guy (or gal!)

Lately, as a result of my fascination with Synthetic Biology, I have been reading biology and bioinformatics references voraciously. More on Synthetic Biology to come, but I encourage you to read up on it. It suffices to say that it greatly appeals to me, coming from a Computer Science and engineering background. When you throw “refactoring” and “bacteriophage” into the same paper title, or mention languages and grammars for programming DNA, you’ve got my attention.

To my surprise, I have found several resources that introduce biological concepts to readers with just such a background. In the interest of sharing this information over primping and editing this in Mephisto admin, here’s a work-in-progress of said list.

Some Ruby code that is maybe imaginary

I have partially or fully read, and recommend:

For the last entry, especially note chapters 1, “Molecular Biology for Computer Scientists,” and 2, “The Computational Linguistics of Biological Sequences .”

This last one is not related to programming, but is an amazing introduction to cellular biology that I would highly recommend for its fantastic illustrations and readable prose, whether you are familiar with the material or not: