-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjythonMusicScript.py
More file actions
43 lines (37 loc) · 1.27 KB
/
jythonMusicScript.py
File metadata and controls
43 lines (37 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from music import *
mPhrase = Phrase();
mPhrase.setTempo(220);
## Read in codon info
dna2pro = {}
codonFreqs = {};
with open("codon_info.txt") as codonFile:
for line in codonFile:
codon,aa,freq = line.strip().split("\t");
dna2pro[codon]=aa;
codonFreqs[codon]=float(freq);
# Translate DNA sequence
protein = "";
seqFreqs = [];
with open("dna.txt") as dnaFile:
dna = dnaFile.readline().strip();
if len(dna)%3 == 0:
for i in range(0, len(dna)-3, 3):
protein+= dna2pro[dna[i:i + 3]];
temp = float(codonFreqs[dna[i:i + 3]]);
if temp <= 10:
seqFreqs.append(EN);
elif temp <= 20:
seqFreqs.append(QN)
elif temp <= 30:
seqFreqs.append(HN)
else:
seqFreqs.append(WN)
else:
print("Something's up.");
sys.exit();
chordDict = {"W":[C4,E4,G4],"M":[D4,F4,A4],"P":[E4,G4,B4],"H":[F4,A4,C5],"Y":[G4,B4,D5],"F":[B4,D5,G5],"L":[A4,C5,E5],
"I":[C5,E5,A5],"V":[B4,D5,F5],"A":[D5,F5,B5],"C":[C4,E4,G4],"G":[D4,F4,A4],"T":[E4,G4,B4],"S":[G4,B4,E5],
"Q":[F4,A4,C5],"N":[A4,C5,F5],"E":[G4,B4,D5],"D":[B4,D5,G5],"R":[A4,C5,E5],"K":[C5,E5,A5]};
for i in range(len(protein)):
mPhrase.addChord(chordDict[protein[i]],seqFreqs[i])
Play.midi(mPhrase)