def main(): import numpy import cmepy.solver import cmepy.recorder import cmepy.domain dna_count = 5 m = create_model(dna_count = dna_count) domain_states = cmepy.domain.from_iter(gen_states(dna_count = dna_count)) solver = cmepy.solver.create( m, sink = True, domain_states = domain_states ) recorder = cmepy.recorder.create( (m.species, m.species_counts) ) time_steps = numpy.linspace(0.0, 10.0, 101) for t in time_steps: solver.step(t) p, p_sink = solver.y print 't = %g; p_sink = %g' % (t, p_sink) recorder.write(t, p) cmepy.recorder.display_plots(recorder, title = m.name)
def main(): """ solves transcription regulation model and plot results """ import cmepy.solver import cmepy.recorder m = create_model() solver = cmepy.solver.create( m, sink = True, time_dependencies = create_time_dependencies() ) recorder = cmepy.recorder.create( (m.species, m.species_counts) ) t_final = 60.0 time_steps = numpy.linspace(0.0, t_final, 61) for t in time_steps: solver.step(t) p, p_sink = solver.y print 't = %g; p_sink = %g' % (t, p_sink) recorder.write(t, p) cmepy.recorder.display_plots( recorder )
def main(): """ Solves the CME for a simple catalytic reaction and plot results """ initial_counts = { 'A' : 50, 'D' : 80 } # define the model model = create_model(**initial_counts) # create cme solver solver = cmepy.solver.create( model, sink = True, domain_states = cmepy.domain.from_iter(gen_states(**initial_counts)) ) # create cme recorder, specifying that we wish to measure the # species random variables, via the species_counts functions, # and also the reactions random variables, via the default # coordinate projections recorder = cmepy.recorder.create( (model.species, model.species_counts), (model.reactions, ) ) step_size = 0.005 times = (0.0, 0.05, 0.2, 0.5) limits = consecutive_pairs(times) intervals = (numpy.linspace(a, b, (b-a)/step_size + 1) for a,b in limits) for interval in intervals: for t in interval: solver.step(t) p, p_sink = solver.y print 'time : %.3f, truncation error: %.1e' % (t, p_sink) print 'recording results' recorder.write(interval[-1], p) print 'plotting results' marginal_shape = (initial_counts['D']+1, ) measurement = recorder['E'] pylab.figure() for time, marginal in zip(measurement.times, measurement.distributions): pylab.plot( marginal.to_dense(marginal_shape), label = 't = %.2f' % time ) pylab.legend() pylab.title('probability distribution of E') pylab.ylabel('P(E)') pylab.xlabel('E (copy count)') pylab.show()
def main(): import numpy from cmepy import domain import cmepy.solver import cmepy.recorder max_s1_copies = 40 max_s2_copies = 100 m = create_model_gene_toggle(max_s1_copies, max_s2_copies) # define domain states as union of two rectangular regions along the axes a_shape = (max_s1_copies, 6) b_shape = (10, max_s2_copies) domain_states_a = set(domain.to_iter(domain.from_rect(a_shape))) domain_states_b = set(domain.to_iter(domain.from_rect(b_shape))) states = domain.from_iter(domain_states_a | domain_states_b) solver = cmepy.solver.create( m, sink = True, domain_states = states ) recorder = cmepy.recorder.create( (m.species, m.species_counts) ) time_steps = numpy.linspace(0.0, 100.0, 101) for t in time_steps: solver.step(t) p, p_sink = solver.y print 't = %g; p_sink = %g' % (t, p_sink) recorder.write(t, p) cmepy.recorder.display_plots(recorder, title = m.name)
def main(): import cmepy.solver import cmepy.recorder m = create_model_quad_autocat(fixed_s = False) solver = cmepy.solver.create( m, sink = True ) recorder = cmepy.recorder.create( (m.species, m.species_counts) ) time_steps = numpy.linspace(0.0, 1000.0, 101) for t in time_steps: solver.step(t) p, p_sink = solver.y recorder.write(t, p) print 't = %g; p_sink = %g' % (t, p_sink) cmepy.recorder.display_plots(recorder, title = m.name)
def main(): """ Solve dual enzymatic reaction system """ import numpy import cmepy.solver import cmepy.recorder import cmepy.domain model = create_model() solver = cmepy.solver.create( model = model, sink = True, domain_states = cmepy.domain.from_iter(gen_states()), ) recorder = cmepy.recorder.create( (model.species, model.species_counts) ) t_final = 10.0 steps_per_time = 25 time_steps = numpy.linspace(0.0, t_final, int(steps_per_time*t_final) + 1) print 'solving dual enzymatic system to t_final = %.2f' % t_final for step, t in enumerate(time_steps): print 't = %.2f' % t solver.step(t) # record results every second, not every step if step % steps_per_time == 0: print 'recording solution' p, p_sink = solver.y recorder.write(t, p) cmepy.recorder.display_plots(recorder)
def compare_against_exact(model, t, f, p_exact): solver = cmepy.solver.create(model, sink = True) for t_prime in numpy.linspace(0.0, t, 11): solver.step(t_prime) p, p_sink = solver.y assert_almost_equal(f(p), p_exact)
def compare_against_exact(model, t, f, p_exact): solver = cmepy.solver.create(model, sink=True) for t_prime in numpy.linspace(0.0, t, 11): solver.step(t_prime) p, p_sink = solver.y assert_almost_equal(f(p), p_exact)