Wednesday, March 19, 2014

Instead of using computer to predict protein folding we should use protein folding to compute

Protein folding is a very interesting subject. These molecules are long (hundreds) sequences of amino-acids that interact with each other through multiple physicochemical mechanisms, and as such, could re-arrange spatially (fold) in an almost infinite number of ways.
Proteins, however, only are useful when they fold in a specific manner, and most curiously, inside cells, this folding occurs almost without any help at all, and within a fraction of a second. Yes, that is exactly it, proteins are capable of finding a solution to a NP-complete problem in a fraction of a second without any help.
Super-computers have been designed with the specific goal of predicting protein folding. Distributed software such as Fold@Home and others, have harvested computer power from idle processors all over the internet to solve the folding problem.
I believe we are looking at the problem under a completely wrong prism.
Consider this: you may use a computer with software to describe Newton's laws in order to predict the trajectory of a stone you throw, or you can throw a stone and it will "calculate" its own trajectory. The Universe has a wonderful way of calculating the minimum path towards minima or maxima. A magnet and some iron powder can be easily used to draw the force lines of the magnetic field generated by the magnet, which by itself is some sort of "instant" computing.
I propose that if we could translate mathematical problems into proteins folding, perhaps using some sort of binary protein state, we would be able to harness the power of instant computing. This would entail quite some challenges. For instance, how can we "read" the protein structure after folding? How could we encode our problem into proteins?
I remember in college when we studied analog computing. We know that capacitors, resistors, etc., all have a mathematical expression that correlates the tension on their terminals with the current through them, thus analog computing consists in aligning electrical components in a manner that they correspond to a problem described by a system of differential equations. To find the solution of the system, we can place the terminals of the oscilloscope and there it is. Instantaneous solution without using any sort of computing power for numeric simulation.
I wonder if we could do something like this to solve general computational problems, perhaps using some sort of compiler.