I significant paper on synthetic biology got published this week by an innovative group from MIT (Daniel et al).
Read our News and Views article that discusses the importance of the paper.
I significant paper on synthetic biology got published this week by an innovative group from MIT (Daniel et al).
Read our News and Views article that discusses the importance of the paper.
There are a number of online apps that can show students the phase plane dynamics of a 2d system. Notable examples include:
Phase Portrait Viewer from the d’Arbeloff Interactive Math Project – requires Java installed
Wolfram Phase Portrait Viewer – required Mathematica CDF Installed
Programmable Interactive Simulator (DField and PPlane) – requires Java (Matlab version also available I believe)
Nevertheless I decided, just for the hell of it to write my own, this time a desktop application for windows. Screen shot and download link below:
The download is below. Nothing to install, the application is a single exe that you just run. Works on Windows and Wine emulator.
Download linear dynamics simulator
Written using Delphi XE.
I had the need to draw a negative feedback around a linear pathway. Normally I would use a vector drawing packages to do this, such as Illustrator or Inkscape. This time I thought I would try the tikz package that allows one to embed diagrams inside LaTeX files in script form. The tikz manual is an excellent source of ideas and in one section they show how to draw syntax diagrams (Section 5, page 60). I re-purposed some of this code to draw the following pathway with a negative feedback:
To draw this diagram I used the following code. The code is split into fours sections. The header and three coding sections. The first coding section places and names the four species nodes. Naming nodes is very used later on. The second section draws the reaction arrows and the final section draws the negative feedback loop. The header specifies the type of arrow that will be used, >=latex’ which is the latex arrow (See section 23, page 256 for more choices of arrows), and the distance between nodes. See the comments in the code to understand how the feedback loop was made.
\begin{tikzpicture}[>=latex', node distance=2cm]
\node (Xo) {\Large $X_o$};
\node [right of = Xo] (S1) {\Large $S_1$};
\node [right of = S1] (S2) {\Large $S_2$};
\node [right of = S2] (X1) {\Large $X_1$};
\draw [->,ultra thick,blue] (Xo) -- node[above, black] {$v_1$} (S1);
\draw [->,ultra thick,blue] (S1) -- node[above, black] {$v_2$} (S2);
\draw [->,ultra thick,blue] (S2) -- node[above, black] {$v_3$} (X1);
% Lets draw a line with a blunt end, -|
\draw [-|,ultra thick,blue]
% start in the middle of S2, and move down 2.75 mm
% ($ ... $) notation is used to add the coordinates
($ (S2) + (0mm,-2.75mm) $)
% Now draw the line down by 3mm
% -- means draw to, + means move by
-- +(0,-3mm)
% Now move back to the left of S2
% The symbol -| means draw horizontal then vertical.
% If we used -- instead the line would be drawn
% diagonally to the reaction edge.
% (S1) is the center of the node. But we want the
% blunt end to end below the S1 line and
% half way to the left. The 10mm is half the node
% distance of 2cm, and 1mm is slightly below
% the reaction line.
-| ($ (S1) - (10mm,1mm) $);
\end{tikzpicture}
My brother asked me the other day why -1 times -1 was +1. It’s the sort of rule we learn at high school and perhaps never think about again. I thought I’d add a note to prove and show why -1 x -1 = 1.
The easiest way to think about this is that a negative will negate the other term. This, -1 times +1 will negate the +1 giving -1. We can use the same argument to suggest that -1 times -1 means that the first -1 negates the second -1 leading to +1.
More formally we call also use the following proof:
Consider:
![]()
We can look at this in two ways:
1) Use the distributive law to expand the expression:
![]()
2) Evaluate the term
:
![]()
Therefore the expression
equals zero, that is:
![]()
If we agree that
then
![]()
Note that if we were to assert that in fact
, then assuming the distributive law is valid we end up with an inconsistent answer:
![]()
Assuming now that
, we then obtain:
![]()
That is:
![]()
We would only get a sensible answer if we also assumed that
which doesn’t seem reasonable at all.
See the MathForum for examples.
Last week I was in need of an irreversible bistable switch to show my class. I remember seeing one in the well known review by Tyson et al, Sniffers, buzzers, toggles and blinkers: dynamics of regulatory and signaling pathways in the cells, Current Opinion in Cell Biology 2003, 15:221–231. I hunted down the paper and found it. However when I looked at the details of the model, it turns out to be incorrect or at least very odd. I couldn’t get the model to work and I didn’t particularly like the equations that described the model (assuming they were correct and not a typo in the paper). So I decided to design my own. The traditional bistable system has two physically realizable steady states, that is states that admit positive concentrations. By suitably large perturbations it is possible to jump from one state to the other. We often depict bistable systems in the form of a bifurcation diagram as shown below:
Here we see the state of the system (vertical axis) plotted as a function of a parameter in the system. Over a particular range of the parameter we see that the system admits three possible solutions (along a vertical line). Two are stable and the third is unstable (blue dotted line). If I start on at a high steady state at a parameter value of say 1.2 and slowly increase the parameter, the steady state value will slowly decrease until I reach a parameter value of about 2.4 where we suddenly jump to the lower steady state. If I now decrease the parameter value I now follow the lower steady state branch until I reach about 1.3 where I will suddenly jump up to the high state. I can therefore move freely between the high state and the low state simply by changing the parameter. The bistable system is therefore freely reversible.It is possible however to arrange things so that the entire curve is shifted to the left in such a way that is becomes impossible to freely move back and forth between the states.
In the above diagram we see that the left-hand turning point now pokes into the negative half of the graph. The graph is mirror image of the previous one because I used a slighly different model in the upper one, but don’t let that worry you. The negative halve implies negative concentrations which is clearly impossible. Consider then starting the parameter (this time called the signal) at zero with the variable also at zero and slowly increasing the signal level. The output concentration will slowly increase following the lower branch until we reach a signal value of about 2.0 when we suddenly jump to the high state. Let us now start lowering the signal. As we lower the signal we now follow the upper steady state branch but instead of dropping to the lower state we end up stuck at the upper branch as we reach a signal strength of zero (My signal can’t go below zero concentration!). We are therefore unable to drop to the lower branch. This is what we mean by an irreversible bistable systems. In one direction we can go from the lower steady state to the upper one, but we cannot go the other way.
To design this system I knew that I could probably start with Tyson’s original figure which I redraw below:
The output from the system is R1 and the input is Signal. The Jarnac model for this system is given below:
p = defn cell
$X -> R1; k1*EP + k2*Signal;
R1 -> $w; k3*R1;
EP -> E; Vm1*EP/(Km + EP);
E -> EP; ((Vm2+R1)*E)/(Km + E);
end;
p.Vm1 = 12; p.Vm2 = 6;
p.Km = 0.6;
p.k1 = 1.6; p.k2 = 4;
p.E = 5; p.EP = 15;
p.k3 = 3; p.Signal = 0.1;
The $ sign in front of a species means that it is fixed in time. First question is what values for the parameters will yield bistabilty? To do that I set up two loops. The outer loop randomized parameters, the inner loop randomized the initial conditions for the system and computed the steady state. The inner loop ran 10 times and printed out ten steady state levels of R, the output species. The outer loop ran 50 times. If any of the outer loop parameter combinations generated a bistable system I would see at least to different output levels in R when the inner loop was run. In this way I was able to quickly locate a parameter set that gave me a bistable system. This was all programed in Jarnac.
Once I had a bistable system I then needed to compute the bifurcation plot shown above. To do this I used Oscill8 (Developed in Tyson’s lab), a reliable application for doing simple bifurcation plots and much easier to use than XPP. Oscill8 is SBW compatible so it shows up in the Jarnac menu and all I had to do was call it from Jarnac and the model would be automatically passed over. Alternative I could have saved the model from Jarnac in SBML format and loaded it manually into Oscill8 (it also understands SBML). Oscill8 confirmed for me that I did indeed have a bistable system. To get an irreversible system I then used Oscill8 to test every parameter in the system to find the parameter that moved the bifurcation graph left or right. Once I found the right parameter I just moved the bifurcation plot to the left so that the upper loop poked into the negative half of the graph. And that’s how I designed my irreversible bistable system to show class. The Jarnac script shown above is the set of parameters that gives the irreversible bistable system.
Recent news announced the discovery of a new Mersenne prime. What was interest was the response I saw on some of the boards that where reporting this news, for example:
“but can someone explain how digging up mersene prime numbers helps contribute to the betterment of humanity?”
…”but is there any point to this, beyond curiosity?”
“While this is cool, how exactly does this benefit society?”
The question is, if something doesn’t have an immediate application, is it worth doing, especially if if involves tax dollars? One answer is no, federal tax dollars should only be used to fund work that has immediate benefits to society. This would mean that the bulk of basic research would stop. The private sector that includes companies and volunteer individuals would not be able to fill the gap. One possibility is to add an incentive that would allow basic discoveries to be protected by law. For example if someone discovers the relation F = ma, they should be able to collect royalties from anyone who needs to handle motion in a predicable way, that would include the military, aerospace and many many other industries. In this case the royalties could be enormous, a real incentive to make basic discoveries. Another example, someone discovers a new prime number, modern communications that requires security could pay royalties to use that number. Someone discovers the structure of DNA, that would be a real money spinner. Protection of basic research IP would however have to be at least 100 years long because many basic discoveries do not find applications for a long time. On the other hand if money where the only driver would someone put the effort in to doing expensive basic research when the payback might take 100 years or possibly not at all?
The second option is to keep things as they are. The level of investment by the federal government is tiny compared to the overall budget. The NSF which supports basic research across all non-health related disciplines spends about 6 to 7 billion per year. To put that in perspective, that is about 0.2% of the total federal budget. Of health related basic research, roughly 3 to 4 billion is spent by the NIGMS, about 0.1% of the total federal budget. Other agencies such as NASA and DOE also provide small amounts of funds for basic research. The total figure is most definitely less than 1%. For the NSF the funds amounts to about 13 cents per day per tax payer. One Starbucks tall latte at $3 a cup would pay for 23 days of NSF funding.
In contrast the cost of two recent and famous wars is roughly 1.5 trillion over ten years (http://costofwar.com/, http://economistsview.typepad.com/economistsview/iraq/). That amounts to about $2.93 per day per tax payer. Similar comparisons could be made with other budgets but at the end of the day it is a matter of priorities and where we think tax dollars should be spent.
Figures assume 140 million tax payers and total federal expenditure of about 3 trillion per year.
Something I’ve been wanting to do for a while was is to build a simple analog integrator. Here is my first attempt. I bread-boarded the circuit first to get it working then made it more permanent and stable by soldering the components on to a vero board. The picture below shows the result:
The three cables coming into the top left of the board are the +12, 0 and -12 volt power lines. The two cables coming out from the right-hand edge of the circuit board are the input and output lines (from the top) respectively. The input is fed from a function generator and the output fed to an oscilloscope. The figure below shows the result of the feeding a 50 Hz sine wave. Integration results in a cosine wave on the output. Note the two decoupling capacitors in the top left corner that despike te power lines. These are 0.1 microF capacitors.
A final test shows the result of feeding in a square wave with the resulting triangle wave as output.
In the circuit I used a LF356 as the op amp which has a JFET input stage resulting in a very high input impedance and is typically used for precision high speed integrators. It is also quite cheap at about a dollar or less. The 1 megohm resistor across the integrator capacitor is there to avoid any unnecessary integration as a result of slight biases in the inputs when the input is supposed to be at zero.
There are a number of improvements that could be made to this circuit. The first is that any voltage bias as the inputs when both are set to zero should be removed by placing a potentiometer across the +voltage rail and the pot adjusted as appropriate. The second improvement is to add a reset button (mechanical or electronic) across the integrating capacity to reset the circuit when necessary.
As some of you may know, a year ago I published my book ‘Enzyme Kinetics for Systems Biology’ and I am about to release the second edition. Next year the hope is to publish another title. Self-publishing my own book has been something I’ve wanted to do for many years and I thought I’d share some of the experiences and rational for my decision.
Although it has been possible to self-publish almost since the beginning of the written work, recent developments have made it much easier, credible and worthwhile to do. A combination of the internet, print on demand and sophisticated writing tools has made self-publishing an intellectually rewarding and sometimes a highly profitable adventure.
The first question is ask is why didn’t I just go with a traditional publisher and I’ve been asked often enough? The main reason for self-publishing is control, these include things like:
Style of the book and text
Book size
Book price
Ability to offer discounts
Choose between Black/White or Color or have both
Design your own book cover
Publish however I like, free pdf, print or kindle version etc.
The royalties are much much better
These reasons are all well and good but there are also a couple of more subtle reasons which really made a difference to me, these include:
1. The first is that all figures and text in the book remain my property. In a traditional publishing model, the publishers get copyright which means I cannot reuse the figures or text anywhere else. The first edition has 97 figures. I created each one so I am not inclined to simply hand over copyright to an organization that contributed nothing to their creation.
2. Once in the hands of the publisher, the publisher will decide how many copies will be printed (i.e sold) and whether there will be a second edition or not. If the book goes out of print, I cannot take control back and you’ll never see the book published again.
3. Once published it is not possible to update the book with revisions. For example, there will no doubt be some typographical errors in the text. A traditional publisher will not release a new revision with corrections or minor updates.
I have discussed these issues with a number of publishers especially with respect to holding copyright and the ability to create revisions but they they were not interested in changing.
In the next blog I will talk more about the mechanics of self-publishing.