2017-03-08 68 views
-1

我有幾個FASTA文件,我想更改頁眉更改FASTA文件頭

>XP_001267680.1 conserved hypothetical protein [Aspergillus clavatus NRRL 1] 
MTEILARLTAPSAYRYASCEILEDYGRQLRELIAYIKQPRTTADIATAAEFLLDNLDPSLHSASY... 
>XP_001267682.1 60S ribosomal protein L18 [Aspergillus clavatus NRRL 1] 
MGIDLDRHHVRSTHRKAPKSENVYLQVLVKLYRFLSRRTESNFNKVVLRRLFMSRINRPPVS... 
etc... 

而且我想改變的fasta文件,所以它看起來是這樣的:

>Acla00001 
MTEILARLTAPSAYRYASCEILEDYGRQLRELIAYIKQPRTTADIATAAEFLLDNLDPSLHSASY... 
>Acla00002 
MGIDLDRHHVRSTHRKAPKSENVYLQVLVKLYRFLSRRTESNFNKVVLRRLFMSRINRPPVS... 
... 
>Acla03871 
MTEILARLTAPSAYRYASCEILEDYGRQLRELIAYIKQPRTTADIATAAEFLLDNLDPSLHSASYLF... 
>Acla03872 
MGIDLDRHHVRSTHRKAPKSENVYLQVLVKLYRFLSRRTESNFNKVVLRRLFMSRINRPPVSL... 

我發現這段代碼刪除所有行,如果行以>開頭,並添加一個新的>和有機體名稱+數字。

org = 'Acla'  
os.popen("""cat %s.fa | awk '/^>/{print ">%s" ++i; next}{print}'""" % (org, org)).read() 

我希望所有這些線的長度是通過將零這樣的數量是5位數字或字符串的總長度爲10

+1

[編輯]你的問題來解釋如何''XP_001267680.1在輸入映射到'> Acla00001'中保留假設蛋白質[麴黴麴黴NRRL1]'並且4​​條輸入線如何變成8條輸出線。還要擺脫'...'s,因此您可以提供樣本輸入/輸出,我們可以測試潛在的解決方案。不要以爲我們知道你的輸入中出現'生物體名稱' - 只要告訴我們你想要哪個輸入字符串改變爲哪個輸出字符串。 –

+0

它不會更改爲8,只是試圖解釋說,如果數字是4位數字,則應該加1;如果數字是一位數字,則應該加4。 – Jasper

回答

1

改變打印語句

/^>/{printf ">Acla%05d\n",++i ... 
等於
+0

這給了我一個錯誤:S cat Acla.fa | awk'/ ^>/{printf「> Acla%05d \ n」++ i;下一個} {打印}' awk:運行時錯誤:沒有足夠的參數傳遞給printf(「> Acla%05d 1」) \t FILENAME =「 - 」FNR = 1 NR = 1 – Jasper

+0

您錯過了逗號。 – karakfa

+0

哈哈哈,哎呀,它的工作原理! – Jasper