以前作网站,要构建一个网页版的blast,我是一脸懵逼,这东西咋作,我只会在NCBI上用啊,网上找的资料基本还都是如何使用blast我就更懵逼了,问了同窗,打开了思路,biopython上有相关函数可是好慢好卡,还容易崩,我又问问了,在本地下载个blast+再写个函数,跑就完事了,最后分析下结果,反正能比对就ok了,按着这思路,就作了以下的工做。python
1.下载blast+ide
ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ 下载对应的版本并进行安装函数
2.网页部分的构建网站
由于只须要blastn的功能,因此仿照blastn界面谢了一个界面spa
2.1 涉及到参数及设计设计
序列输入 =》 -query <file_in> 输入你要查找的序列,将上传的序列文件名放进去,最好是绝对路径string
查询范围 =》 -query_loc <n-x> 须要查找的位置(start-stop) ps:start/stop输入是数字型hash
查询类型 =》 -task <string> 选择查询的类型,blastn下有好几种类型"blastn","blastn-short","megablast"各有有缺it
保留阈值 =》 -evalue 保留匹配的阈值,本身设定,通常默认是10io
匹配长度 =》 -word_size <integer,>=4> 设置最佳匹配长度
匹配得分 =》 -reward <int,>=0> 匹配上的得分
错配罚分 =》 -penalty <int,>=0> 错配的罚分
open gap =》 -gapopen<int> open gap 分数
extend gap =》 -gapextend<int> extend gap分数
筛选 =》 -dust<str> "yes"or"no" 筛选低复杂区域
结果输出 =》 -outfmt 输出结果格式
我用的是 -6 用"\t"格式分割 -7 用"\t"分割,包含注释
输出还有一些列格式,没怎么用到,因此不赘述
-6 输出通常是12列
Queryid(查询id) Subject id(比对上的id) identity(配对一致性%) alignment length(比对上的区域长度) mismatches(错配数)
gap open q.start(匹配上的查询序列起点) q.end(匹配上查询序列终点) s.start(匹配上目标序列的起点) s.end(匹配上目标序列的终点)
e-value bitscore(比对上的的得分)
3.构建本身的库
载入本身的须要的fa数据做为库 blastn 只要nucl库
命令:makeblastdb.exe -in 基因组genomic.fna -parse_seqids -hash_index -dbtype nucl -out 自定义库名
4.写程序获取上传的信息
我用的是python,切换到blast+所在文件夹/bin/下
"""blastn -query %s -db %s -out %s -task %s -evalue %d -word_size %d -reward %d -penalty %d -gapopen %d -gapextend %d -dust %s -outfmt 6 """%(inname,db,outname,task,evalue,word_size,reward,penalty,gapopen,gapextend,dust)
设置好语句,就能够跑了
5.获取到结果,将结果循环展现到结果界面上
大概的构建过程就是这样,见仁见智。。记录一下,没白看。。。。