TinkerCell is a Computer-Aided Design software tool for Synthetic Biology that promotes collaboration through its plugin interface. This blog is used to keep notes on updates to the project.
Thursday, April 21, 2011
New book on computational biology
by Herbert M Sauro
published at analogmachine.org
------------------------------------------------------------------------
Book summary:
318 pages, 94 illustrations and 75 exercises
This new monograph introduces students to basic reaction kinetics, including enzyme kinetics, cooperativity, allostery and gene regulatory kinetics. The text introduces a number of modern concepts such as generalized rate laws, elasticities and systems biology thermodynamic quantities. The text is suitable for junior undergraduate level in the US and 2nd year undergraduates in the UK. The text can also be used as a reference text for graduates and other researchers. Click here for the Google books preview.
Tuesday, April 19, 2011
Display Fire!

The simulation tools now display an animated "fire" on top of items after a simulation. The purpose of the fire is to highlight upregulated and downregulated molecules. The size of the fire is proportional to the final output in the simulation.
Saturday, April 16, 2011
Events
Events can be inserted using the clock icon in the "Inputs" tab at the top. The events table is stored as part of the "global item", which can be accessed in the command-line using "_". The clock icon can be used to edit the Events. In this screenshot, an event is used with the toggle-switch model to try to switch the toggle-switch from one state to the other (didn't work in this model, because the states are quite robust).
Wednesday, April 13, 2011
Optimization and Global Sensitivity

A user can write any Python function and optimize it using CrossEntropy. Here is template code:
#objective function for CrossEntropy
def MyObjective():
error = 0.0
#do something here, e.g. call tc_getSteadyState or tc_simulateDeterministic
return error
#optimization parameters
minimize = False
maxruns = 100
numPoints = 100
title = "My Optimization Function"
#optimize
result = CrossEntropy.OptimizeParameters(FitFormula_Objective, title, maxruns, numPoints, minimize)
mu = result[0]
sigma = result[1]
paramnames = result[2]
CrossEntropy.DoPCA(mu, sigma, paramnames)
#set the optimized parameters in the model if you want
n = len(mu)
params = tc_createMatrix(n, 1)
for i in range(0,n):
tc_setMatrixValue(params, i, 0, mu[i])
tc_setRowName(params, i, paramnames[i])
tc_setParameters(params,1)
CrossEntropy.DoPCA will generate a summary file such as the one below.
Thursday, April 7, 2011
Trying different versions of a model

j = tc_find("tr1")
file1 = "/home/deepak/Documents/TinkerCell/Modules/transcription_activation/Equilibrium_Model.tic"
file2 = "/home/deepak/Documents/TinkerCell/Modules/transcription_repression/Equilibrium_Model.tic"
tc_multiplot(2,1)
tc_substituteModel(j, file1)
m1 = tc_simulateDeterministic(0,100,100)
tc_plot(m1, "using file 1")
tc_substituteModel(j, file2)
m2 = tc_simulateDeterministic(0,100,100)
tc_plot(m2, "using file 2")
It is also possible to practically remove a component from the model by substituting "empty" for the model, e.g. tc_substituteModel(j, "empty")
Thursday, March 10, 2011
Converting models to English

Wednesday, March 9, 2011
Automatically iterating through models

The key functions used by the python code are:
tc_listOfPossibleModels
tc_substituteModel
tc_holdPlot
tc_clusterPlots
Important note: The load model function in TinkerCell caches each model that is loaded. The caching checks if the file has changed. In file has not changed, the re-loading of the same model is very fast, since it does not need to parse the file itself. This results in an order or magnitude speed up when doing tc_substituteModel repeatedly.
Monday, March 7, 2011
Sample Python Code for Creating a Little Network

cds4 = tc_insert("cds4","Coding")
p3 = tc_insert("p3","Inducible Promoter")
cds3 = tc_insert("cds3","Coding")
t3 = tc_insert("t3","Terminator")
p2 = tc_insert("p2","Inducible Promoter")
cds2 = tc_insert("cds2","Coding")
t2 = tc_insert("t2","Terminator")
listOfParts = [cds4, p3, cds3, t3, p2, cds2, t2]
tcArray = toTC(listOfParts) #convert Python data structure to
tc_alignParts(tcArray)
#production of P4
P4 = tc_insert("P4", "Transcription Factor")
x = tc_getX(cds4)
y = tc_getY(cds4)
tc_setPos(P4, x, y - 200)
listToConnect = [cds4, P4]
tcArray = toTC(listToConnect)
R1 = tc_insertConnection(tcArray, "R1", "Protein Production")
#P4 regulates p3
listToConnect = [P4, p3]
tcArray = toTC(listToConnect)
R2 = tc_insertConnection(tcArray, "R2", "Transcription Activation")
#production of P3
P3 = tc_insert("P3", "Transcription Factor")
x = tc_getX(cds3)
y = tc_getY(cds3)
tc_setPos(P3, x, y - 200)
listToConnect = [cds3, P3]
tcArray = toTC(listToConnect)
R3 = tc_insertConnection(tcArray, "R3", "Protein Production")
#P3 regulates p2
listToConnect = [P3, p2]
tcArray = toTC(listToConnect)
R4 = tc_insertConnection(tcArray, "R4", "Transcription Activation")
#production of GFP
GFP = tc_insert("GFP", "Reporter")
x = tc_getX(cds2)
y = tc_getY(cds2)
tc_setPos(GFP, x, y - 200)
listToConnect = [cds2, GFP]
tcArray = toTC(listToConnect)
R5 = tc_insertConnection(tcArray, "R5", "Protein Production")
Saturday, February 12, 2011
Testing different modeling methods easily
ta1 = tc_find("ta1")
pp2 = tc_find("pp2")
models1 = tc_listOfPossibleModels(ta1)
models2 = tc_listOfPossibleModels(pp2)
tc_multiplot(models2.length, models1.length)
for i in range(0,models1.length):
tc_substituteModel(ta1, tc_getString(models1,i))
for j in range(0,models2.length):
tc_substituteModel(pp2, tc_getString(models2,j))
m = tc_simulateDeterministic(0,100,100)
tc_plot(m, "sys" + str(i*j+1))
There are two different ways to model transcription regulation in the current TinkerCell repository. There are three different ways to model protein production in the current repository. So, there are 6 possible combinations. The following graphs were the output of the python code.

Tuesday, February 1, 2011
Operator sites
