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

良質な 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の両方をパッケージを登録してはいけません。
またすでにあるパッケージやクラスの機能的を積極的に利用し、機能的な重複も避けるようにします。例えば、ExpressionSet や AnnotationDataFrame など。

3. ドキュメンテーション


すべてのメソッドに man page を書く必要があります。動作可能な example を含める必要があります。また、Vignette も含める必要があります。書きかたはこちら。1.4 Writing package vignettes. パッケージの更新情報は inst/NEWS に含めます。

4. NAMESPACE と DESCRIPTION を含める


前者がパッケージの名前空間を宣言するファイルで、後者が作者やライセンス情報などを記載するファイルです。

5. S4 class と method による実装


Google には dis られている S4 ですが、BioC では S4 こそ正義! といっても実際は BioC のなかには S4 じゃないコードもいっぱいあります。

6. 不必要なファイルの排除


Mac でありがちな、.DS_Store とか dot ファイル、.git, .svn などを含めてはいけません。

まとめ


以上、BioC、つまり、Rを作っている人達がどのようなパッケージを良いパッケージと考えているかがわかりました。一言で言うとドキュメンテーションと重複のないS4によるコードを重視しているということですね。個人的にはユニットテストについてルールがないのがどうかな、と思いました。

続きます。

コメント

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

    返信削除
  2. [...] 第1回: Bioconductor のパッケージについて知る 第2回: Bioconductor のソースコードを得る 第3回: Bioconductor には S4 で書かれたコードがどのぐらいあるのか 第4回: R package の構造 ← R package [...]

    返信削除

コメントを投稿

このブログの人気の投稿

シーケンスアダプタ配列除去ツールまとめ

FASTQ/A file からシーケンスアダプター配列やプライマー配列を除くためのプログラムをまとめてみる。 まず、配列の除去には大別して2つの方向性がある。ひとつは、アダプター配列を含む「リード」を除いてしまう方法。もうひとつは除きたい配列をリードからトリムする方法である。後者のほうが有効リードが増えるメリットが、綺麗に除ききれない場合は、ゲノムへのマップ率が下がる。 気をつける点としては、アダプター/プライマーの reverse complement を検索するかどうか。paired end の際には大事になる。クオリティでトリムできるものや、Paired-end を考慮するものなどもある。アダプター/プライマー配列の文字列を引数として直接入力するものと、multi fasta 形式で指定できるももある。 From Evernote: シーケンスアダプタ配列除去ツールまとめ TagDust http://genome.gsc.riken.jp/osc/english/software/src/nexalign-1.3.5.tgz http://bioinformatics.oxfordjournals.org/content/25/21/2839.full インストール: curl -O http://genome.gsc.riken.jp/osc/english/software/src/tagdust.tgztar zxvf tagdust.tgz cd tagdust/ make sudo make install rehash 使いかた: tagdust adapter.fasta input.fastq -fdr 0.05 -o output.clean.fastq -a output.artifactual.fastq 解説: 入出力形式は fastq/a が使える。リード全体を除く。速い。アダプター配列を fasta 形式で入力できるのが地味に便利で、これに対応しているものがなかなかない。Muth–Manber algorithm (Approximate multiple

ChIP-seq の Peak calling tool を集めたよ

ほかにもあったら教えてください。プログラム/プロジェクト名がツールのプロジェクトサイトへのリンク。その論文タイトルは論文へのリンクになっています。 ツール名の50音順です。 CCCT -  A signal–noise model for significance analysis of ChIP-seq with negative control , chipdiff と同じグループ CisGenome -  CisGenome: An integrated software system for analyzing ChIP-chip and ChIP-seq data . ChromSig -  ChromaSig: a probabilistic approach to finding common chromatin signatures in the human genome. ChIPDiff -  An HMM approach to genome-wide identification of differential histone modification sites from ChIP-seq data ChIP-Seq Analysis Server FindPeaks -  FindPeaks 3.1: a tool for identifying areas of enrichment from massively parallel short-read sequencing technology. Version 4.0 is out. GLITR -  Extracting transcription factor targets from ChIP-Seq data HPeak -  HPeak: an HMM-based algorithm for defining read-enriched regions in ChIP-Seq data MACS -  Model-based Analysis of ChIP-Seq (MACS). PeakSeq -  PeakSeq enables systematic scoring of ChIP-seq experimen

大学の研究室でアカデミックプランが使えるICTツール

自分らでサーバ管理したくないので、SaaS系とローカルで動くソフトのみ。ローカルで動くソフトに関しては、Mac or Docker で動くもののみ。 無償 G Suite for Education  (ドキュメント共有、カレンダーなど) GitHub Education  (ソースコード管理) esa.io アカデミックプラン  (知識共有) Tableau  (データ可視化) Scrapbox  (知識共有) GROWI.cloud  (Wikiなど) 割引 Slack の教育支援プログラム  (ビジネスチャット) Dropbox Education  (ファイル共有、ドキュメント共有) Office 356  (オフィスソフト) Adobe Creative Cloud  (画像編集) AutoDesk for Education  (CADなど) これから申し込んでいくところなので、本当に使えるかはわかりせん。使えた使えないなどの情報やほかのツールでお勧めがあれば教えてもらえると嬉しいです。 アカデミアでなくても無料で使えるツールのうち、うちで使うであろうものは以下に列挙していく。 Google Colaboratory  (データ解析) Overleaf  (論文執筆) Rstudio  (開発, データ解析) VS code (開発)