Skip to content

Commit

Permalink
fighting heavywatal#20
Browse files Browse the repository at this point in the history
  • Loading branch information
hamazaki1990 committed May 17, 2017
1 parent af420da commit cf20eb4
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 53 deletions.
1 change: 1 addition & 0 deletions hamazaki1990/allelechangewf.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.09999999999999998,0.19999999999999996,0.19999999999999996,0.19999999999999996,0.4,0.6,0.5,0.5,0.8,0.8,0.9,1.0
12 changes: 5 additions & 7 deletions hamazaki1990/individual.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from decimal import Decimal


class Individual:
def __init__(self, n, f=1.0):
self._id = n
Expand All @@ -11,19 +14,14 @@ def get_fitness(self):

def __repr__(self):
return str(self._id)

def is_not_fixed(self):
for x in range(1, len(self._inds)):
if self._inds[0] != self._inds[x]:
return True
else:
return False
return Decimal(self._fitness)


def main():
ind = Individual(42)
print(ind.get_id())
print(ind.get_fitness())


if __name__ == '__main__':
main()
54 changes: 34 additions & 20 deletions hamazaki1990/population.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ def __init__(self, n, mutantrate=0, s=0):
wild_inds = [Individual(x) for x in range(num_mutant, n)]
self._inds = mutant_inds + wild_inds

def print_ids(self):
print(self._inds)
def get_ids(self):
return self._inds

def print_fitness(self):
def get_fitnesses(self):
fitness = [x.get_fitness() for x in self._inds]
print(fitness)
return fitness

def next_genwf(self):
fitness = [x.get_fitness() for x in self._inds]
Expand All @@ -46,45 +46,59 @@ def is_not_fixed(self):
else:
return False

def mutation_is_not_fixed(self):
fitness = [x.get_fitness() for x in self._inds]
for x in range(1, len(fitness)):
if fitness[0] != fitness[x]:
return True
else:
return False


def main():
p1_1 = Population(10)
p1_1.print_ids()
p1_1.print_fitness()
print(p1_1.get_ids())
print(p1_1.get_fitnesses())
print(p1_1.is_not_fixed())
print(p1_1.mutation_is_not_fixed())

for x in range(20):
p1_1.next_genwf()
p1_1.print_ids()
p1_1.print_fitness()
print(p1_1.get_ids())
print(p1_1.get_fitnesses())
print(p1_1.is_not_fixed())
print(p1_1.mutation_is_not_fixed())

p1_2 = Population(10, 0.3, 0.2)
p1_2.print_ids()
p1_2.print_fitness()
print(p1_2.get_ids())
print(p1_2.get_fitnesses())
print(p1_2.is_not_fixed())
print(p1_2.mutation_is_not_fixed())

for x in range(20):
p1_2.next_genwf()
p1_2.print_ids()
p1_2.print_fitness()
print(p1_2.get_ids())
print(p1_2.get_fitnesses())
print(p1_2.is_not_fixed())
print(p1_2.mutation_is_not_fixed())

p2_1 = Population(10)
p2_1.print_ids()
p2_1.print_fitness()
print(p2_1.get_ids())
print(p2_1.get_fitnesses())

for x in range(20):
p2_1.next_genmo()
p2_1.print_ids()
p2_1.print_fitness()
print(p2_1.get_ids())
print(p2_1.get_fitnesses())

p2_2 = Population(10, 0.3, 0.2)
p2_2.print_ids()
p2_2.print_fitness()
print(p2_2.get_ids())
print(p2_2.get_fitnesses())

for x in range(20):
p2_2.next_genmo()
p2_2.print_ids()
p2_2.print_fitness()
print(p2_2.get_ids())
print(p2_2.get_fitnesses())


if __name__ == '__main__':
Expand Down
50 changes: 24 additions & 26 deletions hamazaki1990/visualize.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,35 @@
import csv
import pandas as pd
from population import Population


def calculate_ave(seq):
return sum(seq)/len(seq)


def calculate_var(seq):
ave = calculate_ave(seq)
sqd = [(seq[x] - ave)**2 for x in range(len(seq))]
return sum(sqd)/len(seq)


def change_allelewf(Population):
fixprocess = [Population._inds]
while Population.is_not_fixed():
Population.next_genwf()
fixprocess.append(Population._inds)
def change_allelewf(population):
fit_list = population.get_fitnesses()
fixprocess = [1 - fit_list.count(1.0)/len(fit_list)]
while population.mutation_is_not_fixed():
population.next_genwf()
fit_list = population.get_fitnesses()
mutantrate = 1 - fit_list.count(1.0)/len(fit_list)
fixprocess.append(mutantrate)
return fixprocess


def change_allelemo(Population):
fixprocess = [Population._inds]
while Population.is_not_fixed():
Population.next_genmo()
fixprocess.append(Population._inds)
def change_allelemo(population):
fit_list = population.get_fitnesses()
fixprocess = [1 - fit_list.count(1.0)/len(fit_list)]
while population.mutation_is_not_fixed():
population.next_genmo()
fit_list = population.get_fitnesses()
mutantrate = 1 - fit_list.count(1.0)/len(fit_list)
fixprocess.append(mutantrate)
return fixprocess


p1 = Population(10)
data = pd.DataFrame(change_allelewf(p1))
print(data)
csvfile1 = open("allelechangewf.csv", "w", encoding="utf-8")
writer = csv.writer(csvfile1)
p1 = Population(10, 0.1, 0.5)
writer.writerow(change_allelewf(p1))


p2 = Population(10)
data = pd.DataFrame(change_allelemo(p2))
print(data)
p2 = Population(10, 0.1, 0.5)
print(change_allelemo(p2))
7 changes: 7 additions & 0 deletions hamazaki1990/visualize.r
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
install.packages("tidyverse")
library("tidyverse")
allelefreq=read_csv("~/github/practice-py/hamazaki1990/allelechangewf.csv", col_names = FALSE)
names(allelefreq)=c("generation","derived_allele_frequency")
freqprot=ggplot(allelefreq, x=generation, y=derived_allele_frequency)
freqprot=freqprot+geom_line()
print(freqprot)

0 comments on commit cf20eb4

Please sign in to comment.