网页版blast构建
之前做网站,要构建一个网页版的blast,我是一脸懵逼,这东西咋做,我只会在NCBI上用啊,网上找的资料基本还都是如何使用blast我就更懵逼了,问了同学,打开了思路,biopython上有相关函数但是好慢好卡,还容易崩,我又问问了,在本地下载个blast+再写个函数,跑就完事了,最后分析下结果,反正能比对就ok了,按着这思路,就做了如下的工作。
1.下载blast+
ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ 下载对应的版本并进行安装
2.网页部分的构建
因为只需要blastn的功能,所以仿照blastn界面谢了一个界面
2.1 涉及到参数及设计
序列输入 =》 -query <file_in> 输入你要查找的序列,将上传的序列文件名放进去,最好是绝对路径
查询范围 =》 -query_loc <n-x> 需要查找的位置(start-stop) ps:start/stop输入是数字型
查询类型 =》 -task <string> 选择查询的类型,blastn下有好几种类型"blastn","blastn-short","megablast"各有有缺
保留阈值 =》 -evalue 保留匹配的阈值,自己设定,一般默认是10
匹配长度 =》 -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.获取到结果,将结果循环展示到结果界面上
大概的构建过程就是这样,见仁见智。。记录一下,没白看。。。。