目前我是为了复现上课的内容,通过复现完成对所学内容的巩固。而上课的时候,因为人多,我们的服务器大小和速度是有限的,所以很多数据是已经提供好了。这里我先记录一下哪些是老师们已经准备好了的,哪些是之前已经跟着做的,将来等我自己租服务器处理我的数据的时候,我将对那部分内容做进一步的复现,从而完成真正的从头到尾的转录组分析。
在转录组上游分析之前,我们已经用 conda 安装了很多软件,比如 fastqc,hisat2 等等。所以这是已经准备好的内容,上课时我们要做的就是 conda activate rna,在 rna 这个环境中做分析。对于 CPU 线程,老师已经帮我们看过了,我们是八核,所以一般线程我们是 2-6 个的。我们处理的是人的数据,老师们已经准备好了人的基因组数据 GRCh38.104,上课的时候,有个同学试着自己解压了基因组数据,结果由于空间不够,结果报错了。老师们还准备好了 fastq.gz 文件(这些文件是老师们做过处理了的,非常小)。
公司给的测序原始数据是 fastq.gz,也就是我们说的 fastq 文件,这个文件是每四行代表一个 read,第一行是标题行,@SRR 开头,应该是包含了测序接头的信息;第二行是真正的测序的序列;第三行是 + 开始,一般没有内容,如果有的话也是重复了第一行的内容,第四行是数据质量,一般是 ASCII 编码之类的,一般要求数据是 Q30,也就是 3 个 9, 99.9% 没有不确定的碱基才能算比较好的数据。
那么既然第二行是真正的 reads 序列,如何知道这样的 reads 有多少行,有多少碱基呢?有好几种方法。
首先是计算有多少行这样的 reads,我比较喜欢用的是:zless SRR* | paste - - - - | wc -l #这里 SRR* 表示的是具体的某个 fastq.gz 文件,paste - - - - 这个比较有趣,有 - - - - 四个,表示四列,意思是每一行按照这个顺序重新变为列,由于 fastq 是这样的每四行是一组 reads,这样的话,相当于是把 fastq 的每行有规律的变成相应的列,这样的话,所有的第二列就都是读取的序列了。wc 是统计文本,也就是 word count,-l 是行数。另外一个是 zless SRR* | sed -n '2~4p' | wc -l # 这句话是说每四行取第二行的内容并打印出来,这里 -n 和 p 是重要的,n 表示只打印你要求的内容,禁止显示所有内容,p 是打印,我试过没有 p 的话,是报错的,没有 n 的话,出来的结果也不是你想要的,因为它不是按照你想的显示每四行的第二行。当然如果只是想知道有多少 reads 的话,还可以根据第一行的特征 @SRR 来提取,zless SRR* | grep '@SRR' | wc - l 或 zless SRR* | grep '@SRR' -c 因为 grep -c 是统计行数。
然后是计算碱基数,也就是记录 fastq 第二行有多少碱基,这个要注意的每一行的末尾是 ‘\n’,也就是换行符,所以要减去这个。去掉符号是用 tr -d ‘\n’,因此可以用 zless SRR* | paste - - - - | cut -f 2 | tr -d '\n' | wc -c #这里的 cut -f 的 cut 是文本切割, -f 表示按列输出,f 表示字段 field,我暂时先理解为列。tr 是字符替换,tr -d 是去掉指定字符,这里我们要去掉换行符 \n。
当然了,上面这些是老师为了让我们熟悉 fastq 文件,并且熟练之前的 Linux 语言。真正对 rawdata 进行处理是用成熟的软件。下面讲如何做处理。
首先是数据质控 fastqc,这个工作的目的我的理解是大体了解一下测序的质量,比如 reads 的碱基数,质量如何,是 Q20 还是 Q30 这样的。一般来说,我们不希望占用我们自己的终端,所以可以用 nohup & 的命令来后台运行。代码是 nohup fastqc -t 6 -o ./ SRR*.fastq.gz 1>qc.log 2>&1 &,这个代码是用 6 个线程, -o 是 output,表示结果输出到的文件夹,./ 表示数据输出到当前这个目录,然后我们就对当前目录的所有 fastq.gz 进行分析,1是标准输出,输出的文件是 qc.log,也就是如果我们运行正常的话,那么我们会把我们的运行过程记录子啊 qc.log,然后是 2>&1,其中 2 表示标准错误,也就是如果有错误也放到 1 所在的位置,也就是 qc.log。这里的 1 和 2 是 Linux 的标准输出的固定语法。当然了,如果你不急着同时做其它处理,那就 fatsqc -t 6 -o ./ SRR*.fastq.gz 就可以了。然后 cat qc.log,看看处理的情况,最下面是 Approx 100% complete for SRR1039512_2.fastq.gz 表示完成啦。MultiQC 能够整合所有的 fastqc 的 结果,代码是 multiqc *.zip -o ./,出来的结果是 multiqc_report.html。
这时候就可以 ls 看看你当前文件夹的内容了,肯定是有 qc.log,SRR*.fastqc.zip,SRR*.fastqc.html,我们可以看 html 也就是用网页的方式看结果。我们是用的 Termius 这个软件连接服务器的,它有 SFTP,点击它,右侧是服务器的文件,左侧是自己的电脑的各盘,拖动文件就可以下载或者上传的。我们看看其中的任意的 fastqc.html,里面有 basic statistics,这里面是最基本的数据,比如总共有多少 reads 啦,QC% 之类的,是很基本的数据。然后就是 Per base sequence quality,这个就是 fastq 的第四行的质控的数据,纵坐标最高是 40,横坐标是各个 reads 各碱基数,每个位置的碱基的质量用箱线图表示,最好的数据质量当然是 Q40,也就是四个九,99.99% 都是好的,没有出现错误碱基或者测不到的碱基。其它内容我觉得大同小异,我理解就是看碱基的质量。multiqc_report.html 的结果和前面的差不多,只是能所有的都能一起看,比较方便。

这就是转录组数据质控阶段的结果。