本地BLAST的使用方法及基本操作步骤

您所在的位置:网站首页 查看数据库序列的命令 本地BLAST的使用方法及基本操作步骤

本地BLAST的使用方法及基本操作步骤

2024-07-16 03:14:32| 来源: 网络整理| 查看: 265

文章目录 BLAST+程序下载与安装基因组数据下载制作数据库BLAST叮!

BLAST+程序下载与安装 BLAST+安装包下载地址:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/根据自己的系统选择不同的安装包,若是windows则直接下载win64.exe版本,按常规软件安装步骤安装即可,但是注意安装时要选择将软件路径加到环境变量中。若是ubuntu系统,可以直接输入 apt-get install ncbi-blast+ ,但这种方法下的不是最新版。若是想要体验最新版,也可以下载最新版安装包进行安装。网上能找到安装教程如link.(注意将Blast+设置到环境变量中,以利于后续使用)。 基因组数据下载 首先要找到自己BLAST所要用到的目标基因组,可以在如下链接找到各种分类的物种基因组信息https://www.ncbi.nlm.nih.gov/genome/browse#!/overview/根据其中的分类找到自己需要的,并且下载对应的索引文件,这些在网页上都是能轻松操作的哈。我就是直接下载了prokaryotes.csv的文件,其中包含了ncbi已记录的原核生物的基因组信息。根据下载的索引文件获取基因组下载链接。索引文件中的GenBank FTP或者RefSeq FTP记录了基因组文件的存放位置,对这两列的地址进行处理即可。如Escherichia coli O157:H7 str. Sakai的GenBank FTP为: ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/008/865/GCA_000008865.2_ASM886v2 打开这个链接可知其基因组链接为:ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/008/865/GCA_000008865.2_ASM886v2/GCA_000008865.2_ASM886v2_genomic.fna.gz 可以发现FTP中的最后一项重复一次再加上_genomic.fna.gz即为基因组文件即**.fna**文件的链接,因此使用编程软件获得所有基因组链接便轻而易举。获得下载链接后使用wget批量下载即可。

此处列出本人使用python操作的步骤(本人编程能力很差,多担待):

import pandas as pd # 导入pandas库 import os # 导入os库,python调用linux shell时需要用到 df = pd.read_csv("prokaryotes.csv") # 读取下载的文件 df['genome_ftp'] = df['GenBank FTP'] + '/' + \ df['GenBank FTP'].apply(lambda x : x.split('/')[-1]) + \ '_genomic.fna.gz' # 上面是一行代码,即在dataframe中将GenBank FTP列的信息通过整理,得到了新列(即下载地址列) # apply函数用于处理较为麻烦的事情,这里相当于每一个GenBank FTP地址都经过apply处理 # x就是GenBank FTP,将其使用split分割成列表,再取最后一项。 # 得到的新列就是我们需要的基因组的下载地址啦 df['genome_ftp'].to_csv('dlftp.txt', header = False, index = False) # 这里只将下载地址保存下来,不需要索引,也不需要列标题,因此两个都是False inword = "wget -i dlftp.txt -P ./pro_genomes/" # 字符串用于linux shell调用,wget很多选项按需使用,P选择下载目录,i 表示读取文件中的url os.system(inword) # linux shell执行上面的下载命令 制作数据库

本地的BLAST与网页版的不同,网页版的可以直接将基因组文件(即fasta文件)传入就能进行BLAST了,但是本地版的BLAST需要先制作目标数据库,也就是基因组文件是需要先被制成一个个的数据库后才能开始BLAST。

通过上述方法下载得到的文件都是以 .gz 为后缀名的,还需要先解压才行,解压后直接制作数据库,制作数据库的命令如下:

makeblastdb -in db.fasta -dbtype nucl -out dbname -in 需要制作数据库的序列文件(输入fna文件即可)-dbtype 输入序列的类型,核酸为nucl,氨基酸为prot -out 输出得到的数据库的名称,每个序列文件都会输出一个数据库,需要命名。说起来是一个数据库,但是其实就是产生的几个文件。一般来说可以创建一个文件夹,将这几个文件都保存在里面,在建的库较多时也不容易乱。此外还有一些参数,一般来说是用不上啦,有需要可以自行探索。

数据少时批量解压和建库的操作代码如下:

import os files = os.listdir("pro_genomes/") # 列出下载的基因组文件,得到的是一个列表 for genome in files: # 循环对列表中的每一个基因组文件进行处理 jieya = "gzip -d pro_genomes/" + genome # 使用gzip -d命令后原压缩包会被自动删除 os.system(jieya) # 通过os.system调用shell来处理上述语句 db_name = genome.strip('.fna.gz') # 这里我先把建库的名字设好,就是基因组文件名的前缀(无.fna) mdb = f"makeblastdb -in pro_genomes/{db_name}.fna -dbtype nucl \ -out db/{db_name}/{db_name}" ''' 这里是建库的步骤,mdb是一个字符串,在字符串前加上f表示后面的语句你可以按照正常的 写字符串的顺序写下,即不需要使用+号来连接字符串,在有外界变量时只需要对外界变量加入 中括号即可,是不是很方便呀!这里我将建的库都放在db文件夹中,为防混乱,这里建库的out 还建了一个文件夹即db/{db_name},生成的数据库文件是在这个文件夹中的,最后面的{db_name} 是代表数据库的名字,产生的数据库文件都会以这个名字为前缀,只是后缀不同 (如nhr、nin、nsq这些后缀,最新版的BLAST会产生6个文件) 注意空格不要打少咯! ''' os.system(mbd)

某些特定要求的BLAST可能需要屏蔽某些低复杂度序列或者基因组内出现很多次的序列,因此需要利用blast+的mask工具windowmasker(核酸)、dustmasker(核酸)或者segmasker(氨基酸)进行屏蔽,屏蔽之后再根据其产生的信息进行后续的BLAST建库,如有这方面要求可以查询一下相关内容。

BLAST

数据库制作完成就能用来进行本地BLAST了,BLAST有很多种类型如blastp、blastn、tblastn等,根据自己需要选择。此处以tblastn为例,命令如下:

tblastn -query demo.fasta -out demo.blast -db dbname -outfmt 6 -evalue 0.01 -num_threads 20 -query 查询序列-out 比对结果文件名,每个数据库比对都会产生一个结果-db 之前制作好的数据库名,若要对比多个则需要使用编程软件批量进行-outfmt 输出格式,blast输出有很多形式,使用比较多的有6、11-evalue 即最大的evalue阈值,超过这个evalue的结果就不要了,默认为10-num_threads 即使用的线程数,有的时候你BLAST的query是有很多条序列的,这时候它就派上用场啦,速度会显著加快的

BLAST还有一些其它参数,若有需要可以blast -help查询一下哈

例(单个BLAST):

# linux shell tblastn -query sequence.fasta -out demo.blast -outfmt 6 -db db/GCA_900475215.1_42727_B01_genomic/GCA_900475215.1_42727_B01_genomic

由于批量操作的步骤与上面类似,就不再列出。要注意的是在BLAST时,dbname不是文件夹名,而是文件夹下的文件名的前缀(不要后缀)。比如我这里就是有db/GCA_900475215.1_42727_B01_genomic这个文件夹,文件夹里面有GCA_900475215.1_42727_B01_genomic.nhr、CA_900475215.1_42727_B01_genomic.nin、CA_900475215.1_42727_B01_genomic.nsq这几个文件,但我要输数据库的话就是按照上面的输入即db/GCA_900475215.1_42727_B01_genomic/GCA_900475215.1_42727_B01_genomic。 这里新手很容易犯错哦,如果输错的话会报错。

这里我烦了很久的:(

叮!

这样一个完整的基础的本地BLAST操作就结束啦,当然还需要自己使用编程工具将这些步骤串起来,形成自动化循环,才能进行大批量的BLAST。当然工作量大时可能还需要用到多线程或多进程等工具,充分利用机器的运行内存加快速度。

大家也可以参考我后面的其它多进程的文章呀(嘿嘿嘿)!

但 BLAST只是工具,在获得结果之后才是更重要的步骤,需要根据自己的需求处理得到的比对结果。似乎这个更麻烦,很麻烦。由于篇幅限制,之后若是有相关的内容也会分享的!

注意:我使用的环境是ubuntu,因此本文中调用的也是Linux shell。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭