def test_multiple_repair(self): """Test repair of multiple ambiguous positions in a genome. """ repairer = AmbiguousRepair(self.ambig_info, 0) for repair_attempt in range(5): new_org = repairer.repair(self.organism) new_genome_seq = new_org.genome.toseq() assert new_genome_seq.count("*") == 0, "Did not repair genome, got %s" % str(new_genome_seq)
def test_single_repair(self): """Test repair of a single ambiguous position in a genome. """ repairer = AmbiguousRepair(self.ambig_info, 2) for repair_attempt in range(5): new_org = repairer.repair(self.organism) new_genome_seq = new_org.genome.toseq() assert new_genome_seq.data.count("*") == 2, "Did not repair genome, got %s" % new_genome_seq.data
def test_multiple_repair(self): """Test repair of multiple ambiguous positions in a genome. """ repairer = AmbiguousRepair(self.ambig_info, 0) for repair_attempt in range(5): new_org = repairer.repair(self.organism) new_genome_seq = new_org.genome.toseq() assert new_genome_seq.data.count("*") == 0, \ "Did not repair genome, got %s" % new_genome_seq.data
def test_single_repair(self): """Test repair of a single ambiguous position in a genome. """ repairer = AmbiguousRepair(self.ambig_info, 2) for repair_attempt in range(5): new_org = repairer.repair(self.organism) new_genome_seq = new_org.genome.toseq() assert new_genome_seq.count("*") == 2, \ "Did not repair genome, got %s" % new_genome_seq.tostring()
def _set_up_genetic_algorithm(self): """Overrideable function to set up the genetic algorithm parameters. This functions sole job is to set up the different genetic algorithm functionality. Since this can be quite complicated, this allows cusotmizablity of all of the parameters. If you want to customize specially, you can inherit from this class and override this function. """ self.motif_generator = RandomMotifGenerator(self.alphabet) self.mutator = SinglePositionMutation(mutation_rate=0.1) self.crossover = SinglePointCrossover(crossover_prob=0.25) self.repair = AmbiguousRepair(Schema(self.alphabet.alphabet_matches), 4) self.base_selector = TournamentSelection(self.mutator, self.crossover, self.repair, 2) self.selector = DiversitySelection(self.base_selector, self.motif_generator.random_motif)