コード例 #1
0
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)
コード例 #2
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
コード例 #3
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
コード例 #4
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())
コード例 #5
0
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()
コード例 #6
0
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
コード例 #7
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
コード例 #8
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()
コード例 #9
0
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()
コード例 #10
0
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
コード例 #11
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"
コード例 #12
0
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))
コード例 #13
0
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