检测 Ribo-SEQ 中的 offset

引言


Riboseq 数据分析一般会涉及到 reads 的 offset。我们知道 Riboseq 的测序原理是对核糖体保护的片段进行测序,这样的片段一般在 30nt 左右。转录本在翻译的过程中包括了翻译的起始,延伸和终止三个过程。生物学上定义了E(tRNA 排出位)、P(肽酰 tRNA 位)、A(氨基酰 tRNA 位) 三个位置来表示。 核糖体在 mRNA 上(一个密码子单位)三个碱基的移动。


一般测序 reads 的 5‘end 端距离核糖体 p site 的距离为 p site 的 offset。而 E/A 位则可以相应-3 或者+3。


我们做 metagene analysis 会发现距离起始密码子有个最高的峰,这个峰便可以认为是核糖体起始的位置,也就是 psite 的 offset:


但是经过酶消化下来的片段并不是唯一的,呈正态分布,因此每个不同大小的片段可能offset 也不一样。因此我们需要评估不同片段大小的 offset,此外每个不同长度的片段的 3nt 周期性也是一个指标。所以我们去看每个片段长度的最高峰便可以得出对应的 offset:

安装

install.packages(“devtools”)

devtools::install_github(“junjunlab/RiboProfiler”)

or

remotes::install_github(“junjunlab/RiboProfiler”)

library(RiboProfiler)
测试

准备数据:
library(ggplot2)
library(RiboProfiler)

sam_file = list.files(“../5.map-data”,pattern = “Ribo.*sam$”,full.names = TRUE)

pre_qc_data(longest_trans_file = “longest_info.txt”,
sam_file = sam_file,
out_file = paste(sample_name,”.qc.txt”,sep = “”),
mapping_type = “genome”,
seq_type = “pairedEnd”)

load qc data

qc_df <- load_qc_data()
PsiteOffsetCheck 绘图,输出一个表格,每个样本不同片段长度的 offset 和一个图:
PsiteOffsetCheck(qc_data = qc_df)

$summary_offset

sample readLengths Offsets bamFiles bamLegends

1 a-1Ribo 27, 28, 29, 30, 31, 32 -9, -9, -12, -12, -12, -12 a-1Ribo a-1Ribo

7 a-2Ribo 27, 28, 29, 30, 31, 32 -9, -10, -12, -12, -12, -13 a-2Ribo a-2Ribo

13 b-1Ribo 27, 28, 29, 30, 31, 32 -9, -9, -12, -12, -12, -12 b-1Ribo b-1Ribo

19 b-2Ribo 27, 28, 29, 30, 31, 32 -9, -9, -12, -12, -12, -12 b-2Ribo b-2Ribo

25 c-1Ribo 27, 28, 29, 30, 31, 32 -9, -9, -12, -12, -12, -13 c-1Ribo c-1Ribo

31 c-2Ribo 27, 28, 29, 30, 31, 32 -9, -9, -12, -12, -12, -13 c-2Ribo c-2Ribo

#

$plot

当然你可以自己选择片段的长度大小和距离展示:
PsiteOffsetCheck <- function(qc_data = NULL,
relative_distance = c(-18,12),
read_length = c(27,32),
label_size = 3,
label_pos = c(0.9,0.9),
line_col = “#993366”,
peak_line_col = “red”)
footprint_heatmap 更新

上面用线图展示:

更新一下函数:
footprint_heatmap(qc_data = qc_df,
xline = T,
tile_border = NA,
rel_distance = c(-50,250),
xseq = 50) +
ggplot2::scale_fill_viridis_c()

把上面曲线调高一点:
footprint_heatmap(qc_data = qc_df,
xline = T,
tile_border = NA,
rel_distance = c(-50,250),
xseq = 50,
scale_x = 0.5) +
ggplot2::scale_fill_viridis_c()

取一下 log,调整一下颜色对比:
footprint_heatmap(qc_data = qc_df,
xline = T,
tile_border = NA,
rel_distance = c(-50,250),
xseq = 50,
scale_x = 0.5,
log = T) +
ggplot2::scale_fill_viridis_c(name = “log2(count)”)

结尾


路漫漫其修远兮,吾将上下而求索。
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 (微信交流群需收取 20 元入群费用,一旦交费,拒不退还!(防止骗子和便于管理)) 。QQ 群可免费加入, 记得进群按格式修改备注哦。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/420282.html

(0)
联系我们
联系我们
分享本页
返回顶部