-20-【読書】 「学校の授業時間以外に1日あたり30分以上読書をする」 「学校の図書館(授業以外)や地域の図書館に年に1回以上行く」
R以外の研究ツール
-
Upload
antiplastics -
Category
Data & Analytics
-
view
723 -
download
1
Transcript of R以外の研究ツール
R以外の研究ツール
@antiplastics
露崎 弘毅(つゆざき こうき)
理化学研究所 バイオインフォマティクスユニット JRA(火~金)
東京理科大学 薬学研究科 博士後期課程3年(土~月)
作ったRパッケージ
metaSeq (RNA-seqのメタ解析パッケージ)
MeSH ORA Framework (MeSHを利用した
遺伝子アノテーション)
→今日はR以外の話をします!
・最近Rのネタが無い
・結構飽きてる
・そもそもRだけで研究している訳が無い
コードスニペット
Sublime Text 2 (ST2)
• http://www.sublimetext.com/ • エディタはこれ一択(3も出てる), V*(*) / E****は使わない • どのOSでも使える、シンタックスがかっこいい、多機能、使いやすい
基本的なショートカット
• Command(⌘) + F : 検索
• Command(⌘) + S : 保存
• Command(⌘) + Z : 戻る
• Command(⌘) + Y : 進む
…
メモ帳、Office、ブラウザとかと全く同じ
高度な機能
# ショートカット
• Command(⌘) + / : コメントアウト
• Command(⌘) + option + 数字 : Window分割
• Control + Shift +数字: 指定した分割Windowに飛ぶ
• Command(⌘)を押しながら色々な箇所を選択 : マルチカーソル
• 文字列選択後に、Command(⌘) + D : 一括置換
高度な機能
• Command(⌘) + P : ファイル選択
• Command(⌘) + Control + P : コマンドパレット (シンタックス、スニペット、パッケージ…etcを検索)
http://qiita.com/mryreplicant/items/97d96fd156cf30744b8b
# Package Control (簡単にパッケージを管理できるようにする機能)
https://sublime.wbond.net/installation#st2
コードスニペット • コードの切れ端 • よく書くプログラミングのパターンをあらかじめ登録しておいて、
すぐ取り出せるようにする
”Snippet: html”を選ぶだけ!
登録したコードが生成!
コマンドパレット (Command (⌘) + Ctrl + P)を起動
スニペットの作り方
ツールバーの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
bash.sublime-snippet
シェバン行(パス)とかどう書くのかググるのめんどい
いつもなんかしらIDをまとめたファイルを基に繰り返し処理を行っている
シェルスクリプト : 同じプログラムを何回もぶん回す時に使ってる
5個のうち、4個をバックグラウンドで実行(&)する(なんちゃって並列化)
perl.sublime-snippet
シェバン行(パス)めんどい
あるファイルを読み込んで、出力ファイルに書き出す
Perl : 正規表現である特定の文字列だけ抽出する時に使ってる
グループマッチを使う事が多い
Rake.sublime-snippet
desc, task, 依存ファイルとかの書き方をすぐ忘れる
Rake : 状況に応じて走らせるプログラムを使い分けたい時に使ってる
RSQLite.sublime-snippet
dbDriver, dbConnect, dbGetQueryと書くのをすぐ忘れる
RSQLite : Rでsqliteファイルにアクセスする時使ってる
サーバ上でプログラムを実行する場合
自分はこれでサーバ上でプログラムを書くのを回避してます><
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)
バージョン管理システム
バージョン管理(VCS)とは
なぜ2を作る必要があったのか!?
ファイルとは日々更新されていくもの 途中の過程を残しておきたい場面が出てくる 分岐も出てくる可能性がある (パラメーターの違い、英語・日本語版の各々の作成とか) 戻ってやり直したり、他の分岐したものとマージしたくなる場面もある 1とか2とかナンバリングしてるだけだとそのうち訳がわからなくなる
この!!!にどんな思いを込めたのか!?
二年前の自分の修論
VCSができる事
• 差分を登録 • これまでの差分を閲覧 : ログ • バックアップ • 分岐 : ブランチ • 統合 : マージ • 過去の状態に戻る : ロールバック • 公開、共同作業 : 共有リポジトリ …
有名どころとして、git, Subversion(SVN), Mercurial, CVS …等がある http://www.slideshare.net/dallarosa/svn-9725505
基本操作(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
GitHub
• gitを用いてソースコードをWebに公開するための共有Webサービス
• gitコマンドを知らなくても大丈夫(クライアントソフトがあるから) • その他にもGist(1テキストファイルのみの公開)、
Pages(webページの公開)など様々な機能を持つ http://www.atmarkit.co.jp/fjava/column/andoh/andoh60.html
アッド & コミット
web
https://github.com/kokitsuyuzaki
BioconductorにおけるVCS Bioconductorのパッケージには“ソフトウェアパッケージ”と“実験データパッケージ”
があり、共に全パッケージをSVNでバージョン管理している
BioC2.14 リリース版 (release)
ビルド、チェック、バイナリ化 が正常に走るのかチェック (一日1回ペースくらい?)
BioC3.0 開発者版 (devel)
BioconductorにおけるVCS
metaSeq
work
1. パッケージをCore Teamに送り、受理される 2. SubversionのユーザーIDとパスワードが送られてくる 3. パッケージに何か変更・修正があるたび、SVNで向こうのリポジトリにコミットする 4. 木全体のバージョンが上がる (誰かが何か変更するたび全体の数字が上がる)
release
metaSeq metaSeq
devel
metaSeq metaSeq
82010 82011 release
devel
どっちかに コミット
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/
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)
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) (バンプアップ + 偶数-奇数ルール)
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に言われた事
仮想マシン
仮想マシンとは
主な周辺ツール • 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 (仮想マシン)
一度作っておけば、再度インストール不要、どこでもすぐ使えるし同じ動作をする、メイン環境が壊れない、実験的な事ができる
仮想マシンの研究利用
解析結果の再現性が保証される (このまま論文のAdditional Fileにしたいくらい)
Mac OS X (仮想マシン)
R, R-studio, Evernote, Skitch, ST2, Office, Cyberduck, IGV, AppCleaner, Dropbox, GitHub,
FastQC, Keynote, Xcode, homebrew, Skype, Xmarks, Growl,
…
データ 解析結果
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
(マシン丸ごと バージョン管理) プッシュ
まとめ
• コードスニペット
– ST2にがしがし登録 → ⌘ + Ctrl + P
• バージョン管理 :
– git, svnで差分を登録 (BioCのパッケージを作成するならsvnの知識が必須)
• 仮想マシン
– 一度作っておくと便利、他の環境に影響しない隔離したマシンが作れる