Source code for synbiopython.codon.utils

"""
Synbiopython (c) Global BioFoundry Alliance 2020

Synbiopython is licensed under the MIT License.

To view a copy of this license, visit <http://opensource.org/licenses/MIT/>.

@author: neilswainston
"""
import random

_CODON_REGEX = r"([ATGCU]{3}) ([A-Z]|\*) (\d.\d+)"


[docs]def sample(table, amino_acid): """Sample a codon for a given amino acid probabilistically, based on its codon usage frequency. :param table: a codon usage table. :type table: dict :param amino_acid: a single-character string representing an amino acid. :type amino_acid: str :return: a codon encoding the supplied amino acid, sampled probabilistically. :rtype: str """ cum_freq = 0 rand_val = random.random() for codon, freq in table[amino_acid].items(): cum_freq += freq if cum_freq > rand_val: return codon return None
[docs]def optimise(table, aa_seq): """Codon optimise an amino acid sequence. :param table: a codon usage table. :type table: dict :param aa_seq: an amino acid sequence. :type table: str :return: a codon-optimised nucleic acid sequence, encoding the supplied amino acid sequence :rtype: str """ return ''.join([sample(table, amino_acid) for amino_acid in aa_seq])