我正在努力建立一个基于成对基因数据的系统发育树。下面是我的数据子集(test.txt)。树不必基于任何 DNA 序列构建,但只需将其视为字。
ID gene1 gene2
1 ADRA1D ADK
2 ADRA1B ADK
3 ADRA1A ADK
4 ADRB1 ASIC1
5 ADRB1 ADK
6 ADRB2 ASIC1
7 ADRB2 ADK
8 AGTR1 ACHE
9 AGTR1 ADK
10 ALOX5 ADRB1
11 ALOX5 ADRB2
12 ALPPL2 ADRB1
13 ALPPL2 ADRB2
14 AMY2A AGTR1
15 AR ADORA1
16 AR ADRA1D
17 AR ADRA1B
18 AR ADRA1A
19 AR ADRA2A
20 AR ADRA2B
下面是我在 R 中的代码
library(ape)
tab=read.csv("test.txt",sep="\t",header=TRUE)
d=dist(tab,method="euclidean")
fit <- hclust(d, method="ward")
plot(as.phylo(fit))
我的图附在这里
我有一个关于它们如何聚集的问题。因为这对
17 AR ADRA1B
18 AR ADRA1A
和
2 ADRA1B ADK
3 ADRA1A ADK
应该紧密聚集在一起,因为它们有一个共同的基因。所以 17 和 2 应该在一起,而 18 和 3 应该在一起。
如果我使用这种方法(欧几里得距离)错误,我应该使用任何其他方法吗?
我应该将我的数据转换为行和列的矩阵,其中gene1是x轴,gene2是y轴,每个单元格填充1或0吗?(基本上,如果它们成对就意味着1,如果不是那么0)
更新代码:
table=table(tab$gene1, tab$gene2)
d <- dist(table,method="euclidean")
fit <- hclust(d, method="ward")
plot(as.phylo(fit))
但是,在这里我只从gene1而不是gene2列中获得基因。下图正是我想要的,但也应该从gene2列中获得基因