我有一个MySQL表pedigree
,它将我所有的互连父母数据存储为2个邻接列表:
org_id INT UNSIGNED NOT NULL PRIMARY KEY,
dam_id INT UNSIGNED,
sire_id INT UNSIGNED,
FOREIGN KEY (org_id) REFERENCES organisms(org_id)
FOREIGN KEY (dam_id) REFERENCES organisms(org_id),
FOREIGN KEY (sire_id) REFERENCES organisms(org_id)
org_id
可能有也可能没有孩子。孩子的数量是无限的。org_id
表中的每个pedigree
都必须至少有一个dam_id或一个sire_id org_id
没有父母,除了作为父亲或大坝之外,它不会列在谱系表中org_id
可能有dam_id==sire_id
Org Dam Sire
23, 42, 57
26, 25, 25
27, 43, 43
28, 44, 44
30, 25, 25
31, 45, 25
32, 45, 45
33, 31, 32
34, 28, 59
35, 27, 28
36, 28, 28
39, 38, 34
41, 27, 24
我想使用R的igraph
包(除非有更合适的东西)来显示我的谱系的有向DAG,其中祖先节点出现在子节点之上。我不清楚igraph需要做什么。我想我需要从我的邻接列表中生成一个邻接矩阵,但我对如何有效地做这件事感到茫然。
想法?
答案 0 :(得分:1)
考虑使用边缘列表。两列矩阵,每条边作为矩阵中的一行。 igraph也会从边缘列表中的值中提取节点的名称。
g <- graph.edgelist(el)
如果由于某种原因需要邻接矩阵
adj.mat <- get.adjacency(g)