超簡單腳本python腳本實現(xiàn)批量多文件contig名稱縮短

今天復(fù)習(xí)中途順便在幫張阿姨用prokka做原核contig注釋,但是第一個contig的fa文件就出問題了!


圖片.png

[03:47:20] Contig ID must <= 20 chars long: B12_L1.R1.clean_(paired)_contig_1
[03:47:20] Please rename your contigs or use --centre XXX to generate clean contig names.


作為一個碼農(nóng)的基本素質(zhì),觀看報錯,好的說是contig名字太長了。
查了半天沒搞懂--centre怎么用。


圖片.png

算了重命名吧哭哭!
先看看張阿姨的fa文件格式:


圖片.png

也不算很長吧,不知道搞什么。但人家說不行就不行咯。
100多個文件,寫個腳本來換吧!

先把你要縮短名字的fa文件放到一個目錄下,新建一個目的目錄。
然后利用以下腳本。

import os
#from collections import OrderedDict
mylist = os.listdir("/home/lfp/bacteria/AB/ABshunde/AB_fa/allfa")#批量讀取文件名“”內(nèi)是你的輸入目錄
#al = OrderedDict()
for i in mylist:
    file=open("/home/lfp/bacteria/AB/ABshunde/AB_fa/allfa/"+i,'r')
    naloc = i.find(".fa")
    new_file = i[:naloc] + "_new.fa"
    out_file=open("/home/lfp/bacteria/AB/ABshunde/AB_fa/new_fa/"+ new_file,"w") # “”內(nèi)是你的輸出目錄
    for c in file.readlines():
        c = c.strip()
        if c.startswith(">"):
            location = c.find("ig")
            contigname = ">" + i[:naloc] + c[location+2:]
            print(contigname,file = out_file)
        else:
            print(c,file = out_file)
    file.close()
    out_file.close()
    print(i + "finish")


輸入文件:


圖片.png

輸出文件:


圖片.png

新contig名字
圖片.png

再跑prokka。


圖片.png

成功!開心!

ps:直接利用conda安裝prokka為1.145版,依賴2.8+版本blast,但conda裝的blast是2.71版的(最高!委屈臉),好吧作為一個社會主義接班人我才懶得編譯呢,直接退回了1.1版本的prokka

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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