學習Linux的循環(huán): 批量blast

最常用的Linux循環(huán)應該是for和while,記錄兩個直接輸入command的實例(輸出Ta開頭的所有文件名字):

for i in Ta*;do echo $i;done
ls Ta* | while read id;do echo $id;done

開始正片:使用同一個query批量blast文件夾下所有的".fa"文件。
使用一個shell腳本,可以用vim創(chuàng)建,也可以使用vscode等記事本軟件來寫。

# 遍歷所有的fa文件
for i in *.fa;       
do
# 輸出正在執(zhí)行的fa的名字
echo $i     
# 構(gòu)建blast database,“> $i.log 2>&1”: 把輸出到terminal的內(nèi)容保存到log文件      
makeblastdb -in $i -dbtype prot -out $i.db > $i.log 2>&1   
# 進行blast
blastp -query OsBGL.seq -db $i.db -out $i.BGL.blast -outfmt 6 -evalue 1e-10 -num_threads 3 > $i.blast.log 2>&1 
done

平時一條一條blast的時候,習慣在命令后加&,掛到后臺,這里不能帶&,特別是makeblastdb的時候,因為掛到后臺立刻執(zhí)行blast,是沒有database可以用的。

然后想取所有blast結(jié)果的前3行,并整合到一個文件

# 創(chuàng)建空文件
touch blast_top3.txt
# 遍歷所有的blast文件
for i in *.blast;       
do
# 輸出正在執(zhí)行的fa的名字
echo $i     
# head取前3行    
head -3 $i >> top3.blast
done
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容