Introduction

タンパク質を構成するアミノ酸の配列順序を決めるのは、核酸塩基の配列順序です。 それぞれのアミノ酸は、4種の核酸塩基(A, T/U, G, C)のうち3塩基の連鎖(コドン) でコードされています。アミノ酸の種類が20種類であるのに対し、3個の塩基の並び方は 4x4x4で64通り考えられます。実際、1つのアミノ酸に複数のコドンが対応すること が知られており、このように、同一のアミノ酸をコードするコドンを 同義コドン (synonym codon)と呼びます。 同義コドンの使用頻度には、生物種固有の偏りが存在することが知られています。

ここでは、初心者向けにG-language System の使い方を解説していきます。 前提として、以上の生物学的知識と、UNIXの基本的な操作法が身についているものとします。






Step 0 -G-language System の起動

それでは、コドン使用頻度の解析を実際に行う前に、まずG-language System を起動 しましょう。G-language System を使用すれば、ゲノム解析は非常にシンプルです。

例えば、カレントディレクトリにある "bsub.gbk" というデータファイル(Genbank形式の Bacillus subtilis のコンプリートゲノム)を使用して解析をするなら、テキストエディタ に以下の二行を書き込むだけで準備は終了します。

  use G; 
  $gb = new G("bsub.gbk"); 

試しに、このPerlスクリプトを実行してみましょう。(ファイル名を test.pl とします)

  perl test.pl  [ENTER] 

以下のような出力が得られましたか?

  
             __/__/__/__/__/__/__/__/__/__/__/__/__/ 
  
                     G-language System 
  
              Version: 1.0.0 gamma 
  
              Copyright (C) 2001 G-language Project 
              Institute of Advanced Biosciences, 
              Keio University, JAPAN 
  
                 http://www.g-language.org/ 
  
             __/__/__/__/__/__/__/__/__/__/__/__/__/ 
  
  
Accession Number: AL009126 
  
  Length of Sequence :   4214814 
           A Content :   1187757 (28.18%) 
           T Content :   1192867 (28.30%) 
           G Content :    915023 (21.71%) 
           C Content :    919167 (21.81%) 
              Others :         0 (0.00%) 
          AT Content :    56.48% 
          GC Content :    43.52% 
  

このアクセッション番号と塩基含量の統計値の出力によって、G-language System は データファイル("bsub.gbk")を無事読み込んだことを知らせてくれます。

では、スクリプトの説明をしましょう。
・use G; で、Gのモジュールをインポートします。
・$gb = new G("bsub.gbk"); で、カレントディレクトリにある"bsub.gbk" というファイルを読み込み、$gb という変数に アノテーションと塩基配列 を格納します。

*課題0 :
他の細菌のコンプリートゲノムデータ("ecoli.gbk"、"hbsp.gbk"、"mgen.gbk" など) を読み込んで下さい。そして、G+C含量(GC Content)の生物種間差を調べましょう。






Step 1 -標準関数の使用例(1) : 遺伝子全体でのコドン使用頻度の解析

G-language System にはゲノム解析のための関数が標準で多数用意されています。 ここでは、標準関数の一つである codon_usage() を用いて、B. subtilis のコドン使用頻度 を解析しましょう。Step 0で作成したPerlスクリプトに、codon_usage()関数を使用する 一行を書き足して下さい。 codon_usage()関数には、$gb を引数として渡します。

  use G; 
  $gb = new G("bsub.gbk"); 
  codon_usage($gb); 

上記スクリプトを実行すると、コドン使用頻度がディスプレイに出力される とともに、 以下のようなコドンテーブルが表示されるはずです。

これは、B. subtilis ゲノム全体で同義コドンの頻度を計算した結果を表にしたものです。 各アミノ酸における同義コドンの頻度を合計すると 1 になります。 例えば、フェニルアラニン(略号 : F )では、TTTの頻度 0.685 に対してTTC の頻度は 0.315 と、2つある同義コドンのうち TTT を多用し、 イソロイシン(略号 : I )では3つある同義コドンのうち ATT を多用している といったように、各アミノ酸で特定のコドンを偏って使用する傾向がみられます。

*課題1 :
Mycoplasma genitalium("mgen.gbk")における各アミノ酸の同義コドン使用の偏りと B. subtilis のそれとを比較検討してみてください。






Step 2 -標準関数の使用例(2) : 遺伝子毎のコドン使用頻度の解析

G-language System の標準関数には、多彩なオプションが用意されています。
codon_usage()関数は、以下のオプションを持ちます。

option description
-CDSid コドン使用頻度を計算するCDSのIDを指定。デフォルトは全遺伝子で計算する。
-output 出力先を指定。'stdout'はディスプレイ出力、'f'はファイル出力。デフォルトは 'stdout'。
-filename 出力ファイル名を指定。デフォルトは 'codon_usage.csv'。

オプションは

  codon_usage($gb, -output=>'f', -filename=>'bsub_CodonUsage.csv'); 
のように、"-" をオプション名の頭に付け、"=>" で値と結びます。

Step 1 ではゲノム全体としてのコドン使用頻度を計算しましたが、今度は ある特定の遺伝子のコドン使用頻度を計算してみましょう。

Step 1 で作成したスクリプトを以下のように書き換えて下さい。

  use G; 
  $gb = new G("bsub.gbk"); 
  codon_usage($gb, -CDSid=>'CDS113'); 
'CDS113'は、伸長因子(elongation factor Tu, EF-Tu)をコードする遺伝子(tufA)に対応しています。 上記スクリプトを実行すると、以下に示すような tufA 遺伝子のコドン使用頻度がディスプレイに出力されるはずです。

 
/ -> taa -> 1   1.000 
A -> gca -> 2   0.074 
A -> gcc -> 2   0.074 
A -> gcg -> 3   0.111 
A -> gct -> 20   0.741 
C -> tgc -> 2   1.000 
D -> gac -> 15   0.600 
D -> gat -> 10   0.400 
E -> gaa -> 32   0.762 
E -> gag -> 10   0.238 
F -> ttc -> 13   1.000 
G -> gga -> 9   0.243 
G -> ggc -> 5   0.135 
G -> ggt -> 23   0.622 
H -> cac -> 7   0.583 
H -> cat -> 5   0.417 
I -> atc -> 19   0.760 
I -> att -> 6   0.240 
K -> aaa -> 19   0.864 
K -> aag -> 3   0.136 
L -> cta -> 1   0.043 
L -> ctt -> 20   0.870 
L -> tta -> 2   0.087 
M -> atg -> 14   1.000 
N -> aac -> 8   0.889 
N -> aat -> 1   0.111 
P -> cca -> 14   0.824 
P -> cct -> 3   0.176 
Q -> caa -> 7   0.875 
Q -> cag -> 1   0.125 
R -> cgc -> 6   0.300 
R -> cgt -> 14   0.700 
S -> agc -> 2   0.118 
S -> tca -> 3   0.176 
S -> tcc -> 1   0.059 
S -> tct -> 11   0.647 
T -> aca -> 13   0.394 
T -> act -> 20   0.606 
V -> gta -> 13   0.342 
V -> gtc -> 1   0.026 
V -> gtt -> 24   0.632 
W -> tgg -> 1   1.000 
Y -> tac -> 9   0.818 
Y -> tat -> 2   0.182 
total -> 397 
 

左から順に

アミノ酸の略号 -> コドン -> コドンの計数値 -> 同義コドンの頻度 
('/'は終止コドンを意味します) 
を表しています。 この出力結果から、tufA 遺伝子における同義コドン使用の偏りは、 遺伝子全体の傾向とは大きく異なっていることがわかります。例えば、 フェニルアラニン(略号 : F )では2つある同義コドンのうち TTC のみを使用し、 アラニン(略号 : A )では4つある同義コドンのうち GCT を多用しています。

*課題2 :
DNA複製開始にかかわっているDnaA タンパクをコードする遺伝子(dnaA)のコドン使用頻度 を計算し、先程のtufA 遺伝子の出力結果と比較してみましょう。 dnaA 遺伝子の CDS ID は、'CDS1'です。






Step 3 -ゲノムデータへのアクセス

G-language System 起動時に読み込まれたデータは、全て $gb の中に格納されています。 ここでは、$gb に格納されている各種ゲノム情報へのアクセスの仕方を簡単に説明します。

詳細については

  perldoc G.pm  [ENTER] 
を実行し、G.pm のperldocドキュメンテーション(
Prelude-manual)を参照して下さい。

さて、以下に今回使用したデータファイル("bsub.gbk")の一部を示します。

 
LOCUS       AL009126  4214814 bp          circular  BCT       10-MAY-1999 
DEFINITION  Bacillus subtilis complete genome. 
(中略) 
FEATURES             Location/Qualifiers 
     source          1..4214814 
                     /organism="Bacillus subtilis" 
                     /db_xref="taxon:1423" 
     gene            410..1750 
                     /gene="dnaA" 
     CDS             410..1750 
                     /gene="dnaA" 
                     /function="initiation of chromosome replication (DNA 
                     synthesis)" 
                     /note="alternate gene name: dnaH, dnaJ, dnaK" 
                     /codon_start=1 
                     /transl_table=11 
                     /db_xref="PID:e1181934" 
                     /db_xref="PID:g2632268" 
                     /translation="MENILDLWNQALAQIEKKLSKPSFETWMKSTKAHSLQGDTLTIT 
                     APNEFARDWLESRYLHLIADTIYELTGEELSIKFVIPQNQDVEDFMPKPQVKKAVKED 
                     TSDFPQNMLNPKYTFDTFVIGSGNRFAHAASLAVAEAPAKAYNPLFIYGGVGLGKTHL 
                     MHAIGHYVIDHNPSAKVVYLSSEKFTNEFINSIRDNKAVDFRNRYRNVDVLLIDDIQF 
                     LAGKEQTQEEFFHTFNTLHEESKQIVISSDRPPKEIPTLEDRLRSRFEWGLITDITPP 
                     DLETRIAILRKKAKAEGLDIPNEVMLYIANQIDSNIRELEGALIRVVAYSSLINKDIN 
                     ADLAAEALKDIIPSSKPKVITIKEIQRVVGQQFNIKLEDFKAKKRTKSVAFPRQIAMY 
                     LSREMTDSSLPKIGEEFGGRDHTTVIHAHEKISKLLADDEQLQQHVKEIKEQLK" 
(中略) 
BASE COUNT  1187757 a 919167 c 915023 g1192867 t 
ORIGIN       
        1 atctttttcg gcttttttta gtatccacag aggttatcga caacattttc acattaccaa 
(中略) 
  4214761 ttacggaaaa aagacaaatt caaacaattt gcccctaaaa tcacgcatgt ggat 
// 
 

$gb は

LOCUS, HEADER, FEATURE1, FEATURE2, ... , FEATURE8444, CDS1, CDS2, ... , CDS4100, SEQ 
などの構造体を持ちます。

例えば、各CDSの情報は CDS1, CDS2, ... , CDS4100(CDS+番号) という名前の 構造体に入っており、それぞれの情報には

  $gb->{CDS480}->{gene} 
のように階層的にアクセスします。

また、ORIGIN以降の全塩基配列は

  $gb->{SEQ}  
の中に入っています。

課題3 :
Step 0で作成したスクリプトに、'CDS1'の開始位置と終了位置を出力する 次の一行を書き込んで実行してください。

  print "$gb->{CDS1}->{start}..$gb->{CDS1}->{end}"; 
そして、出力結果が上記データファイルに一致することを確認してください。






Step 4 -より高度な解析のために

G-language System にはゲノム解析関数が標準で多数用意されており、それらの 標準関数のみでも幅広い解析を行うことが可能です。しかし、実際の研究においては、 より高度な解析を行う場面も想定されます。そのためには、ある程度のプログラミング 能力は不可欠です。Perl初心者は、初心者用講座新人勉強会などの テキストを参考にして下さい。

G-language System はゲノム解析のための関数だけでなく、ゲノムデータベースを 扱い易くするためのプラットフォームを提供します。そのプラットフォームとは、 $gb というG-language System のインスタンスから呼び出せる関数であり、 遺伝子毎の処理、開始コドン・終止コドン周辺の処理、イントロン・エキソン処理 など多岐に渡ります。 詳しくは、G.pm のperldocドキュメンテーション(Prelude-manual)を参照して下さい。

$gb->cds() は、$gb に格納されている全CDSのオブジェクト名を配列で返します。 例えば、課題2で作成したDnaA 遺伝子のコドン使用頻度解析用のスクリプトは、 $gb->cds() を使って以下のように書き換えても同じ結果が得られるはずです。

use G; 
$gb = new G("bsub.gbk"); 
 
foreach $cds ($gb->cds()){ 
    if($gb->{$cds}->{gene} =~ /dnaA/){ 
        codon_usage($gb, -CDSid=>$cds); 
    } 
} 

では、スクリプトの説明をしましょう。

(1) foreach文は次のような構造をしています。

   foreach 変数 (配列){ 
       処理 
   } 
配列の要素が先頭から順に変数に代入され、代入されるたびに処理が行われます。よって
   foreach $cds ($gb->cds()){ 
       処理 
   } 
は、配列の要素(CDSのオブジェクト名)を順次 $cds という変数に代入して処理せよ という意味です。これは、G-language Systemにおいて遺伝子毎の処理をする基本的な方法の一つです。

(2) Perlでは正規表現と呼ばれる強力な表現を使うことができます。よくある使い方としては、 「ある正規表現は、ある文字列にマッチするか?」というものです。これは、変数 =~ /正規表現/ と記述します。

   if($gb->{$cds}->{gene} =~ /dnaA/){ 
        codon_usage($gb, -CDSid=>$cds); 
   } 
は、もし遺伝子名($gb->{$cds}->{gene})が"dnaA"にマッチするなら、そのCDSのコドン使用頻度を計算せよ という意味です。