2017-03-08 146 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