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的基本步骤

  1. 用makeblastdb为BLAST提供数据库
  2. 选择blast工具,blastn,blastp
  3. 运行工具,有必要的还可以对输出结果进行修饰

第一步:建立检索所需数据库

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