Skip to content

NGS Lab1 (数据下载与质量评估)

约 2544 字大约 8 分钟

FastQCMultiQCLinuxNGS

2024-10-21

数据库网站

数据下载工具

质量评估工具

安装 SRA Toolkit

( 挑个你喜欢的方法安装就好~ )

  • 方法一:anacondamicromamba (推荐)
  • 方法二:下载预编译的二进制文件

使用 anaconda 安装

  • 新建虚拟环境 sra-tools
conda create -n sra-tools
# 等待一会儿后输入 y , 然后回车
  • 进入虚拟环境 sra-tools
conda activate sra-tools
  • 安装 SRA Toolkit
# 注意!如果不添加 -c conda-forge, 则默认无法下载最新版本的 sra-tools
conda install -c bioconda -c conda-forge sra-tools
# 等待一会儿后输入 y , 然后回车

# 检验是否安装成功
srapath --version
# 我的输出是: 
# srapath : 3.1.1

使用 micromamba 安装

  • 新建虚拟环境 sra-tools
# 和 anaconda 不同, micromamba 在新建虚拟环境的时候需要加上 env
micromamba env create -n sra-tools
  • 进入虚拟环境 sra-tools
micromamba activate sra-tools
  • 安装 SRA Toolkit
# 注意!如果不添加 -c conda-forge, 则默认无法下载最新版本的 sra-tools
micromamba install -c bioconda -c conda-forge sra-tools
# 等待一会儿后输入 Y , 然后回车

# 检验是否安装成功
srapath --version
# 我的输出是: 
# srapath : 3.1.1

安装 FastQC

( 挑个你喜欢的方法安装就好~ )

  • 方法一:anacondamicromamba (推荐)
  • 方法二:下载预编译的二进制文件

使用 anaconda 安装

  • 新建虚拟环境 fastqc
conda create -n fastqc
# 等待一会儿后输入 y , 然后回车
  • 进入虚拟环境 fastqc
conda activate fastqc
  • 安装 FastQC
conda install -c bioconda fastqc
# 等待一会儿后输入 y , 然后回车

# 检验是否安装成功
fastqc --version
# 我的输出是: 
# FastQC v0.12.1

使用 micromamba 安装

  • 新建虚拟环境 fastqc
# 和 anaconda 不同, micromamba 在新建虚拟环境的时候需要加上 env
micromamba env create -n fastqc
  • 进入虚拟环境 fastqc
micromamba activate fastqc
  • 安装 FastQC
# 注意!如果不添加 -c conda-forge, 则默认无法下载最新版本的 sra-tools
micromamba install -c bioconda -c conda-forge fastqc
# 等待一会儿后输入 Y , 然后回车

# 检验是否安装成功
fastqc --version
# 我的输出是: 
# FastQC v0.12.1

安装 MultiQC

( 挑个你喜欢的方法安装就好~ )

  • 方法一:anacondamicromamba (推荐)
  • 方法二:下载预编译的二进制文件

使用 anaconda 安装

  • 新建虚拟环境 multiqc
conda create -n multiqc
# 等待一会儿后输入 y , 然后回车
  • 进入虚拟环境 multiqc
conda activate multiqc
  • 安装 MultiQC
# 注意!如果不添加 -c conda-forge, 则默认无法下载最新版本的 multiqc
conda install -c bioconda -c conda-forge multiqc
# 等待一会儿后输入 y , 然后回车

# 检验是否安装成功
multiqc --version
# 我的输出是: 
# multiqc, version 1.8

使用 micromamba 安装

  • 新建虚拟环境 multiqc
# 和 anaconda 不同, micromamba 在新建虚拟环境的时候需要加上 env
micromamba env create -n multiqc
  • 进入虚拟环境 multiqc
micromamba activate multiqc
  • 安装 MultiQC
# 注意!如果不添加 -c conda-forge, 则默认无法下载最新版本的 multiqc
micromamba install -c bioconda -c conda-forge multiqc
# 等待一会儿后输入 Y , 然后回车

# 检验是否安装成功
multiqc --version
# 我的输出是: 
# multiqc, version 1.8

使用教程

SRA Toolkit

下载 .sra 文件

(假如我想下载 SRR1646444)

方法一 (prefetch)

# prefetch 自带断点续传
prefetch SRR1646444
# 文件 SRR1646444.sra 保存在当前目录的 SRR1646444 文件夹里面

# 优点: prefetch 后面可以加上多个 SRR号, 利于下载多个 .sra 文件
# 缺点: 没有进度条, 不方便查看下载进度

方法二 (wget + srapath)

# srapath 获取的是 .sra 文件对应的网址
# -c 参数使得 wget 支持断点续传
wget -c $(srapath SRR1646444)
# 文件 SRR1646444 保存在当前目录 (没有 .sra 后缀)

# 优点:
# 1) wget 自带的进度条方便查看下载进度
# 2) 可使用魔法加速, 这里不赘述
# 缺点: 下载多个 .sra 文件时需要多开或者额外操作

方法三 (prefetch + ascp 加速下载)

  • 如果你使用 anaconda:
# 准备工作, 只需要初次使用时走一遍流程, 以后只要 '开始下载' 那步就可以了
# 首先, 确保所在虚拟环境为 sra-tools
conda activate sra-tools
# 接着, 安装 aspera-connect
conda install -c rpetit3 aspera-connect # 等待一会儿后输入 y , 然后回车
# 搜寻你的私钥文件, 并添加到环境变量
echo "ascp_key=$(find ~/anaconda3/envs/sra-tools/ -name asperaweb_id_dsa.openssh)" >> ~/.bashrc;
source ~/.bashrc
# 检查是否成功找到私钥
echo $ascp_key 
# 我的输出:
# /home/saturn/anaconda3/envs/sra-tools/opt/aspera/connect/etc/asperaweb_id_dsa.openssh
# 没有输出的话说明有问题, 需要自行排查

# 开始下载
prefetch -a "$(which ascp)|$ascp_key" SRR1646444
# 没问题的话会显示:
# 2024-10-14T13:14:20 prefetch.3.1.1: 1) Resolving 'SRR1646444'...
# 2024-10-14T13:14:23 prefetch.3.1.1: Current preference is set to retrieve SRA Normalized Format files with full base quality scores
# 2024-10-14T13:14:24 prefetch.3.1.1: 1) Downloading 'SRR1646444'...
# 2024-10-14T13:14:24 prefetch.3.1.1:  SRA Normalized Format file is being retrieved
# 2024-10-14T13:14:24 prefetch.3.1.1:  Downloading via HTTPS...

# 文件 SRR1646444.sra 保存在当前目录的 SRR1646444 文件夹里面
  • 如果你使用 micromamba:
# 准备工作, 只需要初次使用时走一遍流程
# 首先, 确保所在虚拟环境为 sra-tools
micromamba activate sra-tools
# 接着, 安装 aspera-connect
micromamba install -c rpetit3 aspera-connect # 等待一会儿后输入 Y , 然后回车
# 搜寻你的私钥文件, 并添加到环境变量
echo "ascp_key=$(find ~/micromamba/envs/sra-tools/ -name asperaweb_id_dsa.openssh)" >> ~/.bashrc;
source ~/.bashrc
# 检查是否成功找到私钥
echo $ascp_key
# 我的输出:
# /home/saturn/micromamba/envs/sra-tools/opt/aspera/connect/etc/asperaweb_id_dsa.openssh
# 没有输出的话说明有问题, 需要自行排查

# 开始下载
prefetch -a "$(which ascp)|$ascp_key" SRR1646444
# 没问题的话会显示:
# 2024-10-14T13:14:20 prefetch.3.1.1: 1) Resolving 'SRR1646444'...
# 2024-10-14T13:14:23 prefetch.3.1.1: Current preference is set to retrieve SRA Normalized Format files with full base quality scores
# 2024-10-14T13:14:24 prefetch.3.1.1: 1) Downloading 'SRR1646444'...
# 2024-10-14T13:14:24 prefetch.3.1.1:  SRA Normalized Format file is being retrieved
# 2024-10-14T13:14:24 prefetch.3.1.1:  Downloading via HTTPS...

# 文件 SRR1646444.sra 保存在当前目录的 SRR1646444 文件夹里面

转换 .sra 文件为 fastq.gz

(假如我想把前面下载的 SRR1646444.sra 转换成 SRR1646444.fastq.gz)

使用 fastq-dump

fastq-dump --gzip --split-files SRR1646444.sra
# 会在当前目录生成 SRR1646444.fastq.gz
# fastq-dump 还支持通配符, 可转换多个 .sra 文件
# 例: fastq-dump --gzip --split-files *.sra

使用 fasterq-dump

# 虽然 fasterq-dump 在处理速度上比 fastq-dump快, 但是并没有提供 --gzip 选项用于输出 gzip 压缩后的 fastq 文件
# 平替方法如下:
fasterq-dump --split-files SRR1646444.sra -o /dev/stdout | gzip -c > SRR1646444.fastq.gz
# 原理: 先将 .sra 文件解压后输出到标准输出, 然后使用管道符导入到 gzip 实时压缩成 .fastq.gz 文件
# PS: 想要进一步提速, 可以使用 pigz 替换 gzip -c (注意: pigz 需安装! )

附: 默认参数下 fastq-dumpfasterq-dump 的处理速度对比

(我使用 shell 的是 fish , 而非 bash , 嘻嘻)

# fastq-dump (耗时约 443 秒)
time fastq-dump --gzip --split-files SRR1646444
# Read 2631092 spots for SRR1646444
# Written 2631092 spots for SRR1646444
# ________________________________________________________
# Executed in  443.97 secs    fish           external
#    usr time   53.23 secs    0.00 micros   53.23 secs
#    sys time    1.34 secs  914.00 micros    1.33 secs

# fasterq-dump (耗时约 30 秒)
time fasterq-dump --split-files ./SRR1646444.sra -o /dev/stdout | gzip -c > SRR1646444.fastq.gz.fasterq-dump
# spots read      : 2,631,092
# reads read      : 2,631,092
# reads written   : 2,631,092
# ________________________________________________________
# Executed in   30.31 secs    fish           external
#    usr time   35.21 secs    0.78 millis   35.21 secs
#    sys time    3.68 secs    1.17 millis    3.68 secs

查看 .fastq.gz 文件

方法一 (gunzip + less)

gunzip -c SRR1646444.fastq.gz | less

方法二 (zcat + less)

zcat SRR1646444.fastq.gz | less

方法三 (zless)

zless SRR1646444.fastq.gz
# "Less is more."

FastQC

用法解析

fastqc [选项] <fastq_file1> <fastq_file2> ...

常用选项

  • -o <dir> : 指定输出文件路径, 默认为当前路径
  • -t <int> : 指定线程数目
  • -a <filename> : 指定 adapter 文件

实战使用

fastqc SRR1646444.fastq.gz

# application/gzip
# Started analysis of SRR1646444.fastq.gz
# Approx 5% complete for SRR1646444.fastq.gz
# Approx 10% complete for SRR1646444.fastq.gz
# Approx 15% complete for SRR1646444.fastq.gz
# Approx 20% complete for SRR1646444.fastq.gz
# Approx 25% complete for SRR1646444.fastq.gz
# Approx 30% complete for SRR1646444.fastq.gz
# Approx 35% complete for SRR1646444.fastq.gz
# Approx 40% complete for SRR1646444.fastq.gz
# Approx 45% complete for SRR1646444.fastq.gz
# Approx 50% complete for SRR1646444.fastq.gz
# Approx 55% complete for SRR1646444.fastq.gz
# Approx 60% complete for SRR1646444.fastq.gz
# Approx 65% complete for SRR1646444.fastq.gz
# Approx 70% complete for SRR1646444.fastq.gz
# Approx 75% complete for SRR1646444.fastq.gz
# Approx 80% complete for SRR1646444.fastq.gz
# Approx 85% complete for SRR1646444.fastq.gz
# Approx 90% complete for SRR1646444.fastq.gz
# Approx 95% complete for SRR1646444.fastq.gz
# Analysis complete for SRR1646444.fastq.gz

输出文件

ls *fastqc*

# SRR1646444_fastqc.html    SRR1646444_fastqc.zip
  • .html 文件 :包含可视化的质量报告,可在浏览器中查看
  • .zip 文件 :包含详细的统计数据及图表

MultiQC

用法解析

multiqc [选项] <data_directory>

常用选项

  • -o <dir> : 指定输出文件路径, 默认为当前路径
  • -n <name>:指定生成报告的文件名, 默认为 multiqc_report.html

实战使用

multiqc /public/workspace/shaojf/Course/NGS/DataSets/Lab1/rawdata.fastqc.result/

#   /// MultiQC 🔍 | v1.17

# |           multiqc | Search path : /public/workspace/shaojf/Course/NGS/DataSets/Lab1/rawdata.fastqc.result
# |         searching | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 36/36  
# |            fastqc | Found 18 reports
# |           multiqc | Report      : multiqc_report.html
# |           multiqc | Data        : multiqc_data
# |           multiqc | MultiQC complete

输出文件

ls *multiqc*

# multiqc_report.html

# multiqc_data:
# multiqc.log
# multiqc_citations.txt
# multiqc_data.json
# multiqc_fastqc.txt
# multiqc_general_stats.txt
# multiqc_software_versions.txt
# multiqc_sources.txt
  • multiqc_report.html : 主要的可视化报告,包含了多种交互式图表,可在浏览器中打开查看
  • multiqc_data/ 文件夹 : 保存了所有用于生成报告的原始数据文件和一些辅助信息

任务

  • 数据: /public/workspace/shaojf/Course/NGS/DataSets/Lab1
  1. (选做)自行安装 sratoolsFastQCMultiQC
  2. SRR1646444.sra 转成 .fastq.gz 格式, 并用 FastQC 评估
  3. 用multiQC生成 rawdata.fastqc.result 目录下的汇总QC报告

( 结果文件均保存至 ~/myNGS/Lab1/ 文件夹)

参考代码

1. 安装相关软件

  • 不赘述, 详见以上内容

2. 格式转换与评估

  • 确保文件夹已经建好
mkdir -p ~/myNGS/Lab1
  • 进入文件夹
cd ~/myNGS/Lab1
  • 将 .sra 数据软链接到 Lab1 文件夹内, 这样就不用自己下载咯~
ln -s /public/workspace/shaojf/Course/NGS/DataSets/Lab1/SRR1646444.sra .
  • 转换 .sra 文件为 .fastq.gz 格式 (两种方法任选一种)
# 方法一,使用 fastq-dump, 较慢
fastq-dump --split-files SRR1646444.sra
gzip SRR1646444.fastq

# 方法二,使用 fasterq-dump, 较快
fasterq-dump --split-files SRR1646444.sra -o /dev/stdout | gzip -c > SRR1646444.fastq.gz
  • 建立两个文件夹, 用于保存使用不同 adapter 的结果文件
mkdir default.qc specified.qc
  • 使用 FastQC 进行评估
# 第一次评估: 使用默认 adapter, 输出结果到 default.qc 文件夹
fastqc -o default.qc SRR1646444.fastq.gz

# 第二次评估: 指定特定 adapter, 输出结果到 specified.qc 文件夹
# 将 adapter 文件软链接到你的 Lab1 里面
ln -s /public/workspace/shaojf/Course/NGS/Tools/FastQC/Configuration/adapter_list.txt .
# 使用 -a 参数指定 adapter 文件
fastqc -o specified.qc -a adapter_list.txt SRR1646444.fastq.gz

3. 汇总QC报告

# 将存放多个QC报告的文件夹软链接到你的 Lab1 里面
ln -s /public/workspace/shaojf/Course/NGS/DataSets/Lab1/rawdata.fastqc.result/ .

# 使用MultiQC生成汇总报告
multiqc rawdata.fastqc.result/