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.
Tuesday, February 10, 2009
Model Summary View
Monday, February 9, 2009
Network Layout using NetworkX
nodes = pytc.itemsOfFamily("node");
connections = pytc.itemsOfFamily("connection");
numNodes = len(nodes);
numConnections = len(connections);
M = [];
for i in range(0,numConnections):
pytc.setStraight(connections[i]);
connected_nodes = pytc.getConnectedParts( connections[i] );
for j in connected_nodes:
n = 0;
for k in range(0,numNodes):
if nodes[k] == j:
n = k;
break;
n += numConnections;
M.append( (i,n) ); #connection i and node k are connected
G = nx.Graph();
G.add_nodes_from( range( 0, numConnections + numNodes ) );
G.add_edges_from(M);
Pos = nx.spring_layout(G);
minx = 0;
maxx = 0;
miny = 0;
maxy = 0;
for i in range(0,len(Pos)):
if minx == 0 or minx > Pos[i][0]:
minx = Pos[i][0];
if miny == 0 or miny > Pos[i][1]:
miny = Pos[i][1];
if maxx == 0 or maxx <>
maxx = Pos[i][0];
if maxy == 0 or maxy <>
maxy = Pos[i][0];
for i in range(0,len(Pos)):
Pos[i][0] += - minx;
Pos[i][0] *= 500.0/(maxx - minx);
Pos[i][1] += - miny;
Pos[i][1] *= 500.0/(maxy - miny);
for i in range(0,numConnections):
pytc.setCenterPoint(connections[i],Pos[i][0],Pos[i][1]);
for i in range(numConnections,numConnections+numNodes):
pytc.setPos(nodes[i-numConnections],Pos[i][0],Pos[i][1]);
print "layout finished";
Sunday, February 8, 2009
Changing the Parts Tree
Measurement Units
- units are not determined by the model, but by the family tree
- users cannot change the units while constructing models
- changing units means changing the parts/connections tree
- units are part of the "standards" defined by the parts and connections tree