Печать меток наконечника при использовании дендропии модуля python для вычисления попарных расстояний между узлами в филогенетическом дереве?

Я пытаюсь создать массив в Python, который будет содержать все попарные расстояния между каждой парой узлов в филогенетическом дереве. В настоящее время я использую дендропию, чтобы сделать это. (Первоначально я посмотрел на biopython, но не мог найти вариант сделать это). Код, который у меня есть, выглядит примерно так:

import dendropy

tree_data = []
tree = dendropy.Tree.get(path="gonno_microreact_tree.nwk",schema="newick")
pdc = tree.phylogenetic_distance_matrix()
for i, t1 in enumerate(tree.taxon_namespace[:-1]):
    for t2 in tree.taxon_namespace[i+1:]:
        tip_pair = {}
        tip_dist_list = []
        tip_pair[t1] = t2
        distance = pdc(t1, t2)
        tip_dist_list.append(tip_pair)
        tip_dist_list.append(distance)
        tree_data.append(tip_dist_list)
print tree_data

Это хорошо работает, за исключением того, как он пишет метки подсказок. Например, запись в списке tree_data выглядит так:

[{<Taxon 0x7fc4c160b090 'ERS135651'>: <Taxon 0x7fc4c160b150 'ERS135335'>}, 0.0001294946558138355]

Но советы в файле newick помечены как ERS135651 и ERS135335 соответственно. Как получить дендропию для записи массива только с оригинальными метками подсказок, чтобы эта запись выглядела так:

 [{ERS135651:ERS135335}, 0.0001294946558138355]

(Также я читаю документацию по дендропии и знаю, что в ней говорится, что для этого нужно использовать treecalc, например:

pdc = treecalc.PatristicDistanceMatrix(tree)

Но я просто получаю сообщение о том, что команда не существует:

AttributeError: 'module' object has no attribute 'PairisticDistanceMatrix'

)

Любые предложения о том, как я могу получить это работает?

1 ответ

Решение

Преобразование меток подсказок в строку преобразует их в имя, окруженное речевыми метками, например:

t1 = str(t1)
print t1

дает:

"'ERS135651'"

Таким образом, использование объединения строк для удаления лишних речевых меток работает для преобразования метки подсказки обратно в ее собственное имя, например:

t1 = t1.replace("'","")
Другие вопросы по тегам