我有一个 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 到底需要做什么。我想我需要从我的邻接列表中生成一个邻接矩阵,但我不知道如何有效地做到这一点。
想法?