# need to make some cells # the 1d case is easy: # in our 'lattice', all the cells are distance 1 apart NCells = 60 cells = [Cell([x]) for x in np.linspace(1,NCells,NCells)] # add these cells to the simulation sim = Simulation() for i in xrange(NCells): sim.add_cell(cells[i]) im_id = sim.add_internal_model(IM) # set all cells to have the same internal model sim.set_internal_model(range(NCells),im_id) # set boundary conditions before setting intercellular interactions sim.set_boundary_conditions([0],'ref_on') # cells adjacent to one another are connected # for diffusion we include main diagonal # equivalent to 3 wide diagonal diff_connections = (np.eye(NCells,k=-1) + np.eye(NCells,k=0) + np.eye(NCells,k=1)) > 0 # add diffusion to h and u sim.add_interaction('h','h','diffusion',diff_connections,params=[Dh/Th]) sim.add_interaction('u','u','diffusion',diff_connections,params=[Du/Tu]) # spi diffusion sim.add_interaction('sp','sp','diffusion',diff_connections,params=[5.0/Tsp])
from Simulation import * import matplotlib.pyplot as plt # exclusive bistability test: # two nodes inhibiting one another IM = InternalModel() IM.add_node('a','linear',[0.2]) IM.add_node('b','linear',[0.2]) IM.add_edge('a','b','hill_inactiv',params=[2.0,2.0,2.0,2]) IM.add_edge('b','a','hill_inactiv',params=[2.0,2.0,2.0,2]) cell = Cell() sim = Simulation() sim.add_cell(cell) im_id = sim.add_internal_model(IM) sim.set_internal_model([0],im_id) sim.set_initial_conditions([0],{'a':5.0,'b':4.0}) t = np.linspace(0,100,1000) cdata = sim.simulate(t) plt.plot(t,cdata[0]) plt.legend(['a','b']) plt.show()
IM2 = InternalModel() IM2.add_node('a','linear',params=[0.5]) IM2.add_node('b','linear',params=[1]) eid = IM2.add_edge('b','b','hill_activ',params=[1,1,2]) IM2.add_edge('a',eid,'lin_activ',is_mod=True,mod_type='mult',params=[5]) cell1 = Cell([0]) cell2 = Cell([1]) cell3 = Cell([3]) sim = Simulation() sim.add_cell(cell1) sim.add_cell(cell2) sim.add_cell(cell3) im_id = sim.add_internal_model(IM) im_id2 = sim.add_internal_model(IM2) connections = np.array([[True,True,False],[True,True,True],[False,True,True]]) sim.set_internal_model([0,1],im_id) sim.set_internal_model([2],im_id2) sim.add_interaction('a','a','diffusion',connections,params=[1]) sim.set_initial_conditions([0],{'a':0}) sim.set_initial_conditions([1],{'a':6}) sim.set_initial_conditions([2],{'a':0,'b':1}) t = np.linspace(0,10,100) cdata = sim.simulate(t)
# can add noise to centers # centers += np.random.normal(0.0,0.15,(NCells,2)) # place each cell at these vertices cells = [Cell(c) for c in centers] # add these cells to the simulation sim = Simulation() for i in xrange(NCells): sim.add_cell(cells[i]) im_source_id = sim.add_internal_model(IM_source) im_id = sim.add_internal_model(IM) # set all first row cells to have source internal model sim.set_internal_model(range(ncolumns),im_source_id) # modified # set all cells but first row to have the same internal model sim.set_internal_model(range(ncolumns,NCells),im_id) # modified to source also ########################################################################## # ORDERING BETWEEN ADDING AND SETTING INTERNAL MODELS MUST BE CONSISTENT # # THIS NEEDS TO BE FIXED # ########################################################################## # set up reflecting boundary conditions at bottom edge # sim.set_boundary_conditions(range(ncolumns),'ref_on') sim.set_boundary_conditions(range((nrows-1)*ncolumns,nrows*ncolumns),'abs_on') # need to figure out which cells are connect to which connections = lattice.get_connections(nrows,ncolumns,periodic=True) # for sourcing h, we're going to eliminate diffusion out of the first row