就職Hacks (製薬企業のDryポスト)

製薬企業でDryのポストを狙っている学生の方々は、おそらくバイオインフォマティクスやケモインフォマティクスの研究室に在籍しているか、ウェットの研究室の担当でDry解析も掛け持ちしているとかだと思います。なので、NGS解析用の既存のコードをモディファイするなり、研究室でメンテされているコードをちょいちょい書き換えたりして、研究成果を出しているのだと思います。就職活動で製薬企業でDryのポストを得るためには研究成果以外にも解析能力やコーディング能力をアピールできると良いと思いますので、損にはならない(と私が思っている)方法を2つほど紹介したいと思います。

GitHubは使えるようにしておこう

書いてあるとおりそのままです。アカウントがなくて成果物がアップロードされていないとしても、PRやイシューを送ったことがあるかといった経験はあったほうが良いかなと思います。

競技プログラミングにもちょっと手を出しておこう

プログラミングを楽しめるということもDryでやっていく研究者として重要な資質かなと思います。インフォマティクス系のポジションを狙っている場合、もしかしたらアルゴリズムに関して質問されるかもしれません。そういった場合にある程度基本的なアルゴリズムやデザインパターンなどに関する知識があったほうが良いかなと思います。

競技プログラミングは色さえついていれば良いと思います。無色透明よりは断然マシでしょう。あんまり聞かれることはないと思いますが、もし私が面接官をやれと言われたら間違いなくする質問だと思います。TOEICのスコアと同じくらいにわかりやすい参考値だしね。

Pythonによるバイオインフォマティクス 原著第2版

Pythonによるバイオインフォマティクス 原著第2版の翻訳に関わりました。

バイオインフォマティクスの書籍というとだいたい3つに分類されるかと思いますが、本書は3のカテゴリに入るかなと思います。

  1. アルゴリズムに関して記述してある本、情報科学系の人向け
  2. ユーザーとして解析方法を知りたい人向け
  3. インフラ寄りの立ち位置で、生命科学データベースやウェブサーバーなどを扱いたい人向け

本書の初版に寄せての1文を借りると

本書の主目的は生 物学の問題と解かんとするこれら研究者を助け,プログラミングの初歩をてほどきすることにある.

つまり本書の特徴はBioPythonを通してPythonプログラミングの基本を覚えられるような構成になっています。目次を見ればわかりますが、8章までPythonの説明に当てられており、9章でBioPythonのいろいろな機能が紹介されます。二部ではDB操作(RDB, NoSQL)やWebアプリケーションの構築に触れられています。ただし、NGS解析については触れられていない ですし、機械学習(Scikit-learn)についても触れられていないので、そのあたりに興味のある方は他の書籍を選択したほうが良いでしょう(後ろに載せます)

本書の原著第2版はPythonの2/3について記述されていましたが、翻訳をしている間にPython2系が廃止されたという経緯もあって翻訳は完全にPython3での記述に変更しています。そのためにAuthorのSebastian BassiとSlackで何度もやり取りをして修正したり、ライブラリのバージョンアップで動かなくなったコードを直したりと結構手を入れました(かなり頑張ったのでまえがきに記載してます)

なお,今回の作業では,著者であるSebastian Bassiと頻繁にやりとりし,可能な限り正確な訳出を心がけた。現在では古くなっている情報については,該当箇所を書き換える,あるいは訳注として対応し,単なる原著第2版の邦訳以上のものとなっている。

ちなみにウェブアプリケーションフレームワークはBottleを採用しているのだけど、私はFlask派です。

PythonでNGS解析をしたい人は?

Bioinformatics with Python Cookbookを選択すればいいと思います(私は原著を読んだので翻訳はもってないです)。ただしCookbookと書いてあるように、前提としてある程度Pythonプログラミングができることを要求する本となっています。もしこの本のコードがわからんという人にとってはPythonによるバイオインフォマティクス 原著第2版は良い選択肢になるのではないでしょうか?

また本書はファイルフォーマットの説明があっさりだったので、Dr. Bonoの生命科学データ解析のフォーマットの説明の章を重宝しました。参考までに。

ProductName Dr. Bonoの生命科学データ解析
メディカルサイエンスインターナショナル / ¥3,300 (2017-09-29)

もう一点はシングルセル解析についての記述はありません。そのためScanpyなどに関する説明もありませんのでこのあたりを知りたい人はドキュメントを読んだりコードを追いかけたりする必要があるのではないでしょうか?

ユーザーとして解析方法を知りたい人には

このあたりが鉄板で、レビューもたくさんあるので調べてみてください。個人的にはRNA-Seqデータ解析が一番わかりやすかったです。

ProductName 次世代シークエンサーDRY解析教本
学研メディカル秀潤社 / ¥6,160 (2019-12-12)

「Kaggleで勝つデータ分析の技術」を読んだ

データ分割の考え方とか特徴量作りのコツみたいなのが丁寧に書いてあって大変参考になった。

ある程度Pythonで機械学習をやっている人向けの本ですね。

ProductName Kaggleで勝つデータ分析の技術
技術評論社 / ¥3,428 (2019-10-09)

いつもはランダムフォレストでいいやーって感じなんだけど、ハイパーパラメータのチューニングめんどくさいしXGBoostかLightGBMに改宗したほうがよいのだろうか。

elmとelmo

最近、右四間飛車elmo囲いを指すようにしている。

ProductName とっておきのエルモ (マイナビ将棋BOOKS)
マイナビ出版 / ¥1,372 (2020-07-13)

というわけで、今年はelmでも勉強しようかと思っている。

ProductName 基礎からわかる Elm
シーアンドアール研究所 / ¥2,604 (2019-02-27)

ポケモンGO(Lv. 43)

先週の1/9には到達していたので2日でレベルアップ。

次のレベルまでの経験値は溜まっているのだけど、トレーナーバトルトータル90勝というのがだるすぎてここでとまりそう。

ポケモンGO(Lv. 42)

前回から3日でのレベルアップ。イーブイ進化させるだけだった。

43のタスクは伝説ポケモンを5匹捕獲っていうのがめんどくさい。

ポケモンGO(Lv41)

レベル50まで目指せるようになって、久しぶりのレベルアップ。前回のレベルアップから2年半弱でした。

タダ券でたまにレイドする私にはレイドを30回やれっていうタスクがだるくて時間がかかってしまった。

expはレベル44までは溜まっているみたいなのでそこまではあげたいが、経験値あげをまたしないといけないのはめんどくさいなぁ。

機械学習を生命科学に使う

あけましておめでとうございます。

夕方ポケモンしながら今年の抱負を考えていたのだが、とりあえず今年はchemoinformatics本を出版したいところ。あとはマネジメントに忙殺されないでコード書いたりできるような余裕を作れるようにしたい。そして今年もアジェンダのない会議には絶対に出ないという信念を継続させるw

ところで、元旦から実験医学増刊を読んでいた。仕事から離れて本を読めるなんて快適。在宅になって常に仕事をしている状態になっていたので、定期的に長期休暇を取って強制的に会社を切断しないといけないなと感じた。

深層学習の説明とか初心者にとってはいいのだろうけど、別冊なのでわかっている前提で組んでもよかったのではないだろうかと思うけど。個人的にはscRNA-seqの話は大変参考になった。それからレパトア解析と弱教師あり学習の章は面白かった。

それからこの本半分くらいしか読んでないけど、かなり面白いです。全部読んだらもう少し丁寧に感想を残すかもしれない。

ProductName 英文法の鬼100則 (アスカカルチャー)
明日香出版社 / ¥1,980 (2019-11-14)

Looking Back 2020

去年の振り返りはこちら。今年は色々あった気がする。特に後半は常にいいことと悪いことがセットでやってきて トータルちょっといい みたいな感じがデフォルトになってしまったので、まぁそういうもんかなと思うことにした。

仕事関連

組織とチームが大きく変わった。今まではcomputer chemistryのチームとして合成部門の中で適当に成果を追求していれば良かった、つまり、メディシナルケミストとしてプロジェクトにどう関わっていけばいいかを考えていれば良かったのだけど、上司も変わって、bioinformaticsのチームもマージされて幅広くマネジメントしなければいけなくなり苦労した。特に、Lead FindingとかLead Optimizationだけでなく5RでいうところのRight Target, Right Patientも担当範囲になったのでなかなか大変な一年であった。とはいえ、computer chemistryチームはプロアクティブに動けるメンバーばかりだったので相当助かった。新しく一緒に働くことになったbioinformaticsのチームはモチベーション高いし、薬理学の知識は十分あるので方向だけ揃えればとりあえずうまく成果がでそうなので良かったが、来年はもう少しBioinformaticsのコード書くスキルを上げていってなにか新しいことをやりたい。コンピューターサイエンティストはコードに自分の新しいアイデア込めてなんぼやしね。

それから、夏前にcomputer chemistryのチームに日本語をほとんど話せないインド人の方がジョインした関係でチームの共用語が英語に切り替わった。企業年金とかコンプライアンス教育とか賃金制度とかそういった日本語の文書を英語で説明しないといけなくて、どうすんのこれ?と思ったけど意外と慣れたw。それから彼はアカデミアからの転職なので色々刺激を受けているし彼のpaperworkにかける思いは非常に強くて「やっぱ論文書かないとなー」という気分にさせられる。

ちなみに、英語で表現できなくてもどかしい思いをするのはなぜかと考えた場合に、一番大きいのは使えるverbが少ないなーとかいうことかなと思ったので使えるverbを増やすようにしている。グラマーもっとちゃんと勉強しないとあかんなという気持ちになるのも良かったけどもSとOはなんとなく表現できるしな。以下の本は役に立った。

ProductName 外資系1年目のための英語の教科書
KADOKAWA / ¥2,079 (2020-03-14)

今年は低分子以外のモダリティに関してもSBDDで成果を出したし、X線結晶構造やクライオ電顕によらないSBDDにもチャレンジしたし、来年も引き続きSBDD力を高めていきたい。そしてcomputer chemistryとbioinformaticsのチームにもう少し人を増やしたいと思っている。

仕事以外

前述したようにうちのチームにジョインしたインド人の方が南インドの出身なので、そのあたりの食べ物に関してネホリンハホリンしたため南インド力(食)が向上した。それから色々本場のスパイスミックスを頂いたので新しい料理や調理法などを色々覚えた。コロナが落ち着いたらインドに舌の修行にでかけたいところ。

それから在宅勤務がデフォルトになったおかげで毎日ぬか床をかき混ぜる余裕を持てて、今年はぬか床と年を越せたのは嬉しい。来年はもう少しいい感じに漬けられるように精進したい。

他にはホームメードベーカリーのコネ機能を使えばラーメンの手打ちが簡単にできることに気づいて、パスタマシンを併用してラーメン作りが本格化したことか。加えてリパブリューの店長にラーメン指南を受けているし、静岡のエンジニアはカレーとラーメン作れてなんぼっていう風潮が出来上がっているっぽいのでこちらも精進必須ですな。というより、静岡のエンジニア界隈はいつも仲良くやれていて良いですね、素晴らしい。

悲しみとしてはmacのOSをアップグレードしたらTraktor Kontrol S4が動かんようになってしまったことでmk3買うかどうか本当に悩んでいる。

今年はコードを書く暇が殆どなかったのも振り返ってみると大変残念なことであったので、来年はもう少し書けるように工夫するというか書く。書かないといいアイデアも浮かばないし、ネタとして発表も出来なくて悲しい。

海外に遊びに行けなかったのは辛かった。かろうじてホーチミンに行けてラッキーだったがその後に予定していた台湾、バンコク、モントリオール、スペインは無理であった。

多分来年も似たような感じだろうから、沖縄にいってやちむん爆買したい。

生成モデルを使って何するの?

生成モデルを使ってより良い化合物提案を効率的に行うアプローチが今年もいくつも提案されています(新しいかどうかは別にして)。

最近だと、2017年に提案されたREINVENTのスコア関数を工夫し、ここにファーマコアを使うというものが出ています。

REINVENTは強化学習で方策をかえるやつだから、スコア関数だけ工夫をすれば色々出来て楽しいけど、実際のプロジェクトで成果を出そうと思うとセンスを問われますね。それから、せっかくファーマコフォアを使っているのだから多様なスキャフォールドを提案してきてほしいけど、REINVENTだとなかなか難しそうに感じるのだけどそのあたりどうなんでしょう?単に化合物ライブラリをファーマコフォアでヴァーチャルスクリーニングかけるほうが良い結果を得られるような気がします。

自分がこの手法に期待するとすれば、 市販化合物に存在せず、かつ合成可能であり、ファーマコフォアを満たす新規な化合物の提案 ということになるのかなと。

もう一つちょっと前にpublishされたのがVAEを使ったもので、ドッキングシミュレーションのスコア関数をたよりに潜在空間を探索するもの(多分、アブストしか読んでない)

ちなみにREINVENTのスコアにドッキングスコアを放り込む方法が既に提案されています。

ただ、ドッキングスコア自体がかなり荒い評価関数なのと、ドッキングポーズの推定がそもそもあまり精度が高くないのでまずはドッキングシミュレーションの精度を上げるほうが先に成すべきことなんではなかろうかと思ってしまいます。

個人的にはLead Optimizationのような骨格を決めてその周辺を探っていくようなフェーズではREINVENT使ってプロジェクトにあわせてスコア関数を工夫すればいいと思っているけど、それよりも前のフェーズで構造に多様性を求めたいフェーズでは潜在空間探索させるのがよいかなーと思っているのでVAE+SELFIESの組み合わせはかなり興味があります。こっちも工夫のしがいが沢山ありますしね。