Я хотел бы получить филогенетические деревья из генетических данных.Я нашел несколько пакетов для рисования деревьев в R и Python, которые выглядят великолепно, например, ggtree в R. Но они требуют ввода данных, которые уже в древовидном формате, например, Newick.
Я думаю, что большинство людей начинают с vcfфайлы и производят файлы FASTA, но моя отправная точка - таблица генотипов - я работаю с гаплоидным организмом, поэтому каждая позиция - 0 (ref) или 1 (non-ref).Из этого я вычисляю попарно генетическое расстояние, используя dist () в R. Пример данных для 5 выборок, AE, с попарным расстоянием по десяти вариантным позициям:
# Generate dataframe with example genotypes
Variant <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
A <- c(0, 0, 1, 1, 0, 0, 1, 1, 0, 0)
B <- c(1, 1, 0, 0, 1, 1, 0, 0, 1, 1)
C <- c(0, 0, 1, 1, 0, 0, 1, 1, 0, 1)
D <- c(1, 0, 1, 1, 0, 0, 1, 1, 0, 1)
E <- c(1, 0, 0, 0, 1, 1, 0, 0, 1, 1)
df = data.frame(Variant, A, B, C, D, E)
df
# Remove first column with variant names
df$Variant <- NULL
# Transpose the columns and rows
df_t = t(df)
# Compute pairwise distance (Euclidean)
pdist = dist(df_t, method = "euclidean", diag = TRUE, upper = TRUE, p = 2)
pdist
Я хотел бы создать выходной файл иерархического дерева изpdist, например, в формате Newick, так что я могу подключить его к пакетам, таким как ggtree, для рисования красивых деревьев, например, круглых филограмм, раскрашенных ко-вариациями и т. д. Я пробовал искать, но не уверен, с чего начать.
РЕДАКТИРОВАТЬ/ ОБНОВЛЕНИЕ Этот сайт был полезен http://www.phytools.org/Cordoba2017/ex/2/Intro-to-phylogenies.html Я использовал пакеты: ape, phangorn, phytools, geiger
Этот код работает -
# Produce dendrogram
hclust = hclust(pdist)
# Check dendrogram looks sensible
plot(hclust)
class(hclust) # check that class is hclust
# Save to Newick file
my_tree <- as.phylo(hclust)
write.tree(phy=my_tree, file="ExampleTree.newick") # Writes a Newick file
# Produce tree
plot(unroot(my_tree),type="unrooted",cex=1.5,
use.edge.length=TRUE,lab4ut="axial",
edge.width=2,
no.margin=TRUE)
Дерево вывода: ![Unrooted distance tree from example data](https://i.stack.imgur.com/B59hv.png)