def setUp(self): self.working_directory = os.path.join(os.path.dirname(__file__), 'viz_tests') if not os.path.isdir(self.working_directory): os.makedirs(self.working_directory) copasi_file = os.path.join(self.working_directory, 'test_model.cps') with model.BuildAntimony(copasi_file) as loader: self.mod = loader.load(""" model negative_feedback compartment cell = 1.0 var A in cell var B in cell var Signal in cell var C in cell vAProd = 0.1 kADeg = 0.2 kBProd = 0.3 kBDeg = 0.4 kCProd = 0.5 kCDeg = 0.6 A = 0 B = 0 C = 0 Signal = 10 AProd: $Signal => A; cell*vAProd*Signal ADeg: A =>; cell*kADeg*A*B; BProd: => B; cell*kBProd*A; BDeg: B => ; cell*kBDeg*B; CProd: => C ; cell*kCProd*B; CDeg: C => ; cell*kCDeg*C end """) ## initialize empty dict to store TimeCourse objects self.TC = tasks.TimeCourse(self.mod, end=10, intervals=10, step_size=1, global_quantities=[], y=['A', 'B', 'C']) tasks ## format the time course data df = utils.format_timecourse_data(self.TC.report_name) ## write data to file df.to_csv(self.TC.report_name, sep='\t', index=False) self.MPE = tasks.MultiParameterEstimation(self.mod, self.TC.report_name, method='genetic_algorithm', population_size=25, number_of_generations=50, run_mode=True) self.MPE.write_config_file() self.MPE.setup() self.MPE.run()
def setUp(self): working_directory = os.path.dirname(__file__) copasi_file = os.path.join(working_directory, 'quick_start_model.cps') if os.path.isfile(copasi_file): os.remove(copasi_file) kf = 0.01 kb = 0.1 kcat = 0.05 with model.Build(copasi_file) as m: m.name = 'Michaelis-Menten' m.add('compartment', name='Cell') m.add('metabolite', name='P', concentration=0) m.add('metabolite', name='S', concentration=30) m.add('metabolite', name='E', concentration=10) m.add('metabolite', name='ES', concentration=0) m.add('reaction', name='S bind E', expression='S + E -> ES', rate_law='kf*S*E', parameter_values={'kf': kf}) m.add('reaction', name='S unbind E', expression='ES -> S + E', rate_law='kb*ES', parameter_values={'kb': kb}) m.add('reaction', name='ES produce P', expression='ES -> P + E', rate_law='kcat*ES', parameter_values={'kcat': kcat}) michaelis_menten = model.Model(copasi_file) report = 'parameter_estimation_synthetic_data.txt' TC = tasks.TimeCourse( michaelis_menten, start=0, end=100, intervals=10, step_size=10, report_name=report ) misc.correct_copasi_timecourse_headers(TC.report_name) fit1 = tasks.MultiParameterEstimation( michaelis_menten, TC.report_name, copy_number=2, pe_number=2, lower_bound=1e-3, upper_bound=5e3, results_directory='fit1', method='genetic_algorithm_sr', population_size=1, number_of_generations=1, overwrite_config_file=True ) fit1.write_config_file() fit1.setup() fit1.run() self.fit1 = fit1 self.model = michaelis_menten import time time.sleep(5)
def do_parameter_estimation(self): MPE = tasks.MultiParameterEstimation(self.mod, self.TC.report_name, lower_bound=0.01, upper_bound=1, run_mode=True, pe_number=2, method='genetic_algorithm', number_of_generations=10, population_size=10) MPE.write_config_file() MPE.setup() MPE.run() return MPE
def test_from_folder_generated_with_chaser_estimations(self): MPE = tasks.MultiParameterEstimation(self.mod, self.TC.report_name, method='genetic_algorithm', population_size=5, number_of_generations=5, run_mode=True, copy_number=self.copy_number, pe_number=self.pe_number) MPE.write_config_file() MPE.setup() MPE.run() CPE = tasks.ChaserParameterEstimations(MPE, truncate_mode='ranks', theta=list(range(2)), tolerance=1e-2, iteration_limit=5, run_mode=True) data = viz.Parse(CPE.results_directory, copasi_file=CPE.model.copasi_file).data print(data) self.assertEqual(data.shape[0], 2)
def setUp(self): ## create model selection directory self.dire = os.path.join(os.path.dirname(__file__), 'ChaserEstimationTests') if not os.path.isdir(self.dire): os.makedirs(self.dire) self.copasi_file = os.path.join(self.dire, 'negative_feedback.cps') with model.BuildAntimony(self.copasi_file) as loader: self.mod = loader.load(""" model model1 compartment cell = 1.0 var A in cell var B in cell vAProd = 0.1 kADeg = 0.2 kBProd = 0.3 kBDeg = 0.4 vBasalAProd = 0.001 A = 0 B = 0 AProd: => A; cell*vAProd*B+vBasalAProd ADeg: A =>; cell*kADeg*A BProd: => B; cell*kBProd*A BDeg: B => ; cell*kBDeg*B end """) self.TC1 = tasks.TimeCourse(self.mod, end=1000, step_size=100, intervals=10, report_name='report1.txt') utils.format_timecourse_data(self.TC1.report_name) ## add some noise data1 = misc.add_noise(self.TC1.report_name) ## remove the data os.remove(self.TC1.report_name) ## rewrite the data with noise data1.to_csv(self.TC1.report_name, sep='\t') self.copy_number = 2 self.pe_number = 3 self.MPE = tasks.MultiParameterEstimation(self.mod, self.TC1.report_name, copy_number=self.copy_number, pe_number=self.pe_number, method='genetic_algorithm', population_size=10, number_of_generations=10, overwrite_config_file=True, results_directory='test_mpe', run_mode=True) self.list_of_tasks = '{http://www.copasi.org/static/schema}ListOfTasks' self.MPE.write_config_file() self.MPE.setup() self.MPE.run()