以前作網站,要構建一個網頁版的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.獲取到結果,將結果循環展現到結果界面上
大概的構建過程就是這樣,見仁見智。。記錄一下,沒白看。。。。