d. インハウスバイオインフォマティクス環境構築コース g-language perl … ·...

15
D. インハウスバイオインフォマティクス環境構築コース G-languagePerlによるゲノム解析実習 慶應義塾大学先端生命科学研究所 - 荒川和晴 ([email protected]) G-language の紹介 G-language GAE とは G-language Genome Analysis Environment (G-language GAE)は、慶應義塾大学先端生命科学研究所が中心となって2001年から開発されている、バイオ インフォマティクスのための統合パッケージです。現在200以上の解析プログラムが含まれており、グラフィカルなユーザインタフェースから用意に解析を行 うことができます。また、G-language GAEはPerlのモジュールとして使用することができ、独自のインタプリタなどを備え、非常に強力な拡張性を持って います。 プロジェクトページ: http://www.g-language.org/ ドキュメント: http://www.g-language.org/documentation.html 開発ページ: http://bioinformatics.org/project/?group_id=133 参考文献: ・Arakawa. et al., 2003. G-language Genome Analysis Environment: a workbench for nucleotide sequence data mining. Bioinformatics. 19, 305-306 目次 G-language 実習 - 入門編 - グラフィカルユーザインタフェースによる解析 G-language インタプリタ G-language チュートリアル G-language 実習 - 初級編 - GC skew G-language 実習 - 中級編 - シグナルオリゴ配列の傾向 G-language 実習 - 上級編 - 全オリゴの複製方向バイアス 遺伝子の複製方向バイアス 遺伝子発現量と複製方向バイアス

Upload: others

Post on 04-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

D. インハウスバイオインフォマティクス環境構築コースG-languageとPerlによるゲノム解析実習慶應義塾大学先端生命科学研究所 - 荒川和晴 ([email protected])

G-language の紹介

G-language GAE とは

G-language Genome Analysis Environment (G-language GAE)は、慶應義塾大学先端生命科学研究所が中心となって2001年から開発されている、バイオ

インフォマティクスのための統合パッケージです。現在200以上の解析プログラムが含まれており、グラフィカルなユーザインタフェースから用意に解析を行

うことができます。また、G-language GAEはPerlのモジュールとして使用することができ、独自のインタプリタなどを備え、非常に強力な拡張性を持って

います。

プロジェクトページ: http://www.g-language.org/

ドキュメント: http://www.g-language.org/documentation.html

開発ページ: http://bioinformatics.org/project/?group_id=133

参考文献:

・Arakawa. et al., 2003. G-language Genome Analysis Environment: a workbench for nucleotide sequence data mining.

 Bioinformatics. 19, 305-306

目次G-language 実習 - 入門編 -

グラフィカルユーザインタフェースによる解析

G-language インタプリタ

G-language チュートリアル

G-language 実習 - 初級編 -

GC skew

G-language 実習 - 中級編 -

シグナルオリゴ配列の傾向

G-language 実習 - 上級編 -

全オリゴの複製方向バイアス

遺伝子の複製方向バイアス

遺伝子発現量と複製方向バイアス

Page 2: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

G-language 実習 - 入門編 -

グラフィカルユーザインタフェースによる解析

まずは起動して実行してみましょう

G-language GAEには、基本的にはマウスのクリックのみで高度な解析を行うことができるグラフィカルユーザインタフェース(GUI)があります。GUIを起動

するには、コマンドラインでglangとタイプします。

unix % glang

すると、3つのウインドウ:解析の実行などを行うメインのウインドウであるG-language Manager、システムメッセージを表示するConsole、そして解析の

詳細を調節するConfigurator、が起動します。起動した状態で、すでにG-language GAEにはバクテリア解析システムというソフトウェアと、解析対象とし

てのマイコプラズマ菌のゲノム、そして解析を行うためのパラメータなどがセットアップされています。まずはそのままG-language ManagerのExecuteボ

タンを押して、初期設定のままで解析を行ってみましょう。

codon_usage base_information_content genomicskew Text Output

view_cds genome_map

実行すると、すぐに次々と結果が出力されてきます。文字列として出力される結果はText Outputウインドウに、それ以外の結果は個別のウインドウで表示

されます。G-language GAEでは結果は出来る限りグラフや表などにし、一目で結果を理解できるようにしているため、ほとんどの解析はグラフィカルな出

力をします。これによりユーザは煩わしいデータの整理を最小限にとどめて研究や考察を進めることができます。

G-language GAE全体では200以上の解析が実装されていますが、ここで使っているバクテリア解析システムは、特にバクテリアのコンプリートゲノムの解

析に適している約30個の解析が用意されています。例えば、今回出力されたcodon_usageはコドンテーブルを表示するもの、base_information_contentは

スタートコドン周辺領域の情報量を算出するもの、genomicsskewは様々な領域におけるGC skewを表示するもの、view_cdsはスタートコドン及びストッ

プコドン前後100bpの塩基含量をグラフにしたもの、そして、genome_mapはゲノム中の塩基含量や遺伝子などの情報を地図として表示するものです。

G-language Manager

GUIのメインウインドウであるG-language Managerには、3つのボタンが用意されています。ConfigureボタンはConfiguratorウインドウを開

Page 3: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

GUIのメインウインドウであるG-language Managerには、3つのボタンが用意されています。ConfigureボタンはConfiguratorウインドウを開

き、Executeボタンは既に例で見たように、選択されている解析を実行します。Generateボタンは、選択されている解析を実行する代わりに、その内容を

Perlのスクリプトとして出力します。出力されたPerlスクリプトを編集することで、より細かい設定を行ったり機能拡張を行うことができます。

Helpメニューでは、G-language GAEに関する情報を得たり、プロジェクトのウェブページを見ることができます。プロジェクトのウェブページには様々な

ドキュメントがある他、最新版のダウンロードなどができます。Fileメニューでは、アプリケーションの終了や、解析システムの読み込みができます。File-

>Load ScriptメニューではG-language Configuration File (GCF) 形式の解析システムファイルを選択して読み込むことができます。標準ではバクテリア解

析システムのdefault.gcfが選択されていますが、ここで/usr/local/g-language/gcfにある様々なGCFファイルを選ぶことによって幅広い解析を行うことが

できます。以下に標準で提供されているGCFファイルのリストを示します。プロジェクトのウェブページからは追加のGCFファイルを取得することができま

す。

GCFファイル名 説明all.gcf G-language GAEに含まれる200以上の全解析プログラムを含む。

default.gcf バクテリア解析システム。バクテリアのコンプリートゲノムの解析に適した解析。

oasys.gcf 特定の遺伝子に関する情報を網羅的に計算するシステム。

CASYS.gcf cDNA解析システム。cDNAデータをクラスタリングし、選択的スプライシング候補をあげる。

Mapping.gcf cDNAやESTデータをゲノム上にマップするシステム。

STeP.gcf STS-ePCRシステム。ePCRを用いてOMIMデータなどをSTS間の場所にマップする。

File->Convert Perl Scriptメニューでは、Perlのプログラムを読み込んですぐにGUIに変換することができます。Perlプログラム内のサブルーチンの入出力を

自動的にシステムが判別し、それをGCF形式に変換してGUIに読み込みます。File->Conovert Perl ScriptメニューとGenerateボタンを使うことにより、

PerlスクリプトからGUIへ、そしてまたPerlスクリプトへ、と、インタフェースを繰り返し変えながらソフトウェアの改良を行うことが可能です。

Configurator

Configuratorでは解析に使うプログラムを選択し、それらの詳細なオプションを設定することができます。最上部の$gb部分に使用するデータベースのファ

イル名を指定し、左側にある解析プログラムのリストから、実際に使用するものを選びOn/Offボタンを押して使用/不使用を切り替えて行きます。On/Offボ

タンの右側の空白に数字を入力することで、解析を行う順序を定義することもできます。

より詳細な解析の設定を行いたい場合、任意の解析のEditボタンをクリックすると、Configuratorの右側部分にその解析プログラムの利用可能なオプション

一覧が現れます。ここで変更したいオプションの値を入力することができます。一連の操作が終了し、使用するプログラムとそのオプションを設定し終えた

ら、Configurator下部のSaveボタンを押すと、変更した設定が保存されます。あとはG-language ManagerのExecuteボタンを押せば解析がスタートしま

す。

オプションは解析プログラムによって様々なものがありますが、多くに共通しているものとして、ゲノムや塩基配列などを示すinstance_G(通常は$gbその

ままで変更の必要なし)、ファイルに出力する場合のファイル名である-filename、返り値を格納する変数を指定する-Return、そして結果の出力形式を指定す

る-output(fはファイルへ出力、gはグラフへ出力、showはグラフへ出力後表示、stdoutは標準出力)、があります。

Page 4: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

る-output(fはファイルへ出力、gはグラフへ出力、showはグラフへ出力後表示、stdoutは標準出力)、があります。

解析をカスタマイズしてみましょう

Configuratorで、ゲノム中のGC含量の推移をプロットするgcwinのみをOnにして他を全てOffにしてみてください。その状態をSaveしてExecuteします。

次に、Editボタンを押してオプションを表示させ、windowを1000や5000などに変えてSave/Executeをしてみましょう。windowオプションはゲノムを区

切るウインドウのサイズを指定するもので、デフォルトでは10000になっています。マイコプラズマ菌のゲノムは非常に小さいので、デフォルト値では大き

すぎるのがわかるのではないでしょうか。

最適なウインドウがみつかったら、今度はatオプションを1にしてみましょう。このオプションを1にすると、GC含量ではなくAT含量の推移を見ることがで

きます。

同様に、興味のある解析をOnにして、オプションをいろいろとカスタマイズして試してみてください。

G-language インタプリタ

まずは起動して使ってみましょう

G-language GAEは、対話型で解析を進めることができるインタプリタを備えています。このインタプリタ上ではPerlの全ての機能とG-language GAE関連

の全ての機能、そして簡単なUNIXシェルの機能を使うことができ、非常に強力なインタフェースです。起動するにはGとコマンドラインで入力します。

unix % G

__/__/__/__/__/__/__/__/__/__/__/__/__/ G-language Genome Analysis Environment

Version: 1.51 License: GPL Copyright (C) 2001-2005 G-language Project Institute for Advanced Biosciences, Keio University, JAPAN

http://www.g-language.org/

__/__/__/__/__/__/__/__/__/__/__/__/__/ G >

行頭に G > と表示されたら、続けてPerlによるプログラムや、サポートされているシェルコマンド(ls, cd, cp, rm, less, convert)を入力すればすぐに結果が

表示されます。ファイル名に関してはPerlコマンド中であっても、タブによる補完機能があります。また、通常のUNIXシェル同様、上キーを押すことによっ

てhistory機能により直前に入力したコマンドを呼び出すことができる他、Ctrl-Kで一行消去したりすることができます。

G >$value = 256;

G >print $value * 4;1024G >lsbmp docs g2s gcf mgen.gbkG >$gb = new G("/usr/local/g-language/mgen.gbk");

Accession Number: NC_000908

Length of Sequence : 580074 A Content : 200543 (34.57%) T Content : 195695 (33.74%) G Content : 92312 (15.91%) C Content : 91524 (15.78%) Others : 0 (0.00%) AT Content : 68.31% GC Content : 31.69%

G >

インタプリタを終了するにはquitコマンドを使います。すると、ワークスペースを保存するかと聞いてきます。ここでyを入力すると、作業中に作成した全て

の変数を永続的に保存しておいて、次回インタプリタを起動した時にすぐに利用可能なように呼び出してくれます。通常プログラムではメモリの内容は終了時

に消去されますが、インタプリタの永続メモリ機能はプログラム終了後も維持され、次回起動時に自動的に読み込まれます。

Page 5: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

G >quit save value ? y/n ?quit >>yzux100: ~/ ? G

__/__/__/__/__/__/__/__/__/__/__/__/__/ G-language Genome Analysis Environment

Version: 1.51 License: GPL Copyright (C) 2001-2005 G-language Project Institute for Advanced Biosciences, Keio University, JAPAN

http://www.g-language.org/

__/__/__/__/__/__/__/__/__/__/__/__/__/ G >$gb->seq_info()

Accession Number: NC_000908

Length of Sequence : 580074 A Content : 200543 (34.57%) T Content : 195695 (33.74%) G Content : 92312 (15.91%) C Content : 91524 (15.78%) Others : 0 (0.00%) AT Content : 68.31% GC Content : 31.69%

G >

また、インタプリタで作業をした後にmakelogコマンドを入力すると、それまでに入力した全ての作業を、実行可能なPerlスクリプトとして保存してくれま

す。このログは作業ディレクトリのG_INTERNAL.logというファイルに保存されます。

G > makelog

バクテリア解析システムをコマンドラインで使う

GUIで使ったバクテリア解析システムは、GCFに定義された解析を行う機能を持っていましたが、繰り返して一連の作業を行いたい場合など、GUIよりもコマ

ンドラインが適している場合があります。そういった場合には、インタプリタのGコマンドにGCFファイルを引数として与えるだけで動作します。

unix % G /usr/local/g-language/gcf/default.gcf

同様に、拡張子が".pl"のPerlスクリプトを引数に与えると、perl -MGのようにG-language GAEのモジュールをロードしたPerlコマンドと同様に扱います。

unix % G test.pl

解析プログラムを個別に使うには、関数の形でインタプリタ内で記述します。たいていの場合は第一引数にnew G()で読み込んだゲノムファイルを与えます。

G >$gb = new G("/usr/local/g-language/mgen.gbk");

Accession Number: NC_000908

Length of Sequence : 580074 A Content : 200543 (34.57%) T Content : 195695 (33.74%) G Content : 92312 (15.91%) C Content : 91524 (15.78%) Others : 0 (0.00%) AT Content : 68.31% GC Content : 31.69%

G >gcwin($gb);

オプションは、オプション名に続けて=>で値を指定します。

G > gcwin($gb, -window=>1000);

Page 6: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

G-language チュートリアルそれでは、ここから実際にG-language GAEを使ってどのようにバイオインフォマティクスの研究が行えるのか、具体的な解析を例として行いながら説明し

ていきます。真性細菌のゲノムに見られるGC skewという現象をとりあげ、一連の解析では随所に生物学的考察を散りばめていきます。

-初級編- ではグラフィカルユーザインタフェースのみでも行える解析、つまり、G-language GAEに標準で備わっている関数だけで扱えるものをとりあげま

す。

-中級編- では、インタプリタ上で一行ずつ行えるけれども、標準関数にちょっとしたPerlによる拡張を加えることで行える解析を紹介します。

最後に、-上級編- ではG-language GAEをPerlのモジュールとして使用して、Perlのスクリプトを作成することで行える高度な解析を解説します。

G-language 実習 - 初級編 -

GC skew

GC skewとは

GC skew とは、一本鎖DNA分子におけるG含量とC含量のバイアスを表す指標で、(C-G)/(C+G) の式で表されます。ワトソンとクリックによるDNA分子構

造発見のきっかけともなった有名なシャルガフの法則は、「細胞内のAとT、そしてGとCの量はほぼ等しい」というものですが、後にこの塩基分配法則には第

二項が加えられており、「一本鎖DNA分子においてもAとT、そしてGとCの量はほぼ等しい」と経験則から定められています。ただし、これはゲノム全体に

おける現象で、局所的な領域ではAとT、そしてGとCの量比に偏り(バイアス)が見られます。さらに、バクテリアのうち真性細菌の多くの種ではゲノム中で

明確にその傾向が逆転する個所がみられ、その個所が複製開始・終結地点と一致することが多いことが知られています。GC skew という現象が発生する原因

には主に二説あり、それらはリーディング鎖とラギング鎖の異なる突然変異確率、そしてコドン使用による変異のバイアスなどによる、と言われています。

参考文献:

・Lobry, J.R., 1996. Asymmetric substitution patterns in the two DNA strands of bacteria. Mol. Biol. Evol. 13, 660-665

GC skewという現象は、バクテリアのコンプリートゲノムが初めて読み取られてから比較的早い段階で知られるになり、今でもゲノム全体における傾向をつ

かむ手法として、基礎的な解析の一つになっています。G-language GAEは、ゲノム全体を使った解析を行う上で常に考慮すべきであるGC skew関連の情報

を得るツールを豊富に備えています。

解析

それでは実際にGC skewの解析をはじめてみましょう。様々なゲノムの傾向を比較するために、今回は5つの生物のコンプリートゲノムを使用します。

生物名 種名 アクセッション番号 説明

大腸菌 Escherichia coli NC_000913 最も良く知られたモデル生物。

枯草菌 Bacillus subtilis NC_000964 納豆菌の親戚。特に強いGC skewを示す。

マイコプラズマ菌 Mycoplasma genitalium NC_000908 コンプリートゲノムが読まれている中で、最小ゲノムを持つ微生物。

シアノバクテリア Synechococcus sp. NC_005070 光合成をする細菌。

パイロコッカス菌 Pyrococcus furiosus NC_003413 超高熱耐性の古細菌。

まずはG-languageインタプリタを起動し、これら5つのゲノムをデータベースからダウンロードし、使用可能な状態にしましょう。

unix % G

__/__/__/__/__/__/__/__/__/__/__/__/__/ G-language Genome Analysis Environment

Version: 1.51 License: GPL Copyright (C) 2001-2005 G-language Project Institute for Advanced Biosciences, Keio University, JAPAN

http://www.g-language.org/

Page 7: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

http://www.g-language.org/

__/__/__/__/__/__/__/__/__/__/__/__/__/ G >$eco = new G("NC_000913", "no msg");G >$bsub = new G("NC_000964", "no msg");G >$mgen = new G("NC_000908", "no msg");G >$cyano = new G("NC_005070", "no msg");G >$pyro = new G("NC_003413", "no msg");G >

おそらくある程度の時間がかかってしまうと思われますが、以上のコマンドを入力することで、5つのゲノムをデータベースからダウンロードして以後の解析

で利用できる形で$eco, $bsub, $mgen, $cyano, $pyroの中に格納できます。通常 new G()コマンドはゲノムデータを読み込むと同時に、全体の塩基組成の

割合を表示しますが、"no msg"オプションを与えてやることでこれを表示しないように設定できます。

それでは実際にこれらのゲノムのGC skewを見てみましょう。GC skewを計算する関数はgcskew($gb)です。

G >gcskew($eco)G >gcskew($bsub)G >gcskew($mgen)G >gcskew($cyano)G >gcskew($pyro)

以上のように入力すると、5つの新規ウインドウが立ち上がり、それぞれにグラフが表示されるはずです。GC skew関数は、ゲノムを10,000bpの領域に分

割し、それぞれの領域における(C-G)/(C+G)を計算してプロットします。よって、ある領域にCがGよりも多ければ正の値をとり、逆の場合には負の値をとり

ます。

大腸菌 枯草菌 マイコプラズマ菌

シアノバクテリア パイロコッカス菌大腸菌と枯草菌では非常に綺麗に相対的にGが多い領域とCが多い領域が分かれているのが見て取れます。逆に、シアノバクテリアとパイロコッカス菌ではそ

ういった傾向は見えません。一方、マイコプラズマ菌のグラフはデータポイント数が他のものと比べてかなり少なくなっています。どうやらマイコプラズマ菌

の58万bpというゲノム長に対し、10,000bpのウインドウは大きすぎたようです(他のゲノムは2.5Mbp~4.6Mbp)。オプションでウインドウサイズを

1,000bpに縮小して再度グラフしてみましょう。

G > gcskew($mgen, -window=>1000)

これで他のグラフと同じくらいの細かさで描画されました。しかし、マイコプラズマ菌のGC skewも、シアノバクテリアやパイロコッカス菌同様に明確なシ

Page 8: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

これで他のグラフと同じくらいの細かさで描画されました。しかし、マイコプラズマ菌のGC skewも、シアノバクテリアやパイロコッカス菌同様に明確なシ

フトポイントが見えません。これらの生物にはGC skewは存在しないのでしょうか?GC skewのように正と負の値をとる連続した数字の切り替わりを見るに

は、累積プロットが有効であることが知られています。ウインドウ毎に個別の値をプロットするのではなく、次々に値を累積して足し合わせていくのです。こ

のように、累積GC skewを計算する関数がcum_gcskew($gb)です。先ほどと同様に、この関数で(マイコプラズマ菌ではウインドウ幅を1,000bpに変え

て)累積GC skewを見てみましょう。

G >cum_gcskew($eco)G >cum_gcskew($bsub)G >cum_gcskew($mgen, -window=>1000)G >cum_gcskew($cyano)G >cum_gcskew($pyro)

大腸菌 枯草菌 マイコプラズマ菌

シアノバクテリア パイロコッカス菌GC skewが明確に見えた大腸菌と枯草菌では、累積をとることによってさらにシフトポイントを強調させることができました。また、ノイズが大きくてGC

skewそのものがはっきりとは観察できなかったマイコプラズマ菌やシアノバクテリアに関しても、累積GC skewを見るとシフトポイントが、そしてGC

skewが弱いながらも存在していることがわかります。一方、パイコッカス菌は累積をとっても明確なシフトポイントは依然として現れてきません。

一般的に、真性細菌のリーディング鎖はラギング鎖に比べてGに富んでいます。よって、GC skewのシフトポイントはリーディング鎖とラギング鎖の境目、

つまり、複製開始点と終結点に対応していると言われています。累積GC skewでは最高点が予測される複製開始点に、最低点が予測される複製終結点に対応

しています。この二つの頂点を探すプログラムは、find_ori_ter($gb)という関数として提供されています。複製開始点と終結点が知られている大腸菌と枯草菌

を使って、これらを予測してみましょう。

G > find_ori_ter($eco)

find_ori_ter: Window size = 1000 Predicted Origin: 3923500 Predicted Terminus: 1549500

G > find_ori_ter($bsub)

find_ori_ter: Window size = 1000 Predicted Origin: 4213500 Predicted Terminus: 1941500

大腸菌の複製開始点は3,923,500bp付近で、終結点は1,588,800bp付近、そして枯草菌の複製開始点は1bp付近、終結点は2,017,000bp付近です。必ずし

も全てが一致しているわけではないですが、GC skewを用いた複製開始点及び終結点の予測は比較的高精度であると言えるでしょう。(枯草菌の予測された

複製開始点はゲノムの最後部分を指していて、環状ゲノムなので これは最初の部分と等しい。よって、実際の複製開始点である1bpに極めて近い。)マイコ

プラズマ菌も複製開始点は1bpにあることが知られており、複製終結点は未知ですが、少なくとも累積GC skewで頂点が1bp付近にあることは現象が良く一

致しています。一方で、古細菌の多くは複数の複製開始点を持つことから、パイロコッカス菌では明確なシフトポインやGC skewが見いだせなかったことも

納得できます。

それでは次に、GC skewがどの部位に対する突然変異によって起きている現象なのかを調べてみましょう。GC skewが比較的強かった大腸菌と枯草菌におい

Page 9: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

それでは次に、GC skewがどの部位に対する突然変異によって起きている現象なのかを調べてみましょう。GC skewが比較的強かった大腸菌と枯草菌におい

て、ゲノム全体、コード領域のみ、遺伝子間領域のみ、そして変異が起きやすいコドンの3番目の塩基のみのGC skewを同時にプロットしてみます。この

時、それぞれの領域の長さが変わってしまいますので、それぞれ全体の長さの1/250に区切った領域を一つのウインドウとします。これら全てを行ってくれ

るのがgenomicskew($gb)という関数です。

G >genomicskew($eco)G >genomicskew($bsub)

大腸菌 枯草菌遺伝子間領域やコドンの3番目の塩基はコード領域内及びゲノム全体と比べて長さがかなり短くなってしまいますので、その分振れ幅が大きくなっています。

しかし、いずれにしてもこれらどの領域もGC skewがあることを示しています。よって、GC skewを作り出す突然変異は、ゲノム上特定部位に作用するとい

うよりは、リーディング鎖全体にほぼ等しく起こる可能性が示唆されます。

さて、GC skewの傾向が強い種とそうでない種の違いは何でしょうか。はっきりしたことはまだ分かっていませんが、少なくとも細菌の増殖速度と何らかの

関係がありそうです。枯草菌の一回の細胞分裂にかかる時間は約0.45/h、大腸菌は約0.35h、マイコプラズマ菌は約12h、そしてシアノバクテリアは約8hで

すが、この速度とGC skewの強度には相関がうかがえます。

参考文献:

・Rocha, E.P.C., 2004. Codon usage bias from tRNA's point of view: Redundancy, specialization, and efficient

 decoding for translation optimization. Genome Res. 14, 2279-2286(増殖速度など)

・Freeman, J.M., et al. 1998. Patterns of Genome Organization in Bacteria. Science. 279, 1827a(複製開始・終結点など)

・Grigoriev, A., 1998. Analyzing genomes with cumulative skew diagrams. Nucleic Acids Res. 26, 2286-2290(累積グラフなど)

G-language 実習 - 中級編 -

シグナルオリゴ配列の傾向

シグナルオリゴ配列 :χ配列とは-

大腸菌では一回の複製過程に約一回、何らかの形で複製フォークの進行が妨げられ、それによりDNAの二重鎖が切断されてしまいます。この時、複製フォー

クを修復し再度複製を続行させるためにRecBCD酵素によって促進される相同組換えが非常に重要な役割を演じます。RecBCDはゲノム中のχ(カイ)配列

と呼ばれる8塩基配列、5'-GCTGGTGG-3'を組換えのホットスポットとして認識してその働きを調節しますが、χ配列は特定の方向を向いている時しか作用

しないため、ゲノム中で有意に複製方向を向いて存在しているシグナル配列として有名です。

参考文献:

・Kowalczykowski, S.C., 2000. Initiation of genetic recombination and recombination-dependent replication.Trends Biochem. Sci. 25, 156-165

・Uno, R. et al., 2000. The orientation bias of Chi sequence is a general tendency of G-rich oligomers. Gene. 259, 207-215

ここでは、特定のオリゴ配列が複製方向に向かっている割合、すなわち、リーディング鎖上に存在している割合を計算する方法を例示します。

解析

リーディング鎖上に存在している割合をもとめるのですから、リーディング鎖の配列が必要です。G-language GAEでは以下のようにleading_strand($gb)関

数を使うことで複製開始点から複製終結点までの、右回りと左回りそれぞれのリーディング鎖配列を得ることができます。これらを繋げてリーディング鎖のみ

のゲノム配列を作ります。

Page 10: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

のゲノム配列を作ります。

G > ($seq1, $seq2) = leading_strand($eco)G > $leading = $seq1 . $seq2

new G($gb)関数を使ってゲノムデータベースを読み込むと、そのゲノム塩基配列の簡単な統計が表示されますが、実はこれはseqinfo($gb)という関数を呼び

出して表示しています。seqinfo($gb)を用いて、GC skewで示されるようにリーディング鎖にはG含有量が多いことを確認してみましょう。G-language

GAEの関数のうち、ゲノム情報や配列を引数とする関数は自動的に型推論を行うので、ここではゲノム情報のアノテーションを含む全てを持つ構造体である

$gbだけでなく、塩基配列のみを持つスカラー値を入れます。

G >seqinfo($leading)

Length of Sequence : 4639675 A Content : 1137315 (24.51%) T Content : 1145883 (24.70%) G Content : 1216052 (26.21%) C Content : 1140425 (24.58%) Others : 0 (0.00%) AT Content : 49.21% GC Content : 50.79%

ゲノム全体の傾向と比較すると、AとTの量は変化がないものの、Gは増加し、Cが低下しているのが見て取れます。χ配列は8文字中5文字がGという偏った

塩基含有量を持つので、ラギング鎖よりもリーディング鎖上に多く存在していることは全体の塩基含量から推測できます。それでは、実際にχ配列の数を数え

てみましょう。ある長い配列中に、短い配列が存在する個数を数えるにはoligomer_counter($gb, "oligomer")を使います。

複製方向を向いている数を数えるには、GCTGGTGGという配列がリーディング鎖中に存在している数を数えます。一方、逆方向を向いている数を数えるに

は、ラギング鎖中に同じ配列が存在している数を数えれば良いのですが、これはリーディング鎖中のGCTGGTGGの相補配列、CCACCAGCの数を数えること

でも可能です。complement($seq)関数を使えば簡単に相補配列を得ることができます。実際に複製方向を向く割合を計算すると以下のようになります。

G > print oligomer_counter($leading, "gctggtgg")761G > print oligomer_counter($leading, complement("gctggtgg"))247G > print 761+2471008G > print 761/1008 * 10075.4960317460317

同様のことを、任意の8塩基配列を使って計算してみましょう。いくつか試してみると、すぐに以下のことに気がつきます。

多くの8塩基配列はゲノム中に100~300個程度存在し、1008個というのは極端に多い

75%という複製方向を向く割合も同様にかなり高い

実際にこれを統計的に見るとどうなるでしょうか。まず、ゲノム中に存在する数を計算するには、ある8塩基の組み合わせが任意の配列である確率は、塩基が

4通りなので0.258=0.000015程度になります。大腸菌ゲノムは4.6Mbpなので、この中に特定の8塩基オリゴ配列が一本鎖に存在している数は約70個。

相補鎖に存在している数を考慮すれば計約140個。この確率から考えてもχ配列は有意に多そうだと言えます。

また、複製方向に関しては、塩基含量から配列がリーディング鎖に存在する確率とラギング鎖に存在する確率をそれぞれ

F1 = [A]a[T]t[G]g[C]c

F2= [A]a'[T]t'[G]g'[C]c'

([A][T][G][C]はリーディング鎖の各塩基含量、atgcはオリゴ配列中の塩基数、a't'g'c'はオリゴ配列相補配列中の塩基数)

として求め、

F1/(F1+F2)

を計算することから割合を算出できます。χ配列についてこれを計算すると、

G >$f1 = 0.2451 ** 0 * 0.2470 ** 2 * 0.2621 ** 5 * 0.2458 ** 1

G >$f2 = 0.2451 ** 2 * 0.2470 ** 0 * 0.2621 ** 1 * 0.2458 ** 5

G >print $f1/($f1 + $f2) * 10056.7651511506961

と約57%の割合が予測され、75%はこれを大きく上回っていることがわかります。ただし、この解析では各塩基の含有量のみからの予測であり、実際はゲノ

ム上の配列には複数の塩基の並びが関与するマルコフ性が知られていますので、そういったより高次の情報を使わずに結論しないよう注意が必要です。

参考文献:

・Lobry, L.R. et al., 2003. Polarisation of prokaryotic chromosomes. Curr. Opin. Microbiol. 6, 101-108

Page 11: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

G-language 実習 - 上級編 -

全オリゴの複製方向バイアス

「シグナルオリゴ配列の傾向」ではχ配列という一つの8塩基配列について調べてみました。しかし、統計的な比較をするためには65536通りの全ての8塩

基配列に対し同様の解析を行い、それら全体の傾向を見ることが望ましいでしょう。このような単純な繰り返し作業は、簡単なプログラミングを行うことで自

動化することができます。G-language GAEはPerlのモジュールとしても扱えるので、実際にPerlのスクリプトを書いて全オリゴ配列の複製方向バイアスを

計算してみましょう。

まず、インタプリタを終了する前に大腸菌のゲノムデータを保存しておきます。ゲノムデータのを保存するには、new G()で作り出した構造体からoutput()関

数を呼び出し、ファイル名を引数として与えます。この時、ファイル名の拡張子でG-language GAEは出力形式を自動判別して適切なフォーマットで保存し

てくれます。ここではGenBank形式でファイルを保存しましょう。

G > $eco->output("ecoli.gbk")

さて、それでは実際にPerlスクリプトの作成を始めましょう。Perlのスクリプト、例えば test1.pl というファイルを作成し、emacsなどのエディタで開きま

しょう。そして、G-language GAEを使う、ということを宣言するために、use G; と書き入れます。そして、先ほど保存した大腸菌のゲノムデータをnew

G()で読み込みます。

use G;$gb = new G("ecoli.gbk", "no msg");

次に、先ほどインタプリタで行ったように、リーディング鎖の配列を求めます。

($seq1, $seq2) = leading_strand($gb);$leading = $seq1 . $seq2;

ここからPerlによる処理が始まります。まず、リーディング鎖中に存在する全8塩基の数を数えます。これはリーディング鎖の配列の先頭から、8文字のウイ

ンドウを一文字ずつずらしながらリーディング鎖の配列の末端までどんな8塩基配列が存在しているかを数えていくことで出来ます。このような繰り返しには

for 文を使います。0番目(先頭)から、8塩基のウインドウをとれるリーディング鎖の最後の部分まで、一文字ずつ、というのをfor文で表現すると以下のよ

うになります。

for ($i = 0; $i <= length($leading) - 8; $i ++){

}

このfor文の中は、一文字ずつウインドウをずらす度に繰り返されます。ここでは、$i番目から8文字をリーディング鎖の配列から切り出し、その配列のカウ

ント数を1増やす、という作業を記述すればよいですね。特定の文字列を切り出すにはsubstr()というPerlの標準関数を使い、文字列を数えるためにはハッ

シュを使います。

for ($i = 0; $i <= length($leading) - 8; $i ++){ $oligo{substr($leading, $i, 8)} ++;}

さて、これで全8塩基配列の、リーディング鎖中の数を数えて、%oligoというハッシュに格納することができました。あとはそれぞれの8塩基配列の総数

(相補鎖の数を含む)と、複製方向に向く割合を計算すれば完成です。既にインタプリタでχ配列を使って行ったように、この部分は以下のように記述できま

す。

$total = $oligo{$nuc} + $oligo{complement($nuc)}; $percent = $oligo{$nuc} / $total * 100;

printf "$nuc, $total, $percent\n";

あとはこの処理を全8塩基配列に関して行えば完成です。ハッシュの全要素に関して繰り返して行うためには、foreachを使います。

foreach $nuc (sort keys %oligo){ $total = $oligo{$nuc} + $oligo{complement($nuc)}; $percent = $oligo{$nuc} / $total * 100;

printf "$nuc, $total, $percent\n";}

以上でスクリプトは完成です。以下にスクリプト全体をまとめます。

use G;

Page 12: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

$gb = new G("ecoli.gbk", "no msg");

($seq1, $seq2) = leading_strand($gb);$leading = $seq1 . $seq2;

for ($i = 0; $i <= length($leading) - 8; $i ++){ $oligo{substr($leading, $i, 8)} ++;}

foreach $nuc (sort keys %oligo){ $total = $oligo{$nuc} + $oligo{complement($nuc)}; $percent = $oligo{$nuc} / $total * 100;

printf "$nuc, $total, $percent\n";}

スクリプトを実行し、結果をout.csvというファイルに出力しましょう。カンマで区切ったデータは、CSVという形式にしておくとそのままExcelなどの表計

算プログラムで開くことができて便利です。

unix % perl test1.pl >out.csv

プログラムが無事終了したら、out.csvをlessコマンドなどで見ると、以下のように結果を見ることができます。表計算ソフトなどでこのデータを読み込み、

複製方向を向く割合でソートし、一番偏りが強い配列は何か、χ配列は全オリゴ配列は何番目に偏っているか、数で見るとχ配列は何番目に多いか、などを調

べてみましょう。

aaaaaaaa, 242, 38.4297520661157aaaaaaac, 351, 38.4615384615385aaaaaaag, 318, 47.1698113207547aaaaaaat, 502, 48.804780876494aaaaaaca, 418, 48.5645933014354aaaaaacc, 375, 39.4666666666667aaaaaacg, 387, 53.2299741602067aaaaaact, 286, 49.6503496503497aaaaaaga, 429, 51.2820512820513aaaaaagc, 563, 49.911190053286aaaaaagg, 336, 52.3809523809524aaaaaagt, 285, 51.9298245614035aaaaaata, 492, 49.7967479674797...

遺伝子の複製方向バイアス

ここまでに、塩基とオリゴ配列と複製方向の関係について見てきましたが、遺伝子の向きはどうなっているのでしょうか。

全オリゴ配列に関して繰り返し処理を行う時に、一塩基ずつ動かすのにfor文を、オリゴ配列毎にハッシュの中身を見るのにforeach文を使ってきましたが、

ゲノム中の遺伝子を一つずつ見るために、G-language GAEでは以下の構文を使います。

foreach $cds ($gb->cds()){

}

$gb->cds()にはゲノム中の全遺伝子を指すポインタ、$cdsが格納されており、$cdsを使うことで遺伝子の様々な情報を得ることができます。例えば、主な

ものは以下の通りです。 表記法 説明

$gb->{$cds}->{start} 遺伝子開始位置

$gb->{$cds}->{end} 遺伝子終結位置

$gb->{$cds}->{direction} 遺伝子のある鎖(direct or complement)

$gb->{$cds}->{gene} 遺伝子名

$gb->{$cds}->{locus_tag} 遺伝子番号

$gb->{$cds}->{product} 遺伝子産物

$gb->{$cds}->{db_xref} 外部データベースへのリンク

$gb->{$cds}->{translation} 翻訳されたアミノ酸配列

$gb->get_geneseq($cds) 遺伝子の塩基配列

$gb->startcodon($cds) スタートコドン

$gb->stopcodon($cds) ストップコドン

$gb->before_startcodon($cds, 100) 遺伝子上流100bpの塩基配列

Page 13: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

$gb->after_stopcodon($cds, 100) 遺伝子下流100bpの塩基配列

$gb->get_intron($cds) イントロンの配列

$gb->get_exon($cds) エキソンの配列

それでは、それぞれの遺伝子がどちらの鎖にのっているかを調べ、もしリーディング鎖にのっているのであればカウントを増やす、という方法で遺伝子が複製

方向を向いている割合を計算してみましょう。遺伝子の総数はscalar($gb->cds())で求められます。どちらの鎖にあるか、を調べるために

はquery_strand($gb, <position>, -direction=><direction>)関数を使います。ここで、<position>は数字で表されるゲノム中の位置を指しますので、今回は

遺伝子の開始位置を使います。また、<direction>には遺伝子の向きを使います。

以上を踏まえてスクリプトを作成すると、以下のようになります。

use G;

$gb = new G("ecoli.gbk", "no msg");

foreach $cds ($gb->cds()){ my $strand = query_strand($gb, $gb->{$cds}->{start}, -direction=>$gb->{$cds}->{direction});

if($strand eq 'leading'){ $i ++; }}

print $i/scalar($gb->cds());

実際にこのスクリプトを実行して、遺伝子が複製方向を向いている割合を算出してみましょう。

遺伝子発現量と複製方向バイアス

Codon Adaptation Indexとは

さて、これまでにゲノム中の様々な構成部分と複製方向の関係を見てきましたが、最後に、より機能的な情報である遺伝子の発現量に注目して、複製方向と遺

伝子発現量の関係を解析してみましょう。遺伝子の発現量を見るにはマイクロアレーなどのハイスループットな網羅的実験手法によるデータを活用するのが理

想的ですが、ここではゲノム情報から遺伝子発現量を予測する指標として代表的なCodon Adaptation Index (CAI)を用います。

CAIは、リボソーム関連遺伝子などの高い発現遺伝子の同義コドン使用頻度の偏りをもとにして、これら高発現遺伝子のコドンバイアスと観察対象遺伝子のコ

ドンバイアスの相関から相対的な発現量を推定する手法です。当然CAIのみで定量的かつ正確な遺伝子発現量を予測することは不可能ですが、ある程度発現量

の目安を得ることができ、少なくともコドンバイアスが、方向性を持って強く存在している真性細菌においては、その目安としての有用性は一般的に認められ

ています。

参考文献:

・Sharp, P.M. et al., 1987. The codon Adaptation Index--a measure of directional synonymous codon usage bias,

 and its potential applications. Nucleic Acids Res. 15, 1281-1295

解析

ゲノム全体の傾向は、少なからず個々の遺伝子や短い塩基配列に影響を与えます。それはGC skewなどの塩基組成の偏りが存在していたり、リーディング鎖

とラギング鎖における遺伝子の数が異なったりするからです。大腸菌は約30分に一回細胞分裂しますし、複製という機構はバクテリアゲノムにおいて非常に

大きな意味を持ちます。ここでは、リーディング鎖とラギング鎖によって遺伝子の発現量にも何かしらの影響がある、という仮説を検証してみます。

G-language GAEでCAIを使う場合、cai($gb)関数を使います。CAIは各遺伝子毎に0から1の間の値(0が高発現遺伝子と無相関で、1が相関)で得られます。

cai($gb)を使うと全遺伝子のCAI値のリストが得られるほか、$gb->{$cds}->{cai}に新たに遺伝子のCAI値が追加されます。今回はこの値を使用し、リスト

は不要なため、-outputオプションでリストを出力しないように調整します。

cai($gb, -output=>"/dev/null");

さて、ゲノム領域中の傾向を見るには、ゲノム全体を細かい領域に分けて、それぞれにおける値をグラフとしてプロットするのが有効であることはこれまでの

GC skewなどの解析でみてきた通りです。また、傾向をより顕著にするためには累積プロットが適しています。以上を踏まえて、CAI値をプロットしてみま

しょう。しかし、ここで二点留意する必要があります。

まず、CAI値は0から1の値をとりますが、累積プロットを行う為には正と負の値を持つものでなければならないので、これを補正してやる必要があります。

Page 14: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

まず、CAI値は0から1の値をとりますが、累積プロットを行う為には正と負の値を持つものでなければならないので、これを補正してやる必要があります。

大腸菌の全遺伝子のCAI値の平均は約0.485なので、実際のCAI値からこの値を引いてやることで、平均が0、最大値が0.5、最小値が-0.5となります。

次に、今まではGC含量などだけだったのでDNAの一本鎖だけ考慮すればよかったのですが、遺伝子はどちらの鎖にも存在しますので、プロットをリーディン

グ鎖とラギング鎖の二つに分ける必要があります。どちらの鎖を使うか判別する部分には、既に遺伝子の方向性の解析で使ったquery_strand($gb)関数が使

えます。

各遺伝子で、平均値0に補正したCAI値を計算し、リーディング鎖とラギング鎖に分けます。これを後にグラフにするので、それぞれをアレーを使って格納し

ます。アレーに要素を追加するにはPerl標準関数のpush()を使います。CAI値だけでなく、遺伝子のゲノム中の位置も保存しておきましょう。以上をプログラ

ムにすると以下のようになります。

foreach $cds ($gb->cds()){ my $strand = query_strand($gb, $gb->{$cds}->{start}, -direction=>$gb->{$cds}->{direction});

if ($strand eq 'leading'){ $cai_leading += $gb->{$cds}->{cai} - 0.485; }else{ $cai_lagging += $gb->{$cds}->{cai} - 0.485; }

push(@data1, $cai_leading); push(@data2, $cai_lagging); push(@pos, $gb->{$cds}->{start});}

最後に、得られたデータをグラフにします。G-language GAEでは簡単にグラフを作成することができる_UniMultiGrapher()という関数があるので、これに

値を入れて行きます。それぞれ配列の参照の形で、各データのX座標のリスト(上で格納したゲノム中の位置)と、各データのY座標のリスト(上で格納した

リーディング鎖のCAI値とラギング鎖のCAI値)を入れるだけです。

_UniMultiGrapher(\@pos, \@data1, \@data2);

これだけで作業ディレクトリ内部のgraphというフォルダ内にgraph.pngという名前でグラフの画像が作成されます。グラフをさらにわかりやすくするよう

に、タイトル、データラベル、X軸やY軸のラベルを追加します。

_UniMultiGrapher(\@pos, \@data1, \@data2, -x1=>"leading", -x2=>"lagging", -title=>"caiskew", -x=>"position", -y=>"cai");

以上をまとめると以下のようなプログラムになります。

use G;

$gb = new G("ecoli.gbk", "no msg");cai($gb, -output=>"/dev/null");

foreach $cds ($gb->cds()){ my $strand = query_strand($gb, $gb->{$cds}->{start}, -direction=>$gb->{$cds}->{direction});

if ($strand eq 'leading'){ $cai_leading += $gb->{$cds}->{cai} - 0.485; }else{ $cai_lagging += $gb->{$cds}->{cai} - 0.485; }

push(@data1, $cai_leading); push(@data2, $cai_lagging); push(@pos, $gb->{$cds}->{start});}

_UniMultiGrapher(\@pos, \@data1, \@data2, -x1=>"leading", -x2=>"lagging", -title=>"caiskew", -x=>"position", -y=>"cai");

グラフを表示するには、displayコマンドを使います。

unix % display graph/graph.png

すると、以下のようなグラフが表示されます。

Page 15: D. インハウスバイオインフォマティクス環境構築コース G-language Perl … · D. インハウスバイオインフォマティクス環境構築コース G-languageとPerlによるゲノム解析実習

既に見てきたように、大腸菌の複製開始点は3,923,500bp付近で、終結点は1,588,800bp付近です。まず、ラギング鎖を見ると、ほぼ全域が負の値になって

います。これはラギング鎖全体を通じて平均以下のCAI値を持つ遺伝子が多いこと、つまり、ラギング鎖中の遺伝子の発現量が相対的に少ないことを示してい

ます。

一方、リーディング鎖のグラフは大きく変動しています。そして、複製開始点と終結点との関連を見ると、複製終結点周辺ではグラフが下降を続け、複製開始

点付近では大幅に上昇していっているのがわかります。よって、リーディング鎖では複製開始点付近に高発現遺伝子が集中しており、徐々に終結点に向かうに

つれて発現量は低くなっていっているようです。

さて、このグラフでは、3.5Mbp付近でリーディング鎖の値が急激に上昇しています。CAI値はリボソーム関連遺伝子を高発現遺伝子と定義していて、リボ

ソーム関連遺伝子はかたまって遺伝子クラスターを形成していることが多いので、その影響がでていそうです。そこで、リボソーム関連遺伝子を除いて同じグ

ラフを作ってみましょう。foreach文の一番最初に、

next if ($gb->{$cds}->{product} =~ /ribosom/);

と記入するだけで、リボローム関連の遺伝子は除去できます。グラフはどのようにかわりましたか?

参考文献:

・Daubin, V. et al., 2003. G+C3 Structuring Along the Genome: A Common Feature in Prokaryotes.

 Molecular Biology and Evolution. 20, 471-483

おわりに以上に示した解析例は、後半はかなり複雑な解析をとりあげましたが、それでも20行未満のスクリプトです。G-language GAEではこのように複雑な解析

を効率よく、容易に行うことを可能にします。

それでは、あとはこのG-language Genome Analysis Environmentを使ってあなたが生命の真理を探究してみてください。

(C) 2005 Kazuharu Arakawa All rights reserved.