Aide-memoire

Bio-infomaticsで困った事の備忘録的なサムシング

自分が困った事をまとめた備忘録的なサムシング

Statistics::R

Statistics::R

自分は研究するとき、二つの言語をつかいます。それはPerlとRという言語。

Perlは文字列操作に秀ていて、ゲノム解析ソフト( G-Language )やパーサーとして用いられますが、"The R Project for Statistical Computing" (以下R) は統計処理や数値計算に秀でています。

私がよく使うCufflinksプロトコルでは、最終的に出力される各種ファイルの統合的解析ソフトのcummeRbundは、Rで作成されているBioConductorプロジェクトの一つのパッケージがある。バイオインフォマティクスの統計処理ではかなり便利なものである。

そんな二つの言語を一緒に使えるようにしたPerlのモジュールがStatistics::Rである。

 

Perlbrewが入っているならインストールは簡単。

% cpanm Statistics::R

たまにエラーとか出てしまって、ログとかみてテストで失敗しているようだったら -f オプションつけてインストールすると良いかもです(自分はそうしました)。

細かい使い方はいろいろあるのですが、自分はドキュメントの例で十分書けました。


# Statistics::Rを使用することを宣言
use Statistics::R ;
# Rのオブジェクトを作成する
my $R = Statistics::R->new() ;
# startRでRを起動させる
$R->startR ;
# send(q``)でRにコマンドを送る(作図する場合)
$R->send(q`postscript("file.ps" , horizontal=FALSE , width=500 , height=500 , pointsize=1)`) ;
$R->send(q`plot(c(1, 5, 10), type = "l")`) ;
# send(q``)の後に、 readすると、一つ手前の結果を変数に入れる
$R->send(q`x = 123 \n print(x)`) ;
my $ret = $R->read ;
# set()で第1引数の名前のRの変数に第2引数のPerlの変数の値を代入する
$R->set('param_A',$count);
$R->set('param_B',$count);
# Rを修了する
$R->stopR() ;



こんな感じで使えます。

自分はDESeqという発現量定量比較ソフトを動かすために使ってます。 ←これ

さらにめんどくさがりな自分はこれをモジュールとして作成して、別個にPerlスクリプトでサブルーチンとして読み出した物をシェルスクリプトで呼び出しています。




#!/bin/bash

if [ $# == 0 ]; then
	echo "This program runs a DESeq analysis on a Tab delimited Read Count file." 1>&2
	echo "USAGE::" 1>&2
	echo "script.sh replication_count file" 1>&2
	exit 1
fi

if [ -f $1 ]; then
    file=$1
    count=$2
    echo "Conducting DESeq analysis on $file"
    echo "There are" ${count:-null} " replications for each sample"
    perl rnaseq_deseq.pl ${count:-null} $file
elif [ -f $2 ]; then
    file=$2
    count=$1
    echo "Conducting DESeq analysis on $file"
    echo "There are" ${count:-null} "replications for each sample"
    perl rnaseq_deseq.pl ${count:-null} $file
fi



これをDESeqという名前で保存して、% chmod 755 DESeq してからパスを通してあげると、なんと

% DESeq input_file replication_number

ってやるだけでDESeqを自動ができる!!っていう優れもの。なんか自分でコマンド作るのって楽しいです。笑

次回はPerlモジュールの作成につういてかな!

|.+|