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

火山图、热图在 R 中可视化部分已更新

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

电脑配置

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

运行环境python2.7

原始数据如下:

原始文件

包括四个文件:

bowtie2_hg19 index 文件(这里已经提前使用bowtie2建立好了index文件可以直接使用)

raw_data illumina 双端测序原始文件(对照组和实验组各两个,就是八条测序文件)

rRNA rRNA index 序列文件(用于去除 rRNA 的影响)

分析流程

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 是传递给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 分析结束一部分,可视化会另外做

linux转录组分析,完整转录组RNAseq分析流程(tophat2+cufflink+cuffdiff)相关推荐

  1. 转录组分析_转录组分析 | 使用Stringtie对数据进行下游处理

    TCGA | GEO | 文献阅读 | 数据库 | 理论知识 R语言 | Bioconductor | 服务器与Linux 接前文: 转录组分析 | fastqc进行质控与结果解读 转录组分析 | 使 ...

  2. 代码分析 | 单细胞转录组Normalization详解

    标准化加高变基因选择 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 ( ...

  3. RNA-seq工作流程:基因水平的探索性分析和差异表达

    RNA-seq工作流程:基因水平的探索性分析和差异表达 迈克尔·爱1,西蒙·安德斯3,弗拉迪斯拉夫·金4和沃尔夫冈·胡贝尔4 1美国北卡罗莱纳州教堂山UNC-Chapel Hill生物统计学系 2美国 ...

  4. 代码分析 | 单细胞转录组clustering详解

    聚类可视化 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重磅综述: ...

  5. 代码分析 | 单细胞转录组数据整合详解

    两种整合方法详解 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重磅 ...

  6. 代码分析 | 单细胞转录组质控详解

    前言 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重磅综述:三万字 ...

  7. Nature子刊:HUMAnN2实现宏基因组和宏转录组种水平功能组成分析

    HUMAnN2实现宏基因组和宏转录组种水平功能组成分析 Species-level functional profiling of metagenomes and metatranscriptomes ...

  8. Nature Method:HUMAnN2实现宏基因组和宏转录组种水平功能组成分析

    文章目录 HUMAnN2实现宏基因组和宏转录组种水平功能组成分析 简介 热心肠日报导读 摘要 主要图表 图1. HUMAnN2分层式搜索在同类软件中准确率最高 图2. 人类核心微生物组的贡献多样性 图 ...

  9. 真核转录组(denovo/resequencing)及案例分析

    参考: 转录组文章的常规套路 文章解读:<Science>小麦转录组研究文章 转录组数据饱和度评估方法 Paper这个东西是多么的诱人,可以毕业,可以评职称,可以拿绩效. 现在的文章都是有 ...

最新文章

  1. leetcode 378. Kth Smallest Element in a Sorted Matrix | 378. 有序矩阵中第 K 小的元素(小根堆)
  2. F - GCD or MIN(数论)
  3. 看动画轻松理解时间复杂度(一)
  4. 容器编排技术 -- Kubernetes kubectl run 命令详解
  5. 树形结构递归_递归和匿名函数
  6. [编织消息框架][优化系统]突破连接上限(上)
  7. 面向对象(二) 继承/里氏替换
  8. GC详解及Minor GC和Full GC触发条件
  9. 其他手机安装鸿蒙系统,不是华为手机,也能用上鸿蒙系统
  10. EnterCriticalSection 多线程操作相同数据遇到的问题(线程锁)
  11. 对setTimeout()第一个参数是字串的深入理解以及eval函数的理解
  12. linux之替换开机logo
  13. oracle plsql破解
  14. 创新声卡KX驱动安装、调试、使用教程
  15. Python必学的OS模块详解
  16. HCIA~以太网链路聚合与交换机堆叠、集群
  17. 工业交换机的功率和网络管理方法
  18. uplink端口能接路由器吗_交换机常见的网络故障,你知道如何解决吗?
  19. 【推荐】700套高端简历模板合集
  20. 若依管理系统windows本地运行教程

热门文章

  1. 计算机单位pt,iOS尺寸单位pt、ppi与px之间换算关系
  2. 内部稽核与内部控制管理体系关系的探讨
  3. TL-R473P-AC【搭配面板式AP组网设置方法】
  4. 非拜占庭容错共识算法
  5. 分布式专题——接口幂等性实战
  6. 【Java并发编程】并发编程大合集
  7. SQL SEVER登录失败,无法连接服务器或已成功与服务器建立连接,但是在登录过程中发生错误。(Win10版本,SQL 2019)
  8. Oracle的Numer类型与C,C#数据类型对应关系
  9. 世界上最成功的人一开始是个程序员-《程序员大本营》1999版
  10. A-level 课程:最受欢迎和最不受欢迎的学科