blast本地安装(已装)
Basic local alignment search tool (BLAST)
包括:blastn, blastp, blastx, tblastn, tblastx等. 使用conda安装即可。
conda install -c bioconda blast
# blast安装perl模块的方法
conda install perl-digest-md5
BLAST的主要理念
- Search may take place in nucleotide and/or protein space or translated spaces where nucleotides are translated into proteins.
- Searches may implement search “strategies”: optimizations to a certain task. Different search strategies will return different alignments.
- Searches use alignments that rely on scoring matrices
- Searches may be customized with many additional parameters. BLAST has many subtle functions that most users never need.
本地BLAST的基本步骤
- 用makeblastdb为BLAST提供数据库
- 选择blast工具,blastn,blastp
- 运行工具,有必要的还可以对输出结果进行修饰
第一步:建立检索所需数据库
BLAST数据库分为两类,核酸数据库和氨基酸数据库,可以用
makeblastbd
创建。可以用help参数简单看下说明。
$ makeblastdb -help
USAGE
makeblastdb [-h] [-help] [-in input_file] [-input_type type]
-dbtype molecule_type [-title database_title] [-parse_seqids]
[-hash_index] [-mask_data mask_data_files] [-mask_id mask_algo_ids]
[-mask_desc mask_algo_descriptions] [-gi_mask]
[-gi_mask_name gi_based_mask_names] [-out database_name]
[-max_file_sz number_of_bytes] [-logfile File_Name] [-taxid TaxID]
[-taxid_map TaxIDMapFile] [-version]
-dbtype <String, `nucl', `prot'>
下载数据库:
NCBI 官方数据库nr,nt下载,同理可下载其他数据库。
按此路径建立文件夹,并将下载的数据库并解压在对应的目录下
/home/xzg/Database/blast/nr ; 核酸数据库本地存放位置
/home/xzg/Database/blast/nt;蛋白质库
wget https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nr.gz
gunzip -c nr.gz >nr.fa
#makeblastdb构建数据库索引
makeblastdb -in nr.fa -dbtype prot -out mynr
wget https://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nt.gz
gunzip -c nt.gz >nt.fa
makeblastdb -in nt.fa -dbtype nucl -out mynt
in:原本我们数据库的文件
input_type:输入文件的格式,很明显,我这里是fasta格式
dbtype:表示数据库的类型,核酸序列数据库选择nucl,蛋白质数据库选择prot。
mask_data:使用上一个步骤建立的文件,可以不选
out:个人给数据库命名,之后使用数据库将使用这个名称。
如果你从NCBI或者其他渠道下载了格式化过的数据库,那么可以用
blastdbcmd
去检索blast数据库,参数很多,常用就如下几个:
- db string : string表示数据库所在路径
- dbtype string,: string在(guess, nucl, prot)中选择一个
- 检索相关参数
- -entry all 或 555, AC147927 或 gnl|dbname|tag'
- -entry_batch 提供一个包含多个检索关键字的文件
- -info 数据库基本信息
- 输出格式 -outfmt %f %s %a %g ...默认是%f
- out 输出文件
- show_blastdb_search_path: blast检索数据库路径
使用案例
# 查看信息
blastdbcmd -db TAIR10 -dbtype nucl -info
# 所有数据
blastdbcmd -db TAIR10 -dbtype nucl -entry all | head
# 具体关键字,如GI号
blastdbcmd -db TAIR10 -dbtype nucl -entry 3 | head
还有其他有意思的参数,可以看帮助文件了解
第二步:选择blast工具
根据不同的需求,比如说你用的序列是氨基酸还是核苷酸,你要查找的数据是核甘酸还是氨基酸,选择合适的blast工具。不同需求的对应关系可以见下图(来自biostars handbook)
(psi-blast的使用)
psiblast -db /home/thz/F/Database/blast/nr/mynr -query /home/thz/tmp.fasta -out_ascii_pssm tmp.pssm -num_iterations 3
BLAST工具
不同工具的应用范围虽然不同,但是基本参数都是一致的,学会
blastp
,基本上其他诸如
blastn
,
blastx
也都会了。
blastp -db /home/thz/F/Database/blast/nr/mynr -query /home/thz/tmp.fasta -outfmt 11 -out /home/thz/tmp.asn
blastn -db BLAST/TAIR10 -query query.fa
# 还可以指定检索序列的位置
blastn -db BLAST/TAIR10 -query query.fa -query_loc 20-100
blastn的使用参数很多
blastp [-h]
,但是比较常用是如下几个
- -db : 数据库在本地的位置,或者是NCBI上数据库的类型,如 -db nr
BLAST库
- -query: 检索文件
- -query_loc : 指定检索的位置
- -strand: 搜索正义链还是反义链,还是都要
- out : 输出文件
- -remote: 可以用NCBI的远程数据库, 一般与 -db nr
- -evalue 科学计数法,比如说1e3,定义期望值阈值。E值表明在随机的情况下,其它序列与目标序列相似度要大于这条显示的序列的可能性。 与S值有关,S值表示两序列的同源性,分值越高表明它们之间相似的程度越大
-
以上是默认输出,blast的
-outfmt
选项提供个性化的选择。一共有18个选择,默认是0。
0 = Pairwise,
1 = Query-anchored showing identities,
2 = Query-anchored no identities,
3 = Flat query-anchored showing identities,
4 = Flat query-anchored no identities,
5 = BLAST XML,
6 = Tabular,
7 = Tabular with comment lines,
8 = Seqalign (Text ASN.1),
9 = Seqalign (Binary ASN.1),
10 = Comma-separated values,
11 = BLAST archive (ASN.1),
12 = Seqalign (JSON),
13 = Multiple-file BLAST JSON,
14 = Multiple-file BLAST XML2,
15 = Single-file BLAST JSON,
16 = Single-file BLAST XML2,
17 = Sequence Alignment/Map (SAM),
18 = Organism Report
其中6,7,10,17可以自定输出格式。
默认是
qaccver saccver pident length mismatch gapopen qstart qend sstart send evalue bitscore
简写 | 含义 |
---|---|
qaccver | 查询的AC版本(与此类似的还有qseqid,qgi,qacc,与序列命名有关) |
saccver | 目标的AC版本(于此类似的还有sseqid,sallseqid,sgi,sacc,sallacc,也是序列命名相关) |
pident | 完全匹配百分比 (响应的nident则是匹配数) |
length | 联配长度(另外slen表示查询序列总长度,qlen表示目标序列总长度) |
mismatch | 错配数目 |
gapopen | gap的数目 |
qstart | 查询序列起始 |
qstart | 查询序列结束 |
sstart | 目标序列起始 |
send | 目标序列结束 |
evalue | 期望值 |
bitscore | Bit得分 |
score | 原始得分 |
AC: | accession |
对已有序列进行注释时常见的
best hit only
模式命令行
blastn -query gene.fa -out gene.blast.txt -task megablast -db nt -num_threads 12 -evalue 1e-10 -best_hit_score_edge 0.05 -best_hit_overhang 0.25 -outfmt "7 std stitle" -perc_identity 50 -max_target_seqs 1