【直播】我的基因组47:测序深度和GC含量的关系

在前面我们用 ChIP-seq 的分析方法可视化了一下我的 WGS数据,结果我们的测序深度分布居然是跟基因组的genomic feature相关

比如在TSS附近,就很明显看到了一个测序深度峰值(具体内容点击 【直播】我的基因组 44:比对文件画profile和heatmap图),但是前面我们并没有给出直接的解答而是简单的提到这是二代测序的特点——GC含量片段偏好性

作为一个合格的生物信息学工程师,我当然要把这个理论用自己的代码和数据来亲身实践一遍。

以下为分析过程:

首先,把全基因组的bam文件用 mpileup模式输出,根据 1000bp 的窗口滑动来统计每个窗口的测到的碱基数,GC碱基数,测序总深度!(代码比较复杂,一般人可能理解不来)

samtools mpileup -f ~/reference/genome/human_g1k_v37/human_g1k_v37.fasta ../P_jmzeng.final.bam|head -1000000 |perl -alne '{$pos=int($F[1]/1000); $key="$F[0]\t$pos";$GC{$key}++ if $F[2]=~/[GC]/;$counts_sum{$key}+=$F[3];$number{$key}++;}END{print "$_\t$number{$_}\t$GC{$_}\t$counts_sum{$_}" foreach sort{$a<=>$b} keys %number}'

上面的代码写的不好,跑10万行需要 4s,跑一百万行需要36s,我估计把这8.9亿行的bam运行完,这样推算是10小时即可,但事实上我已经跑了一整天了!我感觉自己的脚本能力在面对大数据(300Gb的全基因组)有点捉鸡!

不过不要紧,我们就拿前面的百万行数据做一个测试就好了。

结果如下:

说明 前面两行是窗口的坐标,第几号染色体的第几个窗口,后面3行是数据,分别是每个窗口的测到的碱基数,GC碱基数,测序总深度。

接下来,将上面的文件导入到 R里进行可视化。

PS:这个线性回归图不会看的,自己去搜索或者去看生信技能树论坛的文章: http://www.biotrainee.com/thread-695-1-1.html (复制链接到浏览器打开或者点击最下方的阅读原文)。 我觉得我这次画的图还不错,很明显能看到这个趋势,GC含量比较高的窗口,有着相应比较高的测序深度!

至此,完美的证明了文章开头的结论!

给自己一百个赞,虽然我没有对全基因组数据做验证,但是基因组差异并没有很大,我也随机抽样测试了几次都有这个趋势。

最后,给出我的 R代码如下:

a=read.table('../tmp.txt')
a$GC = a[,4]/a[,3]
a$depth = a[,5]/a[,3]
a = a[a$depth<100,]
plot(a$GC,a$depth)
library(ggplot2)
# GET EQUATION AND R-SQUARED AS STRING
# SOURCE: http://goo.gl/K4yh
lm_eqn <- function(x,y){
m <- lm(y ~ x);
eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
list(a = format(coef(m)[1], digits = 2),
b = format(coef(m)[2], digits = 2),
r2 = format(summary(m)$r.squared, digits = 3)))
as.character(as.expression(eq));
}
p=ggplot(a,aes(GC,depth)) + geom_point() +
geom_smooth(method='lm',formula=y~x)+
geom_text(x = 0.5, y = 100, label = lm_eqn(a$GC , a$depth), parse = TRUE)
p=p+theme_set(theme_set(theme_bw(base_size=20)))
p=p+theme(text=element_text(face='bold'),
axis.text.x=element_text(angle=30,hjust=1,size =15),
plot.title = element_text(hjust = 0.5) ,
panel.grid = element_blank(),
#panel.border = element_blank()
)
print(p)

关于画图,大家可以参考下面这个链接:http://stackoverflow.com/questions/7549694/ggplot2-adding-regression-line-equation-and-r2-on-graph

文:Jimmy

校对编辑:一只思考问题的熊

原文发布于微信公众号 - 生信技能树(biotrainee)

原文发表时间:2017-01-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

谈谈鱼叉式网络钓鱼黑箱粉碎机

美国加州大学伯克利分校和劳伦斯伯克利国家实验室(LBNL)的几位安全研究人员开发了鱼叉式网络钓鱼黑箱粉碎机,通过分析鱼叉式网络钓鱼攻击的根本特点设计了一组新的信...

3947
来自专栏数据派THU

手把手教你Tableau高级数据分析功能(附数据集)

4336
来自专栏Python中文社区

Python爬虫之豆瓣音乐及糗事百科

專 欄 ❈ 罗罗攀,Python中文社区专栏作者 专栏地址: http://www.jianshu.com/u/9104ebf5e177 ❈ 一、豆瓣音乐t...

2225
来自专栏生信技能树

【直播】我的基因组47:测序深度和GC含量的关系

在前面我们用 ChIP-seq 的分析方法可视化了一下我的 WGS数据,结果我们的测序深度分布居然是跟基因组的genomic feature相关。 比如在TSS...

6229
来自专栏生信宝典

生信宝典之傻瓜式 (三) 我的基因在哪里发光 - 如何查找基因在发表研究中的表达

还在为不会分析大数据发愁吗? 还在为无法查询和比较发表文章中感兴趣基因表达值抱怨吗? 使用genevestigator,高效利用已经有研究结果,轻松与同行研究结...

2376
来自专栏AI科技大本营的专栏

AI 技术讲座精选:数学不好,也可以学习人工智能(三)

【AI100 导读】学习人工智能到底要不要学好数学,这俨然已经成了一个争议话题了?之前 AI100 刊发了本系列的前两篇文章,也发表了作者子白的《放弃幻想,搞 ...

43417
来自专栏数据小魔方

R语言可视化——图表美化与套用主题(下)

昨天的分享跟大家简单介绍了关于柱形图图表元素美化的思路,今天接着分享关于套用主题。 因为单独使用代码来调整单个图表元素,实在是太费劲了,更何况图表的细节元素有那...

2776
来自专栏CDA数据分析师

手把手教你用Python分析电影 | 以《蚁人2》为例

《蚁人2》自8月24日在中国大陆上映以来,已经有将近一个月。作为《复仇者联盟3》之后漫威出品的首部电影,《蚁人2》对漫威宇宙电影的剧情承转起着关键作用。9月20...

1322
来自专栏杨建荣的学习笔记

通过java画文本格式的统计图

一直想做一个东西,能够直接在Linux下显示文本格式的图形,比如点阵图,连线图,直方图等等。直接使用第三方的工具会有一些平台和类库的限制,所以小米加步枪自己周末...

3785
来自专栏跨界架构师

烦人的数据不一致问题到底怎么解决?——通过“共识”达成数据一致性

  本文是本系列的第二篇。是前一篇《不知道是不是最通俗易懂的《数据一致性》剖析了》的后续内容。

1231

扫码关注云+社区