CellRangerでSTARのパラメータを変更する
TL;DR
single cell RNA-seqを知ってる人ならまず知っているであろう、Cell Ranger。使ったことがなかったんですが、ちょっと使ってみようかなと思いました。しかし、これ内部的にはSTARを使ってマッピングするんですが、STARのパラメーターを引数でとれない、という問題(誰も問題にしていない)があります。
公式の解答としては、自分でビルドしてね、責任は持たないけど、ってことらしいです。
Dockerfile
最初に完成品を貼っておくと、こんな感じでビルドしました。 ソースコードを改変したいので、公式Githubからソースコードは予めcloneして同一ディレクトリに置いてあります。
依存しているもの
- python2.7.14
- rust 1.28.8
- go 1.11
- clang 6.0
- martian 3.2.5 ?
- その他必要なバイナリ(公式からDL)
言語統一してほしい。martianは初めて見るのでよくわからなかった。 巨大なDockerfileになってしまった。
依存パッケージ
- numpy
- docopt
特にREADMEには書いてないけど、入ってないとエラーになります。あとmakeのときに/usr/include/numpyに必要ファイルがないって怒られるので、シンボリックリンクを貼っています。
環境変数
/cellranger/sourceme.bash と /cellranger/ranger-3.0.2/sourceme.bashをsourceすればいいです。ENTRYPOINT使えば楽なんですが、singularityのイメージに変換するのでやめました(singularityってENTRYPOINTも解釈してくれるんですか?)
ソースコードの改変
cellranger/lib/python/cellranger/reference.pyの439行目にSTARクラスが定義されています。Cell RangerはこのSTARクラスのalignメソッドを使うので、
ここのargsに好きなパラメーターを入れれば無事STARのパラメーターを変更できます。