def test_codon_optimize_with_custom_table(): problem = DnaOptimizationProblem( sequence=random_dna_sequence(1200, seed=123), constraints=[EnforceTranslation()], objectives=[CodonOptimize( codon_usage_table=biotools.CODON_USAGE_TABLES['b_subtilis'])] ) assert (problem.objective_scores_sum() < -10) problem.optimize() assert (problem.objective_scores_sum() == 0)
def test_codon_optimize_with_custom_table(): table = get_codons_table("b_subtilis") problem = DnaOptimizationProblem( sequence=random_dna_sequence(1200, seed=123), constraints=[EnforceTranslation()], objectives=[CodonOptimize(codon_usage_table=table)], logger=None, ) assert problem.objective_scores_sum() < -10 problem.optimize() assert problem.objective_scores_sum() == 0
def test_codon_optimize_bestcodon(): numpy.random.seed(123) protein = random_protein_sequence(3000, seed=123) sequence = reverse_translate(protein) problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[CodonOptimize(species='e_coli')] ) assert problem.objective_scores_sum() < 0 problem.optimize() assert problem.objective_scores_sum() == 0
def test_codon_optimize_harmonized(): numpy.random.seed(123) protein = random_protein_sequence(500, seed=123) sequence = reverse_translate(protein) problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[CodonOptimize(species='e_coli', mode='harmonized')] ) assert (-700 < problem.objective_scores_sum() < -600) problem.optimize() assert (-350 < problem.objective_scores_sum())
def test_codon_optimize_harmonized_short_sequence(): protein = "DDDKKKKKK" sequence = reverse_translate(protein) harmonization = CodonOptimize(species='b_subtilis', mode='harmonized') problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[harmonization] ) assert problem.objective_scores_sum() < -7 problem.optimize() assert -1 < problem.objective_scores_sum()
def test_AvoidRareCodons_as_objective(): numpy.random.seed(123) sequence = "ATG" "TTT" "ATA" "CCA" "CTT" "TAG" problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[AvoidRareCodons(0.11, "e_coli")], ) assert abs(problem.objective_scores_sum() + 0.09) < 0.001 problem.optimize() assert problem.objective_scores_sum() == 0
def test_AvoidRareCodons_as_objective_reversed(): numpy.random.seed(123) sequence = "ATG" "TTT" "ATA" "CCA" "CTT" "TAG" rev_sequence = reverse_complement(sequence) location = (0, len(sequence), -1) problem = DnaOptimizationProblem( sequence=rev_sequence, constraints=[EnforceTranslation(location=location)], objectives=[AvoidRareCodons(0.11, "e_coli", location=location)], ) assert abs(problem.objective_scores_sum() + 0.09) < 0.001 problem.optimize() assert problem.objective_scores_sum() == 0
def test_codon_optimize_harmonize_rca_short_sequence(): protein = random_protein_sequence(500, seed=123) sequence = reverse_translate(protein) harmonization = CodonOptimize(species="h_sapiens", original_species="e_coli", method="harmonize_rca") problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[harmonization], logger=None, ) assert problem.objective_scores_sum() < -123 problem.optimize() assert -74 < problem.objective_scores_sum()
def test_codon_optimize_match_usage(): numpy.random.seed(123) protein = random_protein_sequence(500, seed=123) sequence = reverse_translate(protein) problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[ CodonOptimize(species="e_coli", method="match_codon_usage") ], logger=None, ) assert -600 < problem.objective_scores_sum() < -550 problem.optimize() assert -350 < problem.objective_scores_sum()
def test_EnforceSequence_as_objective(): # Two enzymes, BsmBI(CGTCTC) is GC-rich, EcoRI(GAATTC) is GC-poor, which # enzyme will be chosen and inserted in the sequence depends on the other # constraint on GC content numpy.random.seed(1234) n_nucleotides = 15 start = 50 location = (start, start + n_nucleotides) problem = DnaOptimizationProblem( sequence=25 * "ATGC", constraints=[AvoidPattern("ATGC")], objectives=[EnforceSequence("W" * n_nucleotides, location=location)]) assert problem.objective_scores_sum() < 0 problem.resolve_constraints() problem.optimize() assert problem.objective_scores_sum() == 0
def test_codon_optimize_match_usage_short_sequence(): numpy.random.seed(123) protein = "DDDKKKKKK" sequence = reverse_translate(protein) harmonization = CodonOptimize(species="b_subtilis", method="match_codon_usage") problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[harmonization], logger=None, ) assert problem.objective_scores_sum() < -5.5 problem.optimize() assert -0.6 < problem.objective_scores_sum() print(problem.objective_scores_sum()) assert problem.sequence == "GATGATGACAAGAAAAAGAAAAAAAAA"
def test_codon_optimize_match_usage_gfp_sequence(): sequence = ("ATGGTGAGCAAGGGCGAGGAGCTGTTCACCGGGGTGGTGCCCATCCTG" "GTCGAGCTGGACGGCGACGTAAACGGCCACAAGTTCAGCGTGCGCGGC" "GAGGGCGAGGGCGATGCCACCAACGGCAAGCTGACCCTGAAGTTCATC") spec = CodonOptimize(species="s_cerevisiae", method="match_codon_usage") problem = DnaOptimizationProblem( sequence=sequence, constraints=[EnforceTranslation()], objectives=[spec], logger=None, ) assert problem.objective_scores_sum() < -61 problem.optimize() assert problem.objective_scores_sum() > -16 # Just for coverage, we run the compare_frequency function in text mode spec = problem.objectives[0] codons = spec.get_codons(problem) print(spec.compare_frequencies(codons, text_mode=True))
def test_optimization_1(): company_ingen = CommercialDnaOffer( name="Company InGen", pricing=PerBasepairPricing(0.08), sequence_constraints=[NoPatternConstraint(enzyme="AarI")], ) company_delux = CommercialDnaOffer( name="Company Delux", pricing=PerBasepairPricing(0.66), sequence_constraints=[], ) assembly_station = DnaAssemblyStation( name="Gibson Assembly Station", assembly_method=GibsonAssemblyMethod( overhang_selector=FixedSizeSegmentSelector(20), min_segment_length=200, max_segment_length=1200, ), supplier=[company_ingen, company_delux], coarse_grain=20, # a_star_factor="auto", ) sequence_path = os.path.join("tests", "data", "test_optimization_sequence_1.fa") sequence = load_record(sequence_path) objective = OptimizeManufacturability(assembly_station) problem = DnaOptimizationProblem(sequence=sequence, objectives=[objective]) quote = objective.get_quote(problem) score = problem.objective_scores_sum() assert -367 < score < -366 problem.randomization_threshold = 0 problem.max_random_iters = 5 problem.optimize() score = problem.objective_scores_sum() assert -244 < score < -243