実行手順
- jarファイルからアプリケーションを起動(ファイルのダブルクリック)する
- "Menu"ウィンドウ
- 3つのボタン
- 第1ボタン
- Wight Fisherモデルに基づくシミュレーションを実行するボタン
- 実行に際し、パラメタを指定するための"Input parameters"ウィンドウが立ち上がる
- Wight Fisherモデルに基づくシミュレーションを実行するボタン
- 第2ボタン
- Wight Fisherモデルに基づき、シミュレーションを小規模に行い、その結果をVGJアプリケーションにて表示する
- 第3ボタン
- アプリケーション終了ボタン
- 第1ボタン
- 3つのボタン
- "Input parameters"ウィンドウ
- 8つの入力値と1つのシミュレーション開始ボタン
- DNA長(塩基数)
- 対象領域の長さを塩基数(自然数)で入力
- 始祖世代人数
- スタート時の均一集団人数
- 本バージョンでは、人口は増減しない設定をとっている
- スタート時の均一集団人数
- 1cMに相当する塩基数
- シミュレーションする世代数
- 変異率(0から1)
- 1世代あたり、解析対象範囲あたりにおきる塩基置換の頻度として0-1の有理数を指定する。通常、1世代あたり1Mb長の範囲に1-10 回程度起きるとされるが、このシミュレーションでは1世代あたり、1解析領域に0回か1回の置換が起きるものとする
- 今、1Mb領域について、50人(100本の染色体)に対して、この値を0.01と指定すると、1万個の変異が1世代で起きることになる
- 今、1Mb領域について、50人(100本の染色体)に対して、1世代あたり、平均1個の変異を発生させようとした場合、を指定することとなる
- 1世代あたり、解析対象範囲あたりにおきる塩基置換の頻度として0-1の有理数を指定する。通常、1世代あたり1Mb長の範囲に1-10 回程度起きるとされるが、このシミュレーションでは1世代あたり、1解析領域に0回か1回の置換が起きるものとする
- 組換え率
- ハプロタイプ頻度の表示閾値(0から1)
- 出力ファイル指定
- 複数の出力ファイルが一括して1つのディレクトリ内に出力される。参照ボタンから出力先を選び、出力ファイルの接頭語となる文字列を入力する。
- 適用して実行ボタン
- パラメタを適用して実行開始(Controllerウィンドウが開き、開始・保留・再開・中止が促されます)
- DNA長(塩基数)
- 8つの入力値と1つのシミュレーション開始ボタン
- "Controller"ウィンドウ
- "Start & Restart"ボタンで開始
- "Hold"ボタンで一時停止(絵ファイル以外は途中までの出力を確認可能)
- "Start & Restart"ボタンでプロセス再開
- "Exit"ボタンで途中終了
- 途中終了すると、その時点までの出力が得られる
DATA出力ファイル
- 全11ファイルが"DATA"以下に出力される
- 主要ファイル
- その他のファイルは次の3要因で名前付けがされる
- 内容で5種類(染色体の置換塩基箇所についてか("ch_xxx")、ハプロタイプの頻度と置換塩基箇所についてか("DATA_hp_xxx")、ハプロタイプのハプロタイプ型(01表示)についてか("hpseq_xxx")、ハプロタイプの登録IDについてか("hpid_xxx")、置換塩基箇所についてか("snplist_xxx"))
- 出力世代で2種類(全世代について通して出力されるか("xxxallgen.txt")、最終世代だけか("xxxlastgen.txt")、)
- ハプロタイプ頻度で2種類(頻度の高いハプロタイプのみか("xxxcommonxxx")、すべてのハプロタイプか("xxxallxxx")、)
Output file formats1. DATA/ch_allgen.txt
/*
*全世代を通じて、すべての染色体の配列情報のファイル
*世代の冒頭に1行"generation"+"\t"+"世代番号"+"\n"
*引き続いて"Serial number in the generation"+"\t"+"mutation sites(\t区切り)"+"\n"
*mutation sitesの塩基番号は昇順ソートされている
*/// Sample
//0,1,2の3世代、1世代に10本の染色体
ID mutation site1 mutation site2 mutation site3 ...
generation 0
0
1
2
3
4
5
6
7
8
9
generation 1
0 560
1 360
2 560 680
3 360 680
4
5
6
7
8
9
generation 2
0
1 360
2 560 680
3 360 680
4
5
6 560 939
7
8
9 360 560
//2. DATA/ch_lastgen.txt
/*
*最終世代の染色体の配列情報のファイル
*ch_allgen.txtの最終世代の抜書きに相当する
*"Serial number in the generation"+"\t"+"mutation sites(\t区切り)"+"\n"
*mutation sitesの塩基番号は昇順ソートされている
*/// Sample
//10本の染色体
ID mutation site1 mutation site2 mutation site3 ...0
1 360
2 560 680
3 360 680
4
5
6 560 939
7
8
9 360 560
//3. DATA/hp_all_allgen.txt
/*
*全世代を通じて、すべての葉プロタイプの配列情報と本数情報のファイル
*世代の冒頭に1行"generation"+"\t"+"世代番号"+"\n"
*引き続いて"世代内ID Serial number of haplotype in the generation"+"\t"+"全経過ID Serial number of haplotype throughout simulation"+"\t"+"本数"+"mutation sites(\t区切り)"+"\n"
*mutation sitesの塩基番号は昇順ソートされている
*///Sample
ID in gen ID in total frequency mutation site1 mutation site2 mutation site3 ...generation 0
0 0 200
generation 1
0 0 199
1 1 1 28618
generation 2
0 0 199
1 1 1 28618
generation 3
0 0 195
1 1 2 28618
2 2 1 61214
3 3 1 49809
4 4 1 24423
//4. DATA/hp_all_lastgen.txt
/*
*シミュレーションパラメタが冒頭に
*その後、hp_all_allgen.txtの最終世代の部分の抜書き(カラム内容情報つき)
*///
Sample
>Length of region(nt) 100000
>No.total chromosomes 200
>nt/1cM 100000.0
>No.generation 50
>Mutation rate 0.01
>Recombination rate/1cM 0.1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Serial id Haplotype id No.chromosomes Mutation sites
0 0 144
1 7 31 29490
2 49 8 45052
3 60 1 75410
4 90 5 29654
5 94 2 27352 29490
6 96 3 70018
7 103 1 29654 59122
8 104 1 55257
9 105 3 29490 75410
10 107 1 29490 58212
//5. DATA/hp_common_allgen.txt
/*
*hp_all_allgen.txtのうち、haplotype頻度が指定閾値以上のもののみの抜書き
*///
Sample
省略
//6. DATA/hp_common_lastgen.txt
/*
*hp_all_lastgen.txtのうち、haplotype頻度が指定閾値以上のもののみの抜書き
*///
Sample
省略
//7. DATA/hpid_all_allgen.txt
/*
*haplotypeの世代内IDと全経過IDとの照合表
"generation"+"\t"+"世代内ID"+"\t"+"全経過ID"+"\n"
*///
Sample
generation ID in gen ID throughout gens
0 0 0
1 0 0
1 1 1
2 0 0
2 1 1
3 0 0
3 1 1
3 2 2
3 3 3
3 4 4
4 0 0
4 1 2
4 2 3
//8. DATA/hapid_common_allgen.txt
/*
*hapid_all_allgen.txtのうち、指定閾値以上の頻度を持つhaplotypeについての抜書き*///Sample
省略
//9. DATA/hpseq_all_lastgen.txt
/*
*最終世代のhaplotypeの01表示(頻度情報はない)
*多型箇所が羅列される
*///
Sample
000000000
010000000
000100000
000000001
001000000
110000000
000000010
001000100
000010000
010000001
010001000
//10. DATA/hpseq_common_lastgen.txt
/*
*hpseq_all_lastgen.txtのうち、指定閾値以上の頻度を持つhaplotypeについての抜書き
*/11. DATA/snplist_lastgen.txt
/*
*最終世代のハプロタイプがもつSNPの位置をタブ区切りで1行に
*///
Sample
27352 29490 29654 45052 55257 58212 59122 70018 75410
//
GRAPH出力ファイル
ファイルにおいて、染色体もしくはハプロタイプはタブ区切りの2数で表される。"3 13"は第3世代の第13番染色体(もしくはプロタイプ)を示す
- 全12ファイルが"GRAPH"以下に出力される
- 染色体の伝達関係の6ファイルとハプロタイプの伝達関係の6ファイル
- chxxxx : は染色体のファイル
- hpxxxx : はハプロタイプのファイル
- 6ファイルの内訳
- 出力情報により3種類x出力形式により2種類の計6種類
- 出力情報の3種類
- xxchildxx : 左端のノード(タブ区切り2数で特定された、染色体もしくはハプロタイプ)に対し、それの子にあたるノードを右に記載
- xxparentxx : 左端のノードに対し、それの親にあたるノードを右に記載
- xx<>bparentchildxx : child ファイルとparent ファイルの出力を併せて1ファイルに出力。左端のノードの世代と右側のノードの世代の数値の大小で親子のどちらの情報を現しているかが区別される
- 出力情報の3種類
- 出力形式の2種類
- 出力情報により3種類x出力形式により2種類の計6種類
Output file formats1. GRAPH/ch_child_1.txt
/*
*染色体をノードとするグラフの情報
*親→子
*親世代、親世代内ノードID、子世代、子世代内ノードID
*複数の子がいる場合には、世代、世代内ノードIDのペア情報がタブ区切りで羅列
*子のいない親の場合、子の欄はブランク
*/// Sample
Parent gen Parent Node ID Child_1 gen Child_1 Node ID Child_2 gen Child_2 ID ...
0 0
0 1
0 2 1 111 1 199
0 3 1 183
0 4 1 172
0 5 1 73 1 174
0 6 1 175 1 180
0 7 1 48
0 8 1 77 1 139
0 9
//2. GRAPH/ch_child_2.txt
/*
*染色体をノードとするグラフの情報
*親→子
*親世代、親世代内ノードID、子世代、子世代内ノードID
*複数の子がいる場合には、世代、世代内ノードIDの4カラム情報が行を変えて登録される
*子のいない親の場合、その親IDは登場しない
*/// Sample
Parent gen Parent Node ID Child gen Child Node ID
0 2 1 111
0 2 1 199
0 3 1 183
0 4 1 172
0 5 1 73
0 5 1 174
0 6 1 175
0 6 1 180
0 7 1 48
0 8 1 77
0 8 1 139
//3. GRAPH/ch_parent_1.txt
/*
*染色体をノードとするグラフの情報
*子→親
*子世代、子世代内ノードID、親世代、親世代内ノードID
*複数の親がいる場合には、世代、世代内ノードIDのペア情報がタブ区切りで羅列
*親の数は1か2、0や3以上はない
*/// Sample
Child gen Child Node ID Parent_1 gen Parent_1 Node ID Parent_2 gen Parent_2 ID
1 0 0 126
1 1 0 95
1 2 0 49 0 67
1 3 0 121 0 153
1 4 0 59
1 5 0 155
1 6 0 128
1 7 0 166
1 8 0 53
1 9 0 196
//4. GRAPH/ch_parent_2.txt
/*
*染色体をノードとするグラフの情報
*子→親
*子世代、子世代内ノードID、親世代、親世代内ノードID
*複数の親がいる場合には、世代、世代内ノードIDのペア情報が行を変えて登録
*/// Sample
Child gen Child Node ID Parent gen Parent Node ID
1 0 0 126
1 1 0 95
1 2 0 49
1 2 0 67
1 3 0 121
1 3 0 153
1 4 0 59
1 5 0 155
1 6 0 128
1 7 0 166
1 8 0 53
1 9 0 196
//5. GRAPH/ch_parentchild_1.txt
/*
*ch_parent_1.txtとch_child_1.txtの行をすべて出力。
*ただし、どちらのタイプかを識別するためのカラムを最左につけてある
*parentファイルの行と同じ場合には"parent",childファイルの行と同じ場合には"child
*///
Sample
parent 2 190
parent 2 191 3 80 3 184
parent 2 192 3 72
parent 2 193 3 35
parent 2 194 3 47 3 103
parent 2 195
parent 2 196 3 30 3 62
parent 2 197 3 156
parent 2 198 3 12 3 104
parent 2 199 3 50
child 3 0 2 76
child 3 1 2 159 2 176
child 3 2 2 42
child 3 3 2 50
child 3 4 2 166
child 3 5 2 105
child 3 6 2 77
//6. GRAPH/ch_parentchild_2.txt
/*
*ch_parent_2.txtとch_child_2.txtの行をすべて出力。
*ただし、どちらのタイプかを識別するためのカラムを最左につけてある
*parentファイルの行と同じ場合には"parent",childファイルの行と同じ場合には"child
*///
Sample
parent 0 190 1 100
parent 0 193 1 162
parent 0 195 1 120
parent 0 195 1 158
parent 0 196 1 9
parent 0 197 1 64
parent 0 197 1 138
parent 0 198 1 193
child 1 0 0 126
child 1 1 0 95
child 1 2 0 49
child 1 2 0 67
child 1 3 0 121
child 1 3 0 153
//7. GRAPH/ch_child_edge.txt
/*
*親→子のエッジを表示
*左の第1、第2カラムは親染色体の世代、世代内ID
*続いて、子染色体の世代、世代内ID
*次はフローの量をあらわすが1のみが定義されている(hp_xxxx_edge.txtの場合には、この数値が染色体数になるのに対応
*ついで該当エッジが表すDNA線分の始点と終点
*Coalescentの場合は両末端、Recombinationの場合は該当範囲のみ
*///
Sample
parent gen parent ID child gen child ID flow start end
0 2 1 111 1 0 100000
0 2 1 199 1 0 85493
0 3 1 183 1 0 100000
0 4 1 172 1 0 100000
0 5 1 73 1 18000 100000
0 5 1 174 1 0 100000
0 6 1 175 1 0 100000
0 6 1 180 1 0 100000
0 7 1 48 1 0 42851
0 8 1 77 1 0 100000
0 8 1 139 1 0 100000
//8. GRAPH/ch_parent_edge.txt
/*
*子→親のエッジを表示
*左の第1、第2カラムは子染色体の世代、世代内ID
*続いて、親染色体の世代、世代内ID
*次はフローの量をあらわすが1のみが定義されている(hp_xxxx_edge.txtの場合には、この数値が染色体数になるのに対応
*ついで該当エッジが表すDNA線分の始点と終点
*Coalescentの場合は両末端、Recombinationの場合は該当範囲のみ
*///
Sample
child gen child ID parent gen parent ID flow start end
0 2 1 111 1 0 100000
0 2 1 199 1 0 85493
0 3 1 183 1 0 100000
0 4 1 172 1 0 100000
0 5 1 73 1 18000 100000
0 5 1 174 1 0 100000
0 6 1 175 1 0 100000
0 6 1 180 1 0 100000
0 7 1 48 1 0 42851
0 8 1 77 1 0 100000
0 8 1 139 1 0 100000
//9. GRAPH/ch_parentchild_edge.txt
/*
*ch_parent_edge.txtとch_child_edge.txtの行をすべて出力。
*ただし、どちらのタイプかを識別するためのカラムを最左につけてある
*parentファイルの行と同じ場合には"parent",childファイルの行と同じ場合には"child
*///
Sample
label gen ID gen ID flow start end
parent 0 190 1 90 1 0 100000
parent 0 190 1 100 1 0 100000
parent 0 193 1 162 1 0 100000
parent 0 195 1 120 1 0 100000
parent 0 195 1 158 1 0 100000
parent 0 196 1 9 1 0 100000
parent 0 197 1 64 1 0 100000
parent 0 197 1 138 1 0 100000
parent 0 198 1 193 1 0 100000
child 1 0 0 126 1 0 100000
child 1 1 0 95 1 0 100000
//10. GRAPH/ch_hp_nd_id.txt
/*
*染色体ノードとハプロタイプノードの対応
*第1、第2カラムは染色体ノードの世代、ID
*第3、第4カラムはハプロタイプノードの世代、ID
*///
Sample
19 183 19 0
19 184 19 2
19 185 19 2
19 186 19 0
19 187 19 10
19 188 19 0
19 189 19 2
19 190 19 1
19 191 19 0
19 192 19 0
19 193 19 0
19 194 19 1
19 195 19 2
19 196 19 0
19 197 19 0//
11. GRAPH/hp_child_1.txt
/*
*ch_child_1.txtのハプロタイプ版
*/12. GRAPH/hp_child_2.txt
/*
*ch_child_2.txtのハプロタイプ版
*/13. GRAPH/hp_parent_1.txt
/*
*ch_parent_1.txtのハプロタイプ版
*/14. GRAPH/hp_parent_2.txt
/*
*hp_parent_2.txtのハプロタイプ版
*/15. GRAPH/hp_parentchild_1.txt
/*
*ch_parentchild_1.txtのハプロタイプ版
*/16. GRAPH/hp_parentchild_2.txt
/*
*ch_parentchild_2.txtのハプロタイプ版
*/17. GRAPH/hp_child_edge.txt
/*
*ch_child_edge.txtのハプロタイプ版
*/18. GRAPH/hp_parent_edge.txt
/*
*ch_parent_edge.txtのハプロタイプ版
*/19. GRAPH/hp_parentchild_edge.txt
/*
*ch_parentchild_edge.txtのハプロタイプ版
*/20. GRAPH/ch_with_hp_edge.txt
/*
*ch_child_edge.txtに染色体ノードに対応するはプロタイプノード情報を付け加えたもの
*親→子で、第1カラムにそのことを明示する"parent"
*それに続く4カラムは、親染色体の世代、染色体ノードID、世代、ハプロタイプノードID
*その後の4カラムにて、子染色体の世代、染色体ノードID、世代、葉プロタイプノードID
*末尾の2カラムには、エッジの始点と終点
*///
Sample
parent 0 0 0 0 1 18 1 0 0 100000
parent 0 2 0 0 1 163 1 0 0 100000
parent 0 2 0 0 1 166 1 0 0 100000
parent 0 4 0 0 1 38 1 0 0 100000
parent 0 6 0 0 1 101 1 0 0 100000
parent 0 7 0 0 1 106 1 0 0 100000
parent 0 7 0 0 1 141 1 0 0 100000
//
FIG_G出力ファイル
WF_ARGアプリケーションでシミュレーション起動時に立ち上がるVGJウィンドウのメニューバー FileからOpen(GML)を選び、該当gmlファイルを指定する。左から右に向かって世代が進む。描図にあたって、京大医学研究科ゲノム医学センターのウェブサーバ上の画像ファイルを読み込んでいるので、インターネット接続のない環境で描図すると、ファイルの読み込みエラーが表示されます。また、大きすぎるグラフは、VGJのメモリ限界を超えて表示できません。SVGファイルの方が若干描図限界が大きいようです。ノード名の表示が邪魔な場合には、メニューバーからPropertiesを選び、Use Node ID AS Default Label の選択をはずします
- グラフのノード(頂点)とエッジ(辺)が表すものにより2パターン・3ファイルが"FIG_G"以下に出力される
- パターン1:個々の染色体をノードで、その伝達関係をエッジで表す場合
- ndividual.gml
- 緑のノードは始祖、ピンクは組換え体・褐色は組換えなしの非組換え体
- ndividual.gml
- パターン2:同一のハプロタイプ型をノードで、その伝達関係をエッジで表す場合
個々のノードの大きさは、ハプロタイプの頻度を表す。小さすぎるノードの絵が滲むことがあるが、適宜、Scaleを変更することで対処可能な場合が多い。それぞれのハプロタイプの置換塩基の位置は、SelecteNodesでノードを選び、ダブルクリックすると、Data1欄に表示される
追記
- 拡張
- 1.ARGの分割処理
- WF_ARGのグラフ描図において、ノードは個々の染色体もしくは、集団中のハプロタイプを示している。この表現は、前者がIBD(Identitiy by Decent)、後者がIBS(Identity by Status)的な表現とも言える。そのねじれ具合を観測DNA線分全体について表現したものがARGであり、ねじれがRecombinantとRecombinant nodeが作るグラフ上のサイクルに相当している。しかし、サイクルの多いグラフは、そもそも複雑であるし、演算処理に多大な負荷をかけることは、自明である。グラフアプローチは複雑な対象にグラフ理論による方法を持ち込むことで楽をしようとするものだが、処理自体が魔法のように軽くなるわけではない。したがって、Zollner らのように(参考記事はこちら)それをより狭い線分に分割することによって、処理の単純化を図る。→現在、ベータ〜ガンマ版。
- 2.VGJの持つノードグループ化機能の取り込み
- 3.Universal Ancestor,MRCAなど
- 1.ARGの分割処理