查看: 1764|回复: 30

[R语言] “师兄,这种对称的序列LOGO图怎么画?”

  [复制链接]

帝王蝶

Rank: 4

主题
33
注册时间
2020.6.16
在线时间
24 小时

发表于 2020.7.2 09:35:19 | 显示全部楼层 |阅读模式
本帖最后由 基迪奥-Jt桃 于 2020.7.2 09:35 编辑

如何绘制序列保守性Logo图?一文中其实已经介绍过如何使用WebLogo绘制常见的保守序列LOGO图。在文章中有这样一个比较个性的“轴对称”LOGO图,如下。

(PLoS Genet , 2014)

那么,这样的 “轴对称” LOGO图该如何绘制呢?

今天呢,为大家介绍如何使用ggseqlogo包绘制这样的LOGO图。在开始绘制“轴对称”LOGO图之前,我们先看下如何用它绘制常规LOGO图。接下来的范例数据来自使用MEME找到的显著Motif,如下。


MEME可导出多种类型序列数据,比如Motif序列(Raw和fasta)、出现频数(频率)矩阵等,ggseqlogo可对这些类型的数据进行可视化。


为了方便大家练习使用,本文用到的范例数据已上传到OmicShare论坛

下载链接:
https://www.omicshare.com/forum/thread-6378-1-1.html

绘制常规LOGO图

整体而言,ggseqlogo包的用法非常简单,参数也不多,非常容易上手。

[AppleScript] 纯文本查看 复制代码
#安装ggseqlogo包;
install.packages("ggseqlogo")
#载入R包;
library(ggseqlogo)
library(ggplot2)

#使用LOGO的频率(频数)矩阵绘制LOGO;
#导入本地数据
mat <- read.table("motif_1_counts.txt",header=T,sep = "\t")
head(mat)



[AppleScript] 纯文本查看 复制代码
#转置矩阵;
tmat <- t(mat)
#绘图函数会自动识别数据是核酸序列还是蛋白序列;
p1 <-ggseqlogo(tmat)
p1



[AppleScript] 纯文本查看 复制代码
#查看默认颜色方案;
list_col_schemes()
# ggseqlogo 自带的color schemes:
# auto
# chemistry
# chemistry2
# hydrophobicity
# nucleotide
# nucleotide2
# base_pairing
# clustalx
# taylor

p1 <-ggseqlogo(tmat,col_scheme="base_pairing")
p1




[AppleScript] 纯文本查看 复制代码
#自定义位点标签;
p1+scale_x_continuous(breaks=1:19,label=as.character(-7:11))

LOGO图一般有两种单位:‘bits’ 和 ‘probability’,默认作图单位是‘bits’。具体的算法可参考《如何绘制序列保守性Logo图?》一文。

#设定纵轴计量单位为‘probability’;
p2 <-ggseqlogo(tmat,method = 'prob',col_scheme="base_pairing")
p2



[AppleScript] 纯文本查看 复制代码
#使用对位序列绘制LOGO;
seq <- read.table("motif_1_raw.txt",header=F,sep = "\t")
head(seq)



[AppleScript] 纯文本查看 复制代码
#数据格式:序列字符串组成的向量;
vseq <- seq$V1
head(vseq)
#直接使用核酸(或蛋白)的序列绘制;
p3 <- ggseqlogo(vseq,col_scheme="taylor")
p3



[AppleScript] 纯文本查看 复制代码
#使用read.table"强行"读入fasta格式,你也可以使用seqinr包;
fas <- read.table("motif_1_fasta.txt",header=F,sep = "\t")
head(fas)



[AppleScript] 纯文本查看 复制代码
#提取序列组成向量;
n <- length(fas$V1)
index <- seq(from=2,to=n,by=2)
seq2 <- fas$V1[index]
#自定义颜色:
#我这里将group参数缺省,得到的配色方案为分组数据框;
mycol1 <- make_col_scheme(chars=c('A', 'T', 'C', 'G'),
cols=c('#5c8d89', '#74b49b', '#ffbcbc', '#a7d7c5'))
#绘制方法同上;
p4 <- ggseqlogo(seq2,col_scheme=mycol1)
p4



绘制轴对称LOGO图

关于数据准备技巧,作图算法选自定义(即method='custom',也就是数字大小决定字母高度);若将某位点的某一字母绘制横轴下方,则在对应的数字前添加负号即可。

[AppleScript] 纯文本查看 复制代码
#读入范例数据矩阵;
mat1 <- read.table("A_to_G_freqs.xls",row.names = 1,header=T,sep = "\t")
mat1



[AppleScript] 纯文本查看 复制代码
#转置矩阵;
tmat1 <- t(mat1)
tmat1
#自定义颜色:
mycol2 <- make_col_scheme(chars=c('A', 'T', 'C', 'G'),cols=c('#FF9900', '#96C93D', '#A4E666', '#FFDE00'))
#绘制LOGO图,添加纵轴标签并自定义横轴刻度标签;
p5 <-ggseqlogo(tmat1, method='custom',col_scheme=mycol2)+
ylab('depleted(%) enriched(%)')+
coord_cartesian(ylim = c(-30,30),expand = FALSE)+
scale_x_continuous(breaks=1:11,label=as.character(-5:5))
#添加坐标轴和水平线;
p5+geom_hline(yintercept=0,size = 0.5)+theme(axis.line.y = element_line(size = 0.5, colour = "grey20"),
axis.ticks.y = element_line(size = 0.5))



[AppleScript] 纯文本查看 复制代码
#若喜欢冷色调,可使用下面的配色:
mycol2 <- make_col_scheme(chars=c('A', 'T', 'C', 'G'),cols=c('#6666FF', '#A4E666', '#CCFF66', '#66CCFF'))


得到下图这样的效果:


个性化调整

就我目前的R语言水平,只能暂时画到这里了,但距离目标还有一段距离。接下来选择在Ai(Adobe illustrator)中做进一步调整。主要步骤是将上半部分字母、刻度、刻度标签整体上移一段距离,然后添加直线,位置微调,如下。


如果你想学Ai,可以扫下面二维码免费观看《科研图表绘制与美化》,花一个小时左右入门之后,再遇到图表处理问题自然是小菜一碟。


最终的绘制效果如下:


参考资料:
Chen J Y, Peng Z, Zhang R, et al. RNA editomein rhesus macaque shaped by purifying selection[J]. PLoS genetics, 2014, 10(4):e1004274.
Omar, Wagih . "ggseqlogo: a versatile R package for drawing sequence logos." Bioinformatics 22:22.
https://omarwagih.github.io/ggseqlogo/

本文作者:基迪奥-莫北
               

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
新的一天加油!
回复

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2016.12.6
在线时间
134 小时

发表于 2020.7.2 11:35:49 | 显示全部楼层
感谢分享,,,,
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2017.6.6
在线时间
63 小时

灌水之王


发表于 2020.7.2 17:07:12 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

草履虫

Rank: 2

主题
0
注册时间
2020.6.29
在线时间
0 小时

发表于 2020.7.6 18:08:13 | 显示全部楼层
先马主马主
回复 支持 反对

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2019.11.21
在线时间
12 小时

发表于 2020.7.7 16:19:05 | 显示全部楼层
学习了文章内容
回复 支持 反对

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.7.9 09:45:10 | 显示全部楼层
厉害了,,,厉害
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.7.8
在线时间
0 小时

发表于 2020.7.9 11:30:25 | 显示全部楼层
太详细了,很棒
加油
回复 支持 反对

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.7.10 08:01:11 | 显示全部楼层
真心高大上
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2019.3.28
在线时间
3 小时

发表于 2020.7.10 09:12:18 | 显示全部楼层
谢谢分享
大家加油
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2018.12.26
在线时间
33 小时

发表于 2020.7.10 10:46:36 | 显示全部楼层
嘿,真厉害
云青青兮欲雨,水澹澹兮生烟
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.4.3
在线时间
6 小时

发表于 2020.7.10 23:01:34 | 显示全部楼层
谢谢分享,已保存
新的一天加油!
回复 支持 反对

使用道具 举报

草履虫

Rank: 2

主题
0
注册时间
2018.7.4
在线时间
3 小时

发表于 2020.7.13 19:29:53 | 显示全部楼层
很实用
加油
回复

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.7.15 14:59:25 | 显示全部楼层
现在发文章才是已经道理,希望有时间多学习
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.6.29
在线时间
4 小时

发表于 2020.7.15 15:44:47 | 显示全部楼层
学习了!!!!
加油!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
3
注册时间
2018.8.21
在线时间
6 小时

发表于 2020.7.16 14:47:44 | 显示全部楼层
混合后
回复

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.7.18 21:33:44 | 显示全部楼层
天啦噜,就是要这个
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2018.12.26
在线时间
33 小时

发表于 2020.7.20 11:40:00 | 显示全部楼层
Thanks very much
云青青兮欲雨,水澹澹兮生烟
回复 支持 反对

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.7.22 09:53:32 | 显示全部楼层
很不错
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2020.1.16
在线时间
19 小时

发表于 2020.7.23 08:56:43 | 显示全部楼层
学习了
回复

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.7.23 14:56:57 | 显示全部楼层
需要下载软件包
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表