-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrefiner.py
More file actions
22 lines (20 loc) · 806 Bytes
/
refiner.py
File metadata and controls
22 lines (20 loc) · 806 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import codon_freq
import random
import cai2
import codon2aa
def refine(predicted, cai, reference):
temp = cai
codons = [predicted[i:i + 3] for i in range(0, len(predicted), 3)]
copied_codons = codons.copy()
i=0
for codon in codons:
amino = codon2aa.codon2aa(codon)
for x in codon_freq.codon_freq[amino].values():
if codon_freq.codon_freq[amino][codon] != max(codon_freq.codon_freq[amino].values()):
shuff = random.choice([k for k, v in codon_freq.codon_freq[amino].items()])
copied_codons[i] = shuff
cai = (cai2.CAI("".join(copied_codons), reference=reference))
if temp >= cai:
copied_codons[i] = codon
i+=1
return "".join(copied_codons)