宏基因组分析实战(1)-数据下载

宏基因组分析,在微生物研究中应用广泛。目前已有许多文章介绍了宏基因组的应用,这些文章多以实战代码和可视化为主,但关于其分析原理和分析流程的文章并不多见。

本系列计划介绍宏基因组的基础分类、数据下载与处理、分析流程以及实战等多个内容,尽可能将多的有效信息压缩,方便小白们快速系统了解宏基因组分析原理与流程,以及帮助关从业人员回顾分析知识。

知识分享不易,欢迎转发打赏支持!

巧妇难为无米之炊,我们做任何分析的前提都得是先有数据才行,当然有钱的童鞋可以自己去设计实验、采样、委托测序公司测序,但没钱的伙伴们也不用慌,我们也可以从公共数据库中获取一些原始测序数据(rawdata),便是我们熟知的三大数据库啦,分别是NCBI(National Center for Biotechnology Information)、ENA(European Nucleotide Archive)、DDBJ。不过DDBJ的知名度和使用率貌似明显比不过前两者,因此我们只介绍前两个数据库如何查找并下载数据。

注意,不管是下载公共数据或者自己测序时,都需要注意对metadata的收集,即每个测序样本的标签信息。这部分信息非常重要!!!许多下游分析都依赖这些标签开展,比如差异分析关联分析

1. 数据搜索

1.1 NCBI

NCBI是一个综合数据库,其中包含非常多的子数据库,在首页的搜索界面可见,而我们想获取已经公开发布的项目及其对应的样本和测序数据时,可以关注BioProject、BioSample这两个数据库,通过搜索自己感兴趣的领域即可获得对应的项目数据。如果知道具体的项目编号、样本编号或者测序编号(Run ID或Accession ID)就可以更精准地获取想要的数据哦~


比如这里我想搜索一个和肥胖相关的宏基因组测序项目,就可以用“obesity”和“metagenomics”两个关键词在BioProject里面搜索,结果如下,选择第一个结果点进入看看,我们就能看到关于这个项目的所有信息,如下图所示


通过这个界面可知,这个项目是对30个法国人(15个肥胖,15个对照)的粪便、唾液和十二指肠引流液做了宏基因组测序,共得到了90个测序结果。其中,测序数据在SRA Experiments这部分,点击右侧对应的90即可得到所有的测序信息



至此,我们就完成了对NCBI测序数据的搜索啦,NCBI也支持网页端下载,如果想下载哪个测序数据的话,可以点击表格中的Run ID,在跳转页面中选择下载即可,如下图

但是这种只能一个一个下载,而且大小不能超过5G。数据量较大的时候还是建议用专门的下载工具来做,详细见下文

1.2 ENA

在学会如何在NCBI搜索数据之后,ENA也就很简单了,同样的采用关键词搜索,我们可以得到如下结果,展开project结果后,我们也同样发现了在NCBI中找到的这个项目,点击打开后就可以看到这个项目在ENA数据库中的储存形式啦




可以看到,其实ENA的表现形式与NCBI类似,都以表格的形式展现了项目的metadata,不过方便的是它可以直接批量下载原始数据,这点就非常nice

1.3 Gmrepo

可能有些童鞋会觉得上面两个数据库搜起数据来太麻烦啦,光靠关键词可能也没办法准确定位到我想要的数据,**更重要的是metadata非常杂乱!!!查找起来非常痛苦!**那么不要慌,这个数据库他来了。Gmrepo是一个专门对人体微生物组测序数据进行收集和整理的数据库,迄今为止已经收集并整理了353个测序项目和71,642个测序数据,涵盖了132个不同的表型,可以完美地解决大多数人的数据需求!

话不多说,我们直接登录,然后在右上角的Phenotypes里面选择All Phenotypes,这里就有非常多的方向了,我们依然选择肥胖,即Obesity,点击后即可展示所有相关信息


可以看到,这里详细展示了和肥胖相关的各类信息,甚至已经将biomarker展示出来了。当然,我们这里关注的更多是project,点击后便可展示所有项目的信息啦,何种表型一目了然,而且可以直接链接到NCBI,非常贴心!

💡
细心的小伙伴可以发现,我们这里搜索数据都是去搜索的Project,而不是直接搜Run(测序结果)。这是因为项目中的数据都是通过精心设计实验得来的,可以让我们更好地获得测序数据的背景信息,而如果直接拿一个测序下机数据过来可能就达不到这种效果

2. 数据下载

工欲善其事,必先利其器。虽然在数据库网页上我们可以直接下载数据,但是当数据量过大时再手动下载时就明显有些力不从心呀,而且对于宏基因组数据来讲,更多依赖于Linux式的大型服务器来做数据分析,因此,掌握如何用命令行去下载数据也是非常重要滴!

我们的教程在这里也算正式开始,以与肠道微生物关联比较紧密的结直肠癌(Colorectal Cancer, CRC)为例,在Gmrepo数据库中从项目PRJEB10878中分别选取5个健康个体以及5个CRC患者的粪便宏基因组测序数据开始分析,具体的metadata如下表:

Run IDPhenotypeHost ageGenderBMI
ERR1018185Colorectal Neoplasms64Male23.10
ERR1018186Colorectal Neoplasms73Male23.80
ERR1018187Colorectal Neoplasms67Female24.70
ERR1018188Colorectal Neoplasms56Male25.60
ERR1018189Colorectal Neoplasms59Female20.70
ERR1018193Health62Male21.70
ERR1018195Health65Male20.70
ERR1018203Health58Female21.60
ERR1018205Health68Male21.70
ERR1018209Health62Female21.40

对肥胖感兴趣的小伙伴也可以使用上面的项目数据开始分析哦,探索肠道菌群在肥胖中的奥秘

2.1 下载工具

2.1.1 wget/curl

这两个工具一般是服务器都会自带的数据下载工具,使用起来也非常简单,只要加上对应的链接(可以按照上述步骤从ENA网页获取)就可以啦。以样本ERR1018185为例,下载命令分别为:

wget -c ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_1.fastq.gz
wget -c ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_2.fastq.gz

# -c 是指断点续传下载文件

curl ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_1.fastq.gz -o ERR1018205_1.fastq.gz
curl ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_2.fastq.gz -o ERR1018205_2.fastq.gz

2.1.2 axel/aria2/mwget

这部分软件相当于上述软件的升级版,其优势在于可以多线程同时下载,速度能够提升不少

2.1.2.1 axel

首先在GitHub下载最新的安装包,使用上面的wget或curl下载即可:

wget https://github.com/axel-download-accelerator/axel/releases/download/v2.17.14/axel-2.17.14.tar.gz

解压并安装:

tar zxvf axel-2.17.14.tar.gz
cd axel-2.17.14

# 有管理员权限
./configure && make && make install
# 无管理员权限
./configure && make
echo 'export PATH=$PATH:/absolute path/axel-2.17.14' >> ~/.bashrc
source ~/.bashrc

这里的absolute path是指软件所在的绝对路径,下同

使用axel -h验证安装,弹出如下帮助界面则证明安装成功:

Axel 2.17.14 (linux-gnu)
Usage: axel [options] url1 [url2] [url...]

--max-speed=x        -s x    Specify maximum speed (bytes per second)
--num-connections=x    -n x    Specify maximum number of connections
--max-redirect=x        Specify maximum number of redirections
--output=f        -o f    Specify local output file
--search[=n]        -S[n]   Search for mirrors and download from n servers
--ipv4            -4  Use the IPv4 protocol
--ipv6            -6  Use the IPv6 protocol
--header=x        -H x    Add HTTP header string
--user-agent=x        -U x    Set user agent
--no-proxy        -N  Just don't use any proxy server
--insecure        -k  Don't verify the SSL certificate
--no-clobber        -c  Skip download if file already exists
--quiet            -q  Leave stdout alone
--verbose        -v  More status information
--alternate        -a  Alternate progress indicator
--percentage        -p  Print simple percentages instead of progress bar (0-100)
--help            -h  This information
--timeout=x        -T x    Set I/O and connection timeout
--version        -V  Version information


其中比较重要的参数有

  • -max-speed=x -s x # 最大速度

  • -num-connections=x -n x # 连接数量

使用以下命令下载:

axel -s 1000000000 -n 20 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_1.fastq.gz
axel -s 1000000000 -n 20 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_2.fastq.gz

速度嘚一下就上来了~

2.1.2.2 aria2

aria2也是一款非常流程的下载软件,在GitHub上有着高达33.4k的star,可见非常受欢迎。我们也来搞起

安装与axel类似:

wget -c https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0.tar.gz
tar zxvf aria2-1.37.0.tar.gz
cd aria2-1.37.0/
# 有管理员权限
./configure && make && make install
# 无管理员权限
./configure && make
make check
echo 'export PATH=$PATH:/absolute path/aria2-1.37.0/src' >> ~/.bashrc
source ~/.bashrc


在make check时报了这样的错误

AllTest.cc:5:10: fatal error: cppunit/CompilerOutputter.h: 没有那个文件或目录
    5 | #include <cppunit/CompilerOutputter.h>
compilation terminated.
make[2]: *** [Makefile:1519:AllTest.o] 错误 1

不过在输入aria2c时能够正常显示帮助界面,应该不影响使用,可以继续

aria2c的参数较多,这里就不一一列举了,比较重要的和axel类似:

参数描述
-d下载文件的输出文件夹,默认是软件所在路径
-o下载文件名称,通常和-d联用
-c断点续传
-V检查文件的完整度
-x连接数量,数量限制在1-16

使用:

aria2c -c -x 15 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_1.fastq.gz -d $DOWNLOD_PATH -o ERR1018205_1.fastq.gz
aria2c -c -x 15 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_2.fastq.gz -d $DOWNLOD_PATH -o ERR1018205_2.fastq.gz
# $DOWNLOD_PATH:数据下载路径

下载速度up up!

2.1.2.3 mwget

顾名思义,mwget就是"MultiLine" wget,也是可以多线程下载的工具,下载安装与上述一样,就不再赘述

wget https://github.com/rayylee/mwget/archive/refs/tags/v0.2.0.tar.gz
tar zxvf v0.2.0.tar.gz
cd mwget-0.2.0/
# 有管理员权限
./configure && make && make install
# 无管理员权限
./configure && make
echo 'export PATH=$PATH:/absolute path/mwget-0.2.0/src' >> ~/.bashrc
source ~/.bashrc


同样,如果能mwget -h成功弹出帮助界面则安装成功!

GNU Mwget 0.2.0, a non-interactive and multiline network retriever of all POSTIX Systems.
用法: mwget [选项]... [URL]...
选项:
  -b,  --debug          调试模式,显示调试信息
  -c,  --count=num      设置重试次数为[num],不限制次数设置为“0”,默认设置为“99”
  -d,  --directory=dir  设置本地目录为[dir],默认值为当前目录
  -f,  --file=file      重命名下载后文件为[file]
  -h,  --help           显示帮助信息
  -i,  --interval=num   设置FTP重试期限为[num]秒,默认为“5”
  -n,  --number=num     设置下载的线程数,默认开4个线程
  -r,  --referer=URL    使用“Referer: [URL]”在HTTP头中欺骗服务器
  -t,  --timeout=num    设置超时时间为[num]秒,默认设置是“30”
  -v,  --version        显示mwget的版本,然后退出
  -x,  --proxy=URL      设置代理 [URL]

下载数据:

mwget -c 0 -d $DOWNLOD_PATH -f ERR1018205_1.fastq.gz -n 20 -t 300 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_1.fastq.gz
mwget -c 0 -d $DOWNLOD_PATH -f ERR1018205_2.fastq.gz -n 20 -t 300 ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_2.fastq.gz
# $DOWNLOD_PATH:数据下载路径

我这里的服务器本来下载龟速,现在速度能达到5M/s左右,还是不错滴

2.1.3 Aspera

上面提到的下载工具只能说是开胃小菜,至于这位更是重量级!它是IBM开发的高速数据传输工具,NCBI和ENA均可使用,其下载速度能达到上百M!

由于官网的最新版本不再提供私钥(asperaweb_id_dsa.openssh),参照这里的解决方案安装4.2以下的版本:

wget https://ak-delivery04-mul.dhe.ibm.com/sar/CMA/OSA/0adrj/0/ibm-aspera-connect_4.1.3.93_linux.tar.gz
tar zxvf ibm-aspera-connect_4.1.3.93_linux.tar.gz
sh ibm-aspera-connect_4.1.3.93_linux.sh
# 执行程序添加进环境变量
echo '~/.aspera/connect/bin/' >> ~/.bashrc
source ~/.bashrc

ascp -h查看参数,其中比较常用的参数见下表:

参数描述
-P用于SSH身份验证的TCP端口,一般是33001
-T禁用加密
-l最大传输速度
-k传输恢复标准,有0、3、2、1,一般选1实现断点续传
-i私钥,一般路径在~/.aspera/connect/etc/asperaweb_id_dsa.openssh
-Q可以理解为提高传输速度,一般和-T联用

💡
注意:这里和之前不同的是,不能直接使用ftp下载链接进行下载,必须进行一些修改。其实就是修改user和host,让软件能够知道从哪个数据库下载

还是以ERR1018205为例,下载方式为:

# 指定host和user
ascp -QT -k 1 -l 200m -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh -P 33001 \
  --host=fasp.sra.ebi.ac.uk --user=era-fasp --mode=recv \
  /vol1/fastq/ERR101/005/ERR1018205/ERR1018205_1.fastq.gz
 # 将host和user直接加到链接中
 ascp -QT -k 1 -l 200m -i ~/.aspera/connect/etc/asperaweb_id_dsa.openssh -P 33001 \
  era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/ERR101/005/ERR1018205/ERR1018205_1.fastq.gz

Aspera虽然速度很快,但是有个非常令人头疼的问题,就是经常中断下载,需要不断启动。这里提供一个解决方案供参考:可以编写一个脚本循环运行下载命令,直到文件md5检查完整

2.1.4 prefetch

前面的下载方法都是第三方工具,接下来的软件都是官方推荐的方法。prefetch就是NCBI专门下载SRA数据的工具,打包在了SRA Toolkit里面,快来下载吧~

wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/3.1.0/sratoolkit.3.1.0-ubuntu64.tar.gz
tar zxvf sratoolkit.3.1.0-ubuntu64.tar.gz
echo 'export PATH=$PATH:/absolute path/sratoolkit.3.1.0-ubuntu64/bin' >> ~/.bashrc
source ~/.bashrc
prefetch -h

一如既往正常的话,就可以愉快地使用啦,主要参数有:

参数描述
-T下载数据的类型,默认是sra,当然也可以选择fastq哦,不再麻烦于转换格式啦
-p展示程序,看到进度就会安心些
-r可以理解为断点续传
-C下载完成后进行校验,yes和no两个选项,默认yes
-aAspera路径,但是输入这个参数后会显示无法识别?
-o输出文件路径(单一文件)
-O输出文件路径(多文件)
–option-file批量下载

开始下载:

# 单样本
prefetch ERR1018205 -p -T fastq -O ERR1018205
# 多样本 首先从上述数据库中任选一个下载获取Accession list
prefetch --option-file Acc_List.txt -p -T fastq -O youroutdir

2.1.5 enaDataGet/enaGroupGet

与prefetch相对应的,enaDataGet/enaGroupGet是ENA官网推荐的下载工具(其实ENA一共提供了8种下载方法,其中Linux命令行我们基本都介绍到了,其他方法感兴趣的伙伴可以了解一下哦),其中前者是下载单个Run,后者则是下载整个项目中的测序数据。

图片来源:

https://ena-docs.readthedocs.io/en/latest/retrieval/file-download.html#downloading-files

首先同样是数据下载,按照GitHub的教程即可~

wget https://github.com/enasequence/enaBrowserTools/archive/refs/tags/v1.7.1.tar.gz
tar zxvf v1.7.1.tar.gz
cd enaBrowserTools-1.7.1
# 方法1:官网做法,配置别名,但再次登陆服务器后失效
alias enaDataGet=enaBrowserTools-1.7.1/python3/enaDataGet
alias enaGroupGet=enaBrowserTools-1.7.1/python3/enaGroupGet
# 方法2:加入环境变量,持续有效
echo 'export PATH=$PATH:/absolute path/enaBrowserTools-1.7.1/python3' >> ~/.bashrc
source ~/.bashrc
enaDataGet -h
enaGroupGet -h

弹出帮助菜单证明安装成功!这里主要介绍的enaDataGet与enaGroupGet类似,大家可以自行探索。主要参数有

参数描述
-f数据格式,支持embl,fasta,submitted,fastq,sra;原始数据主要是sra和fastq
-d输出文件夹
-a使用Aspera下载

开始下载

enaDataGet -f fastq -d OUTDIR ERR1018205

若想使用Aspera下载,则需配置相关文件,路径为enaBrowserTools-1.7.1/aspera_settings.ini,使用vim打开,修改文件内容为:

[aspera]
ASPERA_BIN = ~/.aspera/connect/bin/ascp                              # 运行程序路径,此为默认安装路径
ASPERA_PRIVATE_KEY = ~/.aspera/connect/etc/asperaweb_id_dsa.openssh  # 私钥路径,此为默认安装路径
ASPERA_OPTIONS =
ASPERA_SPEED = 200M                                                  # 下载速度,根据实际情况自己设置即可

配置好后即可在命令后加-a使用Aspera下载啦

enaDataGet -f fastq -d OUTDIR ERR1018205 -a

2.1.6 iSeq

iSeq是近期由国人开发的一款获取公共测序数据的集成工具。支持 GSA, SRA, ENA, 与 DDBJ数据库的测序数据和meta数据下载。


iSeq的安装分两种方式,一种是通过conda安装

# 如果想在新环境中安装
conda create -n iseq -c conda-forge -c bioconda iseq
conda activate iseq

# 如果直接在当前环境中安装
conda install -c bioconda iseq # 需要注意的是,可能会存在兼容性问题

另一种方式是直接从源码安装

version="1.0.0"
wget "https://github.com/BioOmics/iSeq/releases/download/v${version}/iSeq-v${version}.tar.gz"
tar -zvxf "iSeq-v${version}.tar.gz"
cd iSeq/bin/
chmod +x iseq
echo 'export PATH=$PATH:'$(pwd) >> ~/.bashrc
source ~/.bashrc

通过这一方式安装时,需要确保你的这些组件有安装:pigz (>=2.8)、wget (>=1.16)、axel (>=2.17)、aspera (>=4.4.2.550)、sra-tools (>=2.11.0)

两种安装方式,相比而言个人更推荐第一种

iseq的使用参数如下

$ iseq --help

Usage:
  iseq -i accession [options]

Options:
Required parameter:
  -i, --input       TEXT        accession (Project, Study, Sample, Experiment, or Run)

Optional parameters:
  -m, --metadata                Skip the sequencing data downloads and only fetch the metadata for the accession.
  -g, --gzip                    Download FASTQ files in gzip format directly (*.fastq.gz).
                                note: if *.fastq.gz files are not available, SRA files will be downloaded and converted to *.fastq.gz files.
  -q, --fastq                   Convert SRA files to FASTQ format.
  -t, --threads     INT         The number of threads to use for converting SRA to FASTQ files or compressing FASTQ files (default: 8).
  -e, --merge                   Merge multiple fastq files into one fastq file for each Experiment, the accession can't be the Run ID.
  -d, --database    [ena|sra]   The database to download SRA files from (default: auto-detect),
                                note: some SRA files may not be available in the ENA database, even if you specify "ena".
  -p, --parallel    INT         Download sequencing data in parallel, the number of connections needs to be specified, such as -p 10.
                                note: breakpoint continuation cannot be shared between different numbers of connections.
  -a, --aspera                  Use Aspera to download sequencing data, only support GSA/ENA database.
  -h, --help                    Show the help information.
  -v, --version                 Show the script version.

快速使用,在参数i后跟需要检索的id即可,支持Bioproject、Study、BioSample、Sample、Experiment和Run类型

iseq -i PRJNA211801

或者也可以编写一个简单的while循环来进行批量下载:

cat SRR_Acc_List.txt | while read Run; do
	iseq -i $Run -a -g
done

2.2 高阶下载

2.2.1 后台下载

由于我们下载的是宏基因组的原始测序数据,多样本的数据大都在GB甚至PB水平,因此难免会出现下载好几天的情况,但是这就得一直开着电脑和终端,一旦被关掉,即使有断点续连,也得再运行程序,十分的令人糟心。因此这里介绍几种可以把下载任务放到后台的方法,运行之后关掉电脑(可别搞错了关掉服务器哦)都木有问题,可以让它自己默默地下载去吧~

2.2.1.1 nohup

首先就是大家熟知的nohup啦,这个也是一般Linux系统都会自带的命令,可以后台运行程序,并输出运行日志。使用也比较简单,以prefetch下载命令为例:

nohup prefetch ERR1018205 -p -T fastq -O ERR1018205 > prefetch.log 2>&1 &

接下来我们详细介绍一下每个命令参数的实际含义:

  • nohup + 命令:就是在后台运行命令;但是此时程序并不是完全意义上的后台运行,使用CTRL+C时仍会中断

  • 及后面的prefetch.log:就是将前面的命令在终端打印的信息输入到prefetch.log这个文件中,即常说的log

  • 2>&1:将命令的标准错误输出重定向到标准输出1中一起输出。在Linux系统中,1代表标准输出(stdout),2代表标准错误输出(stderr)

  • &:代表后台运行,与nohup一样,单独使用的时候并不是完全意义上的后台运行

可能初学者这里还有些云里雾里,感兴趣的话可以再去搜索了解一下深层次的原理,不想深究的话直接按照这个格式照用就行啦

当运行这一行代码后就会弹出一串数字,这个就是你这个程序的进程号(PID)啦,可以据此查看程序的运行状态,使用Linux自带的命令ps,具体为:

ps -aux | grep PID

也可以用jobs查看后台运行程序的状态

当查不到程序或显示已完成时,表明可能完成运行或者中断了,就可以去prefetch.log去查看具体情况

而当我们不想继续运行这个程序时,可以使用kill命令中止程序,具体为:

# 立刻中止
kill -9 PID
# 进程清理后中止
kill -15 PID

2.2.1.2 screen

这是我更推荐的一种后台运行程序的方式,就个人而言,nohup无法直观的看到程序的运行现状,而且需要命令来查找。但是screen就不一样,顾名思义,它是一个可以后台运行的屏幕,和我们常规操作的终端屏幕并无二样。那首先仍然是无法跳过的下载安装~

# 有管理员权限
## Ubuntu
sudo apt install screen
## CentOS
sudo yum install screen

# 无管理员权限
wget https://ftp.gnu.org/gnu/screen/screen-4.9.1.tar.gz # 下载最新版本
tar axvf screen-4.9.1.tar.gz
cd screen-4.9.1
./configure & make
echo 'export PATH=$PATH:/absolute path/screen-4.9.1' >> ~/.bashrc
source ~/.bashrc


screen -h 弹出帮助菜单表明安装成功,可以开始使用啦

# 创建新session:
screen -S <session_name>

# 从当前session断开
键盘命令: Ctrl-a + d

# 重连断开的session
screen -r
# 或者
screen -r <session_id>

# 强制断开一个session
screen -D <session_id>

# 列出当前所有session
screen -ls

# 结束并回到所选session
screen -d -r <session_id>


这里screen命令后用<session_id><session_name>均可

💡
常见问题:有时候没有用CTRL-a +d关掉创建的session但又关掉终端及电脑时,再次打开使用screen -r重连就会报错,使用screen -ls就会发现这个session的状态是Attached,此时就需要上文的最后一个命令来先关闭session然后再重新连接,即screen -d -r <session_id>

2.2.2 多样本下载

多样本下载也是在下载数据时常见甚至必须要做的事情,除开一些软件自己可以调整参数下载文件外,我们也可以用其他方法来处理。一起来看看吧

前情提要:获得了要下载的所有测序编号且都存放进一个文本文件Acc_List.txt(详见上文如何在NCBI和EBI获取Acc_List.txt)

2.2.2.1 for/while循环

这是最常见最简单来处理多样本下载的方式了,在任何编程语言都可以实现,这里我们使用vim创建一个download.sh文件,使用两种循环读取Acc_List.txt每行的Run ID,具体如下:

#!usr/bin/bash

FILE=/PATH/Acc_List.txt
OUTDIR=/PATH/00.RawData

## for循环+enaDataGet
for line in $(cat $FILE);do
   enaDataGet -f fastq -d $OUTDIR $line
done

## while循环+enaDataGet
while read -r line; do
    enaDataGet -f fastq -d $OUTDIR $line
done < $FILE

# 任选其一写入后保存文件,运行以下命令就可以开始下载啦
sh download.sh

2.2.2.2 parallel

比循环更高级的就是并行,可以同时开启多个下载任务,岂不美哉!parallel就是Linux系统中常用的一款并行工具,一起来学习吧

首先仍然是逃不过的下载和安装

# 有管理员权限
## Ubuntu
sudo apt-get update
sudo apt-get install parallel

## CentOS
sudo yum install parallel

# 无管理员权限
wget https://mirror.us-midwest-1.nexcess.net/gnu/parallel/parallel-latest.tar.bz2
tar xjf parallel-latest.tar.bz2
cd parallel-20240322
./configure && make
echo 'export PATH=$PATH:/absolute path/parallel-20240322/src' >> ~/.bashrc
source ~/.bashrc


parallel -h正常证明安装成功!不过这个软件的使用难度较大,里面涵盖了较多不同的并行操作参数,对新手不是很友好,所以这里不再细讲,直接应用,感兴趣的伙伴可以自行探索~

parallel -a Acc_List.txt -j 5 'enaDataGet -f fastq -d OUTDIR {}'

# 这里的参数含义是:
# -a:需要并行的文件,软件将会读取每一行的信息传递至后面的{}中
# -j:并行的任务数

2.2.2.3 作业调度系统

最后要介绍的工具一般用于大型的服务器集群或者高性能计算(HPC)中,是面向多人多服务器协作时的大型作业调度系统,比较常用的就是slurm了。由于这个的难度更大,所以这里仅供大家参考。如果感兴趣的人多的话,后续也可以专门出一期教程来介绍。

💡
其实在下载数据这个模块,并行发挥的作用并没有那么大,会受到实际网络带宽的限制,对于下载速度的提升相对有限。它更大的用途在于后续在本地的数据处理中,只要给它足够的CPU和内存,你的数据处理会进展迅速

2.3 数据完整度检查

好了,有了以上的几种方法,相信大家都可以非常愉快地完成这10个测序数据的下载,不过在下载完成后千万不要忘了对数据的完整度进行检查,目前最常用的方法就是MD5,它的全称叫MD5 Message-Digest Algorithm,大家可以简单的理解为是每个下机数据的身份证,可以用于核对数据是否正常。测序公司在返回数据时一般都会附带一个MD5文件,网上下载数据时也可以从ENA获取每个数据对应的MD5值。

那应该怎么用呢,其实也比较简单,如果是下载的话需要将MD5值与数据路径对应写到一个txt文件里面,第一列是MD5值,第二列为对应的数据路径。例如保存为MD5.txt,具体如下:

773be5a65d25572f14c15fadf86574a8    00.RawData/ERR1018185/ERR1018185_1.fastq.gz
36592038b135dbdcdaa122364caaa00b    00.RawData/ERR1018185/ERR1018185_2.fastq.gz
1003292e40b219b9c848ff85c46f518c    00.RawData/ERR1018186/ERR1018186_1.fastq.gz
85fcd431d89ff2d564806411e1ad8267    00.RawData/ERR1018186/ERR1018186_2.fastq.gz
28752dab9d45bfd3fbe42565409c063f    00.RawData/ERR1018187/ERR1018187_1.fastq.gz
72508c486a99c0027a6ccd557dd7d44f    00.RawData/ERR1018187/ERR1018187_2.fastq.gz
01873d5f9d32533ec4423af558059d58    00.RawData/ERR1018188/ERR1018188_1.fastq.gz
68b1f439f6c7c951bbfdd9909344ad01    00.RawData/ERR1018188/ERR1018188_2.fastq.gz
579957fe2b830ad3a8740906ded6f440    00.RawData/ERR1018189/ERR1018189_1.fastq.gz
1f2ee1c1be4577f2e29edc3221949045    00.RawData/ERR1018189/ERR1018189_2.fastq.gz
2e12fd42b4a57829949c222a4c14745d    00.RawData/ERR1018193/ERR1018193_1.fastq.gz
f48bc277c06985ab094f01314c59c008    00.RawData/ERR1018193/ERR1018193_2.fastq.gz
2d051d704624bfd920dbc44a4465cf3e    00.RawData/ERR1018195/ERR1018195_1.fastq.gz
7932d675528bee649673cbb6e53e3e4d    00.RawData/ERR1018195/ERR1018195_2.fastq.gz
c04639d6a985cc20946e5bded6973b7e    00.RawData/ERR1018203/ERR1018203_1.fastq.gz
90a8b7d2e65afa0b0a942a6bf03e1048    00.RawData/ERR1018203/ERR1018203_2.fastq.gz
30c9cf31f777bb4f7267dc3d20a94626    00.RawData/ERR1018205/ERR1018205_1.fastq.gz
3dca8c6420205dc5915f0109472cdbf9    00.RawData/ERR1018205/ERR1018205_2.fastq.gz
3490d3c65efa667a9f2a4452f8a86e4c    00.RawData/ERR1018209/ERR1018209_1.fastq.gz
10a35b9738779680fd519af737cc8bf0    00.RawData/ERR1018209/ERR1018209_2.fastq.gz


然后再使用md5sum来进行校验,结果如下表示数据完整

md5sum -c MD5.txt
00.RawData/ERR1018185/ERR1018185_1.fastq.gz: 成功
00.RawData/ERR1018185/ERR1018185_2.fastq.gz: 成功
00.RawData/ERR1018186/ERR1018186_1.fastq.gz: 成功
00.RawData/ERR1018186/ERR1018186_2.fastq.gz: 成功
00.RawData/ERR1018187/ERR1018187_1.fastq.gz: 成功
00.RawData/ERR1018187/ERR1018187_2.fastq.gz: 成功
00.RawData/ERR1018188/ERR1018188_1.fastq.gz: 成功
00.RawData/ERR1018188/ERR1018188_2.fastq.gz: 成功
00.RawData/ERR1018189/ERR1018189_1.fastq.gz: 成功
00.RawData/ERR1018189/ERR1018189_2.fastq.gz: 成功
00.RawData/ERR1018193/ERR1018193_1.fastq.gz: 成功
00.RawData/ERR1018193/ERR1018193_2.fastq.gz: 成功
00.RawData/ERR1018195/ERR1018195_1.fastq.gz: 成功
00.RawData/ERR1018195/ERR1018195_2.fastq.gz: 成功
00.RawData/ERR1018203/ERR1018203_1.fastq.gz: 成功
00.RawData/ERR1018203/ERR1018203_2.fastq.gz: 成功
00.RawData/ERR1018205/ERR1018205_1.fastq.gz: 成功
00.RawData/ERR1018205/ERR1018205_2.fastq.gz: 成功
00.RawData/ERR1018209/ERR1018209_1.fastq.gz: 成功
00.RawData/ERR1018209/ERR1018209_2.fastq.gz: 成功


到此为止,我们正式分析前的准备工作就已经完全ok了,接下来就可以大干一场啦!

敬请期待下期内容:宏基因组分析实战2:质量控制及评估

本文由博客一文多发平台 OpenWrite 发布!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值