转录组分析 | fastqc进行质控与结果解读

时间:2022-07-25
本文章向大家介绍转录组分析 | fastqc进行质控与结果解读,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

做转录组测序,通常公司是不给分析的,分析也要自己多花钱,当然不同公司收费不一样,有的可能带有简单的分析。之前测序的第一家公司给了简单的分析,后面换了一家测序公司,不给分析。所以我得自己分析啦,在分析的时候顺便写一下教程。分享给大家,要分析转录组数据,首先得知道测序原理【参考文章:illumina、Sanger、第三代和第四代测序技术原理】,还有就是了解生信分析中一些文件格式【参考文章:生信中常见的数据文件格式】,当然,还有其他一些生物背景知识,除此以外,还需要会Linux,这个是一个漫长的学习过程。本文就介绍转录组数据分析的第一步分析:质控,主要就是fastqc这个软件的使用和结果解读。

一.fastqc介绍

拿到原始数据后我们首先采用fastqc程序进行质控,看原始数据质量情况,fastqc会生成一个html结果报告,根据图形化界面,我们可以判断下机数据情况是否符合分析要求。我们测序得到的是带有质量值的碱基序列fastq格式。所以这里你需要先了解生信中常见的数据文件格式 。

FastQC的官网:http://www.bioinformatics.babraham.ac.uk/projects/fastqc/

FastQC的下载地址:http://www.bioinformatics.babraham.ac.uk/projects/download.html#fastqc

但在Linux中,通常我们是搭建环境安装分析流程相关的软件的,具体参考文章:Linux系统下Anaconda的安装和使用教程

将测序的数据上传到自己的服务器或者虚拟机中,我这里上传数据到目录:/data/RNAseq下。总共12个文件,27G。

首先,我介绍一下fastqc的用法:

   fastqc seqfile1 seqfile2 .. seqfileN
   fastqc [-o output dir] [--(no)extract] [-f fastq|bam|sam]
          [-c contaminant file] seqfile1 .. seqfileN

重要参数:

 -o --outdir 输出目录,需自己创建目录
 –(no)extract 是否解压输出文件,默认是自动解压缩zip文件。加上–noextract不解压文件。
 -f 指定输入文件的类型,支持fastq|bam|sam三种格式的文件,默认自动识别。
 -t --threads选择程序运行的线程数,即同时处理的文件数目。
 -c --contaminants,污染物选项,输入的是一个文件,格式是Name [Tab] Sequence,里面是可能的污染序列,如果有这个选项,FastQC会在计算时候评估污染的情况,并在统计的时候进行分析,一般用不到。

FastQC读取一组序列文件,并从每个文件生成质量控制报告,该报告由许多不同的模块组成,每个模块将帮助识别数据中可能存在的不同类型的问题。 如果命令行上没有指定要处理的文件,那么程序将作为交互式图形应用程序启动。如果在命令行上提供了文件,那么程序将运行而不需要用户交互。在这种模式下,它适合纳入一个标准化的分析管道。

更多参数可以查看帮助文档,我这里翻译了一部分。

-h --help :打印此帮助文件并退出 -v --version:打印程序的版本并退出 -o --outdir:在指定的输出目录中创建所有输出文件。 请注意,这个目录必须存在,因为程序不会创建它。如果没有设置此选项,则在处理的序列文件所在的目录中创建每个序列文件的输出文件。 --casava:文件来自原始Casava输出。同一采样组中的文件(仅组号不同)将作为一组文件进行分析,而不是单独分析。在标题中设置了筛选器标志的序列将从分析中排除。文件必须与Casava为其指定的名称相同(包括被gzip压缩并以.gz结尾),否则它们将无法正确分组在一起。 --nano :文件来自nanopore序列并且是fast5格式。在这种模式下,您可以将目录传递给进程,程序将接收这些目录中的所有fast5文件,并根据所有文件中的序列生成单个输出文件。 --nofilter :如果运行-casava,那么在执行QC分析时,不要删除由casava标记的不良质量。 --extract :如果设置,则压缩后的输出文件将在创建后在同一目录中解压。默认情况下,fastqc在非交互模式下运行时将设置此选项。 -j --java:提供要用于启动fastqc的java二进制文件的完整路径。如果没有提供,则假定java在您的路径中。 --noextract:创建输出文件后,不要解压缩它。如果在非交互模式下运行时不希望解压缩输出,则应该设置此选项。 --min_length:为报告中显示的序列长度设置一个人为的下限。只要您将其设置为大于或等于最长读取长度的值,那么这将是用于创建读取组的序列长度。这对于从读取长度可变的数据集中生成可直接分解的统计信息非常有用。 -f --format:绕过正常序列文件格式检测,并强制程序使用指定的格式。有效的格式是bam、sam、bam_mapped、sam_mapped和fastq。 -t --threads:指定可同时处理的文件数目。每个线程将被分配250MB的内存,所以您不应该运行超过可用内存应付的线程,并且在32位机器上不应该超过6个线程 -k --kmers :指定要在Kmer内容模块中查找的Kmer的长度。指定的Kmer长度必须在2到10之间。如果未指定,默认长度为7。 -q --quiet:在标准输出上压缩所有进度消息,只报告错误。 -d --dir:选择要用于生成报表映像时写入的临时文件的目录。如果未指定,默认为系统临时目录。

二.fastqc质控

我这里将路径已经切换到了数据所在文件路径:data/RNAseq,数据在当前环境目录下,我打算输出结果路径:/root/HGJ_RNAseq/ ,你可以自定义,事先先创建好文件夹。质控只需要一行命令就搞定,注意,星号前面有一个空格,前面是定义的输出路径,后面是分析的文件名称。

fastqc -o /root/HGJ_RNAseq/ *.fq.gz

然后就开始一个文件一个文件处理,时间长短和文件大小、个数以及计算机配制有关,我这里的数据30分钟左右。

处理结束后,查看输出路径下的文件信息。

 ll -h /root/HGJ_RNAseq/

我们可以看到,一个数据文件处理后会得到2个文件,一个html格式文件和一个zip的压缩文件,zip解压后和html格式文件内容是一样的,只需要下载html格式文件到本地,用浏览器打开查看。

三.结果解读

FastqC有3种结果:绿色代表PASS;黄色代表WARN;红色代表FAIL。当出现黄色时说明需要查看结果。当然,我这里没有黄色的结果。

1.Basic Statistics

Basic statistics是该fastq一些基本信息,主要有

Filename:文件名

File type: 文件类型

Encoding:测序平台的版本和相应的编码版本号,用于计算Phred反推error P时用

Total Sequences: 输入文本的reads的数量

Sequence length: 测序长度

%GC: GC含量,表示整体序列的GC含量,由于二代测序GC偏好性高,且深度越高,GC含量会越高。

2.Per base sequence quality

横轴为read长度,纵轴为质量得分,Q = -10*log10(error P)。关于错误率计算,可参考文章【生信中常见的数据文件格式】。柱状表示该位置所有序列的测序质量的统计,柱状是25%~75%区间质量分布,error bar是10%~90%区间质量分布,蓝线表示平均数。一般要求所有位置的10%分位数大于20,即大于最多允许该位置10%的序列低于Q20。当任何碱基质量低于10,或者任何中位数低于25报WARN,需注意;当任何碱基质量低于5或者任何中位数低于20报FAIL。

3.Per tile sequence quality

每个tail测序情况,横轴表示碱基位置,纵轴表示tail的index编号,这个图主要是为了防止在测序过程中某些tail受到不可控因素的影响而出现测序质量偏低,蓝色表示测序质量很高,暖色表示测序质量不高。当某些tail出现暖色,在后续的分析种把该tail测序结果全部去除。我这里的样本测序质量还是不错的。

4.Per sequence quality scores

横轴表示Q值,纵轴表示每个值对应的read数目,当测序结果主要集中在高分中,证明测序质量良好。

5.Per base sequence content

统计在序列中的每一个位置,四种不同碱基占总碱基数的比例,检测有无AT、GC分离的现象。横轴为位置,纵轴为百分比。正常情况下四种碱基出现的频率应是接近的,且没有位置差异,因此好的样品中四条线应该是平行且接近的,由于刚开始测序仪状态不稳定,造成前几个碱基有波动。在 reads 开头出现碱基组成偏离往往是我们的建库操作造成的,比如建 GBS 文库时在 reads 开头加了 barcode;barcode 的碱基组成不是均一的,酶切位点的碱基组成是固定不变的,这样会造成明显的碱基组成偏离;在 reads 结尾出现的碱基组成偏离,往往是测序接头的污染造成的。当所有位置的碱基比例一致现出偏差时,即四条线平行且分开,代表文库有偏差,或测序中的系统误差;当部分位置碱基的比例出现偏差时,即四条线在某些位置纷乱交织,则有overrepresented sequence的污染。当任一位置的A/T比例与G/C比例相差超过10%,报"WARN";当任一位置的A/T比例与G/C比例相差超过20%,报"FAIL"。

6.Per sequence GC content

横轴表示GC含量,纵轴表示不同GC含量对应的read数,蓝线是理论分布(正态分布,通过从所测数据计算并构建理论分布),红色是实际情况,两个比较接近判为好的。曲线形状的偏差往往是由于文库的污染或是部分reads构成的子集有偏差(overrepresented reads);形状接近正态分布但偏离理论分布的情况提示我们可能有系统偏差;如果出现两个或多个峰值,表明测序数据里可能有其他来源的DNA序列污染,或者有接头序列的二聚体污染。偏离理论分布的reads超过15%时,报"WARN";偏离理论分布的reads超过30%时,报"FAIL"。

7.Per base N content

当出现测序仪不能分辨的碱基时会产生N,横轴为碱基分布,纵轴为N比率,当任一位置N的比率超过5%报WARN,超过20%报FAIL。我这里几乎没有。

8.Sequence Length Distribution

理论上每次测序仪测出的read长度是一致的,但是由于建库等因素通常会导致一些小片段,如果报FAIL,表明此次测序过程中产生的数据不可信。

9.Sequence Duplication Levels

统计序列完全一致的reads的频率,横轴表示重复的次数,纵轴表示重复的reads的数目。一般测序深度越高,越容易产生一定程度的重复序列。

10.Overrepresented sequences

当有某个序列大量出现时,超过总reads数的0.1%时报WARN,超过1%时报FAIL。

11.Adapter Content

横轴表示碱基位置,纵轴表示百分比。当fastqc分析时没有选择参数-a adapter list时,默认使用图例中的4种通用adapter序列进行统计。若有adapter残留,后续必须去接头。

以上就是一个完整的fastqC结果报告的简单说明,更多信息可参考:http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/

结果解读部分来自文章:https://blog.csdn.net/gateswell/article/details/78858579 ,对此感谢原作者。