pedigree
相互接続しているすべての親子関係データを2つの隣接リストとして格納するMySQLテーブルがあります。
血統表
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がこれを行うために何が必要か正確にはわかりません。隣接リストから隣接行列を生成する必要があると思いますが、これを効率的に行う方法がわかりません。
アイデア?