У меня проблема с экспортом объектов BioPython Tree (от Bio.Phylo
) с значениями начальной загрузки. Деревья создаются непосредственно в моем сценарии BioPython на основе матриц расстояний.Запись загруженных филогенетических деревьев, сгенерированных с помощью Biopython, в файл с использованием Bio.Phylo.write()
Деревья в основном выглядят хорошо, но когда я использую функцию Bio.Phylo.write()
, чтобы экспортировать их в файл (Newick, NEXUS или phyloXML-формат), значения поддержки bootstrap, похоже, будут экспортированы в неисправном формате.
Топология дерева может быть хорошо отображена, например. с ITOL или Dendroscope, но значения bootstrap не могут отображаться.
Примеры древовидных объектов и полученных файлов newick и phyloxml приведены ниже. Что я могу сделать, чтобы экспортировать деревья с правильными (читаемыми) значениями начальной загрузки?
Пример:
это то, что дерево-объекты выглядят как в BioPython (например, дерево с 5 "видами" имени А.Ф.):
Tree(rooted=False)
Clade(branch_length=0, confidence=100.0, name='Inner3')
Clade(branch_length=-0.0791666666667, name='A')
Clade(branch_length=0.0375, confidence=10.0, name='Inner2')
Clade(branch_length=0.0625, name='C')
Clade(branch_length=0.104166666667, confidence=40.0, name='Inner1')
Clade(branch_length=-0.15, name='D')
Clade(branch_length=0.15, name='B')
Clade(branch_length=0.0791666666667, name='E')
при экспорте это newick format (->Bio.Phylo.write(mytree,outfile,"newick")
), файл заканчивается следующим образом:
(A:-0.07917,(C:0.06250,(D:-0.15000,B:0.15000)Inner140.00:0.10417)Inner210.00:0.03750,E:0.07917)Inner3100.00:0.00000;
Как вы можете видеть, значения доверия объединяются с ярлыками внутренней ветви и, таким образом, нечитабельны (например, «Inner140.00» для name = «Inner1» и trust = 40.0).
В phyloXML-формате, дерево-файлы выглядеть следующим образом:
<phyloxml xmlns="http://www.phyloxml.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phyloxml.org http://www.phyloxml.org/1.10/phyloxml.xsd">
<phylogeny rooted="false">
<clade>
<name>Inner3</name>
<branch_length>0</branch_length>
<confidence type="unknown">100.0</confidence>
<clade>
<name>A</name>
<branch_length>-0.0791666666667</branch_length>
</clade>
<clade>
<name>Inner2</name>
<branch_length>0.0375</branch_length>
<confidence type="unknown">10.0</confidence>
<clade>
<name>C</name>
<branch_length>0.0625</branch_length>
</clade>
<clade>
<name>Inner1</name>
<branch_length>0.104166666667</branch_length>
<confidence type="unknown">40.0</confidence>
<clade>
<name>D</name>
<branch_length>-0.15</branch_length>
</clade>
<clade>
<name>B</name>
<branch_length>0.15</branch_length>
</clade>
</clade>
</clade>
<clade>
<name>E</name>
<branch_length>0.0791666666667</branch_length>
</clade>
</clade>
Это выглядит намного лучше, но ценности доверия еще не распознаются дерево ВИЗУАЛИЗАЦИЯ инструменты, такие как ITOL (возможно, из-за типа доверия = «неизвестные»?)
Что мне делать? Изменение окончательных файлов результатов кажется рискованным (что, если я действительно хочу листовые метки с такими ключевыми словами, как «внутренний»?)
Кроме того, я хотел бы ограничить себя модулями BioPython, добавив дополнительные внешние модули Python, поскольку зависимости делают инструмент, сложный для реализации для партнеров по сотрудничеству.
Ваш PhyoXML является неполным (отсутствует XML-теги и закрытия филогении и phyloxml теги), но как только они будут добавлены я могу воспроизвести вывод Newick: $ питона -c «из Био импорта Фило; Phylo.convert ('internal_names. xml ',' phyloxml ','/dev/stdout ',' newick ') " – peterjc
Это похоже на ошибку в писателе Newick. Я сообщил об этом здесь: https://github.com/biopython/biopython/issues/488 –