R以外の研究ツール

32
R以外の研究ツール [email protected]#10

Transcript of R以外の研究ツール

Page 1: R以外の研究ツール

R以外の研究ツール

[email protected]#10

Page 2: R以外の研究ツール

@antiplastics

露崎 弘毅(つゆざき こうき)

理化学研究所 バイオインフォマティクスユニット JRA(火~金)

東京理科大学 薬学研究科 博士後期課程3年(土~月)

Page 4: R以外の研究ツール

→今日はR以外の話をします!

・最近Rのネタが無い

・結構飽きてる

・そもそもRだけで研究している訳が無い

Page 5: R以外の研究ツール

コードスニペット

Page 6: R以外の研究ツール

Sublime Text 2 (ST2)

• http://www.sublimetext.com/ • エディタはこれ一択(3も出てる), V*(*) / E****は使わない • どのOSでも使える、シンタックスがかっこいい、多機能、使いやすい

Page 7: R以外の研究ツール

基本的なショートカット

• Command(⌘) + F : 検索

• Command(⌘) + S : 保存

• Command(⌘) + Z : 戻る

• Command(⌘) + Y : 進む

メモ帳、Office、ブラウザとかと全く同じ

Page 8: R以外の研究ツール

高度な機能

# ショートカット

• Command(⌘) + / : コメントアウト

• Command(⌘) + option + 数字 : Window分割

• Control + Shift +数字: 指定した分割Windowに飛ぶ

• Command(⌘)を押しながら色々な箇所を選択 : マルチカーソル

• 文字列選択後に、Command(⌘) + D : 一括置換

Page 9: R以外の研究ツール

高度な機能

• Command(⌘) + P : ファイル選択

• Command(⌘) + Control + P : コマンドパレット (シンタックス、スニペット、パッケージ…etcを検索)

http://qiita.com/mryreplicant/items/97d96fd156cf30744b8b

# Package Control (簡単にパッケージを管理できるようにする機能)

https://sublime.wbond.net/installation#st2

Page 10: R以外の研究ツール

コードスニペット • コードの切れ端 • よく書くプログラミングのパターンをあらかじめ登録しておいて、

すぐ取り出せるようにする

”Snippet: html”を選ぶだけ!

登録したコードが生成!

コマンドパレット (Command (⌘) + Ctrl + P)を起動

Page 11: R以外の研究ツール

スニペットの作り方

ツールバーのTools>New Snippetで出てきた上の記述様式の通りに書いて、 /Users/ユーザー名/Library/Application Support/Sublime Text 2/Packages/User に保存するだけ(拡張子はsublime-snippet)

Command (⌘) + Ctrl + Pでhelloとうつと上のコードが生成さ

れる

生成されるコード 生成時に1番目に選択される箇所

${1:this}が選択された後にtabを押すとジャンプする箇所

hello.sublime-snippet

Page 12: R以外の研究ツール

bash.sublime-snippet

シェバン行(パス)とかどう書くのかググるのめんどい

いつもなんかしらIDをまとめたファイルを基に繰り返し処理を行っている

シェルスクリプト : 同じプログラムを何回もぶん回す時に使ってる

5個のうち、4個をバックグラウンドで実行(&)する(なんちゃって並列化)

Page 13: R以外の研究ツール

perl.sublime-snippet

シェバン行(パス)めんどい

あるファイルを読み込んで、出力ファイルに書き出す

Perl : 正規表現である特定の文字列だけ抽出する時に使ってる

グループマッチを使う事が多い

Page 14: R以外の研究ツール

Rake.sublime-snippet

desc, task, 依存ファイルとかの書き方をすぐ忘れる

Rake : 状況に応じて走らせるプログラムを使い分けたい時に使ってる

Page 15: R以外の研究ツール

RSQLite.sublime-snippet

dbDriver, dbConnect, dbGetQueryと書くのをすぐ忘れる

RSQLite : Rでsqliteファイルにアクセスする時使ってる

Page 16: R以外の研究ツール

サーバ上でプログラムを実行する場合

自分はこれでサーバ上でプログラムを書くのを回避してます><

SSHでログイン

自動転送

方法1) サーバ上で編集 -> サーバで実行 V*(*) / E***で プログラムを編集

方法2) ローカルマシン上で編集 -> サーバで実行

ST2で プログラムを編集

> vim plot.R

実行

> R CMD BATCH plot.R

実行

> R CMD BATCH plot.R

ssfhs + OSXFUSE (Max OS X) Expandrive, DokanFS(Windows)

Page 17: R以外の研究ツール

バージョン管理システム

Page 18: R以外の研究ツール

バージョン管理(VCS)とは

なぜ2を作る必要があったのか!?

ファイルとは日々更新されていくもの 途中の過程を残しておきたい場面が出てくる 分岐も出てくる可能性がある (パラメーターの違い、英語・日本語版の各々の作成とか) 戻ってやり直したり、他の分岐したものとマージしたくなる場面もある 1とか2とかナンバリングしてるだけだとそのうち訳がわからなくなる

この!!!にどんな思いを込めたのか!?

二年前の自分の修論

Page 19: R以外の研究ツール

VCSができる事

• 差分を登録 • これまでの差分を閲覧 : ログ • バックアップ • 分岐 : ブランチ • 統合 : マージ • 過去の状態に戻る : ロールバック • 公開、共同作業 : 共有リポジトリ …

有名どころとして、git, Subversion(SVN), Mercurial, CVS …等がある http://www.slideshare.net/dallarosa/svn-9725505

Page 20: R以外の研究ツール

基本操作(git) mkdir work && cd work

作業ディレクトリ (端末)

リポジトリ

インデックス

アッド

コミット

仮登録みたいなところ (ステージ)

保存される場所 (差分毎にハッシュ

値がふられる)

FileA

×n

work

http://dotinstall.com/lessons/basic_git

チェック アウト

リセット

FileB

FileC FileD

# reposをgitに登録する git init

# FileA.txtというファイルができたとする echo “This is first commit” > FileA.txt # アッド git add . # コミット git commit –m “First Commit”

# 状況確認 git status

# これまでのコミットしたものを閲覧 git log

# ロールバック git reset –hard 191dsoghohodaohgohdgoa

Page 21: R以外の研究ツール

GitHub

• gitを用いてソースコードをWebに公開するための共有Webサービス

• gitコマンドを知らなくても大丈夫(クライアントソフトがあるから) • その他にもGist(1テキストファイルのみの公開)、

Pages(webページの公開)など様々な機能を持つ http://www.atmarkit.co.jp/fjava/column/andoh/andoh60.html

アッド & コミット

web

https://github.com/kokitsuyuzaki

Page 22: R以外の研究ツール

BioconductorにおけるVCS Bioconductorのパッケージには“ソフトウェアパッケージ”と“実験データパッケージ”

があり、共に全パッケージをSVNでバージョン管理している

BioC2.14 リリース版 (release)

ビルド、チェック、バイナリ化 が正常に走るのかチェック (一日1回ペースくらい?)

BioC3.0 開発者版 (devel)

Page 23: R以外の研究ツール

BioconductorにおけるVCS

metaSeq

work

1. パッケージをCore Teamに送り、受理される 2. SubversionのユーザーIDとパスワードが送られてくる 3. パッケージに何か変更・修正があるたび、SVNで向こうのリポジトリにコミットする 4. 木全体のバージョンが上がる (誰かが何か変更するたび全体の数字が上がる)

release

metaSeq metaSeq

devel

metaSeq metaSeq

82010 82011 release

devel

どっちかに コミット

Page 24: R以外の研究ツール

mkdir work && cd work # release版と同期 # First CommitだけCore Teamがやってくれているので、チェックアウトする svn co https://hedgehog.fhcrc.org/bioconductor/branches/RELEASE_2_13/madman/Rpacks/metaSeq/ # devel版と同期する場合 svn co https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/metaSeq/ # 作業ディレクトリに修正版パッケージをコピー cp –rf ../metaSeq . # アッド svn add * # コミット svn commit –m “Added parallel function” # 状況確認 svn status

BioconductorにおけるVCS

http://master.bioconductor.org/developers/how-to/source-control/

Page 25: R以外の研究ツール

x.y.zルール

http://master.bioconductor.org/developers/how-to/version-numbering/

・パッケージのバージョン番号には以下のようなものがある(x.y.z) 1.2.3, 0.0.1, 0.4.5, 0.2.3

・ xが0である限り、公開はされない ・但し0.99.zにすると次のリリースで1.0.0として公開される (99ルール) ・yはdevelだと奇数、releaseだと偶数にしなくてはならない (偶数-奇数ルール) ・BioCのバージョンアップ毎、yの数字は増やされる (バンプアップ)

Bioconductorのバージョンに加え、個々のパッケージのバージョンもある (例: Bioconductor 2.14で登録されたmeshr-1.0.3)

Page 26: R以外の研究ツール

x.y.zルール

Q1: 最初にパッケージを作った時、バージョンは何番?

Q2: 0.99.0をCore Teamに送ったところ、一部を修正しろと言われました。 次のバージョンは何番?

Q3: 0.99.4にして、BioC2.13で公開していいと言われました。 公開時のバージョンはrelease, develで各々何番?

Q4: 次のBioC2.14ではこのパッケージのバージョンは、release, develで各々何番?

A1: 0.99.0 (99ルール、きたるreleaseで1.0.0として公開してほしいから)

A2: 0.99.1(まだOKをもらってないから、自分から1.0.0にはできない)

A3: 1.0.0 (release), 1.1.0 (devel) (偶数-奇数ルール)

A4: 1.2.0 (release), 1.3.0 (devel) (バンプアップ + 偶数-奇数ルール)

Page 27: R以外の研究ツール

x.y.zルール

Q5: Vignette(ドキュメント)に一部間違いが書かれていました。 修正したバージョンはどこに何番としてコミットすべき?

Q6: Vignette修正後にパッケージに追加機能を付けたくなってきました。 機能追加Verのパッケージは、どこに何番としてコミットすべき?

Q7: 今1.0.1(release), 1.1.2(devel)ですが、BioC2.14だとrelease, develで各々何番?

Q8: コミット先を間違えて1.1.1 (release), 1.1.1(devel)として公開されてしまいました。各々何番として再度コミットすべき?

A5: release, devel両方に、1.0.1 (release), 1.1.1 (devel) (バグは直ちに修正)

A6: develのみに、1.1.2 (devel) (バグ以外は全てdevelのみに反映→次回のreleaseで公開)

A7: 1.2.0 (release), 1.3.0 (devel) (バンプアップ時はyの数字だけ見る)

A8: 1.2.0 (release), 1.3.0 (devel) (ユーザーが戸惑うから、基本的に数字は減らさない)

以下は説明が無いが、Core Teamに言われた事

Page 28: R以外の研究ツール

仮想マシン

Page 29: R以外の研究ツール

仮想マシンとは

主な周辺ツール • Vagrant : VirtualBoxをコマンドで操作する • Chef : Vagrantの起動時の設定を色々する • Docker : Vagrant + Chefみたいな事をより軽量に行うツール • Boot2docker, Docker provider : Mac OS XでDockerを使うためのツール

OS上であたかも一つのソフトウェアのように起動された他のOS(例: Mac上で起動するWindows)

Mac Book Air (物理マシン)

仮想化ソフト

Virtual Box、 VM ware Fusion、

Vagrant-LXC、

Parallels、KVC...など

Windows 7 (仮想マシン)

Page 30: R以外の研究ツール

一度作っておけば、再度インストール不要、どこでもすぐ使えるし同じ動作をする、メイン環境が壊れない、実験的な事ができる

仮想マシンの研究利用

解析結果の再現性が保証される (このまま論文のAdditional Fileにしたいくらい)

Mac OS X (仮想マシン)

R, R-studio, Evernote, Skitch, ST2, Office, Cyberduck, IGV, AppCleaner, Dropbox, GitHub,

FastQC, Keynote, Xcode, homebrew, Skype, Xmarks, Growl,

データ 解析結果

Page 31: R以外の研究ツール

BioCパッケージ開発用マシン

Mac Book Air (物理マシン)

Ubuntu-14.04 LTS

(仮想マシン)

作り方、イメージ(自分用に設定した状態の仮想マシン)を公開中 仮想環境構築(Docker)

[参考]

・ドットインストールの「Docker入門」

・はじめてのDocker on Mac OS X、Installing Docker on Max OS X

・Vagrant を使って Bioconductor Devel の解析・開発環境をAWSに構築する (Hacking is believing)

r-base、subversion、ccache、r-base-dev、libxml2-dev、r-cran-xml、libcurl3-gnutls-dev、XML(R package)、Rcurl (R package)

Docker on

Virtual Box

パッケージ開発に必要なツール

Docker Index

(マシン丸ごと バージョン管理) プッシュ

Page 32: R以外の研究ツール

まとめ

• コードスニペット

– ST2にがしがし登録 → ⌘ + Ctrl + P

• バージョン管理 :

– git, svnで差分を登録 (BioCのパッケージを作成するならsvnの知識が必須)

• 仮想マシン

– 一度作っておくと便利、他の環境に影響しない隔離したマシンが作れる