分享

生信小白教你绘制叶绿体密码子偏好性图

 生信漫谈 2023-07-29 发布于湖北

01


什么是密码子偏好性

     密码子使用偏性是指各种生物体偏爱使用同义三联密码子(即编码相同氨基酸的密码子)的现象。

   从生物学基础来看,不同的密码子使用密码子模式不同的形成可能与基因的GC含量有关。在一些单细胞生物如Escherichia coli、Saccharomyces cerevisiae中,高表达的基因密码子的使用偏性一般比较大。这些偏好可能与两个原因有关:一是避免使用类似终止密码子的密码子;二是这些偏好能够有效地翻译密码子,因为这些密码子对应于生物体中非常丰富的tRNA。无论导致这种偏好的原因到底是什么,不同生物的密码子使用偏性的差异可以非常大。真实的外显子一般能反映出这些偏好,而随机选择的三联体序列却不能。

密码子偏好性图常见于叶绿体基因组中出现

NO.1

计算RSCU值


需要先用pip安装CAI

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

NO.2

利用R绘制密码子偏好性堆积图

需要安装ggplot2和aplot包

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()


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多