如何从.fasta文件头中复制Species名称并将其添加到同一文件名?

时间:2016-02-09 23:39:38

标签: biopython

我有来自不同物种的5000多种蛋白质fasta文件。每个文件的名称都有一个单端口ID(例如,UP000000212_1234679.fasta)。每个文件的第一行包含物种名称(例如,> tr | K8E169 | K8E169_CARML S4结构域蛋白YaaA OS = Carnobacterium maltaromaticum LMA28 GN = yaaA PE = 4 SV = 1.物种名称始终遵循OS = ...我想从每个文件中复制物种名称,并将其添加到每个文件名的开头。我熟悉python和linux,但还是无法弄清楚如何操作!感谢任何帮助。

谢谢, Ebi

1 个答案:

答案 0 :(得分:1)

此处有“biopython”标记,因此您可以使用record.description从SeqIO记录中获取fasta标题名称。然后,您可以使用正则表达式访问物种名称。假设物种名称始终采用您在此处显示的格式,即它在一侧由“OS =”分隔,在另一侧由“GN =”分隔,类似于

species_pattern = re.compile('OS=.*GN=')

使用例如拉出物种名称

sp = species_pattern.findall (record.description)[0].replace('OS=','').replace('GN=','').strip()

然后使用该名称保存文件。例如

SeqIO.write(record, '%s.fasta' % sp, "fasta")

当然,您需要进行许多检查以确保您真正拥有物种名称,每个文件只有一个记录等等。