密码子使用偏性是指各种生物体偏爱使用同义三联密码子(即编码相同氨基酸的密码子)的现象。 从生物学基础来看,不同的密码子使用密码子模式不同的形成可能与基因的GC含量有关。在一些单细胞生物如Escherichia coli、Saccharomyces cerevisiae中,高表达的基因密码子的使用偏性一般比较大。这些偏好可能与两个原因有关:一是避免使用类似终止密码子的密码子;二是这些偏好能够有效地翻译密码子,因为这些密码子对应于生物体中非常丰富的tRNA。无论导致这种偏好的原因到底是什么,不同生物的密码子使用偏性的差异可以非常大。真实的外显子一般能反映出这些偏好,而随机选择的三联体序列却不能。 from CAI import RSCU from Bio import SeqIO c2aa = { 'TGT':'Cys', 'UGU':'Cys', 'TGC':'Cys', 'UGC':'Cys', 'GAT':'Asp', 'GAU':'Asp', 'GAC':'Asp', 'GAC':'Asp', 'TCT':'Ser', 'UCU':'Ser', 'TCG':'Ser', 'UCG':'Ser', 'TCA':'Ser', 'UCA':'Ser', 'TCC':'Ser', 'UCC':'Ser', 'AGC':'Ser', 'AGC':'Ser', 'AGT':'Ser', 'AGU':'Ser', 'CAA':'Gln', 'CAA':'Gln', 'CAG':'Gln', 'CAG':'Gln', 'ATG':'Met', 'AUG':'Met', 'AAC':'Asn', 'AAC':'Asn', 'AAT':'Asn', 'AAU':'Asn', 'CCT':'Pro', 'CCU':'Pro', 'CCG':'Pro', 'CCG':'Pro', 'CCA':'Pro', 'CCA':'Pro', 'CCC':'Pro', 'CCC':'Pro', 'AAG':'Lys', 'AAG':'Lys', 'AAA':'Lys', 'AAA':'Lys', 'ACC':'Thr', 'ACC':'Thr', 'ACA':'Thr', 'ACA':'Thr', 'ACG':'Thr', 'ACG':'Thr', 'ACT':'Thr', 'ACU':'Thr', 'TTT':'Phe', 'UUU':'Phe', 'TTC':'Phe', 'UUC':'Phe', 'GCA':'Ala', 'GCA':'Ala', 'GCC':'Ala', 'GCC':'Ala', 'GCG':'Ala', 'GCG':'Ala', 'GCT':'Ala', 'GCU':'Ala', 'GGT':'Gly', 'GGU':'Gly', 'GGG':'Gly', 'GGG':'Gly', 'GGA':'Gly', 'GGA':'Gly', 'GGC':'Gly', 'GGC':'Gly', 'ATC':'Ile', 'AUC':'Ile', 'ATA':'Ile', 'AUA':'Ile', 'ATT':'Ile', 'AUU':'Ile', 'TTA':'Leu', 'UUA':'Leu', 'TTG':'Leu', 'UUG':'Leu', 'CTC':'Leu', 'CUC':'Leu', 'CTT':'Leu', 'CUU':'Leu', 'CTG':'Leu', 'CUG':'Leu', 'CTA':'Leu', 'CUA':'Leu', 'CAT':'HIS', 'CAU':'HIS', 'CAC':'HIS', 'CAC':'HIS', 'CGA':'Arg', 'CGA':'Arg', 'CGC':'Arg', 'CGC':'Arg', 'CGG':'Arg', 'CGG':'Arg', 'CGT':'Arg', 'CGU':'Arg', 'AGG':'Arg', 'AGG':'Arg', 'AGA':'Arg', 'AGA':'Arg', 'TGG':'Trp', 'UGG':'Trp', 'GTA':'Val', 'GUA':'Val', 'GTC':'Val', 'GUC':'Val', 'GTG':'Val', 'GUG':'Val', 'GTT':'Val', 'GUU':'Val', 'GAG':'Glu', 'GAG':'Glu', 'GAA':'Glu', 'GAA':'Glu', 'TAT':'Tyr', 'UAU':'Tyr', 'TAC':'Tyr', 'UAC':'Tyr', }
seqs = [rec.seq for rec in SeqIO.parse('data.fasta','fasta')]
rscu = RSCU(seqs)
fw = open('rscu.txt','w') amino_acid = {} for aa,bb in rscu.items(): if c2aa[aa] not in amino_acid: amino_acid[c2aa[aa]] = 6 else: amino_acid[c2aa[aa]] -= 0.5 print(aa,c2aa[aa],round(bb,3),amino_acid[c2aa[aa]]) fw.write(aa+","+c2aa[aa]+","+str(round(bb,3))+","+str(amino_acid[c2aa[aa]])+"\n")
fw.close()
把上述代码复制保存为RSCU.py,利用上述的Python脚本计算RSCU值,代码命令是python RSCU.py,得到一个rscu.txt文件。 注意:序列文件名字是data.fasta,改成一致即可。 CAI安装:pip install CAI install.packages('aplot') library(ggplot2) library(aplot) #rscu.txt通过python RSCU.py得到 df<-read.csv('rscu.txt',header=F,stringsAsFactors = F) p1<-ggplot(df,aes(fill=as.character(V4),x=V2,y=V3))+ geom_bar(position = "stack",stat="identity")+ theme_bw()+scale_y_continuous(expand=c(0,0), limits = c(0,6.2))+ theme(legend.position = "none")+labs(y="RSCU",x="") #geom_text(aes(label=V1),position=position_stack(vjust=0.5)) pdf('rscu.pdf') p1 p2<-ggplot(df,aes(x=V2,y=V4))+ geom_label(aes(label=V1,fill=as.character(V4)), size=2)+ labs(x="",y="")+ylim(3.4,6.1)+ theme_minimal()+ theme(legend.position = "none", axis.text = element_blank(), axis.ticks = element_blank(), panel.grid = element_blank())
p1%>% insert_bottom(p2,height = 0.3) dev.off()
|