【问题标题】:Change fasta file header更改fasta文件头
【发布时间】: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


【解决方案1】:

将打印语句更改为

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

【讨论】:

  • 这给了我一个错误:S cat Acla.fa | awk '/^>/{printf ">Acla%05d\n" ++i; next}{print}' awk:运行时错误:没有足够的参数传递给 printf(">Acla%05d 1") FILENAME="-" FNR=1 NR=1
  • 你错过了逗号。
猜你喜欢
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多