cd d:\workspace\mamba
d:\workspace\mamba
import cython_load
from time import clock
import numpy as np
from params import *
from model import drift, selection, create_muation_rates, create_target_genome, clear_empty_classes, create_recombination_rates
from model import create_fitness_by_mutational_load as create_fitness
from model import create_mutation_free_population as create_population
from model import mutation_implicit_genomes as mutation
#from model_c import mutation_by_mutation_load as mutation
from model_c import hamming_fitness_genomes as create_fitness
target_genome = create_target_genome(num_loci)
genomes = target_genome.copy()
genomes.resize( (1, target_genome.shape[0]) )
population = create_population(pop_size, genomes.shape[0])
fitness = create_fitness(genomes, target_genome, s)
mutation_rates = create_muation_rates(mu, genomes.shape[0])
recombination_rates = create_recombination_rates(r, genomes.shape[0])
population = drift(population)
population = selection(population, fitness)
population, genomes = mutation(population, genomes, mutation_rates, num_loci, target_genome)
fitness = create_fitness(genomes, target_genome, s)
mutation_rates = create_muation_rates(mu, genomes.shape[0])
recombination_rates = create_recombination_rates(r, genomes.shape[0])
print len(population[population==0])
print len(population[population>0])
print population[1:].sum()/float(population.sum())
49 953 0.003054
%%timeit -n 10
drift(population)
selection(population, fitness)
mutation(population, genomes, mutation_rates, num_loci, target_genome)
10 loops, best of 3: 3.22 s per loop
%timeit -n 10 drift(population)
%timeit -n 10 selection(population, fitness)
%timeit -n 10 mutation(population, genomes, mutation_rates, num_loci, target_genome)
10 loops, best of 3: 247 us per loop 10 loops, best of 3: 70.9 us per loop 10 loops, best of 3: 3.38 s per loop
import simulation
reload(simulation);
target_genome = create_target_genome(num_loci)
genomes = target_genome.copy()
genomes.resize( (1, target_genome.shape[0]) )
genome2 = target_genome.copy()
genome2[0] = 1
genomes = np.vstack((genomes, genome2))
population = create_population(pop_size, genomes.shape[0])
population[0],population[1] = population.sum()/2,population.sum()/2
fitness = create_fitness(genomes, target_genome, s)
mutation_rates = create_muation_rates(mu, genomes.shape[0])
recombination_rates = create_recombination_rates(r, genomes.shape[0])
population[1:].sum()/1e6
0.5
genomes[genomes.sum(1)==2,:].shape
(32L, 1000L)