У меня есть таблица MySQL pedigree
, в которой хранятся все мои взаимосвязанные данные о происхождении в виде двух списков смежности:
Родословная таблица
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. Я думаю, мне нужно сгенерировать матрицу смежности из моего списка смежности, но я не понимаю, как это сделать эффективно.
Идеи?