User Tools

Site Tools



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

Link to this comparison view

Next revision
Previous revision
gcskewodysseyenglish [2010/10/01 12:23]
ike created
gcskewodysseyenglish [2014/01/18 07:44] (current)
Line 1: Line 1:
 ====== Introduction ====== ====== Introduction ======
-自分の解析の為に作ったサブルーチンであっても、G-language GAE では簡単にこれをG-language ​標準解析関数に変換することができます。重複した解析ソフト開発はバイオインフォマティックスの発展を阻害するものであり、さまざまな解析手法を一つの場に集めるという意味でもG-language GAEの関数として解析手法を蓄積することには大きな意義があります。もちろん、あなたが作った解析手法を世界中の研究者が使うという可能性だけでも新鮮であることはいうまでもありません。 +Sets of subroutines that users made are easily mounted into G-language GAE as standard functions. Same types of analytic tools hold up the development of bioinformatics. So combining sets of subroutines into G-language ​GAE as an original package is one idea for using it. In this tutorial, we will demonstrate how to combine previously made GC skew subroutines into G-language GAE as standard functions. 
-そこで、ここでは先程作成したGC skew のサブルーチンを標準関数化してみることにしましょう。+====== STEP 0 - Learn the rules for standard functions ======
-====== Step 0 標準関数の決まりを知る ======+There are several rules for standard functions since it is literally standard for Perl script. These rules are not for regulation purpose but for expanding the usability. ​
 +See following documents for detail.
-多くの人が使うことになる標準関数には当然ながらいくつか決まりごとがあります。しかし、その多くは制約というよりは可能性を広げるものです。 +[[http://​​data/​gaou/​doc/​asimo/​odyssey.pdf|Standard Function ​Manual]]、
-詳しくは公式ドキュメント +
- +
-[[http://​​data/​gaou/​doc/​asimo/​odyssey.pdf|標準関数 ​Manual]]、+
 [[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt API Manual]]、 ​ [[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt API Manual]]、 ​
Line 16: Line 14:
 [[http://​​documentation/​1.7.2/​G/​Messenger.html#​SYNOPSIS|Messenger API Manual]] ​ [[http://​​documentation/​1.7.2/​G/​Messenger.html#​SYNOPSIS|Messenger API Manual]] ​
->​1、[[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt]] APIを使いオプションを有効にする +The essence is as follow:
->​2、オプションはデフォルト値を持たせ省略できるようにし、G のインスタンスの入力のみで使えるようにする +
->​3、オプションは "​output"​ と "​filename"​ を含むのが望ましい +
->​4、全ての出力はG::​Messenger APIを使う +
->​5、一つの関数は一つのサブルーチンから構成されるのが望ましい +
->​6、グラフ作成には G::​Tools::​Graph::​grapher を使用するのが望ましい +
-に関しては既に一つのサブルーチンになっており、6に関しては既に使用しており、7に関しては use strict; して努力するだけなので、ここでは説明しないこととします。+>1: Use [[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt]] API to run options 
 +>2: All options should possess initial value to abbreviate options for single argument G instance 
 +>3: All options should contain “output” and “filename” 
 +>4: Use G::​Messenger API to run all the outputs 
 +>5: One function should consisted of one subroutine 
 +>6: Graphs should generated by G::​Tools::​Graph::​grapher 
 +>7: All coding should be simple, readable, resourceful,​ and beautiful
 +In this tutorial we will skip demonstrating essence #5, 6, and 7.
 +====== STEP 1 – Use SubOpt API to run options ======
-====== Step 1 SubOpt APIを使いオプションを有効にする ====== 
 +[[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt]] is specialized for acquiring options in subroutine which is similar to [[http://​​Getopt/​Std.html|GetOpt]] API in syntax where it begins in hyphen and ends in a double or single quotation such as –output=>​”show”. This API enhances the resourcefulness of G-language GAE and provoking unity for whole system. Use of [[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt]] API is simple. Set a initial value in opt_default(),​ then fetch the options by opt_get(). In addition, options are referable by opt_val().
-[[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt]] API とは、標準関数を使うときに -output=>;​show"​ のように ハイフンから始まって矢印でつなぐ、[[http://​​Getopt/​Std.html|GetOpt]]に似たサブルーチン用オプションを可能にするAPIです。このAPIがG-language GAEの汎用性を高め、さらにシステム全体の統一性を実現しています。 +In the case of GC skew subroutine, window size is given as option so that scripting as &​gcskew($gb,​ -window=>"​1000"​); ​makes us happy. To achive this, change following script ​
-[[http://​​documentation/​1.7.1/​SubOpt.html#​SYNOPSIS|SubOpt]]の仕様は非常に単純明解です。opt_default()でデフォルト値を決定し、opt_get() でオプションを取得。さらにopt_val()でオプションの値を参照できるようになっています。 +
- +
-つまり、gcskew の関数ではウインドウがオプションですから、 ​&​gcskew($gb,​ -window=>"​1000"​); ​というように使えたらいいわけですが、これは+
 <code perl> <code perl>
-  sub gcskew{  +  sub gcskew {  
-   ​my $gb = shift;  +    my $gb = shift;  
-   ​my $window = shift; ​+    my $window = shift; 
 +  } 
 </​code>​ </​code>​
 +to following. 
 <code perl> <code perl>
-  sub gcskew{ ​+  sub gcskew { 
     my @args = opt_get(@_); ​     my @args = opt_get(@_); ​
     my $gb = shift @args; ​     my $gb = shift @args; ​
     my $window = opt_val("​window"​); ​     my $window = opt_val("​window"​); ​
 +  }
 </​code>​ </​code>​
-まずopt_get()でオプションを取り出し、オプション以外の必要な引数を@argsにいれます。ここからGインスタンスをとりだし、opt_val("window"で別にオプションの値を取り出します。オプションの値は最初に取り出しローカル変数に保存しておくと便利です。+Fetching a option by opt_get() ​and substitute arguments into array @argv other than options. Then extract ​instance from the array and also extract options doing opt_val(window). It would be nice to substitute a value of option to local variable. ​
-また、SubOpt APIにはGインスタンスに対して強力なメソッドが用意してあります。例えばこのGC skewの関数の場合、Gインスタンスで使用する部分は配列情報、つまり$gb->​{SEQ} ​のみです。すると、ゲノム全体ではなく一部の配列のGC skewを計算したければその部分の配列をそのままいれたり、もしくは大きな配列の場合はそのリファレンスを代入することでメモリ効率を良く保ちたい場合があると思います。こんな時には+There are some powerful methods ready for SubOpt API. In the case of GC skew subroutine, ​$gb->​{SEQ} ​is the only required method in G instance. So if users want to analyze partial information on genome or reference much larger sequences to save up some RAM space, it is easily described as follow. ​
 <code perl> <code perl>
-  sub gcskew{ ​+  sub gcskew { 
     my @args = opt_get(@_); ​     my @args = opt_get(@_); ​
     my $gb = opt_as_gb(shift @args); ​     my $gb = opt_as_gb(shift @args); ​
     my $window = opt_val("​window"​); ​     my $window = opt_val("​window"​); ​
 +  }
 </​code>​ </​code>​
-のように、opt_as_gb() ​関数を使ってやると、それがGインスタンスでも、スカラー塩基配列でも、もしくはリファレンスでも自動的に$gb->​{SEQ} ​を使えばその配列情報にアクセスできるように変換してくれます。+A function ​opt_as_gb() ​will translate ​$gb->​{SEQ} ​as target sequence whether it is scholar or reference. 
 +====== STEP 2 – All options should possess initial value to abbreviate options ======
-====== Step2 オプションはデフォルト値を持たせ省略できるようにし、G のインスタンスの入力のみで使えるようにする ====== 
- +In the above script, if no option “-window” is set then initial value become zero. To avoid this problem, set initial value by opt_default() ​as follow.
-さて、上のままでは ​-window ​オプションが入力されないと、Window が 0になってしまいエラーになってしまいます。だからといって、毎回window オプションを入力しないといけないのでは汎用的だとはいえません。そこで、opt_default() ​を使って初期値を入力してやります。+
 <code perl> <code perl>
Line 76: Line 75:
     my $gb = opt_as_gb(shift @args); ​     my $gb = opt_as_gb(shift @args); ​
     my $window = opt_val("​window"​); ​     my $window = opt_val("​window"​); ​
 +  }
 </​code>​ </​code>​
-こうしてやることで、windowオプションが入力されればその値が、入力されなければ ​10000bp ​がウインドウサイズとして使用されます。+This will set initial value of window ​size to 10000bp
 +====== STEP 3 – All options should contain “output” and “filename” ======
-====== Step3 オプションは "output" と "filename" を含むのが望ましい ======+The GC skew subroutine made in previous tutorial has two types of output ​for generating graph. G-language GAE is for efficient programming so that every standard function possesses “-output” option that set to be “f”, “data/​”folder as saving directory, “g” for graph output in “graph/​” directory and “show” graph automatically in default. The program should be flexible enough to change ​filename ​for output. So let’s change the some options and parameters in the script. This change will automatically fix output according to an option. ​
-前回作った gcskew はファイルとグラフの二つの出力がありました。G-language GAE では容易に使えることに重点をおいていますので、標準関数関数には標準で全て output というオプションがついていて、"​f"​ の値で'​data'​フォルダ内にファイル出力、"​g"​の値で'​graph'​フォルダ内にグラフ出力、指定なし、もしくは"​show"​ の値でグラフを自動的に表示する、という機能を持つ必要があります。また、この時任意に出力するファイルの名前を指定できる必要があります。これにあわせて少しプログラム全体を変えてみましょう。outputの値次第で出力先を変える処理を加えてみます。 +To be more precise, ​opt_default() is added, value of opt_val() is subscribed into local variable and file name is switched to $filename ​to change the output name.
 <code perl> <code perl>
Line 128: Line 128:
   }    } 
 </​code>​ </​code>​
- +====== ​STEP - Use G::​Messenger API to run all the outputs ​======
-====== ​Step 4. 全ての出力はG::​Messenger APIを使う ​======+
-だいぶここまででも標準関数らしくなってきましたが、もう一つ重要な決まりがあります。それは、全ての出力をG::​Messenger APIを介してやらなければならない、ということです。G-language GAEは多彩なインタフェースを持ちます。プログラム言語としてコンパイラに読ませたり、コマンドラインで実行したり、グラフィカルユーザインタフェースを持ったり、さらにはウェブアプリケーションとしてさえ存在します。しかし、多彩なインタフェースでは全て同じ標準関数のプログラムが動いています。これを可能にするのがG::​Messenger APIです。メソッドがMessengerに出力を渡すと、MessengerはG-language GAEが現在どのインタフェースを使って動いているかを判断し、的確な場所に出力を渡します。 +There is one more important rule for standard function and that is all output should follow ​G::​Messenger APIG-language GAE has multiple interfaces for example loading script into compiler, executing command lines, possessing GUI and managing web applications. In each multiple interfaces, common standard functions are running and this is sustained by G::​Messenger API. If some outputs are passed to MessengerMessenger ​will indentify which interface user is accessing and puts output to suitable output. Following functions are major functions used in Messenger.
-Messenger ​で主に使われる関数は次の通りです。+
-msg_send() ​--- print STDOUT ​と同義 通常のアウトプットに。 +The function ​msg_send() ​will put output as standard output, synonymous to “print STDOUT” in Perl script. The function ​msg_error() ​will put output as standard error, synonymous to “print STDERR” in Perl script, or system message. The function ​msg_gimv() ​will put output into graph which is synonym to system("​gimv "). This is it for making the GC skew subroutine into standard function.
-msg_error() ​--- print STDERR ​と同義 エラーやシステムメッセージのアウトプットに。 +
-msg_gimv() ​--- system("​gimv "); と同義 グラフの表示に。 +
-これでgcskew の標準関数化が完了です。+
 <code perl> <code perl>
Line 184: Line 179:
   }    } 
 </​code>​ </​code>​
 +====== STEP 5 - To the higher level ======
-====== Step 5. To the next level ... ======+We demonstrated making the GC skew subroutine into standard function but the standard function gcskew() I G-language GAE is much more refined than demonstration in additional AT skew and some other distinguished technical tuningCheck G-language GAE source code for more detailSome additional information on function standardization is also available on manuals.
 +We welcome any users to join G-language GAE project and user-made standard function is sharable by simply posting e-mail to with subject the name of function and source code as body. Enjoy!
-今回GC skew関数の標準関数化を説明しましたが、実際にG-language GAEに実装されているgcskew() 関数は AT skewもみれるようになっていたりと、汎用性やコードの簡潔さでより徹底した改良がされています。一度ソースコードをみて勉強してみてください。また、マニュアルにはより詳しい標準関数化の仕様について記載されていますので、こちらもじっくりと読んでみてください。 
-今後自分で作った解析メソッドを標準関数化し、G-language GAEに実装する機会が来ると思います。作った標準関数メソッドは、 に、サブジェクトが関数名、本文がソースコード、という形でメールすることで投稿できます。バイオインフォマティックスの未来の為にあなたが貢献する日は明日かもしれませんね。 
gcskewodysseyenglish.1285935833.txt.gz · Last modified: 2014/01/18 07:44 (external edit)