def grad_descent(self): iteration = 0 mutations = None motif_dustbin = [] while (mutations is None or any(fit > 0 for (site,pos,base,fit) in mutations)): mutations = self.explore_site_mutations() site_idx, pos, base, fit = max(mutations, key=lambda tup:tup[3])#max by fitness self.motif[site_idx] = string_replace(self.motif[site_idx],pos,base) print "iteration:",iteration,site_idx,pos,base,fit motif_dustbin.append(self.motif[:]) iteration += 1
def mutate_site(self,site_number,position,base): site = self.motif[site_number] self.motif[site_number] = string_replace(site,position,base)