写在前面
经过建库+测序的流程之后,我们希望得到样本中各个转录本的表达情况,以便进行后续的差异分析,可变剪切分析等等。但是测序仪只会生成一系列包含序列信息的fastq文件,因此,我们需要经过上游的处理以得到一份基因表达表。(通常在linux环境中完成)
正文
在过去 十几年的时间里中,用于分析序列读数以确定差异表达的计算方法的数量大大增加。但主要可以被归分于3中工作流程中:
A:使用参考基因组将reads映射到对应的基因组位置后进行读数的量化。归一化后进行差异基因或转录本的分析。
B:可在一步中从头组装转录本并量化丰度。后续步骤与A相同。
C:先进行reads的基因组映射,而后对转录本进行组装和后续的差异分析。
这次介绍的流程主要由A中的数据的质控(Trim_galore)、数据比对(Hisat2)、数据的定量(Featurecounts和cufflinks)三部分构成。(后续的差异分析在R中完成,因此另行介绍,每个软件的详细说明有空也会另行介绍)
1.数据的质控(Trim_galore)
测序完成后,分析的起点是数据文件,其中包含称为碱基的测序读数,通常采用FASTQ文件的形式。
文件中的每个序列通常由描述行(每条reads的唯一标识,由@开头)、序列数据行、分隔行和质量分数行四行组成,这些行按顺序重复出现,以表示不同的测序读取。
@names
CCCCCAAGGTCAGCCAGAAAGTCCTGGGAGATGTGCTGCATGTGCTTCCCCCACGTGGACACTTGGCGGTACTGCACCTCCGGATCAGCGAGGTCTGGATTTCTTCTCCCTGTCTCTTATACACATCTGACGCTGCCGACGAAGGCTTAG
+
GGFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFGGGGGGGGGGGGFFGGGGGGGGGGGGFGGGGGFGGGGGGFGGGGGGGGGGGGGGFGGGGGEGGGGGFGGGGGGGGGGFGFGGGGGGFGGGGGFGGFGGFGGFFGGGGGGGGEGGFG
根据上一篇测序的介绍,我们知道reads由目的片段和两端的接头序列构成。
测序由5'端开始,第一个adapter在数据输出时去除,由于测序读长的限制,第二个adapter通常测不到。
但是如果插入片段本身较短,测序会测穿,即会得到目的片段后面的adapter序列。
因此,第一步就是使用Trim_galore在去除低质量碱基8的同时,查找并删除read序列的3'端的接头序列。
trim_galore -j 40 -q 20 --gzip --length 30 -o <输出文件> --paired <read1.fastq> <read2.fastq> 2>&1 XX.log
(在这一步中可以手动选择生成fasqc质控文件,来检测reads质量情况)
2.数据的比对(Hisat2)
在得到干净的目的序列之后,需要将序列读取映射到已知的转录组(或基因组注释)中,将每个读取的序列转换为一个或多个基因组坐标。(如果没有包含已知外显子边界的高质量基因组注释,则需要从头转录本组装工具)
hisat2的使用由两个部分组成:
# 1.建立索引
hisat2-build <参考基因组 XX.fa> <索引名 genome>
#序列比对
hisat2 -p 60 -x <索引文件名 genome> -1 <干净的read1.fastq> -2 <干净的read2.fastq> --dta-cufflink | samtools sort -O bam -o <输出文件名.bam> 2>&1 aligned.log
由于hisat2默认输出为未压缩的sam格式文件,为了节省储存空间以后加速后续的处理,通常会使用samtool进行格式的转化。
3.转录本丰度的定量(featureCounts)
一旦reads被映射到基因组或转录组位置,分析过程的下一步就是将它们分配给基因或转录本,以确定丰度测量。
featureCounts -T 30 -a <基因组注释 XX.gtf> -o <输出文件名> <aliged.bam> 2>&1 featureCounts.log
为了实现转录本表达水平的组间比较,我们需要对转录本丰度进行矫正,常用的矫正方法有RPKM、FPKM、TPM。可以使用cufflinks从bam比对文件中直接计算FPKM值。
cufflinks -p 80 -G <基因组注释 XX.gtf> -o <输出文件名> <aliged.bam> 2>&1 cufflinks.log
自此,我们就将fastq中的序列信息变成了样本中转录本的表达矩阵。后续的分析可以在R环境中进行。