01 背景
DIAMOND 是一款用于蛋白质和翻译后DNA搜索的序列比对工具,专为大规模序列数据的高性能分析设计。其主要特点包括:
- 与BLAST相比,蛋白质和翻译后DNA的成对比对速度快100倍至10000倍。
- 能够聚类多达数十亿个蛋白质。
- 适用于长读取分析的帧移比对。
- 资源需求低,适合在标准桌面或笔记本电脑上运行。
- 多种输出格式,包括BLAST成对比对、表格和XML,以及分类学分类。
比blast快一万倍!blast详见Blast安装及使用-Blast+2.14.0(bioinfomatics tools-001)
02 参考
https://github.com/bbuchfink/diamond #参考github
http://www.diamondsearch.org #软件开发官网
03 安装
wget -c https://github.com/bbuchfink/diamond/releases/download/v2.1.8/diamond-linux64.tar.gz #下载
tar -zxvf diamond-linux64.tar.gz #解压
##method2
# 下载工具
wget http://github.com/bbuchfink/diamond/releases/download/v2.1.9/diamond-linux64.tar.gz
tar xzf diamond-linux64.tar.gz
04 使用
很像blast,具体没啥太大区别。主要还是比对蛋白序列呀
./diamond help
diamond v2.1.8.162 (C) 马克斯·普朗克科学促进会,本杰明·布赫芬克,蒂宾根大学
文档、支持和更新可在 http://www.diamondsearch.org 获得
请引用:http://dx.doi.org/10.1038/s41592-021-01101-x Nature Methods (2021)
语法:diamond 命令 [选项]
命令:
makedb 从FASTA文件构建DIAMOND数据库
prepdb 为Diamond使用准备BLAST数据库
blastp 将氨基酸查询序列与蛋白质参考数据库对齐
blastx 将DNA查询序列与蛋白质参考数据库对齐
cluster 聚类蛋白序列
linclust 线性时间内聚类蛋白序列
realign 重新对齐聚类序列与它们的中心点
recluster 重新计算聚类以修复错误
reassign 重新分配聚类序列到最近的中心点
view 查看DIAMOND对齐档案(DAA)格式的文件
merge-daa 合并DAA文件
help 生成帮助信息
version 显示版本信息
getseq 从DIAMOND数据库文件检索序列
dbinfo 打印关于DIAMOND数据库文件的信息
test 运行回归测试
makeidx 制作数据库索引
greedy-vertex-cover 计算贪心顶点覆盖
可以用语法看到命令的可能 [选项]:diamond 命令
在线文档可在 http://www.diamondsearch.org 查看
4.1 diamond makedb
/diamond makedb
diamond v2.1.8.162 (C) 马克斯·普朗克科学促进会,本杰明·布赫芬克,蒂宾根大学
文档、支持和更新可在 http://www.diamondsearch.org 获得
请引用:http://dx.doi.org/10.1038/s41592-021-01101-x Nature Methods (2021)
选项:
--threads CPU线程数
--verbose 详细控制台输出
--log 启用调试日志
--quiet 禁用控制台输出
--tmpdir 临时文件目录
--db 数据库文件
--in 输入参考文件,FASTA格式/合并-daa的输入DAA文件
--taxonmap 蛋白质访问号到taxid的映射文件
--taxonnodes 来自NCBI的分类学nodes.dmp
--taxonnames 来自NCBI的分类学names.dmp
--file-buffer-size 文件缓冲区大小,以字节为单位(默认=67108864)
--no-unlink 不删除临时文件。
--ignore-warnings 忽略警告
--no-parse-seqids 打印原始seqids,不进行解析
4.2 diamond blastp
./diamond blastp
diamond v2.1.8.162 (C) 马克斯·普朗克科学促进会,本杰明·布赫芬克,蒂宾根大学
文档、支持和更新可在 http://www.diamondsearch.org 获得
请引用:http://dx.doi.org/10.1038/s41592-021-01101-x Nature Methods (2021)
选项:
--threads CPU线程数
--verbose 详细控制台输出
--log 启用调试日志
--quiet 禁用控制台输出
--tmpdir 临时文件目录
--db 数据库文件
--out 输出文件
--header 在表格输出格式中使用标题行(0/简单/详细)。
--comp-based-stats 基于组成的统计模式(0-4)
--masking 掩码算法(无,seg,tantan=默认)
--soft-masking 软掩码(无=默认,seg,tantan)
--evalue 报告比对的最大e值(默认=0.001)
--motif-masking 软掩蔽丰富的基序(0/1)
--approx-id 报告比对/聚类序列的最小近似身份%
--ext 扩展模式(banded-fast/banded-slow/full)
--max-target-seqs 报告比对的最大目标序列数(默认=25)
--top 报告与顶级比对分数范围内的此百分比的比对(覆盖--max-target-seqs)
--faster 启用更快模式
--fast 启用快速模式
--mid-sensitive 启用中等灵敏度模式
--sensitive 启用灵敏度模式
--more-sensitive 启用更灵敏度模式
--very-sensitive 启用非常灵敏度模式
--ultra-sensitive 启用超级灵敏度模式
--shapes 种子形状数(默认=所有可用)
--query 输入查询文件
--strand 搜索的查询链(双向/负向/正向)
--un 未比对查询的文件
--al 比对查询的文件或文件
--unfmt 未比对查询文件的格式(fasta/fastq)
--alfmt 比对查询文件的格式(fasta/fastq)
--unal 报告未比对查询(0=否,1=是)
--max-hsps 每个查询报告的每个目标序列的最大HSP数(默认=1)
--range-culling 将命中剔除限制在重叠的查询范围内
--compress 输出文件的压缩(0=无,1=gzip,zstd)
--min-score 报告比对的最小比特分数(覆盖e值设置)
--id 报告比对的最小身份%
--query-cover 报告比对的最小查询覆盖%
--subject-cover 报告比对的最小主题覆盖%
--swipe 对所有数据库序列进行详尽的比对
--iterate 以增加的灵敏度进行迭代搜索
--global-ranking 全球排名的目标数
--block-size 以十亿字母为单位的序列块大小(默认=2.0)
--index-chunks 索引处理的块数(默认=4)
--parallel-tmpdir 多处理用的临时文件目录
--gapopen 缺口开启罚分
--gapextend 缺口扩展罚分
--matrix 蛋白质比对的得分矩阵(默认=BLOSUM62)
--custom-matrix 包含自定义评分矩阵的文件
--frameshift 帧移罚分(默认=禁用)
--long-reads 简化 --
range-culling --top 10 -F 15
--query-gencode 用于翻译查询的遗传密码(参见用户手册)
--salltitles 在DAA文件中包含完整的主题标题
--sallseqid 在DAA文件中包含所有主题id
--no-self-hits 抑制报告相同的自身命中
--taxonlist 将搜索限制在税种id列表(逗号分隔)
--taxon-exclude 排除税种id列表(逗号分隔)
--seqidlist 通过访问号列表过滤数据库
--skip-missing-seqids 忽略数据库中缺失的访问号
--outfmt 输出格式
0 = BLAST成对
5 = BLAST XML
6 = BLAST表格
100 = DIAMOND比对档案(DAA)
101 = SAM
102 = 分类学分类
103 = PAF
104 = JSON(扁平)
6和104的值可能后接一个由这些关键词组成的空格分隔列表:
qseqid 表示查询序列 - id
qlen 表示查询序列长度
sseqid 表示主题序列 - id
sallseqid 表示所有主题序列 - id,用';'分隔
slen 表示主题序列长度
qstart 表示查询中的比对开始
qend 表示查询中的比对结束
sstart 表示主题中的比对开始
send 表示主题中的比对结束
qseq 表示比对的查询序列部分
qseq_translated 表示比对的查询序列部分(翻译后)
full_qseq 表示查询序列
full_qseq_mate 表示伴侣的查询序列
sseq 表示比对的主题序列部分
full_sseq 表示主题序列
evalue 表示期望值
bitscore 表示比特分数
corrected_bitscore 表示边缘效应校正的比特分数
score 表示原始得分
length 表示比对长度
pident 表示相同匹配的百分比
approx_pident 表示大约的相同匹配百分比
nident 表示相同匹配的数量
mismatch 表示不匹配的数量
positive 表示积极评分匹配的数量
gapopen 表示缺口开启的数量
gaps 表示总缺口数量
ppos 表示积极评分匹配的百分比
qframe 表示查询框架
btop 表示Blast回溯操作(BTOP)
cigar 表示CIGAR字符串
staxids 表示唯一的主题分类学ID,用';'分隔(按数字顺序)
sscinames 表示唯一的主题科学名称,用';'分隔
sskingdoms 表示唯一的主题超级王国,用';'分隔
skingdoms 表示唯一的主题王国,用';'分隔
sphylums 表示唯一的主题门类,用';'分隔
stitle 表示主题标题
salltitles 表示所有主题标题,用'<>'分隔
qcovhsp 表示查询每HSP的覆盖率
scovhsp 表示主题每HSP的覆盖率
qtitle 表示查询标题
qqual 表示比对部分的查询质量值
full_qqual 表示查询质量值
qstrand 表示查询链
默认:qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore
--file-buffer-size 文件缓冲区大小,以字节为单位(默认=67108864)
--no-unlink 不删除临时文件。
--ignore-warnings 忽略警告
--no
-parse-seqids 打印原始seqids,不进行解析
--bin 用于种子搜索的查询分区数
--ext-chunk-size 自适应排名的块大小(默认=自动)
--no-ranking 禁用排名启发式
--dbsize 有效数据库大小(以字母为单位)
--no-auto-append 禁用自动添加DAA和DMND文件扩展名
--tantan-minMaskProb 用于掩蔽的最小重复概率(默认=0.9)
--algo 种子搜索算法(0=双索引/1=查询索引/ctg=连续种子)
--min-orf 忽略没有至少这个长度开放阅读框的翻译序列
--seed-cut 种子复杂度的截断
--freq-masking 基于频率掩蔽种子
--freq-sd 忽略频繁种子的标准偏差数
--id2 第一阶段命中的最小身份数
--linsearch 仅考虑与相同种子的最长目标的种子命中
--lin-stage1 仅考虑与相同种子的最长查询的种子命中
--xdrop 无缝隙比对的xdrop
--gapped-filter-evalue 缝隙过滤的E值阈值(自动)
--band 动态规划计算的带宽
--shape-mask 种子形状
--multiprocessing 启用分布式内存并行处理
--mp-init 初始化多处理运行
--mp-recover 启用中断多处理运行的继续
--mp-query-chunk 仅处理指定的单个查询块
--culling-overlap 与得分更高的命中重叠的最小范围,以删除命中(默认=50%)
--taxon-k 每个物种报告的最大目标数
--range-cover 范围剔除的查询范围覆盖百分比(默认=50%)
--xml-blord-format 在XML输出中使用gnl|BL_ORD_ID|样式格式
--sam-query-len 将查询长度添加到SAM格式(标签ZQ)
--stop-match-score 设置终止密码子之间的匹配得分。
--target-indexed 启用目标索引模式
--daa DIAMOND比对档案(DAA)文件
--window 本地命中搜索的窗口大小
--ungapped-score 继续本地扩展的最小比对得分
--hit-band 命中验证的带宽
--hit-score 保留临时比对的最小得分
--gapped-xdrop 缝隙比对的xdrop,以比特为单位
--rank-ratio2 包括最后一次命中的这个比例内的主题(第二阶段)
--rank-ratio 包括最后一次命中的这个比例内的主题
--lambda 自定义矩阵的lambda参数
--K 自定义矩阵的K参数
4.3 diamond blastx
./diamond blastx
diamond v2.1.8.162 (C) 马克斯·普朗克科学促进会,本杰明·布赫芬克,蒂宾根大学
文档、支持和更新可在 http://www.diamondsearch.org 获得
请引用:http://dx.doi.org/10.1038/s41592-021-01101-x Nature Methods (2021)
选项:
--threads CPU线程数
--verbose 详细控制台输出
--log 启用调试日志
--quiet 禁用控制台输出
--tmpdir 临时文件目录
--db 数据库文件
--out 输出文件
--header 在表格输出格式中使用标题行(0/简单/详细)。
--comp-based-stats 基于组成的统计模式(0-4)
--masking 掩码算法(无,seg,tantan=默认)
--soft-masking 软掩码(无=默认,seg,tantan)
--evalue 报告比对的最大e值(默认=0.001)
--motif-masking 软掩蔽丰富的基序(0/1)
--approx-id 报告比对/聚类序列的最小近似身份%
--ext 扩展模式(banded-fast/banded-slow/full)
--max-target-seqs 报告比对的最大目标序列数(默认=25)
--top 报告与顶级比对分数范围内的此百分比的比对(覆盖--max-target-seqs)
--faster 启用更快模式
--fast 启用快速模式
--mid-sensitive 启用中等灵敏度模式
--sensitive 启用灵敏度模式
--more-sensitive 启用更灵敏度模式
--very-sensitive 启用非常灵敏度模式
--ultra-sensitive 启用超级灵敏度模式
--shapes 种子形状数(默认=所有可用)
--query 输入查询文件
--strand 搜索的查询链(双向/负向/正向)
--un 未比对查询的文件
--al 比对查询的文件或文件
--unfmt 未比对查询文件的格式(fasta/fastq)
--alfmt 比对查询文件的格式(fasta/fastq)
--unal 报告未比对查询(0=否,1=是)
--max-hsps 每个查询报告的每个目标序列的最大HSP数(默认=1)
--range-culling 将命中剔除限制在重叠的查询范围内
--compress 输出文件的压缩(0=无,1=gzip,zstd)
--min-score 报告比对的最小比特分数(覆盖e值设置)
--id 报告比对的最小身份%
--query-cover 报告比对的最小查询覆盖%
--subject-cover 报告比对的最小主题覆盖%
--swipe 对所有数据库序列进行详尽的比对
--iterate 以增加的灵敏度进行迭代搜索
--global-ranking 全球排名的目标数
--block-size 以十亿字母为单位的序列块大小(默认=2.0)
--index-chunks 索引处理的块数(默认=4)
--parallel-tmpdir 多处理用的临时文件目录
--gapopen 缺口开启罚分
--gapextend 缺口扩展罚分
--matrix 蛋白质比对的得分矩阵(默认=BLOSUM62)
--custom-matrix 包含自定义评分矩阵的文件
--frameshift 帧移罚分(默认=禁用)
--long-reads 简化 --
range-culling --top 10 -F 15
--query-gencode 用于翻译查询的遗传密码(参见用户手册)
--salltitles 在DAA文件中包含完整的主题标题
--sallseqid 在DAA文件中包含所有主题id
--no-self-hits 抑制报告相同的自身命中
--taxonlist 将搜索限制在税种id列表(逗号分隔)
--taxon-exclude 排除税种id列表(逗号分隔)
--seqidlist 通过访问号列表过滤数据库
--skip-missing-seqids 忽略数据库中缺失的访问号
--outfmt 输出格式
0 = BLAST成对
5 = BLAST XML
6 = BLAST表格
100 = DIAMOND比对档案(DAA)
101 = SAM
102 = 分类学分类
103 = PAF
104 = JSON(扁平)
6和104的值可能后接一个由这些关键词组成的空格分隔列表:
qseqid 表示查询序列 - id
qlen 表示查询序列长度
sseqid 表示主题序列 - id
sallseqid 表示所有主题序列 - id,用';'分隔
slen 表示主题序列长度
qstart 表示查询中的比对开始
qend 表示查询中的比对结束
sstart 表示主题中的比对开始
send 表示主题中的比对结束
qseq 表示比对的查询序列部分
qseq_translated 表示比对的查询序列部分(翻译后)
full_qseq 表示查询序列
full_qseq_mate 表示伴侣的查询序列
sseq 表示比对的主题序列部分
full_sseq 表示主题序列
evalue 表示期望值
bitscore 表示比特分数
corrected_bitscore 表示边缘效应校正的比特分数
score 表示原始得分
length 表示比对长度
pident 表示相同匹配的百分比
approx_pident 表示大约的相同匹配百分比
nident 表示相同匹配的数量
mismatch 表示不匹配的数量
positive 表示积极评分匹配的数量
gapopen 表示缺口开启的数量
gaps 表示总缺口数量
ppos 表示积极评分匹配的百分比
qframe 表示查询框架
btop 表示Blast回溯操作(BTOP)
cigar 表示CIGAR字符串
staxids 表示唯一的主题分类学ID,用';'分隔(按数字顺序)
sscinames 表示唯一的主题科学名称,用';'分隔
sskingdoms 表示唯一的主题超级王国,用';'分隔
skingdoms 表示唯一的主题王国,用';'分隔
sphylums 表示唯一的主题门类,用';'分隔
stitle 表示主题标题
salltitles 表示所有主题标题,用'<>'分隔
qcovhsp 表示查询每HSP的覆盖率
scovhsp 表示主题每HSP的覆盖率
qtitle 表示查询标题
qqual 表示比对部分的查询质量值
full_qqual 表示查询质量值
qstrand 表示查询链
默认:qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore
--file-buffer-size 文件缓冲区大小,以字节为单位(默认=67108864)
--no-unlink 不删除临时文件。
--ignore-warnings 忽略警告
--no
-parse-seqids 打印原始seqids,不进行解析
--bin 用于种子搜索的查询分区数
--ext-chunk-size 自适应排名的块大小(默认=自动)
--no-ranking 禁用排名启发式
--dbsize 有效数据库大小(以字母为单位)
--no-auto-append 禁用自动添加DAA和DMND文件扩展名
--tantan-minMaskProb 用于掩蔽的最小重复概率(默认=0.9)
--algo 种子搜索算法(0=双索引/1=查询索引/ctg=连续种子)
--min-orf 忽略没有至少这个长度开放阅读框的翻译序列
--seed-cut 种子复杂度的截断
--freq-masking 基于频率掩蔽种子
--freq-sd 忽略频繁种子的标准偏差数
--id2 第一阶段命中的最小身份数
--linsearch 仅考虑与相同种子的最长目标的种子命中
--lin-stage1 仅考虑与相同种子的最长查询的种子命中
--xdrop 无缝隙比对的xdrop
--gapped-filter-evalue 缝隙过滤的E值阈值(自动)
--band 动态规划计算的带宽
--shape-mask 种子形状
--multiprocessing 启用分布式内存并行处理
--mp-init 初始化多处理运行
--mp-recover 启用中断多处理运行的继续
--mp-query-chunk 仅处理指定的单个查询块
--culling-overlap 与得分更高的命中重叠的最小范围,以删除命中(默认=50%)
--taxon-k 每个物种报告的最大目标数
--range-cover 范围剔除的查询范围覆盖百分比(默认=50%)
--xml-blord-format 在XML输出中使用gnl|BL_ORD_ID|样式格式
--sam-query-len 将查询长度添加到SAM格式(标签ZQ)
--stop-match-score 设置终止密码子之间的匹配得分。
--target-indexed 启用目标索引模式
--daa DIAMOND比对档案(DAA)文件
--window 本地命中搜索的窗口大小
--ungapped-score 继续本地扩展的最小比对得分
--hit-band 命中验证的带宽
--hit-score 保留临时比对的最小得分
--gapped-xdrop 缝隙比对的xdrop,以比特为单位
--rank-ratio2 包括最后一次命中的这个比例内的主题(第二阶段)
--rank-ratio 包括最后一次命中的这个比例内的主题
--lambda 自定义矩阵的lambda参数
--K 自定义矩阵的K参数
05 常用命令行
同blast,常用三个命令makedb、blastp、blastx如下:
# 创建一个diamond格式的数据库文件
./diamond makedb --in reference.fasta -d reference
# 以blastp模式运行搜索
./diamond blastp -d reference -q queries.fasta -o matches.tsv
# 以blastx模式运行搜索
./diamond blastx -d reference -q reads.fasta -o matches.tsv
# 下载并使用BLAST数据库
update_blastdb.pl --decompress --blastdb_version 5 swissprot
./diamond prepdb -d swissprot
./diamond blastp -d swissprot -q queries.fasta -o matches.tsv
需要考虑的一些重要点:
- 默认情况下,重复掩蔽会应用于查询和参考序列。要禁用它,请使用 --masking 0。
- DIAMOND 为大型输入文件优化,>1 百万蛋白质。当然,该工具也可以用于较小的文件,但算法将不会达到其全部效率。
- 该程序可能会使用相当多的内存和临时磁盘空间。如果程序因内存或磁盘空间不足而失败,您需要为块大小参数 -b 设置一个较低的值。
- 可以使用选项 --fast、--mid-sensitive、--sensitive、--more-sensitive、--very-sensitive 和 --ultra-sensitive 调整灵敏度。
同时,diamond也是一些共线性分析,同源序列分析的必备工具,对于大型转录组,基因组分析,blast就很慢,可能要跑几天,而blast就很快!必备!时间就是效率!
06 参考文献
- Buchfink B, Reuter K, Drost HG, "Sensitive protein alignments at tree-of-life scale using DIAMOND", Nature Methods 18, 366–368 (2021). doi:10.1038/s41592-021-01101-x
- Buchfink B, Ashkenazy H, Reuter K, Kennedy JA, Drost HG, "Sensitive clustering of protein sequences at tree-of-life scale using DIAMOND DeepClust", bioRxiv 2023.01.24.525373; doi: Sensitive clustering of protein sequences at tree-of-life scale using DIAMOND DeepClust | bioRxiv
- Buchfink B, Xie C, Huson DH, "Fast and sensitive protein alignment using DIAMOND", Nature Methods 12, 59-60 (2015). doi:10.1038/nmeth.3176