【发布时间】:2017-07-29 18:37:25
【问题描述】:
我有几个 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。
【问题讨论】:
-
edit 你的问题是解释输入中的
>XP_001267680.1 conserved hypothetical protein [Aspergillus clavatus NRRL 1]如何映射到>Acla00001以及 4 个输入行如何变成 8 个输出行。还要摆脱...s,以便您提供示例输入/输出,我们可以测试潜在的解决方案。不要假设我们知道the organism name在您的输入中出现的位置 - 只需告诉我们您想要将哪个输入字符串更改为哪个输出字符串。 -
它并没有变成8,只是试图解释如果数字是4位应该加1,如果数字是1位应该加4。
标签: python awk bioinformatics fasta