在illumina的测序文件中,采用双端测序(paired-end),一个样本得到的是seq_1.fastq.gz和seq_2.fastq.gz两个文件,每个文件存放一段测序文件。在illumina的测序的cDNA短链被修饰为以下形式(图源见水印):
两端的序列是保护碱基(terminal sequence)、接头序列(adapter)、索引序列(index)、引物结合位点(Primer Binding Site):其中 adapter是和flowcell上的接头互补配对结合的;index是一段特异序列,加入index是为了提高illumina测序仪的使用率,因为同一个泳道可能会测序多个样品,样品间的区分就是通过index区分。参考:illumina 双端测序(pair end)、双端测序中read1和read2的关系。
在illumina公司测得的序列文件经过处理以fastq文件协议存储为*.fastq格式文件。在fastq文件中每4行存储一个read。
第一行:以@开头接ReadID和其他信息,分别介绍了
第二行:read测序信息
第三行:规定必须以“+”开头,后面跟着可选的ID标识符和可选的描述内容,如果“+”后面有内容,该内容必须与第一行“@”后的内容相同
第四行:每个碱基的质量得分。记分方法是利用ERROR P经过对数和运算分为40个级别分别与ASCII码的第33号!
和第73号I
对应。用ASCII码表示碱基质量是为了减少文件空间占据和防止移码导致的数据损失。fastq文件预览如下:
可以通过云盘的离线下载来加速下载进程
Homo_sapiens.GRCh38.dna.primary_assembly.fa
apt-get
、miniconda
等方式来安装。由于miniconda的便捷行,使用conda进行如下软件的安装。fastqc ,multiqc , trimmomatic, cutadapt, trim-galore
star , hisat2 , tophat , bowtie2 , bwa , subread
htseq , bedtools, salmon, featurecount
conda -v
conda create -n rna python=2
(许多软件依赖python2环境)环境退出:conda deactivate
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/pkgs/free/
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/msys2/
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/menpo/
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/peterjc123/
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/pkgs/main/
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.cloud.tencent.com/anaconda/cloud/pytorch/
conda install
会自动安装软件和软件环境。值得注意的是需要在rna的环境变量下安装以上软件。激活rna环境变量的代码:source activate rna
使用命令fastqc -o
来进行质量报告。每个fastqc文件会获得一个质量分析报告,来描述此次RNA-seq的测序质量。
获取质量报告如图:
从read水平来总览,判断测序质量。
Encoding :测序平台的版本,因为不同版本的 error p的计算方法不一样。
Total sequence:测序深度。一共测序的read数。是质量分析的主要参数。
Sequence length:测序长度。
%GC:GC碱基含量比,一般是物种特异性,比如人类是42%左右。
横坐标: 第1-100个测序得到的碱基
纵坐标: 测序质量评估。这里的Q=-10*lg10(error P),即20%代表1%的错误读取率,30%代表0.1%的错误读取率
箱型图: 红色线,是某个顺序下测序碱基所有测序质量的中位数。黄色块,是测序质量在25%-75%区域。蓝色线,平均数。
一般要求: 测序箱型图10%的线大于Q=20。Q20过滤法。
横坐标:同上。
纵坐标:tail的index编号。
目的:防止测序过程中某些tail受不可控因素测序质量低。
标准:蓝色表示质量高,浅色或暖色表示质量低,后续的分析可以去除低质量tail。
从read的总体测序质量分布来判定此次的测序质量,是质量分析的重要标准之一。
横坐标:表示read的测序质量Q=-10*lg10(error P)。
纵坐标:表示在该Q值下的read 的数量
标准:需要集中在高分区
横坐标:1-100的测序碱基位置
纵坐标:碱基百分比
标准:理论上,ATCG碱基的分布应该差别不大,即四条线应该大致平行状态。如果AT或CG差异超过10%,此项检测是危险的。一般是测序机器前几个碱基测序时候因为状态调整导致测序略有偏差,如果前几个碱基偏差较大,可以在后期将前几个碱基切掉。
统计read的碱基长度,本例理论上测序应该全是100bp。
横坐标:是read的碱基长度
纵坐标:是该长度下的read数量
横坐标:每个read的平局GC含量占比
纵坐标:一定GC比下的read数
标准:蓝色是理论值,红色是真实值。两者接近是比较好的状态。如果有双峰,可能混有了其他物种的DNA序列。
一般测序在初步生成fastq文件时候,adapter会被去除,但是有的会没有去除或者遗漏部分adapter。所以这一步是检测RNA-seq测序过程中adapter是否去除。如果没有去除会严重影响后续的比对工作。没有去除的adapter在质量处理环节会被处理掉。
multiqc可以对几个fastqc报告文件进行总结并汇总到一个报告文件中,以更直观到防止展示。使用方法
multiqc <analysis directory>
数据处理内容:fiter the bad quality reads and remove adaptors.
处理软件:数据到处理可以使用多款软件,trim_galore在各文献中表现良好。
trim_galore:可以处理illumina,nextera3,smallRNA测序平台的双端和单端数据,包括去除adapter和低质量reads。
trim_galore的参数: trim_galore的参数在处理过程比较重要:
trim_galore [options]
--quality #设定phred quality阈值。默认20(99%的read质量),如果测序深度较深,可以设定25
--phred33 #设定记分方式,代表Q+33=ASCII码的方式来记分方式。这是默认值。
--paired # 对于双端结果,一对reads中若一个read因为质量或其他原因被抛弃,则对应的另一个read也抛弃。
--output_dir #输出目录,需确保路径存在并可以访问
--length #设定长度阈值,小于此长度会被抛弃。这里测序长度是100我设定来75,感觉有点浪费
--strency #设定可以忍受的前后adapter重叠的碱基数,默认是1。不是很明白这个参数的意义
-e #设定默认质量控制数,默认是0.1,即ERROR rate大于10%的read 会被舍弃,如果添加来--paired参数则会舍弃一对reads
#如果是采用illumina双端测序的测序文件,应该同时输入两个文件。
构建命令:
trim_galore -output_dir clean --paired --length 75 --quality 25 --stringency 5 seq_1.fasq.gz seq_2.fastq.gz
对过滤后对文件进行质量分析。观察过滤结果。同样使用fastqc和multiqc两个软件进行质量分析。得到结果如下:
ENCFF108UVC_val_1_fastqc的质量报告
观察到总read数减小和总体read的质量变高,小部分adapter也被去除。更具体过滤和trim_galore的数据处理情况可以在seq_trimming_report.txt中查看。
SUMMARISING RUN PARAMETERS
==========================
Input filename: ENCFF108UVC.fastq.gz
Trimming mode: paired-end
Trim Galore version: 0.5.0
Cutadapt version: 1.18
Quality Phred score cutoff: 25
Quality encoding type selected: ASCII+33
Adapter sequence: 'AGATCGGAAGAGC' (Illumina TruSeq, Sanger iPCR; auto-detected)
Maximum trimming error rate: 0.1 (default)
Minimum required adapter overlap (stringency): 5 bp
Minimum required sequence length for both reads before a sequence pair gets removed: 75 bp
Output file will be GZIP compressed
This is cutadapt 1.18 with Python 2.7.6
Command line parameters: -f fastq -e 0.1 -q 25 -O 5 -a AGATCGGAAGAGC ENCFF108UVC.fastq.gz
Processing reads on 1 core in single-end mode ...
Finished in 1038.93 s (40 us/read; 1.50 M reads/minute).
=== Summary ===
Total reads processed: 26,038,229
Reads with adapters: 714,205 (2.7%)
Reads written (passing filters): 26,038,229 (100.0%)
Total basepairs processed: 2,603,822,900 bp
Quality-trimmed: 82,577,636 bp (3.2%)
Total written (filtered): 2,513,138,030 bp (96.5%)
由报告可以知道处理的具体详情。
概况:使用处理后的fastq文件和基因组与转录组比对,确定在转录组或者基因组中的关系。在转录组和基因组的比对采取的方案不同。分别是ungapped alignment to transcriptome
和Gapped aligenment to genome
。
软件:hisat2
和STAR
在比对回帖上都有比较好的表现。有文献显示,hisat2在纳伪较少但是弃真较多,但是速度比较快。STAR就比对而言综合质量比较好,在长短reads回帖上都有良好发挥。由于hisat2的速度优势,选择hisat2作为本次比对的软件。
在比对之前首先要先进行索引文件的获取或者制作。
公式构建根据hisat2 的使用说明书构建了以下公式:
hisat2 -p 6 -x <dir of index of genome> -1 seq_val_1.fq.gz -2 seq_val_2.fq.gz -S tem.hisat2.sam
参数说明:
-p #多线程数
-x #参考基因组索引文件目录和前缀
-1 #双端测序中一端测序文件
-2 #同上
-S #输出的sam文件
说明:在比对过程中,hisat会自动将双端测序匹配同一reads并在基因组中比对,最后两个双端测序生成一个sam文件。比对回帖过程需要消耗大量时间和电脑运行速度和硬盘存储空间。5G左右fastq文件比对回帖过程消耗大概一个小时,生成了17G的sam格式文件。回帖完成会生成一个回帖报告。
SAM文件和BAM文件
samtools 是针对比对回帖的结果——sam和bam格式文件的进一步分析使用的软件。sam格式文件由于体量过大,一般都是使用bam文件来进行存储。由于bam文件是二进制存储所以文件大小比sam格式文件小许多,大约是sam格式体积的1/6 。
samtools将sam转换bam文件
samtools view -S seq.sam -b > seq.bam #文件格式转换
samtools sort seq.bam -0 seq_sorted.bam ##将bam文件排序
samtools index seq_sorted.bam #对排序后对bam文件索引生成bai格式文件,用于快速随机处理。
至此一个回帖到基因组对RNA-seq文件构建完成。这个seq_sourted.bam
文件可以通过samtools
或者IGV( Integrative Genomics Viewer)独立软件进行查看。在IGV软件中载入seq_sourted.bam
文件。
可以很直观清晰地观察到reads在基因组中的回帖情况和外显子与内含子的关系。
**samtools falgstate **:统计bam文件中比对flag信息,然后输出比对结果。
公式:
samtools flagstate seq_sorted.bam > seq_sorted.flagstate
结果如下
47335812 + 0 in total (QC-passed reads + QC-failed reads)
3734708 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
46714923 + 0 mapped (98.69% : N/A)
43601104 + 0 paired in sequencing
21800552 + 0 read1
21800552 + 0 read2
42216752 + 0 properly paired (96.82% : N/A)
42879780 + 0 with itself and mate mapped
100435 + 0 singletons (0.23% : N/A)
337412 + 0 with mate mapped to a different chr
308168 + 0 with mate mapped to a different chr (mapQ>=5)
计算RNA-seq测序reads对在基因组中对比对深度。
计数工具:feature counts
公式构建:
feature counts -T 6 -t exon -g gene_id -a <gencode.gtf> -o seq_featurecount.txt <seq.bam>
参数:
-g # 注释文件中提取对Meta-feature 默认是gene_id
-t # 提取注释文件中的Meta-feature 默认是 exon
-p #参数是针对paired-end 数据
-a #输入GTF/GFF 注释文件
-o #输出文件
接下来是表达矩阵构建。在R语言环境下分析。
共勉!欢迎大家踊跃交流,讨论,质疑,批评。留言必回。