转录组上游分析流程(三)

文摘   2024-10-25 14:53   日本  

环境部署——数据下载——查看数据(非质控)——数据质控——数据过滤(过滤低质量数据)

测序得到的原始序列含有接头序列和低质量序列,为了保证信息分析的准确性,需要对原始数据进行质量控制,得到高质量序列(Clean Reads),原始序列质量控制的建议标准为:

  1. 接头:去除含接头的reads;
  2. 序列质量:过滤去除低质量值数据,确保数据质量;
  3. N碱基比例:去除含有N(无法确定碱基信息)的比例大于5%的reads

数据过滤的两个工具:Trim_Galore 和 Fastp

数据过滤—Trim_Galore

Trim_Galore是一个用于处理高通量测序数据的开源工具。它的主要功能是进行 质量控制 和 接头(adapter)去除,以便得到高质量的下游数据分析结果。

单样本:
  1. --phred33: 指定 Phred 质量得分编码为 Phred+33。这是默认值,也是常用的 Illumina 测序质量得分编码。如果测序质量分数使用的是 Phred+64 编码,需要使用 --phred64。
  2. -q 20: 设置 最低质量阈值。这里的 20 表示修剪掉质量分数低于 20 的碱基。Phred score 为 20 意味着测序错误率小于 1%,即碱基识别的准确率为 99%。
  3. --length 36: 设置最低序列长度。修剪后,保留长度至少为 36 个碱基的序列,短于 36bp 的序列将被丢弃。
  4. --stringency 3:接头匹配的严格度。指定修剪时对于接头序列的严格度。这里的 3 表示在序列的 末端至少有 3 个碱基与接头完全匹配 才会被识别为接头。
  5. --fastqc:在修剪前和修剪后对 数据质量 进行 FastQC 分析。会生成一个详细的 HTML 报告,以供用户检查数据质量。
  6. --paired: 指定输入的数据是 双端测序数据。Trim Galore 会同步处理配对的两个 FASTQ 文件,以确保配对关系不会在修剪过程中丢失。
  7. --max_n 3: 如果序列中有超过 3 个 未确定的碱基 (N),则该序列会被丢弃。这是为了避免包含大量不确定碱基的序列影响下游分析。
  8. -o ./trim_galore/: 指定 输出目录,修剪后的文件和报告会保存在 ./trim_galore/ 目录中。
  9. ./rawdata/SRR23881762_1.fastq.gz 和 ./rawdata/SRR23881762_2.fastq.gz输入的双端测序数据文件。SRR23881762_1.fastq.gz 是 第一端序列,SRR23881762_2.fastq.gz 是 第二端序列。

trim_galore参数有很多具体可以--help查看或者点击参考资料中的链接学习。

trim_galore --phred33 -q 20 --length 36    \
--stringency 3 --fastqc --paired --max_n 3 \
-o ./trim_galore/                          \
./rawdata/SRR23881762_1.fastq        \
./rawdata/SRR23881762_2.fastq
# check一下
ls ./trim_galore
多样本:
  1. ls ./rawdata/*_1.fastq.gz; 使用 ls 列出 ./rawdata/ 目录下所有以 _1.fastq.gz 结尾的文件。这通常是双端测序数据的 第一端 FASTQ 文件。例如:./rawdata/SRR23881762_1.fastq.gz、./rawdata/SRR23881763_1.fastq.gz。
  2. | cut -d"/" -f3; 使用 cut 命令来按 "/" 分隔符拆分路径,提取第 3 个字段。假设 ls 输出为 ./rawdata/SRR23881762_1.fastq.gz,分隔后的部分是 SRR23881762_1.fastq.gz。-f3 表示提取分割后的第三部分,这里就是文件名。
  3. | cut -d "" -f1; 再次使用 cut,这次是按 "" 分隔符拆分文件名,提取第 1 个字段。对 SRR23881762_1.fastq.gz,分割结果为 SRR23881762。-f1 表示提取第一部分,这里就是样本 ID。
  4. 使用 > 将前面命令的输出重定向到 sample.ID 文件中。每个样本 ID 会以新行的形式写入该文件。
ls ./rawdata/*_1.fastq.gz | cut -d"/" -f3 | cut -d "_" -f1 > sample.ID
$ cat sample.ID
SRR23881762
SRR23881763
SRR23881764
写入脚本
cat sample.ID | while read id
do
  trim_galore --phred33 -q 20 --length 36    \
  --stringency 3 --fastqc --paired --max_n 3 \
  -o ./trim_galore/                          \
  ./rawdata/${id}_1.fastq.gz             \
  ./rawdata/${id}_2.fastq.gz
done
把命令提交到后台
  1. nohup:使用 nohup 运行命令可以使命令在后台持续运行,即使你关闭终端会话,命令也不会被中断。通常用于需要长时间运行的任务。
  2. bash trim_galore.sh:bash 用来执行脚本,trim_galore.sh 是要运行的脚本文件。trim_galore.sh 可能包含多个 trim_galore 命令或其他批处理命令。
  3. 1>trim_galore.log:1> 是将标准输出(即程序正常运行的信息)重定向到 trim_galore.log 文件。trim_galore.log 文件将保存所有的标准输出内容。
  4. 2>&1:2> 是将标准错误(即程序运行时的错误信息)重定向。2>&1 表示将标准错误(文件描述符 2)重定向到与标准输出相同的位置(文件描述符 1)。因此,所有的错误信息也会被记录在 trim_galore.log 文件中。
  5. &:& 用于将整个命令放到后台执行。
nohup  bash  trim_galore.sh  1>trim_galore.log  2>&1  &

数据过滤—fastp

单样本:

fastp 是一个快速且功能强大的质量控制(QC)工具,用于处理 FASTQ 格式的测序数据。

  1. -i ./rawdata/SRR23881762_1.fastq:-i 指定第一个FASTQ 文件的输入路径。这里指定了 ./rawdata/SRR23881762_1.fastq 作为第一个输入文件。
  2. -I ./rawdata/SRR23881762_2.fastq:-I 指定第二个FASTQ 文件的输入路径。这里指定了 ./rawdata/SRR23881762_2.fastq 作为第二个输入文件。这表示使用了双端测序的配对数据。
  3. -o ./fastp/SRR23881762_1.fastp.fq:-o 指定第一个(左端)输出文件的路径,用于保存质量控制和修剪后的数据。输出文件名为 SRR23881762_1.fastp.fq,保存在 ./fastp/ 目录下。
  4. -O ./fastp/SRR23881762_2.fastp.fq:-O 指定第二个(右端)输出文件的路径,用于保存质量控制和修剪后的数据。输出文件名为 SRR23881762_2.fastp.fq,保存在 ./fastp/ 目录下。
  5. -h ./fastp/SRR23881762.html:-h 指定一个 HTML 报告的输出路径,用于质量控制的可视化结果。报告保存为 SRR23881762.html,位于 ./fastp/ 目录中。
  6. -j ./fastp/SRR23881762.json:-j 指定一个 JSON 报告的输出路径,用于保存质量控制的详细统计信息。报告保存为 SRR23881762.json,位于 ./fastp/ 目录中。
  7. -l 36:-l 设置输出序列的最短长度阈值。低于 36 个碱基长度的序列将被过滤掉。这里指定了最短长度为 36。
  8. -q 20:-q 设置质量阈值(Phred 质量值)。低于 20 的碱基将被修剪。这意味着质量低于 20 的碱基被认为是低质量,会被修剪或丢弃。
  9. --compression=2:--compression 设置输出文件的压缩级别。这里使用了 2,表示中等压缩。范围一般为 0(无压缩)到 9(最大压缩)。
fastp -i ./rawdata/SRR23881762_1.fastq \
      -I ./rawdata/SRR23881762_2.fastq \
      -o ./fastp/SRR23881762_1.fastp.fq    \
      -O ./fastp/SRR23881762_2.fastp.fq    \
      -h ./fastp/SRR23881762.html             \
      -j ./fastp/SRR23881762.json             \
      -l 36 -q 20 --compression=2 
# check一下
ls ./fastp
多样本:
cat sample.ID | while read id
do
fastp -i ./rawdata/${id}_1.fastq.gz \
      -I ./rawdata/${id}_2.fastq.gz \
      -o ./fastp/${id}_1.fastp.fq.gz    \
      -O ./fastp/${id}_2.fastp.fq.gz    \
      -h ./fastp/${id}.html             \
      -j ./fastp/${id}.json             \
      -l 36 -q 20 --compression=2
done
nohup  bash  fastp.sh  1>fastp.log  2>&1  &

参考资料:

  1. Trim_galore:https://github.com/FelixKrueger/TrimGalore/blob/master/Docs/Trim_Galore_User_Guide.md
  2. fastp:https://github.com/OpenGene/fastp
  3. 生信技能树:https://mp.weixin.qq.com/s/dxoorMYHU-tlxMcICnTQTg
  4. 生信菜鸟团:https://mp.weixin.qq.com/s/Z5YNRkJ6tlY_tAeuUfL8SA

致谢:感谢曾老师/新叶老师以及生信技能树团队全体成员。

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟

- END -


生信方舟
执着医学,热爱科研。站在巨人的肩膀上,学习和整理各种知识。
 最新文章