宏基因组分析,在微生物研究中应用广泛。目前已有许多文章介绍了宏基因组的应用,这些文章多以实战代码和可视化为主,但关于其分析原理和分析流程的文章并不多见。
本系列计划介绍宏基因组的基础分类、数据下载与处理、分析流程以及实战等多个内容,尽可能将多的有效信息压缩,方便小白们快速系统了解宏基因组分析原理与流程,以及帮助关从业人员回顾分析知识。
知识分享不易,欢迎转发打赏支持!
巧妇难为无米之炊,我们做任何分析的前提都得是先有数据才行,当然有钱的童鞋可以自己去设计实验、采样、委托测序公司测序,但没钱的伙伴们也不用慌,我们也可以从公共数据库中获取一些原始测序数据(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 ID | Phenotype | Host age | Gender | BMI |
---|---|---|---|---|
ERR1018185 | Colorectal Neoplasms | 64 | Male | 23.10 |
ERR1018186 | Colorectal Neoplasms | 73 | Male | 23.80 |
ERR1018187 | Colorectal Neoplasms | 67 | Female | 24.70 |
ERR1018188 | Colorectal Neoplasms | 56 | Male | 25.60 |
ERR1018189 | Colorectal Neoplasms | 59 | Female | 20.70 |
ERR1018193 | Health | 62 | Male | 21.70 |
ERR1018195 | Health | 65 | Male | 20.70 |
ERR1018203 | Health | 58 | Female | 21.60 |
ERR1018205 | Health | 68 | Male | 21.70 |
ERR1018209 | Health | 62 | Female | 21.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 |
-a | Aspera路径,但是输入这个参数后会显示无法识别? |
-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 发布!