예제 #1
0
    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()
예제 #2
0
        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)