def test_serialize(self): """ The the serialization of the entire object. """ parameters = CancerSimulatorParameters() cancer_sim = CancerSimulator(parameters, seed=2, outdir=mkdtemp()) # Cleanup. self._test_files.append(cancer_sim.outdir) # Dump. cancer_sim.dump() # Reload loaded_simulation = load_cancer_simulation(cancer_sim.dumpfile) self.assertIsInstance(loaded_simulation, CancerSimulator) # Check parameters. loaded_parameters = loaded_simulation.parameters self.assertEqual(loaded_parameters.number_of_generations, parameters.number_of_generations) self.assertEqual(loaded_parameters.matrix_size, parameters.matrix_size) self.assertEqual(loaded_parameters.number_of_generations, parameters.number_of_generations) self.assertEqual(loaded_parameters.division_probability, parameters.division_probability) self.assertEqual(loaded_parameters.adv_mutant_division_probability, parameters.adv_mutant_division_probability) self.assertEqual(loaded_parameters.death_probability, parameters.death_probability) self.assertEqual(loaded_parameters.adv_mutant_death_probability, parameters.adv_mutant_death_probability) self.assertEqual(loaded_parameters.mutation_probability, parameters.mutation_probability) self.assertEqual(loaded_parameters.adv_mutant_mutation_probability, parameters.adv_mutant_mutation_probability) self.assertEqual(loaded_parameters.number_of_mutations_per_division, parameters.number_of_mutations_per_division) self.assertEqual(loaded_parameters.adv_mutation_wait_time, parameters.adv_mutation_wait_time) self.assertEqual(loaded_parameters.number_of_initial_mutations, parameters.number_of_initial_mutations) self.assertEqual(loaded_parameters.tumour_multiplicity, parameters.tumour_multiplicity) self.assertEqual(loaded_parameters.read_depth, parameters.read_depth) self.assertEqual(loaded_parameters.sampling_fraction, parameters.sampling_fraction) # Check we can run. loaded_simulation.run() # dump again. loaded_simulation.dump() # Load again loaded_again_simulation = load_cancer_simulation(loaded_simulation.dumpfile) # Check that the internal state is the same as in the dump. self.assertAlmostEqual(numpy.linalg.norm(loaded_simulation._CancerSimulator__mtx.toarray() - loaded_again_simulation._CancerSimulator__mtx.toarray()), 0.0) self.assertEqual(loaded_simulation._CancerSimulator__mut_container, loaded_again_simulation._CancerSimulator__mut_container) self.assertEqual(loaded_simulation._CancerSimulator__xaxis_histogram, loaded_again_simulation._CancerSimulator__xaxis_histogram) self.assertEqual(loaded_simulation._CancerSimulator__biopsy_timing, loaded_again_simulation._CancerSimulator__biopsy_timing) self.assertEqual(loaded_simulation._CancerSimulator__beneficial_mutation, loaded_again_simulation._CancerSimulator__beneficial_mutation) self.assertEqual(loaded_simulation._CancerSimulator__growth_plot_data, loaded_again_simulation._CancerSimulator__growth_plot_data) self.assertEqual(loaded_simulation._CancerSimulator__mutation_counter, loaded_again_simulation._CancerSimulator__mutation_counter) self.assertEqual(loaded_simulation._CancerSimulator__s, loaded_again_simulation._CancerSimulator__s) self.assertEqual(loaded_simulation._CancerSimulator__ploidy, loaded_again_simulation._CancerSimulator__ploidy) self.assertEqual(loaded_simulation._CancerSimulator__mut_multiplier, loaded_again_simulation._CancerSimulator__mut_multiplier) self.assertEqual(loaded_simulation._CancerSimulator__pool, loaded_again_simulation._CancerSimulator__pool) # Run once more. loaded_again_simulation.run()
parameters = CancerSimulatorParameters( matrix_size=4096, number_of_generations=g, # vary division_probability=dp, # 1 => exp. growth adv_mutant_division_probability=0.3, death_probability=0.0, adv_mutant_death_probabilityability=0.0, mutation_rate=1.0, # 1 => adv_mutant_mutation_probability=0.8, mutations_per_division= 10, # if mutation event occurs, have this number of mutation adv_mutation_interval=30000, # large to not kick in number_of_initital_mutations= 2, # initial number of mutations in first cancer cell tumour_multiplicity='single', ) simulator = CancerSimulator(parameters, seed=None, outdir="%s" % (n_run)) t0 = time() simulator.run() T = time() - t0 with open(os.path.join(simulator.outdir, "log.txt"), 'a') as fp: fp.write("%s\t%f\t%d\t%e\n" % (simulator.seed, dp, g, T)) simulator.dump() sleep(1)