序列分析图(sequence logo)一般指以图形方式依次展示序列比对中各个位置上出现的残基及其频率,常用于描述序列特征,如DNA中的蛋白质结合位点或蛋白质中的功能单元。序列分析图中每个残基对应图形字符的大小与残基在该位置上出现的频率是成正比的!
支持序列与矩阵两种格式的文件,以以ggseqlogo包自带示例数据ggseqlogo_sample为例:
data(ggseqlogo_sample)
#DNA数据
df1<-pfms_dna
#氨基酸数据
df2<-seqs_aa
#序列格式
df3<-seqs_dna$MA0011.1
#矩阵格式——代表碱基位置及相应碱基在该位置的出现次数
df4<-pfms_dna$MA0031.1
参考https://zhuanlan.zhihu.com/p/553795624
两种序列标志方法
GGSEQLogog 通过选项支持两种序列标志方法:“bits”和“probability”。默认情况下,使用 bits
参考:https://omarwagih.github.io/ggseqlogo/
“bits”(信息位):
“bits” 方法基于信息论,特别是熵的概念。它量化了每个位置上每个可能字符(例如,A、C、G、T 对于 DNA 或者氨基酸对于蛋白质)的信息含量。信息含量越高,表示该位置上的保守性越强,即该位置上的特定字符出现的频率远高于随机分布。
信息位是通过比较观察到的频率和期望的(随机)频率来计算的。如果一个字符在某个位置上出现的频率远高于随机出现的概率,那么这个字符的信息位值就会很高。
在序列徽标中,“bits” 方法通常用来表示序列在每个位置上的保守性强度,信息位值越高,徽标中的字符就越大,表示该位置的保守性越强。
熵越高,表示不确定性越大,或者说信息量越大。
在序列分析中,一个高熵值可能表示序列在该位置上的变异性较高。
在 WebLogo 图中,纵坐标的范围从 0 开始,理论上没有固定的上限,但实际上它取决于序列数据的保守性。如果一个位置上的核苷酸或氨基酸完全保守(即,100% 的序列在该位置上都是同一个字符),那么该位置的信息含量会接近 0 bits。相反,如果一个位置上的字符分布完全随机,那么信息含量会更高。
纵坐标范围 0-0.08 的含义
低信息含量:纵坐标范围在 0 到 0.08 bits 之间,这表明序列在这些位置上的保守性相对较低。这意味着这些位置上的核苷酸或氨基酸的分布接近随机,没有明显的偏好。
序列多样性:在这些位置上,序列的多样性较高,没有单一的核苷酸或氨基酸占据主导地位。
生物学意义:在生物学上,这可能意味着这些区域对序列的功能不是至关重要的,或者它们可能允许更多的变异而不影响序列的功能。
如何解释 WebLogo 图
字符大小:WebLogo 图中的每个位置上的字符大小表示该字符在该位置上的相对频率。字符越大,表示该字符在该位置上出现的频率越高。
信息含量:纵坐标的值表示信息含量,即该位置上的保守性。信息含量越高,表示该位置的保守性越强。
颜色编码:不同的字符可能用不同的颜色表示,以帮助区分不同的核苷酸或氨基酸。
“probability”(概率):
“probability” 方法直接显示每个位置上每个可能字符出现的相对频率。它提供了一个直观的视图,显示在该位置上各个字符出现的频率分布。
概率值是通过计算每个字符在所有序列中特定位置上出现的次数,然后除以该位置上所有序列的总数来计算的。
在序列徽标中,“probability” 方法通常用来表示序列在每个位置上的字符分布,概率值越高,徽标中的字符就越大,表示该字符在该位置上出现的可能性越大。
在 ggseqlogo 中,你可以通过设置参数来选择这两种方法之一来生成序列徽标。选择哪种方法取决于你想要强调的信息:如果你更关心序列的保守性强度,可能会选择 “bits” 方法;如果你更关心字符出现的频率分布,可能会选择 “probability” 方法。
#检查 BiocManager 是否已安装
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("ggseqlogo")
install.packages("ggplot2")
library(ggseqlogo)
library(ggplot2)
# 读取序列数据
sequences <- read.csv("weblog_iutput.csv",row.names = 1)
#默认的纵坐标为bits
p<-ggseqlogo(sequences)
#也可以更改为probablity
1. List item
p<-ggseqlogo(sequences,method = 'prob')
## 使用 ylim() 设置纵坐标的范围
p + ylim(0, 0.1)
ggsave("weblogo1.png")