Phyloxml: найти и заменить в файле

Я пытаюсь отредактировать метки наконечников в файле phyloxml, чтобы они состояли только из 4 цифр. Например, то, что у меня сейчас есть под именем в файле phyloxml, — это идентификаторы слева. Мне нужны идентификаторы справа:

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, но не могу записать файл с изменениями. Какие-нибудь мысли? Спасибо.


person spiral01    schedule 14.04.2016    source источник


Ответы (1)


Вы должны изменить имя каждой клады, а затем сохранить дерево в новый файл:

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")
person xbello    schedule 14.04.2016