干细胞之家 - 中国干细胞行业门户第一站

 

 

搜索
中源协和

免疫细胞治疗专区

欢迎关注干细胞微信公众号

  
查看: 105194|回复: 5
go

[原创] RNA-sequencing数据处理流程 [复制链接]

Rank: 3Rank: 3

积分
326 
威望
326  
包包
946  

积极份子

楼主
发表于 2015-8-14 18:14 |只看该作者 |倒序浏览 |打印
干细胞之家微信公众号
RNA-sequencing数据处理流程7 R( v) K/ Q6 g8 C8 u
9 V+ b" x. Z3 B2 |0 G  r5 S
RNA-sequencing技术已经逐渐取代microarray技术,成为转录组研究中的重要的高通量技术。我以前作了若干年microarray基因表达数据分析,也就是最近才开始作RNA-sequencing数据分析,现在把我了解的RNA-sequencing数据分析的流程写下来,一方面是给我自己增加印象,而且如果有错误的话希望得到大家的指正,另一方面是希望能对也使用RNA-sequencing技术的朋友有一些启发作用。
* x6 }* y+ [( q% g: k! ]  o2 ^3 p7 U6 Q2 [
因为目前RNA-sequencing处理流程的每个环节上都有不止一种方法,这里我着重叙述我使用的方法,对于其他的方法我只能提及,但无法一一详述。另一方面,我这里处理流程从原始sra文件开始,到形成表达数据计数矩阵(count matrix)为止,所以严格说,这篇应该叫RNA-sequencing数据“预”处理流程。之后的differential expression分析,聚类分析,GO term分析,binding site分析以及pathway分析,在此我也不作详述,如果有朋友感兴趣,我可以在未来一一介绍。
4 ~# J6 G! \/ ?. k; S( t8 q' a7 ~0 ]  H9 l0 a$ }& {
RNA-sequencing处理流程和microarray处理流程在“预”处理阶段差异较大,而在后续的处理差异较小(仅differential expression分析有差别)。RNA-sequencing“预”处理主要分四个步骤9 V( w- _9 {. m# ~4 z9 n* a4 ~3 O
第一步:下载.sra文件。在Bioconductor的SRAdb包里有方法可以下载.sra文件。假设有SRA Accession号,具体的操作如下:
6 D. r& O6 h+ B; {      library(SRAbd)# z# c6 C' }/ J6 C, f
      library(DBI)5 Q. G8 [2 C0 P. i+ ~
      if(!file.exists('SRAmetadb.sqlite'))
3 e' a" C' y6 a2 p0 U( W        srafile <- getSRAdbFile()! i* X! C" L2 y6 [
      else& V$ I, S2 L$ x
        srafile <- 'SRAmetadb.sqlite'
+ l% r. A; q2 x' L! \      con = dbConnect(RSQLite::SQLite(), srafile)
( S3 r$ P7 V1 h, W+ R' r      df_srr <- listSRAfile(sra_accn, con)                #sra_accn为已知SRA Accession号) @! p# n+ [2 J/ g1 B
      l_run <- unlist(df_srr["run"])
% a  o4 j. W! l4 q1 z- c      getSRAfile(l_run, con, fileType = 'sra')
( [( d5 D# y0 W. F如果不知道SRA Accession号,可以通过NCBI网站搜索。) V$ W. t/ R( i! `
第二歩:转化.sra文件为.fastq文件。我们需要下载SRA Toolkit,使用其中的fastq-dump命令来完成转换。8 t9 B$ N3 L, O* ~
第三步:对应RNA片段到参考基因组。这一步,有很多工具可以实现,比如BWA,Bowtie/Bowtie2,GSNAP,TopHat2,或是STAR。这里我介绍STAR工具。STAR工具包可以在https://github.com/alexdobin/STAR/releases下载。同时,我们还需要下载genome fasta sequence文件和annotation GTF文件来产生参考基因组。以人类homo sapiens为例,我们从ENSEMBL(ftp://ftp.ensembl.org/pub/release-81/......)下载FASTA和GTF文件。使用STAR命令两次但是不同的参数来分别产生参考基因组和对应RNA片段到参考基因组。具体的操作如下(命令行):: k" D7 {5 S2 {+ S
      STAR --runThreadN 这里是个数字表示多少线程 --runMode 在产生参考基因组阶段这里必须填genomeGenerate选项 --genomeDir 这里填你希望产生的参考基因组存放的路径 --genomeFastaFiles 这里填下载的FASTA文件路径 --sjdbGTFfile 这里填下载的GTF文件路径- F6 g4 Z. d5 U! T; R) C
产生完参考基因组之后,就是对应RNA片段到参考基因组
8 D. Q! F0 v: B0 R      STAR --runThreadN 这里是个数字表示多少线程 --genomeDir 这里填产生好的参考基因组存放的路径 --readFilesIn 这里填已经准备好的.fasta文件路径3 @# @: w: H$ O. \' x
这样就可以产生.sam文件,我们再需要通过samtools把.sam转化成.bam文件,操作如下  K! c% c8 N7 G0 K
      samtools view -bS xxxxx.sam -o xxxx.bam( R+ k% h! L. r0 h
第四步,我们要利用产生的.bam文件获得count matrix。这也有几个工具可以实现,比如python的HTSeq包,Bioconductor的Rsubread包和GenomicAlignments包。我使用GenomicAlignments包。完成这个任务,也需要几个步骤:# E; G( y8 g1 t. [8 U; J" W3 t
        1) 我们需要定义基因模型(gene models)。简单的方法是直接使用Bioconductor现有的,比如TxDb.Hsapiens.UCSC.hg19.knowngene包;
- f  e* j6 C3 n' Z        2) 产生一个GRangesList对象;- v/ h: U! M7 Q6 L/ U8 @1 n
        3) 把产生的若干.bam文件放入BamFileList对象中;
% y" P" c, ]. ~9 D6 x4 y        4) 使用summarizeOverlaps方法产生count matrix。, F. b) r! m$ E' f: c
具体操作如下:0 v9 ]( k$ U3 L* B
      library("TxDb.Hsapiens.UCSC.hg19.knownGene"). i: {4 o( i5 I; c
      library("Rsamtools")
3 J# K5 P7 d0 b8 d; B" |% H      library(GenomicAlignments)
( s1 J/ u9 l! U- Q- S/ O, f      bamfiles <- BamFileList(filenames, yieldSize=2000000)
- b: F7 G; L1 Y9 N      exByGn <- exonsBy(TxDb.Hsapiens.UCSC.hg19.knownGene, "gene"). o2 w" s1 b  O4 T& J0 v7 y
      flag <- scanBamFlag(isNotPrimaryRead=FALSE, isProperPair=TRUE): k- V% h( @) ~& s  r
      param <- ScanBamParam(flag=flag)0 E! w$ v/ z9 j
      CntMat <- summarizeOverlaps(exByGn, bamfls, mode="Union", ignore.strand=TRUE, single.end=FALSE, param=param)
( `" i/ X! M8 Q* N9 ^' ~最终,我们就获得了CntMat,可以开始一系列后续的分析处理了。+ ?6 ?, n2 E- [2 i# I3 U
已有 1 人评分威望 包包 收起 理由
细胞海洋 + 20 + 50 原创内容

总评分: 威望 + 20  包包 + 50   查看全部评分

Rank: 3Rank: 3

积分
326 
威望
326  
包包
946  

积极份子

沙发
发表于 2015-8-16 00:40 |只看该作者
如果有朋友感兴趣differential expression分析,聚类分析,GO term分析,binding site分析以及pathway分析,请跟帖,我可以分享一些我的经验。

Rank: 2

积分
60 
威望
60  
包包
360  
藤椅
发表于 2015-8-16 08:15 |只看该作者
感谢分享,期待下一个帖子哈

Rank: 3Rank: 3

积分
641 
威望
641  
包包
1844  

金话筒 优秀会员 研讨会精英

板凳
发表于 2015-8-17 14:52 |只看该作者
同期待下文

Rank: 7Rank: 7Rank: 7

积分
1083 
威望
1083  
包包
1389  

金话筒 热心会员 积极份子 优秀会员 新闻小组成员

报纸
发表于 2015-8-17 23:40 |只看该作者
回复 farui 的帖子9 a1 a0 i4 m9 {/ O6 ^
0 t0 e9 A& J9 N# m: a
Welcome! Do you have experience on how to evaluate quality of RNA-seq reads?
已有 1 人评分威望 包包 收起 理由
细胞海洋 + 1 + 5 欢迎参与讨论

总评分: 威望 + 1  包包 + 5   查看全部评分

Rank: 3Rank: 3

积分
326 
威望
326  
包包
946  

积极份子

地板
发表于 2015-8-18 04:18 |只看该作者
回复 lchanlon 的帖子
: V3 i6 ^. |9 v0 a  v
- ~1 ~% S; A& t7 A+ i6 n你提醒得很好,RNA-seq的Quality control也是一个重要步骤。我目前正在学习和测试两个工具,一个是RSeQC(python),另一个是QoRTs(java和R),等我整理以后在发上来。
已有 1 人评分威望 包包 收起 理由
细胞海洋 + 2 + 10 欢迎参与讨论

总评分: 威望 + 2  包包 + 10   查看全部评分

‹ 上一主题|下一主题 ›
你需要登录后才可以回帖 登录 | 注册
验证问答 换一个

Archiver|干细胞之家 ( 吉ICP备2021004615号-3 )

GMT+8, 2026-11-7 17:11

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.