查看原文
其他

Biostar: 课程11、12

2017-04-22 István Albert 生信媛

翻译:生物女博士

注:本系列课程翻译已获得原作者授权。


#为作者的注释

#*为译者的注释


#* 本文需要用到NCBI的工具,详情参见课程3、4


Lecture 11 - 安装和使用Blast


# 获取并安装BLAST+

# 下边的URLs 是MAC系统的,Linux的需自行修改。

# 转到src文件夹

cd ~/src


# 获取Mac的blast可执行版本。

#*译者已将原版本下载链接更改为最新版本的blast

curl -O  

tar zxvf ncbi-blast-2.6.0+-x64-macosx.tar.gz


# Linux 则下载另一个包。

# curl -O

# tar zxvf


# 我可以把可执行的软件或者整个文件夹加到我的路径下。通常我都是添加整个文件夹。

#*Mac下

echo 'export PATH=$PATH:~/src/ncbi-blast-2.6.0+/bin' >> ~/.profile


# Linux下

# echo 'export PATH=$PATH:~/src/ncbi-blast-2.6.0+/bin' >> ~/.bashrc


# 加载新设定到当前终端(新开的终端会自动加载)

#*这是mac下的。

source ~/.profile


#*对应Linux下

source ~/.bashrc


# 检测是否可用了。简单版本的帮助文档。

blastn -h


# 完整的帮助文档。

blastn -help


# 检测清单:

#   1. 我们想找什么?-> 查询序列

#   2. 到哪里去找? -> 数据库 -> 目标序列

#   3. 如何找到? -> 搜索类型


# 我们来建一个blast的数据库

# 获取埃博拉病毒的基因组序列

# 当我们索引数据库是,可能会产生多个文件。最好还是把这些文件单独放到一个文件夹里。我们给这文件夹命名为refs。

mkdir -p refs

efetch -db nucleotide -id KM233118 --format fasta > refs/KM233118.fa


# 参考序列可能有一个或多个fastq记录。要把它变成一个blast的数据库,我们需要把它转成程序可以操作的格式。

# blast数据库建立索引的完整或者简单的帮助文档

makeblastdb -h

makeblastdb -help


# 从基因组创建一个核苷酸数据库。

makeblastdb -in refs/KM233118.fa -dbtype nucl


# 来看一下发生了什么。

ls refs


# 创建查询序列

head -2 refs/KM233118.fa > query.fa


# 搜索这条序列:核苷酸序列 vs 核苷酸数据库

# 注意一下格式。

blastn -db refs/KM233118.fa -query query.fa | more


# 我们可以修改输出格式。 当碱基对碱基的比对信息不需要时,我们可以采用表格格式。

blastn -db refs/KM233118.fa -query query.fa -outfmt 6


# 这个同时会显示表头信息。

blastn -db refs/KM233118.fa -query query.fa -outfmt 7


# 你也可以自己定义输出格式。

blastn -db refs/KM233118.fa -query query.fa -outfmt '6 qseqid sseqid qlen length mismatch'


#*在blastn -help里输出的帮助文档内有详细的格式说明。分别告诉你不同的数字表示的输出格式,以及自定义格式时,每个参数的含义。

# 默认情况下将采用MEGABLAST工具搜索.

# 将查询序列缩短为:

# >short

# AATCATACCTGG


#*你可以这么生成一个新的query.fa:

echo ">short" > query.fa

echo "AATCATACCTGG" >> query.fa


# blast有不同的搜索策略或task。

#*task里的参数有'blastn','blastn-short' ,'dc-megablast','megablast', 'rmblastn',默认的是'megablast'

#*使用不同的task,出来的结果内会有文献引用,有兴趣的朋友可以去看一下。

#*blastn:需要11bp以上的精确匹配。

#*blast-short:对于小于50bp的序列最优。

#*megablast:一般用于非常相似的序列。

#*dc-megablast:dc(discontiguous,不连续的),一般用于找距离远(相似性低的,比如种间同源)的序列。


# 这些是一些预设参数集的典型。

blastn -db refs/KM233118.fa -query query.fa

blastn -db refs/KM233118.fa -query query.fa -task blastn


# 把序列弄得更短些。

# >short

# AATCATA

# 现在 -task blastn 也不能用了, 有另一个task叫blastn-short

# Blast的参数调整本身就是个小世界。

blastn -db refs/KM233118.fa -query query.fa -task blastn-short


# 你在目标数据库中,可以有多条序列。

esearch -db nucleotide -query PRJNA257197 | efetch -db nucleotide -format fasta > refs/all-genomes.fa


# 对所有的基因组创建blast数据库。

makeblastdb -in refs/all-genomes.fa -dbtype nucl


# 随意挑取基因组的任意区域。

efetch -db nucleotide -id KM233118 -format fasta -seq_start 1 -seq_stop 1000 > 1000.fa


#*大家可以试一下

#*blastn -db refs/all-genomes.fa -query 1000.fa -outfmt 6




Lecture 12 - blastdbcmd, blastp, blastx, tblastn 的用法


# blastdbcmd, blastp, blastx, tblastn 的用法

# 比对1999年爆发的新病毒。

# RefSeq 访问号 NC_002549.1, 核蛋白例子: NP_066243.1

# http://www.ncbi.nlm.nih.gov/genome/4887

# 这个Bioproject 数据来自1999年。

# 获取特征表格

esearch -db protein -query PRJNA14703 | efetch -format ft


# 搜索基因组的特征, ft -> feature table(特征表格)的简写。

efetch -db nucleotide -id NC_002549 -format ft | more


# 从蛋白质数据库里获取这个项目的数据

esearch -db protein -query PRJNA14703 | efetch -format fasta > NC_002549-prot.fa


# 添加parse eqids选项来makeblastdb.

# 新建一个核苷酸和蛋白质的Blast数据库。


#*NC_002549的核苷酸序列,前边并没有下载下来。

#*请先下载:esearch -db nucleotide -query NC_002549 | efetch -format fasta > NC_002549.fa

#*这里面由于前面下载的时候路径没有改到refs/下,所以下面运行会出现文件的路径问题的。

#*我们现在先把NC_002549.fa和 NC_002549-prot.fa移到refs/下

#* mv NC_002549* refs/

#*好了,可以开始了。

makeblastdb -in refs/NC_002549.fa -dbtype nucl -parse_seqids

makeblastdb -in refs/NC_002549-prot.fa -dbtype prot -parse_seqids


# blastdbcmd 有很多参数,可以对Blast数据库内容进行查询和格式设定。

# 列出数据库的所有内容。

blastdbcmd -db refs/NC_002549.fa -entry 'all' | head -3


# 获取数据库的特定条目。

blastdbcmd -db refs/NC_002549.fa -entry '10313991' | head -3

#*报错,暂未解决。


# 获取数据库中的一定范围的核苷酸条目。

blastdbcmd -db refs/NC_002549.fa -entry 'all' -outfmt '%a %s' -range 1-10 -strand minus

#*%a表示accession(访问号),%s 表示 sequence data(序列数据)


# 设定数据库内容的格式。

blastdbcmd -db refs/NC_002549.fa -entry 'all' -outfmt '%a %l'

#*%l 表示 sequence length(序列长度)


# 列出每个蛋白及其长度。

blastdbcmd -db refs/NC_002549-prot.fa -entry 'all' -outfmt '%a %l'


# 从蛋白数据库中提取一个条目并存到一个文件中。

blastdbcmd -db refs/NC_002549-prot.fa -entry 'NP_066243.1' > query-p.fa


# 运行blastp。

#*blastp是蛋白序列比对蛋白数据库。

blastp -db refs/NC_002549-prot.fa -query query-p.fa


# 运行 tblastn。

# 提取蛋白质编码区域。我是自己从GenBank页面去找对应蛋白区域的。

#*自行到NCBI搜索NC_002549。NCBI会给出cds区域信息的

blastdbcmd -db refs/NC_002549.fa -entry 'NC_002549' -range 470-2689  > nucleotide.fa


# 将核苷酸序列比对到蛋白数据库中。

#*blastx是核苷酸序列比对到蛋白数据库

blastx -db refs/NC_002549-prot.fa -query nucleotide.fa | more


# 抓取核蛋白。

#*tblastn是蛋白序列比对到核苷酸数据库。

efetch -db protein -id NP_066243.1 -format fasta > NP_066243.fa

tblastn -db refs/NC_002549.fa -query NP_066243.fa  | more


# 把2014的埃博拉项目的所有蛋白获取下来。

esearch -db protein -query PRJNA257197 | efetch -format fasta > refs/ebola-2014.fa

makeblastdb -in refs/ebola-2014.fa -dbtye prot -parse_seqids


# 抓取核蛋白。

efetch -db protein -id NP_066243.1 -format fasta > NP_066243.fa


#*大家可以试试对这条蛋白进行序列比对。



参考资料(pdf文件):chrome-extension://padcapdkhelngdelppbbjmkmkfceoikg/content/pdf/viewer/viewer.html?file=https%3A%2F%2Fwww.ncbi.nlm.nih.gov%2Fbooks%2FNBK279690%2Fpdf%2FBookshelf_NBK279690.pdf


欢迎关注我们



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存