我想从遗传数据中产生系统发育树。我在 R 和 python 中发现了一些看起来很棒的树图包,例如 R 中的 ggtree。但是这些需要已经采用树格式的数据输入,例如 Newick。
我认为大多数人从 vcf 文件开始并生成 FASTA 文件,但我的出发点是基因型表 - 我使用单倍体生物体,因此每个位置都是 0(参考)或 1(非参考)。据此,我使用 R 中的 dist() 计算成对遗传距离。 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)