【发布时间】:2015-05-08 13:32:36
【问题描述】:
我有一个多序列比对文件,其中散布着来自不同序列的行,就像 clustal 和其他流行的多序列比对工具输出的格式一样。它看起来像这样:
TGFb3_human_used_for_docking ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY
tr|B3KVH9|B3KVH9_HUMAN ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY
tr|G3UBH9|G3UBH9_LOXAF ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY
tr|G3WTJ4|G3WTJ4_SARHA ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY
TGFb3_human_used_for_docking LRSADTTHST-
tr|B3KVH9|B3KVH9_HUMAN LRSADTTHST-
tr|G3UBH9|G3UBH9_LOXAF LRSTDTTHST-
tr|G3WTJ4|G3WTJ4_SARHA LRSADTTHST-
每一行都以一个序列标识符开始,然后是一个字符序列(在这种情况下描述蛋白质的氨基酸序列)。每个序列分为几行,因此您会看到第一个序列(ID 为TGFb3_human_used_for_docking)有两行。我想将其转换为每个序列都有一行的格式,如下所示:
TGFb3_human_used_for_docking ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSADTTHST-
tr|B3KVH9|B3KVH9_HUMAN ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSADTTHST-
tr|G3UBH9|G3UBH9_LOXAF ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSTDTTHST-
tr|G3WTJ4|G3WTJ4_SARHA ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSADTTHST-
(在这个特定的例子中,序列几乎是相同的,但通常它们不是!)
如何将多行多序列比对格式转换为单行?
【问题讨论】:
-
如果你不想乱写脚本,你可以在对齐编辑器中打开文件(我推荐 aliview)并保存为 phylip 格式(宽松,非交错)。
-
请注意。我编写了将aln文件转换为一行的代码,发现如果行太长,很多读取aln文件的软件会崩溃或冻结。某些软件似乎使用 2000bp 缓冲区。
-
非脚本编辑器专用解决方案:在vim 中打开它。转到第二组读取的开始。点击
Ctrl V(即两个键同时用于视觉块模式)。移动光标以突出显示序列块。点击x(即切块)。转到第一个序列块的末尾。点击p(即粘贴块)。对剩余的块重复。一旦你在一行中得到了所有的序列,就去你最后一个序列之后的那一行。点击d然后G删除到文件末尾。点击:然后w然后q然后Enter写入(保存)并退出。
标签: bioinformatics sequence-alignment