1

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がこれを行うために何が必要か正確にはわかりません。隣接リストから隣接行列を生成する必要があると思いますが、これを効率的に行う方法がわかりません。

アイデア?

4

1 に答える 1

1

エッジリストの使用を検討してください。マトリックス内の行として各エッジを持つ2列のマトリックス。igraphは、エッジリストの値からもノードの名前を取得します。

g <- graph.edgelist(el)

そして、何らかの理由で隣接行列が必要な場合

adj.mat <- get.adjacency(g)
于 2011-06-16T18:58:57.283 に答える