У меня есть таблица 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's igraph
(если нет чего-то более подходящего) для отображения направленного DAG моих родословных с узлами-предками, встречающимися над дочерними узлами.Мне неясно, что именно igraph нужно для этого.Я думаю, что мне нужно сгенерировать матрицу смежности из моего списка смежности, но я не знаю, как это сделать эффективно.
Идеи?