У меня проблема с экспортом объектов BioPython Tree (из Bio.Phylo
) со значениями начальной загрузки. Деревья создаются непосредственно в моем сценарии BioPython на основе матриц расстояний.
Деревья в основном выглядят хорошо, но когда я использую функцию Bio.Phylo.write()
для их экспорта в файл (формат Newick, NEXUS или phyloXML), значения поддержки начальной загрузки, похоже, экспортируются в неправильном формате.
Топологию дерева можно красиво отобразить, например. с ITOL или Dendroscope, но значения начальной загрузки не могут быть отображены.
Примеры древовидных объектов и результирующие файлы newick и phyloxml показаны ниже. Что я могу сделать, чтобы экспортировать деревья с правильными (читаемыми) значениями начальной загрузки?
Пример:
вот как выглядят древовидные объекты в BioPython (пример дерева с 5 «видами» с именами AF):
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 (--> 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 (возможно, из-за меток достоверности type="unknown"?)
Что я могу сделать? Изменение окончательных файлов результатов кажется рискованным (что, если мне действительно нужны метки листьев с такими ключевыми словами, как «внутренний»?)
Кроме того, я хотел бы ограничиться модулями BioPython, поскольку добавление дополнительных внешних модулей Python в качестве зависимостей усложняет реализацию инструмента для партнеров по сотрудничеству.