User Tools

Site Tools


gcskewanalysisjapanese

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gcskewanalysisjapanese [2008/04/14 07:25]
gaou
gcskewanalysisjapanese [2014/01/18 07:44]
Line 1: Line 1:
-====== Introduction ====== 
-チュートリアル初級では GC skew の解析を、既存のメソッドを利用することで簡単に行えることを説明しました。この中級編では実際にG-language GAEを用いて、GC skewの解析をする方法について説明します。 
  
-====== Step 1 Gの起動とサブルーチン ====== 
- 
-それでは早速プログラムを作ってみましょう。まずは前回もやったように、G-language をスクリプト内で起動します。 
- 
- 
-use G;  
-  
-my $gb = new G("​ecoli"​); ​ 
-  
-G-language GAE で解析のためのプログラムを作る場合、ゲノムデータベースの読み込みやパース、そしてそれを操作する関数などについて時間を煩わされることは全くありません。上記の二行でおしまいです。つまり、解析自体に専念することが可能です。 
- 
-そして今回GC skew のプログラムを作るわけですが、再利用可能なようにこれをサブルーチンとして作ることにしましょう。そして内部処理をしながら、最終的に他の解析でも使えるようにGC skewの値を返してくれるサブルーチンに設計しておくと便利です。第二引数として、GC skewの計算に必須なウインドウを与えるようにすれば汎用的になります。 
- 
-<code perl> 
-  sub gcskew{ ​ 
-     my $gb = shift; ​ 
-     my $window = shift; ​ 
-     my @gcskew = ();  
-      ​ 
-     ​return @gcskew; ​ 
-  }  
-</​code>​ 
- 
-====== Step 2 GC skew を計算してデータを出力 ====== 
- 
-GC skew の計算は非常に簡単です。ゲノムを指定したウインドウに分け、それぞれのウインドウにおいて (C-G) / (C+G) を計算し、この推移をプロットするだけです。まずは外部のグラフ作成アプリケーションでこのプロット図がかけるように、カンマ区切りのテキスト形式である csv 形式で結果を出力するプログラムにしましょう。 
- 
-G-language インスタンスでは、ゲノムの配列情報は $gb->​{SEQ} に格納されています。このように、$gb->​{LOCUS},​ $gb->​{BASE_COUNT} のような形で階層的にゲノムの情報が整理されているのです。 
- 
-ウインドウ毎に、という処理には for 文が適しているでしょう。ゲノム全体の長さは length ($gb->​{SEQ}),​ 文字のカウントは $a = $sequence =~ tr/​a/​a/​、で出来ますね。 
- 
-プログラムは以下のようになるはずです。 
- 
-<code perl> 
-  my @location = ();  #Window 位置記憶のための配列 ​ 
-  my $i = 0;  #​カウンター初期化 ​ 
-  for ($i = 0; $i * $window < length($gb->​{SEQ});​ $i ++){ # Windowがゲノムを超すまで繰り返す ​ 
-        my $sequence = substr($gb->​{SEQ},​ $i * $window, $window); ​ # Window内の配列を切り出す ​ 
-        my $c = $sequence =~ tr/​c/​c/; ​ #​Cの数をカウント ​ 
-        my $g = $sequence =~ tr/​g/​g/; ​ #​Gの数をカウント ​ 
-        my $skew = ($c-$g)/​($c+$g); ​   #GC skew を計算 ​ 
-        push (@location, $i * $window); #​Window位置を保存 ​ 
-        push (@gcskew, $skew); ​        #GC skewを保存 ​ 
-  }  
-</​code>​ 
-ここまで出来ればファイル出力は簡単ですね。 
- 
-<code perl> 
-  my $j = 0;  
-  open(OUT, '>​gcskew.csv'​); ​ 
-  print OUT "​location,​GC skew¥n"; ​ 
-  for ($j = 0; $j <= $i; $j++){ ​ 
-       print OUT $location[$j],​ ",",​ $gcskew[$j],​ "​¥n"; ​ 
-  }  
-  close(OUT); ​ 
-</​code>​ 
- 
-====== Step 3 G-language GAE を使ってグラフ作成 ====== 
- 
- 
-さて、いとも簡単にGC skewを計算するプログラムは完成してしまいましたが、結果をファイルに出すのではそれを再加工しないと目で見える形での結果にはなりません。解析を効率化するのがG-language GAE ですから、自動的にグラフを作ってやりたいものです。 
- 
-もちろんG-language GAEにはそんな時の為に簡単にグラフを作成するメソッドも備わっています。**grapher()**です。 
- 
-<​code>​ 
-  grapher(¥@x-axis,​ ¥@value1, ¥@value2 ...) 
-  option description 
-  x x-axis label 
-  y y-axis label 
-  x1, x2, ... @value1, @value2, ... のラベル 
-  filename Filename 
-  title title 
-</​code>​ 
- 
-他にも豊富なオプションがありますが、詳しくはマニュアルを見てください。 
- 
-つまりGC skew をグラフするだけならたったこれだけです。 
- 
-grapher(¥@location,​ ¥@gcskew, -x=>'​bp',​ -y=>'​GC skew', -title=>'​GC skew', -filename=>'​gcskew.png'​); ​ 
-G-language GAE 付属の簡易ビューア gimv で開くようにすれば解析と同時に結果が gnuplot で色鮮やかに描かれたものが表示されます。 
- 
-<code perl> 
-  msg_gimv("​graph/​gcskew.png"​); ​ 
-</​code>​ 
- 
-====== Step 4 完成! ====== 
- 
- 
- 
-<code perl> 
-  use G;  
-    
-  my $gb = new G("​ecoli"​); ​ 
-    
-  my @gcskew = &​gcskew($gb,​ 10000); ​ 
-    
-  sub gcskew{ ​ 
-     my $gb = shift; ​ 
-     my $window = shift; ​ 
-     my @gcskew = ();  
-    
-     my @location = ();  ​ 
-     my $i = 0;    
-     for ($i = 0; $i * $window < length($gb->​{SEQ});​ $i ++){      ​ 
-           my $sequence = substr($gb->​{SEQ},​ $i * $window, $window); ​   
-           my $c = $sequence =~ tr/​c/​c/;  ​ 
-           my $g = $sequence =~ tr/​g/​g/; ​   
-           my $skew = ($c-$g)/​($c+$g); ​   ​ 
-           push (@location, $i * $window);  ​ 
-           push (@gcskew, $skew); ​     ​ 
-     ​} ​ 
-    
-     my $j = 0;  
-     ​open(OUT,​ '>​gcskew.csv'​); ​ 
-     print OUT "​location,​GC skew¥n"; ​ 
-     for ($j = 0; $j <= $i; $j++){ ​ 
-           print OUT $location[$j],​ ",",​ $gcskew[$j],​ "​¥n"; ​ 
-     ​} ​ 
-     ​close(OUT); ​ 
-    
-    
-     ​_UniMultiGrapher(¥@location,​ ¥@gcskew, -x=>'​bp',​ -y=>'​GC skew', ​ 
-                              -title=>'​GC skew', -filename=>'​gcskew.png'​); ​ 
-    
-     ​msg_gimv("​graph/​gcskew.png"​); ​ 
-     ​return @gcskew; ​ 
-  }  
-      ​ 
-</​code>​ 
gcskewanalysisjapanese.txt · Last modified: 2014/01/18 07:44 (external edit)