def test_init_one_parameter(self): """PairFrequency should interpret single parameter as pair probs""" obs = PairFrequency('UCCC') exp = Freqs({('U','U'):0.0625, ('U','C'):0.1875, ('C','U'):0.1875, ('C','C'):0.5625}) for k, v in exp.items(): self.assertEqual(v, obs[k]) for k, v in obs.items(): if k not in exp: self.assertEqual(v, 0) self.assertEqual(PairFrequency('UCCC', [('U','U'),('C','C')]), \ Freqs({('U','U'):0.1, ('C','C'):0.9})) #check that the alphabets are right: should not raise error on #incrementing characters already there, but should raise KeyError #on anything that's missing. p = PairFrequency('UCCC') p[('U','U')] += 1 try: p[('X','U')] += 1 except KeyError: pass else: raise AssertionError, "Expected KeyError." p = PairFrequency('UCCC', (('C','C'),)) p[('C','C')] += 1 try: p[('U','U')] += 1 except KeyError: pass else: raise AssertionError, "Expected KeyError."
def codons(self, genetic_code=SGC, codon_usage=_equal_codons): """Predicts most likely set of codon frequencies. Optionally uses genetic_code (to figure out which codons belong with each amino acid), and codon_usage (to get most likely codons for each amino acid). Defaults are the standard genetic code and unbiased codon frequencies. """ result = {} normalized = Freqs(self) normalized.normalize() for aa, aa_freq in list(normalized.items()): curr_codons = [c.upper().replace('T','U') for c in genetic_code[aa]] if not curr_codons: continue #code might be missing some amino acids? curr_codon_freqs = Numbers([codon_usage[c] for c in curr_codons]) curr_codon_freqs.normalize() for codon, c_freq in zip(curr_codons, curr_codon_freqs): result[codon] = c_freq * aa_freq return CodonUsage(result, self.info, genetic_code)
def codons(self, genetic_code=SGC, codon_usage=_equal_codons): """Predicts most likely set of codon frequencies. Optionally uses genetic_code (to figure out which codons belong with each amino acid), and codon_usage (to get most likely codons for each amino acid). Defaults are the standard genetic code and unbiased codon frequencies. """ result = {} normalized = Freqs(self) normalized.normalize() for aa, aa_freq in normalized.items(): curr_codons = [c.upper().replace('T','U') for c in genetic_code[aa]] if not curr_codons: continue #code might be missing some amino acids? curr_codon_freqs = Numbers([codon_usage[c] for c in curr_codons]) curr_codon_freqs.normalize() for codon, c_freq in zip(curr_codons, curr_codon_freqs): result[codon] = c_freq * aa_freq return CodonUsage(result, self.info, genetic_code)