Virome Analysis in Metagenomics - BGIGPD/BestPractices4Pathogenomics GitHub Wiki
在微生物学研究中,宏基因组学技术为探索复杂微生物群落的组成与功能提供了强大的工具。而病毒组作为微生物群落的重要组成部分,其在生态系统、宿主健康与疾病中的作用日益受到关注。从宏基因组数据中分析病毒组,不仅可以揭示病毒的多样性、进化关系,还能帮助我们理解病毒与宿主之间的相互作用机制,对于疾病防控、生态平衡维护等领域具有重要意义。
ViWrap对近年来病毒组分析的主流方法进行汇总整理,整合了多种高效的分析流程与算法,较为完整地覆盖了该组学分析的上下游关键步骤,方便研究人员快速、深入地解读数据。借助对ViWrap的安装、部署、使用、理解,十分便于我们快速上手掌握病毒组分析的关键技术和方法,从而更高效地投入到相关领域的深入分析工作当中。
名词解释:<replacesymbol>
在代码中出现的尖括号通常表示一些需要替换的通配符,如“<username>”意味着需要连通尖括号一起替换为使用者用户名。“<password>” 需要替换成密码。请读者注意领会变通,切忌直接复制粘贴代码进行操作。
- 本教程使用UOMC堡垒机教学环境,请确保可以正常访问。
- 准备工作目录
/data/<username>
:
创建目录命令:mkdir /data/<username>
进入目录命令:cd /data/<username>
- 将conda/mamba的安装到工作目录中并完成配置。这是因为
$HOME
的配额有限,本流程所需的存储空间远高于配额限制,所以需要更改到配额充分的/data
目录下。
根据ViWrap的安装指南,我们可以利用conda/mamba进行十分便捷的安装。
- 克隆项目仓库
git clone https://github.com/BGIGPD/ViWrap.git
如果无法访问github.com,可以使用国内网站gitee.com
git clone https://gitee.com/bgigpd/ViWrap.git
由于官方版本在安装部署过程中存在一些bug,且尚未审阅通过我的修复版本,建议临时使用上述仓库使用。
- 进入仓库
cd ViWrap
- 赋予可执行脚本权限
chmod +x ViWrap scripts/*.py
- 将流程路径写入
PATH
环境变量并作为默认的启动配置项,以便快速调用。
echo "export PATH=`pwd`:\$PATH" >> ~/.bashrc
- 启动配置项立即生效
source ~/.bashrc
或重新登陆服务器。
2.1 主程序ViWrap的环境
官方版本在这个环节存在bug,在更新前请按以下命令部署:
mamba create -c bioconda -c conda-forge -n ViWrap python=3.8 biopython=1.80 numpy=1.24.2 pandas=1.5.3 pyfastx=0.8.4 matplotlib=3.6.3 seaborn=0.12.2 diamond=2.0.15 hmmer=3.3.2 pyparsing=2.4.7
# 如果安装的是mamba
conda create -c bioconda -c conda-forge -n ViWrap python=3.8 biopython=1.80 mamba=1.5.1 numpy=1.24.2 pandas=1.5.3 pyfastx=0.8.4 matplotlib=3.6.3 seaborn=0.12.2 diamond=2.0.15 hmmer=3.3.2 pyparsing=2.4.7
2.2 ViWrap各个模块的环境部署
首先启动ViWrap虚拟环境
mamba activate ViWrap
然后利用ViWrap脚本自动安装所需模块的虚拟环境:
ViWrap set_up_env --conda_env_dir /data/<username>/miniforge3/envs
如果在自己的电脑上安装,只需将/data/<username>/miniforge3/envs
替换为实际的虚拟环境根目录。
ViWrap download --db_dir /data/<username>/ViWrap_db --conda_env_dir /data/<username>/miniforge3/envs
该过程需要从互联网下载各个模块分析所需的比对数据库,十分耗时。对于需要在自己单位或个人电脑上部署的读者,可以参考上述命令。
由于我们已经实现下载好了所需文件,可以直接设置数据库位置--db_dir /data/example/ViWrap_db
.
特别说明,如果需要从头下载数据库,难免遇到网络不稳定导致中断的情况。建议使用我debug之后的版本,可以实现对已下载数据库的跳过功能,避免重复下载。 https://github.com/BGIGPD/ViWrap。
- 对于已经下载完毕的压缩包,可以直接解压,不会重新下载。注意,建议将压缩包权限改为只读防止被脚本自动删除。待验证安装成功后再手动删除即可。
- 对于已经存在的*_db目录,会认为已经完成,跳过下载安装。
对于想重新下载的数据库(比如中断后数据不完整的目录),只需将对应*_db文件夹删除,然后重新运行
ViWrap download
,会对下载完成度情况进行判别。
部分包手动下载指南:
cd ViWrap_db
# VIBRANT
conda run -n ViWrap-VIBRANT download-db.sh /path/to/VIBRANT_db
# geNomad
conda run -n ViWrap-geNomad genomad download-database ./
# checkV
conda run -n ViWrap-CheckV checkv download_database ./ > /dev/null 2>&1
mv ./checkv-db-v* ./CheckV_db
conda run -n ViWrap-CheckV export CHECKVDB=$PWD/CheckV_db
#iPhoP 数据库非常大,建议用aria2断点续传的方式下载
aria2c -x 4 -s 4 https://portal.nersc.gov/cfs/m342/iphop/db/iPHoP.latest_rw.tar.gz
mkdir iPHoP_db
tar xzf iPHoP.latest_rw.tar.gz --directory iPHoP_db
mv iPHoP_db/*_pub_rw/* iPHoP_db
rmdir iPHoP_db/*_pub_rw/
# GTDB-tk 约 120GB
aria2c -x 4 -s 4 ftp://download.nmdc.cn/tools/meta/gtdb/gtdbtk_r214_data.tar.gz
mkdir -p GTDB_db
tar xzf gtdbtk_r214_data.tar.gz --directory GTDB_db
mv GTDB_db/release214 GTDB_db/GTDB_db
conda env config vars set GTDBTK_DATA_PATH=$PWD/GTDB_db/GTDB_db -n ViWrap-GTDBTk
其他数据库较小可以利用ViWrap脚本直接下载。
下面我们实际运行ViWrap流程以验证安装是否正常
cd ViWrap/example_data
ViWrap run --input_metagenome test_metaG.fasta \
--input_reads reads_1.fastq.gz,reads_2.fastq.gz \
--out_dir test_metaG_ViWrap_out \
--db_dir /data/example/ViWrap_db \
--identify_method vb-vs \
--conda_env_dir /data/<username>/miniforge3/envs \
--threads 20 \
--input_length_limit 5000
如果先前安装虚拟环境需要问题,这里也可以直接使用我们预先部署好的虚拟环境,指定--conda_env_dir /data/example/miniforge3/envs
.
为了防止电脑休眠导致运行到一半的程序中断,可以尝试使用nohup
将命令安全地挂到后台运行:
nohup ViWrap run --input_metagenome test_metaG.fasta \
--input_reads reads_1.fastq.gz,reads_2.fastq.gz \
--out_dir test_metaG_ViWrap_out \
--db_dir /data/example/ViWrap_db \
--identify_method vb-vs \
--conda_env_dir /data/example/miniforge3/envs \
--threads 20 \
--input_length_limit 5000 &
ViWrap的输出目录结构如下:
├── 00_VIBRANT_VirSorter_test_metaG
├── 01_Mapping_result_outdir
├── 02_vRhyme_outdir
├── 03_vConTACT2_outdir
├── 04_Nlinked_viral_gn_dir
├── 05_CheckV_outdir
├── 06_dRep_outdir
├── 07_iPHoP_outdir
├── 08_ViWrap_summary_outdir
├── 09_Virus_statistics_visualization
└── ViWrap_run.log
主要结果解读可参考文档ViWrap_example/results_check.Rmd
如果先前安装虚拟环境需要问题,这里也可以直接使用我们预先部署好的虚拟环境,指定--conda_env_dir /data/example/miniforge3/envs
:
ViWrap run --input_metagenome test_metaG.fasta \
### 运行报错:`FileNotFoundError: [Errno 2] No such file or directory: 'test_metaG_ViWrap_out/00_VIBRANT_VirSorter_test_metaG/VirSorter_test_metaG/pass/final-viral-score.tsv'`
通常这是由于VirSorter没有成功配置数据库所致,先尝试重新配置:
```bash
conda run -p /data/example/miniforge3/envs/ViWrap-vs2 virsorter config --init-source --db-dir=/data/example/ViWrap_db/VirSorter2_db
若仍报相同错误,则需检查所用虚拟环境是否正确安装。