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

投稿

Rパッケージが Bioconductor に採択されるまでの顛末

R には CRAN というパッケージ集がありますが、ライフサエンス分野専門のパッケージ集に Bioconductor というものがあります。Core developer team のメンバーは、Rの core developer team と一部メンバーが被っています。 Bioconductor は CRAN と比較すると、詳細なコードレビュー/ドキュメンテーション(もちろん英語の)が必要など、わりと厳しめの採択基準があります。これまで、日本人でBioCに採択された人がいなく情報があまりませんでした。このたび、 BrainStars for R というパッケージが Bioconductor 2.10 に採択され公開されました。その顛末を公開して、日本のすぐれたプログラムが Bioconductor に採択されることをエンカレッジできればと思います。 開発 このあたりは、BioCの パッケージガイドライン と サブミットガイドライン を読むと一通り書いてあります。またパッケージングについては、以前のエントリを参照ください。 -  R でいまどきなパッケージ開発 (devtools, testthat, roxygen2) -  R5 reference class 編: R でいまどきなパッケージ開発 (devtools, testthat, roxygen2) 上のリンクで書かれていないことでBioCでポイントとなるのは、コーディングだけじゃなくて、すべての関数に対する Rd で書かれたマニュアルと、パッケージの使い方が書いた vignette というドキュメントが必要になることです。マニュアルには、動作するサンプルコードが必要になります。vignette には、パッケージの背景や、チュートリアル形式でその使い方を英語で書く必要があります。この文章は Sweave 形式で書く必要があり、TeX, Sweave の知識が必要になります。vignette のなかにも動作するサンプルコードが必要になります。 マニュアル、vignette のコードが動作しない場合、正常にパッケージングできないので、BioC のパッケージは必然的にドキュメントの質が高くなります。これは作り手にとっては大変ですが、ユーザにとっては助かります...

R5 reference class 編: R でいまどきなパッケージ開発 (devtools, testthat, roxygen2)

一週間ほど熱でうなされながら、とある研究に使うために、とあるプログラムのドキュメントをひたすら読んでいました。残念ながら R からアクセスするパッケージがないので自分で書いてみようかと思うのですが、どうせなら R5 reference class を使って実装してみようと、朦朧とする意識のなか考えていました。 その前に、R5のおさらいということで、以前のS4で実装した「 R でいまどきなパッケージ開発 (devtools, testthat, roxygen2) 」をR5にしてみました。解説を書くほど元気がないので、github にコードは置いてあげたので、興味のあるおにいちゃんは各自コード読んだらいいんだからねっ! https://github.com/dritoshi/idol 無駄にツンデレいもうと風になったのはおそらく熱のせいですが、雑感を書いておくと、R5のほうが非常に簡潔に書けるので、今後は、R4で書く必要はないわー。このエントリーはS4のままになっていますが、github のコードは、R5になっています。S4, R5それぞれににタグを付けてあるので、どちらも github から入手できます。 https://github.com/dritoshi/idol/tags devtools の check は通っても run_examples で reference class が見えないとかいうエラーに少しだけ泣かされました。reference class を正しく export してあげると右のアイコンのような笑顔に戻りました。テヘ。 Bioconductor でも R5 なパッケージが少しだけあるので、眺めてみたのですが、R5で実装しつつ、結局ユーザがさわる部分は、reference class のコンストラクタを普通の関数で実装し、ユーザにはこの関数しか見せない、みたいな過保護な実装が推奨されていて、S4を抜き身で submit して怒られた僕としては、いかにも連中らしいな、とほっこりしました(尊敬してます!)。しかし中身は setMethod も併用使いまくりで、なんというか、フランケンなんとかさんの作りたもうたアレやら、白鳥のバタ足やらを彷彿させる感じです。 もう熱もだいぶいいかんじです。では。 参考にした...

bioconductor.jp が R 本体の chooseBioCmirror() に取り込まれたよ

Bioconductor が近くなりました。 日本ミラーの bioconductor.jp を選択するには、以下のように、chooseBioCmirror() で 6 番を選ぶだけです。 options("BioC_mirror") で切り替わっていることを確認できます。試しに、BrainStars package をインストールしてみると、ちゃんと bioconductor.jp からインストールされているのがわかります。 ちなみに、開発版の BioC 2.11 を現在ミラー中です。 関連: bioconductor.jp を作ったよ

Rのコードを multicore を使って、テスト駆動開発でマルチコア化するよ

multicore パッケージを利用してマルチコア化してみます。とは言っても、sapply, lapply を mclapply にするだけの簡単なお仕事ですが、せっかくなので testthat を使ってマルチコア化する際にテスト駆動開発で実装していきます。 まずは、そのへんのアップルストアで購入可能な MacBook Air  を購入しましょう。今回はこれでやります。Rも Mac 版の dmg を普通にインストールしましょう。次にパッケージをインストールします。 sudo R install.packages(multicore) install.packages(testthat) q() インストールが簡単なのがよいですね。MPIとかそういうものをごちゃごちゃ設定する必要なないです。 今回は非有界区間のモンテカルロ積分によって、標準正規分布の累積分布関数を計算します。まずは for で書きます。 とりあえず、マルチコア化は置いておいて、みんな大好き apply 系関数に書きかえてみましょう。もちろん、まずテストを書きます。set.seed で乱数をシードを固定して、testthat で単体テストします。 R library("testthat") test_file("test_mci.r") もちろん失敗します。 sapply 版を実装します。 テストが通りました。 リストで返ってくるので、unlist するバージョンも作ります。またテストを書きます。 失敗を確認してから、実装を開始します。 テストが通ります。 前置きが長いですが、いよいよ、multicore 化です。でも先にテスト書きます。 テストが通らないことを確認し、実装します。 テストが通ることを確認してください。では速度比較をしてみます。 4 cores なのですが2倍程度は速くなりました。おもったより unlist のコストがかかってないですね。ちなみにコア数は、 > library(multicore) > multicore:::detectCores() でわかります。 ちなみに 16 CPU cores のマシンで実行したら 6 倍程度の...

bioconductor.jp 作ったよ

Bioconductor はバイオインフォマティクス向けのRパッケージ集ですが、解析用のソースコード以外にも、アノテーションやゲノム配列、実験データなどの「データ」も含まれています。これらのデータはそれなりのデータサイズになります。ソースコードはそれほどストレスないのですが、データのインストールでは、シアトルにある本家サーバがちょっと遠く感じます。 解析やパッケージ開発している途中に、他のパッケージのコードを読みたくなることが多々あります。そのたびにダウンロードするのが面倒なので、bioconductor package repository を個人的にローカルへミラーをしていました。 せっかくですので、このミラーを公開することにしました。国内からだと結構速いと思います。ミラーリングは毎晩しています。 bioconductor 日本ミラーの使いかたは以下の通り。 追記 (2012/04/03) : 以下のやりかたではなく、こちらの方法で簡単にできるようになりました。 bioconductor.jp が R 本体の chooseBioCmirror() に取り込まれたよ これを毎度入力するのも面倒なので、~/.Rprofile を以下のようにしておくと便利です。 そのうち、R の chooseBioCmirror() に組み込まれる予定ですが、こちらは、R core team が管理しているコードに追加しなければならないので、手続きに少し時間がかるそうです。 ミラーリングの件については、Bioconductor developer team へ知らせてあります。こちらをご参照ください。 http://bioconductor.org/about/mirrors/ 追記: (2012/03/27) 統数研にも bioconductor のミラーがありました。こちらも毎日ミラーされているようです。http://bioc.ism.ac.jp/

ChIP-seq データ解析の講義をしたので資料公開するよ

JSBi共催「Rでつなぐ次世代オミックス情報統合解析研究会」で「R + Bioconductor を使った ChIP-seq データ解析の基礎」という講義を担当してきました。主に ChIP-seq 解析の流れを簡単に示し、パイプラインについて説明しました。Peak calling や mapping などの情報が比較的入手しやすいステップよりも、アノテーションや、モチーフ解析や異なる ChIP-seq データ比較などの高次解析の部分を多く取り上げています。 最初は20-30人程度のハンズオンセミナーというオファーでしたが、100人を越える参加者が集まりました。なのでハンズオンはできなかったのですが、概要を掴んでもらえるよう心がけました。ほかの演者の方の発表に関しても発見や気付きがあったので自分の研究にも役に立ちそうです。質疑や懇親会も非常に盛り上がりとても有意義な会でした。 ChIP-seq の経験者が参加者全体の1割程度と mRNA-seq にくらべるとまだまだ少ないようですが、相互作用を出力できる数少ないオミックス技術なので、日本でももっともっと普及すればよいなと思っています。 個人的には、たくさんのRで解析をされている方に会うことで、Rをプログラミング言語としてではなく、純粋に統計環境として利用している頃の気持ちを思い出しました。 講義に使用したプレゼンテーション、ソースコード、データはすべて以下のサイトに置いてあります。今後も微妙にアップデートするかもしれませんので、github をお使いのかたは、watch list に登録しておくと良いかもしれません。 講義資料: R + Bioconductor を使った ChIP-seq データ解析の基礎 (二階堂愛) なにか質問があればご連絡ください。では。 リンク:  Rでつなぐ次世代オミックス情報統合解析研究会

R + Bioconductor で遺伝子構造を描く

From Evernote: Rで遺伝子構造を描く 超並列DNAシーケンサーの登場で、遺伝子構造など、ゲノム上のイベントやオブジェクトのデータを大量に得ることができるようになってきました。データ解析にとって可視化は重要ですが、ゲノム上で起きているイベントなので、ゲノム上に配置して可視化したい場面がよくでてきます。しかし、さまざまなゲノム上のオブジェクトをゲノム座標から画像座標に変換して、絵を書くのは意外と面倒な作業です。 例えば遺伝子構造の絵を書こうとします。これは、遺伝子構造をどのように入手するか、遺伝子構造をどのように描くか、の2つの問題に分けることができます。ここでは、遺伝子構造のデータは、R + Bioconductor の biomaRt パッケージを使って、Ensembl Biomart からダウンロードすることで解決します。遺伝子構造をどのように描くかについては、GenomeGraphs パッケージを利用します。 まずはインストールします。 $ sudo R > source("http://www.bioconductor.org/biocLite.R") > biocLite("biomaRt") > biocLite("GenomeGraphs") ここでは、Ensembl biomart からヒトの SMN1 という splicing 異常によって疾患になる例が知られている遺伝子名(Gene symbol)の遺伝子構造を描きます。 まず、SMN1 という名前から、Ensembl Gene ID と染色体位置などを入手します。 library(GenomeGraphs) library(biomaRt) gene.symbol <- "SMN1" png.file <- paste(gene.symbol, ".png", sep = "") ## construct an object of Human Ensembl Biomart human ...