完整转录组RNAseq分析流程(tophat2+cufflink+cuffdiff)

前一段时间跟着孟浩巍大神的视频学习,在自己的小破笔记本上还是跑完了整个RNAseq差异表达的分析流程( tophat2 + cufflink + cuffdiff )虽然这个流程比较老了,现在做分析一般使用的都是 HTseq + DESeq2 等其他的流程,但是作为入门的知识还是比较容易理解,这篇文章先更一下流程,后面会再更一篇 安装 Linux 子系统(已更新)安装 anconda 和一些分析软件(已更新)的流程,凑一个真正完整的入门生信的操作流程。
火山图、热图在 R 中可视化部分已更新

我的电脑配置,真的是战五渣。


电脑配置

但还是在一天内跑完了整个流程

运行环境python2.7

原始数据如下:

原始文件

包括四个文件:

  • bowtie2_hg19 index 文件(这里已经提前使用bowtie2建立好了index文件可以直接使用)
  • raw_data illumina 双端测序原始文件(对照组和实验组各两个,就是八条测序文件)
  • rRNA rRNA index 序列文件(用于去除 rRNA 的影响)
  • RefSeq_genes_hg19.gtf 基因组注释文件
    链接:https://pan.baidu.com/s/1Q4SwosKaG16-aYA74SaASQ
    提取码:gss3

分析流程

  • RNA-seq的原始数据(raw data)的质量评估
  • raw data的过滤和清除不可信数据(clean reads)
  • reads回帖基因组和转录组(alignment)
  • 计数(count )
  • 基因差异分析(Gene DE)
  • 数据的下游分析(这次先不做这个,下次会单独写)

下面开始正式分析

1、fastqc质控

mkdir fastqc_result.raw     #(建立输出文件夹)                                                                       
fastqc -q -t 3 -o ../fastqc_result.raw/ *.fq.gz &    #(使用fastqc质控软件,对所有raw_data进行质控检测)

2、multiqc整合质控文件(因为得到很多的质控检测结果,需要整合)

multiqc .  #(这一步就是对 fastqc_reault 文件夹下所有文件进行整合)
整合后文件

3、根据质控结果,使用fastx_tolltik去除不良序列

zcat hela_ctrl_rep1_R1.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_rep1_R1.fq.gz &             
zcat hela_ctrl_rep2_R1.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_rep2_R1.fq.gz &             
zcat hela_ctrl_rep2_R2.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_rep2_R2.fq.gz &             
zcat hela_ctrl_rep1_R2.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_rep1_R2.fq.gz &             
zcat hela_treat_rep1_R1.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_t_rep1_R1.fq.gz &          
zcat hela_treat_rep1_R2.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_t_rep1_R2.fq.gz &          
zcat hela_treat_rep2_R1.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_t_rep2_R1.fq.gz &          
zcat hela_treat_rep2_R2.fq.gz  | fastx_trimmer -f 11 -l 140 -z -o out_t_rep2_R2.fq.gz &          

因为当时我还不会写 shell 脚本,正则表达式也不懂,就一个一个写了,但是 shell 才是生产力啊啊啊啊,这一步也可以放后台的,当时为了看结果就一个一个跑了

zcat解压缩,文件名,fastx_trimmer -f x -l y 保留从x-y的序列 -z压缩命令 -o输出结果 &后台运行
trimmer,可以使所有序列长度一致

4、cutadaptor去掉read两端的adaptor

nohup cutadapt --times 1 -e 0.1 -o 3 --quality-cutoff 6 -m 50 -a AGATCGGAAGAGC -A AGATCGGAAGAGC -o cut_out_c_rep1_R1.fq.gz -p cut_out_c_rep1_R2.fq.gz out_c_rep1_R1.fq.gz out_c_rep1_R2.fq.gz &       
nohup cutadapt --times 1 -e 0.1 -o 3 --quality-cutoff 6 -m 50 -a AGATCGGAAGAGC -A AGATCGGAAGAGC -o cut_out_c_rep2_R1.fq.gz -p cut_out_c_rep2_R2.fq.gz out_c_rep2_R1.fq.gz out_c_rep2_R2.fq.gz &          
nohup cutadapt --times 1 -e 0.1 -o 3 --quality-cutoff 6 -m 50 -a AGATCGGAAGAGC -A AGATCGGAAGAGC -o cut_out_t_rep1_R1.fq.gz -p cut_out_t_rep1_R2.fq.gz out_t_rep1_R1.fq.gz out_t_rep1_R2.fq.gz &          
nohup cutadapt --times 1 -e 0.1 -o 3 --quality-cutoff 6 -m 50 -a AGATCGGAAGAGC -A AGATCGGAAGAGC -o cut_out_t_rep2_R1.fq.gz -p cut_out_t_rep2_R2.fq.gz out_t_rep2_R1.fq.gz out_t_rep2_R2.fq.gz &          

--times 1一条序列只去一次Adaptor;
-e 0.1在匹配时可以有10%的错误率;
-o 3 adaptor序列必须和测序序列有3个碱基以上的overlap才可以;
--quality-cutoff常用6;
-m 50如果处理之后低于50的话就扔掉序列,短序列测序质量可能不是很好;
-a-A是 Illumina 常用的通用引物,之所以输入两个,是因为是一个双端测序的结果,需要对两个文件内容进行分别去除,-a对应Reads1,-A对应reads2
-o 上一步输出fastq1 -p 上一步输出fastq2
> 最后是写入log文件
//其中nohup:不挂断地运行命令。
& 就是放后台
//2>1:1 是传递给shell脚本的第一个参数;

5、利用bowtie2将reads比对到rRNA上,除去rRNA的影响

nohup bowtie2 -x $rRNA_index -1 cut_out_c_rep1_R1.fq.gz  -2 cut_out_c_rep1_R2.fq.gz  -S sam_out_c_rep1_bowtie -p 2 --un-conc-gz fastq_unmap_c_rep1_R1 &
nohup bowtie2 -x $rRNA_index -1 cut_out_c_rep2_R1.fq.gz  -2 cut_out_c_rep2_R2.fq.gz  -S sam_out_c_rep2_bowtie -p 2 --un-conc-gz fastq_unmap_c_rep2_R1 &                                                  
nohup bowtie2 -x $rRNA_index -1 cut_out_t_rep2_R1.fq.gz  -2 cut_out_t_rep2_R2.fq.gz  -S sam_out_t_rep2_bowtie -p 2 --un-conc-gz fastq_unmap_t_rep2_R1 &                                                  
nohup bowtie2 -x $rRNA_index -1 cut_out_t_rep1_R1.fq.gz  -2 cut_out_t_rep1_R2.fq.gz  -S sam_out_t_rep1_bowtie -p 2 --un-conc-gz fastq_unmap_t_rep1_R1 &  

(这里要先为rRNA进行index建库,如果有别人建好的库可以直接下载使用)

 rRNA_index=/mnt/c/Users/wt/Desktop/test_data/rnaseq_test_date/rRNA/bowtie2_rRNA_human

一般通过map到rRNA中的比例来衡量建库的质量。一般的要求rRNA的比例不超过10%。
-x 对应rRNA的索引序列;
-1,-2 是刚输出的reads1和reads2;
-S 是比对结果的输出文件;
-p 2 使用2个核心去运算(p就是processor吧!);
--un-conc-gz 输出比对不上的结果;(比对不上的才是需要的)

输出结果如下


输出结果

其实还应当将log文件输出,用于查看运行过程,如果报错容易查看进行处理,但是我第一次做的时候输出的都是空白,也不知道哪里有问题,。这里sam_out文件有点问题,虽然没有用,本应当输出的是比对上的比例,是一个log文件,后面会再看看这里怎么回事。


到这里才算质控做完!

6、使用 tophat2 将过滤掉 rRNA 的 reads 比对到 ref(参考)基因组上

(如果mRNA直接比对到人的DNA上,可能会出现问题,有可能跨越了一个内含子,tophat2考虑了这个问题,它将reads根据注释文件分开成短序列,重新比对;)
需要先建库(这里别人建好了)

 hg19_index=/mnt/c/Users/wt/Desktop/test_data/rnaseq_test_date/bowtie2_hg19/hg19_only_chromosome  
nohup tophat2 -p 2 -o top_out1 $hg19_index fastq_unmap_c_rep1_R1.fq.1.1.gz fastq_unmap_c_rep1_R1.fq.1.2.gz &
nohup tophat2 -p 2 -o top_out2 $hg19_index fastq_unmap_c_rep2_R1.fq.2.1.gz fastq_unmap_c_rep2_R1.fq.2.2.gz & 
nohup tophat2 -p 1 -o top_out3 $hg19_index fastq_unmap_t_rep1_R1.fq.1.1.gz fastq_unmap_t_rep1_R1.fq.1.2.gz & 
nohup tophat2 -p 1 -o top_out4 $hg19_index fastq_unmap_t_rep2_R1.fq.2.1.gz fastq_unmap_t_rep2_R1.fq.2.2.gz & 

-o top_out1, 结果输出到这个文件夹中
hg19 是人的第19个基因组版本,常用的包括hg19和hg38,hg38会取代hg38,hg19包含的信息比较丰富
所使用序列是上一步未比对上的序列unmap(也就是我们所需要的质控后的结果)

输出结果如下


tophat2输出结果

.bam 是最终的比对结果;
.txt 是比对中的总结情况;
3个bed文件,软件检测出来的 deletions 缺失, insertions 插入, junctions 区域
.info 有一些reads没有直接 map 到连续的 DNA 基因组上,需要切一些reads,加工 reads 的过程文件保存在 info 里;
unmapped.bam 是没有 map 上去,一层层都没有比对到的,可能是基因组上未注释过的、测序问题等。

7、使用cuffliks对表达量进行评估(这一步在正常情况下没什么用)

cufflinks -o cufflink_out1 -p 4 -G ../RefSeq_genes_hg19.gtf top_out1/accepted_hits.bam                                                                                                   
cufflinks -o cufflink_out2 -p 4 -G ../RefSeq_genes_hg19.gtf top_out2/accepted_hits.bam     
cufflinks -o cufflink_out3 -p 4 -G ../RefSeq_genes_hg19.gtf top_out3/accepted_hits.bam      
cufflinks -o cufflink_out4 -p 4 -G ../RefSeq_genes_hg19.gtf top_out4/accepted_hits.bam   

-G 转录组的参考文件

cufflinks输出结果如下:


cufflinks 输出结果

gene.fpkm gene的 fpkm 计算结果(基因表达量)
isoforms.fpkm isoforms (可以理解为 gene 的各个外显子)的 fpkm 计算结果(转录本表达量)
skipped.gtf 跳过的基因的转录本信息
transcripts.gtf 转录组的gtf,该文件包含Cufflinks的组装结果isoforms
fpkm 是衡量基因表达量的数值,一个基因有不同的内含子和外显子,不同的外显子之间可以形成不同的转录本,每一个转录本可以翻译成不同的蛋白,这些蛋白互相之间就是 isoforms(亚型),对于不同的转录本来说基因有一个表达量,这就是基因的 fpkm 和 isoform 的 fpkm 。

8、cuffdiff计算基因表达差异

ctrl_bam=top_out1/accepted_hits.bam,top_out2/accepted_hits.bam
treat_bam=top_out3/accepted_hits.bam,top_out4/accepted_hits.bam
label=hela_ctrl,hela_treat
cuffdiff -o diff_out1 -p 7 --labels $label --min-reps-for-js-test 2 ../RefSeq_genes_hg19.gtf $ctrl_bam $treat_bam

--lables 是文件的输入次序,如上 label=hela.ctrl,hela_treat;
--min 每个 treat 里有几个 repeat ,上边 ctrl_bam 是两个,要和 treat_bam 数量一致且>=2(最小重复)
然后比对到参考转录本上

运行结果如下:

cuffdiff 结果

主要用到genes_exp.diff文件后续分析
以上文件含义查看 cuffdiff 输出文件的笔记内容(有时间我补充上来)
至此 rnaseq 分析结束一部分,可视化会另外做

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容