「zsh anything.el-like widget」通称zawは,Emacsのanything.elみたいなインターフェイスでzshを操作できるという拡張プラグインだ.本来は様々な操作に対応しているのだが,とりあえずディレクトリ操作だけでも恐ろしいほどに便利なので,anything.elを知らない人でも導入して損はないと思う.ここでは以下の記事を参考に,zaw.zshの設定をしてみた.

1. zawをダウンロードする

今回は.zshというディレクトリを$HOME以下に作成して,そこでgit cloneを実行する.

1
2
3
$ mkdir .zsh
$ cd .zsh
$ git clone git://github.com/zsh-users/zaw.git

2. .zshrcを設定する

以下の内容を.zshrcに書き込む.sourceでzaw.zshを読み込む部分は,先ほどダウンロードしたzawディレクトリを指定する.

1
2
3
4
5
6
7
8
9
10
11
# zaw.zsh
# http://shibayu36.hatenablog.com/entry/20120130/1327937835
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
zstyle ':chpwd:*' recent-dirs-max 5000
zstyle ':chpwd:*' recent-dirs-default yes
zstyle ':completion:*' recent-dirs-insert both

source /home/yag_ays/.zsh/zaw/zaw.zsh
zstyle ':filter-select' case-insensitive yes # 絞り込みをcase-insensitiveに
bindkey '^@' zaw-cdr # zaw-cdrをbindkey

3. .zshrcを読み込む

最後に.zshrcを再度読み込んでエラーがでなければ完了.

1
$ source .zshrc

使い方

C-@(Control-@)を押すと以下のように,直近で移動したディレクトリの一覧が表示される.

この状態でキーワードを入力すると,マッチしたディレクトリだけを選ぶこともできる.深い階層のディレクトリでも名前さえ覚えていれば一発で飛ぶことができるので,非常に便利だ.



PerlでCPANを使うなら,cpanmが便利.ライブラリはすべてホームディレクトリ以下に展開されるので,管理者権限が無くても気軽に使用できる.

パスの通ったディレクトリにインストールする

1
2
3
$ cd local/bin
$ curl -LOk http://xrl.us/cpanm
$ chmod +x cpanm

.zshrcに設定を書き込む

1
2
export PERL_CPANM_OPT="--local-lib=~/.cpanm/"
export PERL5LIB="$HOME/.cpanm/lib/perl5:$PERL5LIB"

例)ライブラリを入れる

1
2
3
$ cpanm local::lib
$ cpanm JSON
$ cpanm Cairo

参考



今回は配列をアセンブルするときの指標に使うN50とNG50について少しまとめてみようと思う.

前置き

アセンブリというのはシーケンサで得られる短い配列から元のゲノム配列を復元する作業のことで,例えるならば膨大な数のジグソーパズルを形を頼りに完成させるとか,シュレッダーに掛けられて短冊になった書類を元に戻す作業といえる.これだけ聞くと頑張ればできそうな気がするが,実際には使える情報はATGCの配列だけと非常に限られており,場所によっては同じ文字が延々と続く箇所があったり,時々文字が間違っていたりと,手作業では不可能に近いし何より計算機を使ったとしても非常に難しい.それに加えて,そもそも元あった状態である解答を誰も知らないので,結果が合っているかどうかも分からず,答え合わせ(評価)がしづらいということがある.

このアセンブリの評価に関しては,Assemblathonというゲノムアセンブラの精度を争うコンペティションで活発に議論されている.というのも,各研究室で開発されたアセンブラの性能に順位を付けるためという以前に,未知のゲノムに対して今までに誰もアセンブル結果の配列だけで評価してこなかったからだ.もう少し正確に言えば,今までのモデル生物のゲノム配列解読は,過去に実験で確かめられてきた膨大な知見のもとで大量の人材と資金を投入して一歩ずつ進められてきた研究であり,現在のスタイルであるNGSを使った非モデル生物のゲノム配列解読のアプローチとはほとんど別物だと言っても過言ではない.そういった経緯があり,現在のAssemblathonではこれからのゲノム配列解読の基準となるような評価手法について,コンペティションを通して試行錯誤が繰り返されている(この話題に関してはAssemblathon2のスライドが詳しい).

ちなみに,Assemblathonは現在,擬似データでアセンブルを競った第1回は終了し論文も出ており,実際の生物データを使った第2回が終了して論文が出るのを待つだけで(既にArXivに上がっている),第3回も企画されている.

というわけで,ゲノムを読むといっても今までのようにはいかないし,新しい評価も考えつつやっていかないとねという話.その中でスタンダードな評価指標が今回紹介するN50とNG50になる.

N50

N50とは一言でいえば配列長の加重平均なのだが,それでは誰も理解してくれないのでもうちょっと噛み砕こう.簡単に言えば,配列を長い順に並べて上から順に足していった時に,全体の長さの半分に達した時の配列の長さ(単位はbp)のことをN50という.イメージだと右図のように,半分の面積になるときの配列の長さがN50となる.得られた配列の分布を見つつ中間くらいの長さを表しているので,長い配列が多いとN50は大きくなるし,逆に長い配列が少なく短い配列が大量にあるとN50は小さくなる.アセンブルの際には復元したいゲノムに少しでも近づけるよう長い配列がたくさん得られると嬉しいので,N50はアセンブルの結果の良し悪しを判断する指標となっている.

NG50

とは言うものの,長けりゃそれでいいのかという疑問から出てきたのがNG50という指標だ.アセンブルで得られた配列全体の長さの代わりに,推定されるゲノム配列の長さを使って配列長の平均を計算している.つまり,予想では100Mbpだと推定された生物のゲノムならば,配列を長い順に並べて上から順に足していって100Mbpに達したときの配列の長さをNG50としている.考え方としては,理想となるゲノム配列の長さに近づけるために,長い配列だけじゃなくてある程度短い配列も評価しようということだろう.また,アセンブラの性能を異なるゲノムサイズの生物間で比較する際にも,NG50を用いることで公平に判断することができる.ただし,ゲノムサイズに関しては実験的に求めるかK-merから推定する必要があるので,必ずしも正確かどうかは難しいところがある.

まとめ

以上で,ざっとN50とNG50についてまとめてみた.実はこの議論にも続きがあって,NG50だけでは不十分でNG1からNG99までを検討しないといけないという話もある.今回はそこまでは踏み込まないが,気になる人はAssemblathon2の評価手法に関するページを見ていただきたい(The Assemblathon • Assemblathon 2 basic assembly metrics).結論としては一概にどの指標がいいかを決めるのは非常に難しいということで,色々と試してみる必要がある.

参考



久しぶりにTrinityを触ろうと思ってインストールしたら,実行にBowtieが必要になっていた.de novo transcriptome assemblyの後の解析で使う程度かと思いきや,どうやらChrysalis(2段階目)で必要になるらしい.そのため,Bowtieにパスを通していないとTrinity.pl実行時に以下のようなエラーが出る.

1
Error, cannot find path to bowtie, which is now needed as part of Chrysalis' read scaffolding step at ../../Trinity.pl line 622.

というわけで,TrinityのインストールをしつつBowtieも用意して,試しにソースコードに含まれているテストデータの実行をしてみる.

1. Trinityのインストール

SourceForgeからソースコードをダウンロードしてインストールする.解凍したディレクトリでmakeをすればよい.

Trinity RNA-Seq Assembly - Browse Files at SourceForge.net

1
2
3
4
$ wget http://downloads.sourceforge.net/project/trinityrnaseq/trinityrnaseq_r2013-02-25.tgz 
$ tar zxvf trinityrnaseq_r2013-02-25.tgz 
$ cd trinityrnaseq_r2013-02-25
$ make

2. Bowtieのインストール

こちらも同様にSourceForgeからダウンロードするが,コンパイル済みのバイナリが配布されているので,makeをせずにそのまま利用できる.OSごとに32bit版と64bit版が用意されているので,環境に合わせてダウンロードする.

Bowtie: An ultrafast, memory-efficient short read aligner

Bowtie - Browse /bowtie/1.0.0 at SourceForge.net

3. Bowtieのバイナリがあるディレクトリにパスを通す

今回はとりあえずシェルの設定ファイルをいじらずに,コマンドでbowtieがあるディレクトリをパスに指定する.

1
$ export PATH=/Users/yag_ays/Downloads/bowtie-1.0.0:$PATH

もし頻繁に使用するなら,bowtieのバイナリをパスが通っている場所に移動させたほうがいいだろう.

サンプルデータのアセンブル

ひと通り動くことを確認するために,ソースコードの中に含まれているサンプルデータの解析を動かしてみる.

今回実行するのはsample_data/test_Trinity_Assembly.ディレクトリ内にrunMe.shがあるので,単純にそれを実行すればよい.初回は配列ファイルの解凍が実行されるため,Trinityが実行されるまでに少し時間がかかる.

1
2
$ cd sample_data/test_Trinity_Assembly
$ ./runMe.sh

もしきちんとパスを通せていれば,標準出力に以下のようなテキストが表示され,解析が始まる.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ ../../Trinity.pl --seqType fq --JM 2G --left reads.left.fq --right reads.right.fq --SS_lib_type RF --CPU 4 --no_cleanup --monitoring --output test
WARNING, --monitoring can only be used on linux. Turning it off.

Current settings:
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited


Paired mode requires bowtie. Found bowtie at: /Users/yag_ays/Downloads/bowtie-1.0.0/bowtie

...


英語の勉強法に王道なんてものは無くて,みんながみんな自分の方法を一般論のように語ったり,適当なことを言いふらしてはお金にしようと画策していたり,かく言う僕自身もあまり英語が得意ではない方で勉強法についてもよく分かっていない.だから,勉強しようとすると誰かの意見を盲信するか,自分の流儀を貫き通すしかない.本書も結局は巷にあふれる英語勉強本の中の一つにすぎず,Googleだとか外資社長だとかいった箔が付いている程度のものだ.

本書の主張は非常にシンプルで,英語のスキルを上達させたいなら

  • 300万語読む
  • 1万語眺める(覚える)
  • 1000時間聞く
  • 文章を書くときは人の英文を借りてくる
  • パターンを暗記する

をクリアすればいいというもの.あとは,これを実現するために具体的にどうやれば効率が良いかといった方法が,著者自身の経験とともに語られる.例えば,英文を読むときは後戻りをせずに一気に読みきるとか,リスニングは筋トレと同じだから聞き取れないくらいのレベルを聴き続けるとか,英語のメールを書くときは人の文章から借りてくるとか,ちょっとしたコツが幾つも載っている.分量としても,1時間あれば読みきれるくらいなので,軽い気持ちで読み通せる.本書の中では,英語を学習する上で難しいことなんて何も要求されない.

さて,ここまで本書をひと通り読み進めて,あとは内容を信じるか信じないかだ.納得できたかかどうか,信憑性があるかないか,試してみてリスクが大きそうか小さそうか,その辺りが頭のなかを駆け巡ることだろう.僕の場合は,本書の進言をちょっと真面目に聞いてみようかなという気になった.理由なんてものはあってないようなものなのだけれども,著者の英語に対する割り切りの良さが少し気に入ったからかもしれない.

ということで,サクッと読めてアドバイスもそこそこな本書は,意見が合う部分が多く個人的にはオススメできる.まあ,英語上達の保証はできないけれども….