Exemple #1
0
def test_constraints_text_summary():
    problem = DnaOptimizationProblem(sequence="ATTGCCATATGCGC",
                                     constraints=[
                                         EnforceGCContent(mini=0.4, maxi=0.6),
                                         AvoidPattern('ATT')
                                     ])
    text = problem.constraints_text_summary()
    assert 'FAILURE: 1 constraints evaluations failed' in text
Exemple #2
0
from dnachisel import (EnforceTranslation, DnaOptimizationProblem,
                       random_dna_sequence, Location, EnforcePattern)

# sequence = random_dna_sequence(5000, seed=123456)
# sequence = random_dna_sequence(5000, seed=2)
# sequence = random_dna_sequence(5000, seed=3)
# for seed in [2, 3, 123456]:
sequence = random_dna_sequence(5000, seed=123)

constraints = [
    EnforceTranslation(Location(1000, 2500)),
    EnforceTranslation(Location(3000, 4500)),
    EnforcePattern("ANANANANTT", location=Location(1100, 2150)),
    EnforcePattern("ATGATGCCTK", location=Location(2700, 2800))
]

problem = DnaOptimizationProblem(sequence=sequence, constraints=constraints)
print(problem.constraints_text_summary())
assert not problem.all_constraints_pass()
problem.resolve_constraints()
assert problem.all_constraints_pass()
print(problem.constraints_text_summary())
Exemple #3
0
        all_9mers = [sequence[i:i + 9] for i in range(len(sequence) - 9)]
        number_of_non_unique_9mers = sum([
            count for ninemer, count in Counter(all_9mers).items() if count > 1
        ])
        score = -(9.0 * number_of_non_unique_9mers) / len(sequence)
        return SpecEvaluation(self,
                              problem,
                              score=score,
                              locations=[Location(0, len(sequence))],
                              message="Score: %.02f (%d non-unique ninemers)" %
                              (score, number_of_non_unique_9mers))

    def __str__(self):
        """String representation."""
        return "MinimizeNinemersScore"


sequence = reverse_translate(random_protein_sequence(300))
problem = DnaOptimizationProblem(sequence=sequence,
                                 constraints=[EnforceTranslation()],
                                 objectives=[MinimizeNinemersScore()])

print("\n=== Status before optimization ===")
print(problem.objectives_text_summary())

problem.optimize()

print("\n=== Status after optimization ===")
print(problem.objectives_text_summary())
print(problem.constraints_text_summary(failed_only=True))
"""
from dnachisel import DnaOptimizationProblem, random_dna_sequence, AvoidMatches
from genome_collector import GenomeCollection

# THIS CREATES THE ECOLI BLAST DATABASE ON YOUR MACHINE IF NOT ALREADY HERE

collection = GenomeCollection()
ecoli_index = collection.get_taxid_bowtie_index_path(511145, version="1")

# DEFINE AND SOLVE THE PROBLEM

problem = DnaOptimizationProblem(
    sequence=random_dna_sequence(500, seed=123),
    constraints=[
        AvoidMatches(bowtie_index=ecoli_index, match_length=15, mismatches=1)
    ],
)

print(
    "Constraints validity before optimization\n",
    problem.constraints_text_summary(),
)

print("\nNow resolving the problems\n")
problem.resolve_constraints(final_check=True)

print(
    "Constraints validity after optimization\n",
    problem.constraints_text_summary(),
)