[英]Phylogenetic tree
我正在努力建立一個基於成對數據基因的系統發育樹。下面是我的數據子集(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列的基因
在問題的例子中有一些解釋的余地。 我的答案只有在每個人中只有兩個基因並且每行描述一個人時才有效。 但是,如果每行意味着gene1
與gene2
一起發生,我認為不能進行有用的聚類。 在那種情況下,我希望有一個額外的列說明它們常見的可能性,並且可能更喜歡主成分分析(PCA)之類的東西,但我遠不是(層次)聚類的專家。
在使用dist
函數之前,必須將數據轉換為適當的格式:
# convert test data into suitable format
gene.names <- sort(unique(c(tab[,"gene1"],tab[,"gene2"])))
gene.matrix <- cbind(tab[,"ID"],matrix(0L,nrow=nrow(tab),ncol=length(gene.names)))
colnames(gene.matrix) <- c("ID",gene.names)
lapply(seq_len(nrow(tab)),function(x) gene.matrix[x,match(tab[x,c("gene1","gene2")],colnames(gene.matrix))]<<-1)
獲得的gene.matrix
具有以下形狀:
ID ACHE ADK ADORA1 ADRA1A ADRA1B ADRA1D ADRA2A ...
[1,] 1 0 1 0 0 0 1 0
[2,] 2 0 1 0 0 1 0 0
[3,] 3 0 1 0 1 0 0 0
[4,] 4 0 0 0 0 0 0 0
...
因此,每行代表一個觀察(=個體),其中第一列標識個體,並且如果基因存在則每個后續列包含1
如果缺失則包含0
。 在此矩陣上,可以合理地應用dist
函數(刪除ID列):
d <- dist(gene.matrix[,-1],method="euclidean")
fit <- hclust(d, method="ward")
plot(as.phylo(fit))
也許,讀一下距離測量euclidean
, manhattan
等之間的差異是一個好主意。例如, ID=1
和ID=2
的個體之間的歐幾里德距離是:
euclidean_dist = sqrt((0-0)^2 + (1-1)^2 + (0-0)^2 + (0-0)^2 + (0-1)^2 + ...)
而曼哈頓的距離是
manhattan_dist = abs(0-0) + abs(1-1) + abs(0-0) + abs(0-0) + abs(0-1) + ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.