スキップしてメイン コンテンツに移動

投稿

9月, 2010の投稿を表示しています

R の qvalue package のインストールで tcltk がなくてはまる

R の qvalue package が tcltk に depend しているのでインストールできない問題でいつもハマるので書いておく。 R の tcltk を on にするために自分でコンパイルする。 [code] sudo yum install tk-devel sudo yum install tcl-devel curl -O http://cran.r-project.org/src/base/R-2/R-2.11.1.tar.gz tar zxvf R-2.11.1.tar.gz cd R-2.11.1 ./configure --prefix=/opt/ --with-tcltk=yes make sudo make install [/code] qvalue を入れる。 [code] sudo R install.packages("qvalue") [/code]

Rでオブジェクト指向プログラミング: S4クラスの定義

第5回目です。いよいよコードを読んできます。 ファイルの配置とS4クラス・メソッドの定義の関係 Rディレクトリにこのパッケージのソースが含まれています。各々のファイルをみてきましょう。 [code] tree GOstats GOstats/ |-- DESCRIPTION |-- NAMESPACE |-- R | |-- AllClasses.R | |-- AllGenerics.R | |-- GOHyperGResult-accessors.R | |-- GOgraph.R | |-- GOhyptest.R | |-- hyperGTest-methods.R | |-- hyperGtable.R | |-- shortestPath.R | |-- triad.R | `-- zzz.R [/code] まず、すべてのクラス定義は R/AllClasses.R に含めることがわかります。また、すべての総称関数 (Generic function) の定義は、R/AllGenerics.R に含めます。総称関数のコードは、R/メソッド名-methods.R という名前にします。オブジェクトの変数にアクセスする、いわゆる accessor method は R/クラス名-accessors.R に集めます。 これらはこのようにしなければ動作しないというわけではありませんが、BioC ではこのような構造で実装することが推奨されています ( Bioconductor パッケージガイドライン: S4 クラスとメソッド を参照)。 GOstats の場合もこの構造に則って実装されていますね。ファイル名をみると、hyperGTest-methods.R と GOHyperGResult-accessors.R があります。ファイル名から、このパッケージは、GOHyperGResult というクラスと、hyperGTest という総称関数を持っていることがわかります。 S4クラスの定義 では、実際にそのクラスどのように定義されているか見てみましょう。 AllClasses.R [code] setClass("GOHyperGResult", contains="HyperGR...

R package の構造

第4回目は、Rのパッケージの構造について書きます。 まず、読んでいくコードですが、Bioconductor のなかからGOstats を選びました。これはある遺伝子セットに有意に assign される Gene Ontology を発見するためのパッケージです。機能の詳細は vignette を読んでください。 なぜこのパッケージを読むのか 1. Pure R 2. S4で書かれている 3. RUnit によるユニットテストがついている 4. コードが短い (952行) 5. Rの開発者(というか創始者)であり、BioC developer core team のメンバーである R. Gentleman がメインで開発・メンテしているっぽいので、コードが綺麗なはず。 パッケージの構造 ではパッケージの中身を覗いてみます。 [code] tree GOstats GOstats/ |-- DESCRIPTION |-- NAMESPACE |-- R | |-- AllClasses.R | |-- AllGenerics.R | |-- GOHyperGResult-accessors.R | |-- GOgraph.R | |-- GOhyptest.R | |-- hyperGTest-methods.R | |-- hyperGtable.R | |-- shortestPath.R | |-- triad.R | `-- zzz.R |-- data | |-- Bdists.rda | `-- Ndists.rda |-- inst | |-- CITATION | |-- Scripts | | |-- TESTP.R | | `-- distance.R | |-- UnitTests | | |-- Makefile | | |-- ghgans10.rda | | |-- hyperGTest_test.R | | |-- runall.sh | | |-- runalltests.R | | `-- runfile.sh | `-- doc | |-- GOstats.bib | |-- GOst...

RubyからRを使うRinRubyを試してみた

Ruby から R へアクセスできる RinRuby について日本語の文章があまりないみたいなので書く。 今回の環境は僕が常用している Mac OS X 10.6.4 と R 2.11.1, Ruby 1.9.2, RubyGems 1.3.7です。Ruby 1.8系でも動きそうですが、まさか、まだ 1.8 系使っているとか、ありえないですよねー、まさかねー。 まず RinRuby をインストールするよ。 [code] sudo gem install rinruby [/code] すごく簡単。適当にあることないことコードを書く。 [ruby] #!/usr/bin/env ruby require 'rubygems' require 'rinruby' require 'pp' sample_size = 100 hist_file = "/Users/itoshi/Projects/rinruby/hist.png" # うざいメッセージを止める R.echo(enable = false) # pull メソッドで R コードの実行結果を受けとる R.x = R.pull "rnorm(#{sample_size})" # 関数も問題なく使える R.x_sum = R.pull "sum(x)" R.x_sd = R.pull "sd(x)" # Ruby で出力する puts R.x_sum puts R.x_sd # 関数のように数行のときはヒアドキュメントを使う R.eval <<EOF myfactorial <- function(n) { if (n <= 1) return(1) else return( n * Recall(n-1) ) } fac <- myfactorial(#{sample_size}) EOF # Rでは fac という変数は、Ruby からは R.fac でアクセスできる puts R.fac # plot もできる # export DISPLAY=localhost:0.0 して X11 の起動を忘れずに (Mac) R...

Bioconductor には S4 で書かれたコードがどのぐらいあるのか

「シリーズ: 良質なR package のコードを読むよ」の第3回目です。 前回までのあらずじ 前回は BioC のコードを得る方法について書きました。 第2回: Bioconductor のソースコードを得る 第1回: Bioconductor のパッケージについて知る なにをするか? どのパッケージを読むのか決めます。S4のパッケージを読みたいのでそれを探します。 S4パッケージを探す S4 なのでソースコードに setClass があるはず。package/R/*.R のなかに setClass が出てくるコードを探します。 [code] grep setClass */R/*.R |ruby -lane 'puts $_.split(/\//)[0]' |sort -u|less -S ACME AffyCompatible AnnBuilder AnnotationDbi ArrayTools BCRANK BSgenome BioMVCClass Biobase Biostrings BiostringsCinterfaceDemo BufferedMatrix CALIB CAMERA CGHbase CGHcall CNTools Category ChIPseqR ChromHeatMap DEGseq DESeq DFP DNAcopy DynDoc EBImage EBarrays GEOquery GGBase GGtools GOstats GSEABase GeneAnswers GeneRegionScan GeneSpring GeneTraffic GeneticsBase GenomeGraphs GenomicFeatures GenomicRanges Genominator HTqPCR IRanges KCsmart KEGGgraph LiquidAssociation MEDME MLInterfaces MVCClass MassArray MergeMaid MotIV PAnnBuilder PCpheno PGSEA PICS PatientGeneSets RMAGEML ROC RPA RTCA RTools4TB RWebServices Ratlpow ReadMatcher Rgrap...

Bioconductor のソースコードを得る

「シリーズ: 良質なR package のコードを読むよ」の第2回目です。 前回までのあらずじ 前回は BioC を読むことに決めて、そのパッケージの基礎知識について書きました。( 第1回: Bioconductor のパッケージについて知る ) なにをするか? Bioconductor のコードを取得します。BioC のコードは subversion で管理されています。ウェブで閲覧する方法と、subversion で全ソースコードを得る方法を書きます。 ウェブからソースコードをみる 一番簡単にソースコードを見る方法はウェブ経由でソースコードレポジトリを表示することです。ウェブからみれるので iPad の Mobile safari で、ごろごろしながらや電車のなかで、ソースコードが見れるのが良いですね。 https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/ ID: readonly, Password: readonly でアクセスできます。ひとつのパッケージがひとつのディレクトリになっています。 そもそも動いているコードを見ないと意味がありません。稼動状況は以下で見ることができます。これはBioC 2.6 の各パッケージの動作状況です。 http://bioconductor.org/checkResults/2.6/bioc-LATEST/ Subversion を使ってソースコードを得る 3Gぐらいあります。以下のコマンドですべてのソースコードを得ることができます。username と password は readonly です。 [code] svn co --username readonly --password readonly https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks Rpacks-devel [/code] Rpacks-devel ディレクトリにすべてのソースコードがダウンロードされています。こちらもひとつのパッケージがひとつのディレクトリになっています。 特定のパッケージのみ得たい場合は、 [code] svn co https://hedgehog.fhcrc.org/bioconducto...

良質な R package のコードを読むよ

突然ですが「シリーズ: 良質なR package のコードを読むよ」が俺のなかだけで始まりました。 良質のRコードといえば、 Bioconductor (以下、BioC) ですね。ここでは BioC を読んでいきますが、すべての R ユーザに有益なはずです。あまり BioC だと気付かずに使っているパッケージもあるはずよ。R本体のコードを読む訳ではありませんので誤解なきよう。 目次 第1回: Bioconductor のパッケージについて知る 第2回: Bioconductor のソースコードを得る 第3回: Bioconductor にはS4で書かれたコードがどのぐらいあるか (連載中) なぜ Bioconductor を読むのか? BioC は R を開発しているメンバーと重なっているのでコードの質が高い(と期待 コードレビューされているので質が高い(と期待 S4を推奨しているので S4 OOP な R コードが読める なにをするのか? BioCのコードを読み進めたときに書いたメモをアップしていきます。メモなのであまり読者を想定していません。よーわからん、という人は元の情報に当たるか、聞いてください。 BioCパッケージについて知る さて本題です。今回は、R パッケージに求められることや、その構造を知るため、 Bioconductor パッケージガイドライン と パッケージサブミッションガイド を読みます。 あまり細かいことを書いてもしょうがないので、ざっくりとサマリを書きます。BioCは特にコードの質とドキュメンテーションについてこだわっていることがわかります。 BioCのパッケージは以下の条件を満す必要があります。すべて must です。 1. R CMD build, R CMD check が通ること Windows, Mac, Linux の3つのプラットフォームでチェックが通る必要があります。 2. 重複がないこと パッケージ名の重複をチェック [code] source("http://bioconductor.org/biocLite.R"); biocLite("mypackage") [/code] 混乱を避けるためCRANとBioCの両方をパッケージを登録してはいけません。 またすでにあるパッケージ...