SCLS計算機システム講習会

遺伝⼦ネットワーク並列解析
プログラム「BENIGN」実習
⼤阪⼤学

⼤学院情報科学研究科
松⽥秀雄
2015/09/29

要旨
BENIGNは、複数の⽣体組織や実験条件下で採取された細胞内の遺伝⼦の発現データから、各条件下での遺伝⼦間の発現の依存関係を表すネットワークをベイジアンネットワークにより推定するソフトウェアです。条件ごとに得られたネットワークを相互に⽐較することで、例えば、時間とともに動的に変化する遺伝⼦間の依存関係や、細胞組織ごとの遺伝⼦の働きの違いなどを推定して可視化することができます。
BENIGNの開発では、遺伝⼦ネットワークの推定部分はSiGN‐BN をベースにしています。また、複数の遺伝⼦ネットワーク推定プロセスの並列実⾏機能の実現にはMPIDP（GHOST‐MP のパッケージに含まれています）をベースにしています。
SiGN‐BN: http://www.scls.riken.jp/scruise/software/sign‐bn.html
GHOST‐MP: http://www.scls.riken.jp/scruise/software/GHOST‐MP.html

1

BENIGNの実⾏

2

実⾏に必要なファイルの⽤意
BENIGNの実⾏には、各種パラメータを記載したJobリストファイル、遺伝⼦発現データを記載したEDFファイルが必要です。なお、これらファイルの詳細については、[付録]ページを参照してください。
ここではあらかじめ⽤意してあるファイルを元にBENIGNの実⾏⼿順を説明します。

3

実⾏に必要なファイルの⽤意
はじめに、BENIGNの実⾏に必要なファイルを置くディレクトリを作成します。次にファイルをコピーします。
$ mkdir sample$ cd sample$ cp /home/matsuda/benign/sample/adipo_stage* .
$ lsadipo_stage1.edf adipo_stage3.edf adipo_stages.list
adipo_stage2.edf adipo_stage4.edf adipo_stages.sh4

実⾏に必要なファイルの⽤意コピーするファイルは以下の通りです。
• Jobリストファイル– adipo_stages.list• 遺伝⼦発現データファイル– adipo_stage1.edf– adipo_stage2.edf– adipo_stage3.edf– adipo_stage4.edf• バッチスクリプト– adipo_stages.sh5

実⾏に必要なファイルの⽤意使⽤するJobリストファイルです。

$ cat adipo_stages.list
TITLE=adipo_stages
benign -y --blocks 20 -o adipo_stage1 -N 1000 -L 1 -T 0.1 -S linear adipo_stage1.edf
benign -y --blocks 20 -o adipo_stage2 -N 1000 -L 1 -T 0.1 -S linear adipo_stage2.edf
benign -y --blocks 20 -o adipo_stage3 -N 1000 -L 1 -T 0.1 -S linear adipo_stage3.edf
benign -y --blocks 20 -o adipo_stage4 -N 1000 -L 1 -T 0.1 -S linear adipo_stage4.edf

TITLE⾏のadipo_stagesは実⾏ログファイルに記録されます。
以降のbenignで始まる⾏は遺伝⼦ネットワーク推定処理の引数を指定します（⾏ごとに並列に実⾏されます）。
-y ダイナミックベイジアンネットワークモデル（時系列データの時に使⽤できます）。このオプションを省略したときはベイジアンネットワークモデルが選択されます。
--blocks n 時系列データの時点数を疑似的にn倍に増やす（-yを指定した時は推奨）-o name 出⼒結果のファイル名の接頭辞をnameにセット-N num ブートストラップサンプリングをnum回実⾏-L 1 実⾏履歴を個別のファイルに出⼒（省略すると標準エラー出⼒にまとめられる）-T 0.1 ブートストラップ確率が0.1以上の制御辺のみを出⼒-S linear 遺伝⼦発現量を線形モデルで近似
詳細はSiGN‐BNのマニュアル( http://sign.hgc.jp/signbn/manual.html )を参照して下さい。
6

実⾏に必要なファイルの⽤意使⽤する遺伝⼦発現データファイル(抜粋)です。
$ cat adipo_stage1.edf$Version1.0@PrimaryKeyGroupID
111222@SecondaryKeyGroupID
123123Cebpa-0.141795 -0.138312 -0.194432 -0.176802 -0.155757 -0.079616
Cebpb-0.222724 -0.126105 0.074613
0.17421 0.233539 0.239671•••$Version はEDFファイルのバージョン情報@PrimaryKeyGroupID,@SecondaryKeyGroupIDは実験サンプルID (n=3)
Cebpa,Cebpbはマウスの遺伝⼦名（ヒトのC/EBP, C/EBP）7

実⾏に必要なファイルの⽤意使⽤するバッチスクリプトです。
$ cat adipo_stages.sh#!/bin/sh -x##PJM -L "rscgrp=small"#PJM -L "node=5"#PJM -L "elapse=20:00"#•リソースグループはsmall•要求するノードは5ノード•実⾏時間の最⼤は20分

BENIGN=/home/matsuda/benign/bin/benignexport PARALLEL=8
export OMP_NUM_THREADS=$PARALLEL•スレッド数は8

mpiexec ${BENIGN} -tb adipo_stages.list -lg adipo_stages.benign.log• 京コンピュータで実⾏するときはファイルのステージングの指⽰を加える必要があります• Webで公開されているバイナリファイルを使⽤するときは、実⾏に先⽴って、chmod +x benignで実⾏可能権限のパーミッションを設定しておく必要があります8ジョブの投⼊
ファイルをコピーした後、pjsubコマンドを使いジョブを投⼊します。
$ pjsub adipo_stages.sh[INFO] PJM 0000 pjsub Job XXXXX submitted.
# XXXXX にはジョブIDが⼊ります9ジョブの投⼊
実⾏中のジョブの状況は pjstat コマンドで確認できます。
$ pjstat
ACCEPT QUEUED
00s00
JOB_ID
XXXXX

STGIN
00

READY RUNING RUNOUT STGOUT
01000
100

JOB_NAME
MD ST USER
adipo_stag NM RUN matsuda

START_DATE
08/26 16:10:02

HOLD
00

ERROR
00TOTAL
11

ELAPSE_LIM NODE_REQUIRE
0000:20:00 510

ジョブの投⼊ジョブの完了後、以下のファイルが⽣成されます。

• 実⾏結果– adipo_stage1– adipo_stage2– adipo_stage3– adipo_stage4• 解析処理のログ– adipo_stage1.log.000000– adipo_stage2.log.000000– adipo_stage3.log.000000– adipo_stage4.log.000000
11ジョブの投⼊ジョブの完了後、以下のファイルが⽣成されます。

• 実⾏ログ– adipo_stages.benign.log• 標準出⼒ファイル– adipo_stages.sh.oXXXXX• 標準エラー出⼒ファイル– adipo_stages.sh.eXXXXX

12

実⾏結果

実⾏結果ファイル(SGN3形式)は次のようになります。
$ cat adipo_stage1
SiGN SGN3 FORMAT[Information]
Edge Attr BS.Prob:double
BS.up/down:string
Node Attr hubness:int
X:BS.total:int1000[Nodes]Cebpa
Cebpa
0CebpbCebpb
1CebpdCebpd
2Creb1
Creb1
3
Egr2
Egr2
4
Klf15
Klf15
5
Klf2
Klf2
6
Klf4
Klf4
7
Klf5
Klf5
8
Nr1h3
Nr1h3
9
Nr3c1
Nr3c1
10
Pparg
Pparg
11
Stat5aStat5a
12
Thra
Thra
13
[Edges]13812...

00
000.927000
0.199000
0.199000
0.726000

edgeScore:double
BS.Gain:double
BS.EdgeTypeRatio:string
BS.HubIndex:double

18314
176
15202
30.110000
4.853000
1.425000
0.199000
1.331000
0.144000
3.092000
3.650000
0.199000
3.513000
1.141000
0.000000
1.722000
0.8550000.927000
0.199000
0.199000
0.726000

40.873586 021.401210 0
13.059605 0
24.049626 1upupup
down

EdgeType:int

1.00/0.00/0.00
1.00/0.00/0.00
1.00/0.00/0.00
0.00/1.00/0.00

13実⾏結果
最初は、[Information]セクションです。
[Information]
Edge Attr
BS.Prob:double edgeScore:double
BS.Gain:double
EdgeType:int
BS.up/down:string
BS.EdgeTypeRatio:string
Node Attr
hubness:int
BS.HubIndex:double
X:BS.total:int 1000

• [Nodes]、[Edges]セクションが持つ属性のリストを出⼒します。

14

実⾏結果
次に、[Nodes]セクションです。
[Nodes]Cebpa Cebpa
Cebpb Cebpb
Cebpd Cebpd
Creb1 Creb1
Egr2
Egr2
Klf15 Klf15
Klf2
Klf2
Klf4
Klf4
Klf5
Klf5

0
12
3456
78

18
314
176
10.110000
4.853000
1.425000
0.199000
1.331000
0.144000
3.092000
3.650000
0.199000• ノードに関する情報を出⼒– ノード名– ノード番号– ⼦ノードの数– ブートストラップでのHubIndex
15

実⾏結果
最後に、[Edges]セクションです。
[Edges]1381200000.927000 0.927000 40.873586
0.199000 0.199000 21.401210
0.199000 0.199000 13.059605
0.726000 0.726000 24.049626

0001upup
up
down

1.00/0.00/0.00
1.00/0.00/0.00
1.00/0.00/0.00
0.00/1.00/0.00

エッジに関する情報を出⼒– 親ノード番号– ⼦ノード番号– ブートストラップ確率– 制御の符号（up: 促進、down: 抑制）など

16

実⾏結果
sgn2tsvコマンドで実⾏結果ファイル(SGN3形式)をTSV形式に変換することができます。
先ほどのジョブの実⾏結果をsgn2tsvコマンドに渡すと次のようになります。
$ /home/matsuda/benign/bin/sgn2tsv adipo_stage1
Wrote edge info to adipo_stage1.edge.tsv

17

実⾏結果
⽣成されたTSVファイルは次のようになります。
$ cat adipo_stage1.edge.tsv
From
Cebpb
Creb1
Klf5
Stat5a
Egr2

•
•
•

To
Cebpa
Cebpa
Cebpa
Cebpa
Cebpb

BinaryRegulation Regulation up/down/unknown
0up
1.00/0.00/0.00
0up
1.00/0.00/0.00
0up
1.00/0.00/0.00
1down
0.00/1.00/0.00
0up
1.00/0.00/0.00

BS.Prob edgeScore BS.Gain
0.927
0.927
40.873586
0.199
0.199
21.40121
0.199
0.199
13.059605
0.726
0.726
24.049626
0.283
0.283
6.670069

1⾏⽬はヘッダー
2⾏⽬以降はデータ出⼒されるデータ– 接続元遺伝⼦– 接続先遺伝⼦– Regulation– Bootstrap Probabilityなど
18実⾏結果の解析
実⾏結果ファイルを元に、ネットワークの⽐較、および、描画を⾏うことができます。

19

signprocによるネットワークの⽐較
signprocコマンドを使ってネットワークを⽐較することができます。
$ /home/matsuda/benign/bin/signproc ¥--read type=sgn3,file=./adipo_stage1 ¥--comp type=sgn3,file=./adipo_stage2

実⾏結果は次のページのようになります。
signprocコマンドは、 SiGN‐BNのユーティリティプログラムです。
signprocコマンドの詳細については、[付録]および以下のサイトを参照してください。
URL: http://sign.hgc.jp/signproc.html
20

SiGN : signproc ver. 0.19.0 (Thu Aug 21 11:45:08 2014 JST) (SVN rev. 1526)
Copyright (C) 2012-2014 SiGN Project Members.
Filter #1 -- --readReading a SGN3 network file...
Edge Attributes: BS.Prob (double) edgeScore (double) BS.Gain (double) EdgeType(int) BS.up/down (string) BS.EdgeTypeRatio (string)
Node Attributes: hubness (int) BS.HubIndex (double)
In total 14 nodes and 44 edges added.
Object: Network
14 nodes, 44 edges.
Filter #2 -- --comp
CompFilter: Reading... adipo_stage2
Reading a SGN3 network file...
Edge Attributes: BS.Prob (double) edgeScore (double) BS.Gain (double) EdgeType(int) BS.up/down (string) BS.EdgeTypeRatio (string)
Node Attributes: hubness (int) BS.HubIndex (double)
In total 14 nodes and 43 edges added.
CompFilter: 0 nodes are not found in the given file (2nd network).
COML:
TPRTP
FPFN
TNSnSp
COMP:
14
519
22
31
0.389
0.368
Object: Network
14 nodes, 44 edges.
Finished all the filters.

21

Cytoscapeによるネットワークの描画
実⾏結果ファイルを元に、CytoscapeやGephi等を使って遺伝⼦ネットワークを図⽰することができます。
ここではCytoscape 3でのグラフの描画⼿順について説明します。

22

Cytoscapeによるネットワークの描画
まず、実⾏結果ファイル(SGN3形式)をsgn2tsvコマンドに渡しTSVファイルに変換します。
$ /home/matsuda/benign/bin/sgn2tsv ./adipo_stage1
Wrote edge info to adipo_stage1.edge.tsv

sgn2tsvコマンドの実⾏によりエッジ情報をまとめたTSVファイルが⽣成されます。
$ ls adipo_stage1.edge.tsv
adipo_stage1.edge.tsv

23

Cytoscapeによるネットワークの描画⽣成されたTSVファイルを次の⼿順でCytoscapeに読み込みます。
1.
2.
3.
4.

Cytoscape を実⾏する
File メニュー  Import  Network  File... を選択する⽣成されたTSVファイルを選択する
Interaction Definition において

1.
2.
3.
4.

Source InteractionにColumn 1(From)を選択する
Interaction に Column 4(Regulation)を選択する
Target InteractionにColumn 2(To)を選択する
追加情報として以下の情報を選択する

1.
2.

5.

BS.Prob
BS.Gain

選択後、OKボタンを押す

24

Cytoscapeによるネットワークの描画
ファイルを読み込んだあと、Layout メニュー からレイアウトを選択します。
1.
2.
3.

Control PanelからStyleを選択する
下部にある Edge タブを選択する
Target Arrow Shape プロパティを選択する

1.
2.
3.
4.

4.

Column に interaction を選択する
Mapping Type に Discrete Mapping を選択する
down に “T” タイプの⽮印を選択する
up に “Arrow” タイプの⽮印を選択する

Layout メニュー  yFiles Layouts  Organic を選択する

25

付録

26

benignコマンド
benignコマンドの書式は以下の通りです。
$ benign [‐lg log] ‐tb input [user options]
指定可能なオプションについては以下の通りです。
•‐lg log•‐tb input•

user options– 任意– BENIGNの実⾏ログを指定します。
– 指定がない場合、 mpidp.log という名前でログを出⼒します。
– 必須– Jobリストファイルを指定します。
– ‐lg, ‐tb以外のオプションは解析処理へのパラメータとして渡されます。
27

Jobリストファイルフォーマット
BENIGNのJobリストファイルのフォーマットは以下の通りです。
[TITLE=タイトル]
パラメータ⾏1
パラメータ⾏2…

28

Jobリストファイルフォーマット
TITLE⾏の指定は任意であり、指定した場合、実⾏ログに記録されます。
パラメータ⾏には、空⽩区切りでパラメータを指定します。
以下はJobリストファイルの例です。
TITLE=example
benign -y --blocks 20 -o ex1 -N 1000 -L 1 -T 0.1 -S linear gene_exp1.edf
benign -y --blocks 20 -o ex2 -N 1000 -L 1 -T 0.1 -S linear gene_exp2.edf
benign -y --blocks 20 -o ex3 -N 1000 -L 1 -T 0.1 -S linear gene_exp3.edf

29

EDFファイルフォーマット
EDFは遺伝⼦発現データを表現するために設計されたフォーマットです。
タブまたはカンマ区切りのテキストファイルで、次の3つのパーツから構成されます。
1. メタデータセクション
2. 属性セクション
3. データセクション

30

EDFファイルフォーマット
以下はタブ区切りのEDFの例です。
# Meta Data Section$Version 1.0# Attribute Section@PrimaryKeyGroupID@SecondaryKeyGroupID# Data Section
gene1
gene2
gene3

1
1

12

2
1

2
2

3
1

3
2

1.1
7.7
13.13

2.2
8.8
14.14

3.3
9.9
15.15

4.4
10.1
16.16

5.5
11.11
17.17

6.6
12.12
18.18

31

EDFファイルフォーマット
メタデータセクションでは、メタデータは"$"から始まり、データセット、属性セクションにある属性についてのグ
ローバルな情報を定義します。
属性セクションでは、属性は"@"から始まり、発現サンプルの属性を定義します。
最初のカラムは属性のキーを表します。上の例では、2つの属性キーPrimaryKeyGroupID と SecondaryKeyGroupID が発現サンプルのために指定されています。
SecondaryKeyGroupIDは反復実験の回数を表すのに使います。
上の例では発現データでn=2の反復(replicate)で取得した場合を表しています。
データセクションにおいて、各⾏は遺伝⼦の発現データを表します。最初のカラムに遺伝⼦の名前を指定し、以降のカラムに発現データを設定します。
32

sgn2tsvコマンド
sgn2tsvコマンドはSGN3形式のファイルからTSVファイルを⽣成するためのプログラムです。
⽣成したTSVファイルはCytoscape、Gephi等グラフ描画ソフトウェアの⼊⼒データとして使⽤できます。
sgn2tsvファイルの書式は以下の通りです。
$ sgn2tsv [‐a] <SGN3ファイル>
sgn2tsvファイルにSGN3形式のファイルを渡すと、カレントディレクトリ下に<SGN3ファイル>.edge.tsv ファイルが⽣成されます。‐a オプションを指定した場合、<SGN3ファイル>.node.tsv ファイルも⽣成されます。
⽣成されるファイルはそれぞれ以下の通りです。
•<SGN3ファイル>.edge.tsv•<SGN3ファイル>.node.tsv– エッジ情報をまとめたTSVファイル– ノード情報をまとめたTSVファイル

33

signprocコマンド
signprocは遺伝⼦ネットワークファイルに様々な処理(ファイルフォーマットの変換、サブネットワークの抽出、指定したノードの⾊づけ等)を⾏うコマンドラインツールです。
signprocはSiGN‐BNのユーティリティプログラムです。
ユーザは複数のフィルターを指定することができ、⼀つのフィルターは⼀つのネットワークを処理します。
ここでは Comp フィルターについて説明しますが、他のフィルターについては下記URLを参照してください。
http://sign.hgc.jp/signproc.html
34

signprocのCompフィルター
Compフィルターは2つのネットワークを⽐較し、結果を標準エラー出⼒に出⼒します。
コマンド例$ signproc ‐‐read type=sgn3,file=./adipo_stage1 ‐‐comp type=sgn3,file=./adipo_stage2
オプションは以下の通りです。
•‐‐read type=sgn3,file=./adipo_stage1–

最初に読み込むネットワーク–

type=sgn3•–

file=./adipo_stage1••

ファイルフォーマット
読み込むファイル

‐‐comp type=sgn3,file=./adipo_stage2–

⽐較するネットワーク(真のネットワーク)–

type=sgn3•–

ファイルフォーマット

file=./adipo_stage2•

読み込むファイル35

signprocのCompフィルター
COML, COMP⾏が⽐較結果です。
各値は、‐‐comp オプションで指定したadipo_stage2を真のネットワークとした場合の adipo_stage1 の枝を以下の種類ごとに数えた値です。
• TP (True Positive)– 両⽅に存在する• FP (False Positive)– adipo_stage2に存在しないが、adipo_stage1に存在する• FN (False Negative)– adipo_stage2に存在するが、adipo_stage1に存在しない• TN (True Negative)– 両⽅に存在しない

⽐較結果の例
COML: TPRTP
COMP: 14
5FP
19

FN
22

TN31

SnSp0.389 0.36836