前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >堆积柱形图(stacked barplot)展示密码子偏向性的RSCU值

堆积柱形图(stacked barplot)展示密码子偏向性的RSCU值

作者头像
用户7010445
发布2020-08-04 16:44:57
1.8K0
发布2020-08-04 16:44:57
举报
文章被收录于专栏:小明的数据分析笔记本

研究密码子偏向性的论文通常都会分析RSCU值,论文中通常会用堆积柱形图来展示RSCU的值,之前在论文里也看到过下面这幅图的形式展示RSCU分析的结果

之前也有人在公众号留言问过这幅图改如何实现,但是自己当时也不知道。今天看Y叔的公众号文章aplot包:让你画出更复杂的图,解决的主要问题是拼图的时候坐标轴对齐。

看过这篇文章后突然想到展示密码子偏向性RSCU值的这幅图可以借助拼图来实现,下面介绍自己的实现过程。

首先是计算RSCU值

我借助python中的CAI模块实现

https://github.com/Benjamin-Lee/CodonAdaptationIndex

使用pip直接安装

代码语言:javascript
复制
pip install CAI

计算RSCU值

代码语言:javascript
复制
from CAI import RSCU
from Bio import SeqIO
seqs = [rec.seq for rec in SeqIO.parse('codon_usage_example.fasta','fasta')]
rscu = RSCU(seqs)

rscu是一个字典,密码子是键,对应的RSCU是值

写一个简单的脚本获得使用R语言的ggplot2作图的输入文件

代码语言:javascript
复制
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('codon_usage_example.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.txt四列

  • 第一列是密码子
  • 第二列是对应的氨基酸
  • 第三列是RSCU值
  • 第四列是数字,用来填充颜色和控制位置

接下来是ggplot2作图代码

代码语言:javascript
复制
install.packages('aplot')
library(ggplot2)
library(aplot)
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))
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)

这样就得到了开头提到的图

还发现了一个R包可以分析密码子偏向性sscu,具体用法没看,用到再说

还发现了一个网站分析密码子偏向性http://www.codons.org/Help.html#CU

还看到了一个python模块可以把对应的蛋白质序列弄回核苷酸序列,不知道什么情况下会用到

https://pypi.org/project/codon-harmony/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档