Phyloxml:在文件中查找和替换
Phyloxml: find and replace in a file
我正在尝试编辑 phyloxml 文件中的尖端标签,以便它们仅包含 4 位数字。例如,我目前在 phyloxml 文件中的名称下是左侧的 ID。我要的是右边的ID:
ACOM042150-PA ACOM
AQUA008971-PA AQUA
AGAP002137-PA AGAP
AARA006802-PA AARA
我目前的代码可以使用替换方法提取出我想要的字符:
tree = Phylo.read("GSCGT000003.xml", "phyloxml")
for i, clade in enumerate(tree.find_clades(name=True)):
print clade.name.replace(clade.name, clade.name[0:4])
这会将所需的名称打印到终端,但我不确定如何在文件中替换,或将更改写入新文件。我可以使用 Phylo.write
写入新文件,但我似乎无法写入有更改的文件。有什么想法吗?谢谢。
您必须更改每个进化枝的名称,然后将树保存到新文件中:
tree = Phylo.read("GSCGT000003.xml", "phyloxml")
for clade in tree.find_clades(name=True):
# This changes the clade name to only the first four chars
clade.name = clade.name[:4]
# At this point all clade names has been changed in-place
Phylo.write(tree, "GSCGT000003_modified.xml", "phyloxml")
我正在尝试编辑 phyloxml 文件中的尖端标签,以便它们仅包含 4 位数字。例如,我目前在 phyloxml 文件中的名称下是左侧的 ID。我要的是右边的ID:
ACOM042150-PA ACOM
AQUA008971-PA AQUA
AGAP002137-PA AGAP
AARA006802-PA AARA
我目前的代码可以使用替换方法提取出我想要的字符:
tree = Phylo.read("GSCGT000003.xml", "phyloxml")
for i, clade in enumerate(tree.find_clades(name=True)):
print clade.name.replace(clade.name, clade.name[0:4])
这会将所需的名称打印到终端,但我不确定如何在文件中替换,或将更改写入新文件。我可以使用 Phylo.write
写入新文件,但我似乎无法写入有更改的文件。有什么想法吗?谢谢。
您必须更改每个进化枝的名称,然后将树保存到新文件中:
tree = Phylo.read("GSCGT000003.xml", "phyloxml")
for clade in tree.find_clades(name=True):
# This changes the clade name to only the first four chars
clade.name = clade.name[:4]
# At this point all clade names has been changed in-place
Phylo.write(tree, "GSCGT000003_modified.xml", "phyloxml")