eDESIGNERを使ってみる(実行編)
前回までに引き続き、オープンソースのDELツールであるeDESIGNERの使い方です。今回はいよいよ本体のスクリプトを実行していきます。環境構築とBBT_input.txtファイルの作成はしてあるものとします。やり方は前2回の記事でまとめています。
DNA Encoded Library (DEL)用のOSSであるeDESIGNERの使い方 - tky_cowのブログ
eDESIGNERを使ってみる(前処理編) - tky_cowのブログ
作業ディレクトリの構成
eDESIGNERのgithubレポジトリを手元にクローンし、/edesigner_core/edesigner/ で作業していくものとします。フォルダ構成は以下のようになっています。
%tree -F -d . ├── BBprep ├── classes │ └── __pycache__ └── resources
BBprepというフォルダを作成し、その中でBBT_input.txtファイルを作成してあります。
BBprep/ ├── BBT_input.txt ├── prepare_bbt_input.py ├── run.sh* ├── sample_annot.txt └── sample_bb.smi
resourcesフォルダには設定ファイルが保存されており、まずはこちらの編集を行います。
resources/ ├── EDESIGNER_PAR_publication_version.v.10.xlsx* ├── antifg.par* ├── calcfg.par* ├── db.par* ├── deprotection.par* ├── enum_deprotection.par* ├── enum_reaction.par* ├── fg.par* ├── headpieces.par* ├── par.par* ├── path.par* └── reaction.par*
設定ファイルの編集
resources以下に入っている3つのファイル(db.par, par.par, path.par)を以下のように編集します。設定ファイルがエディターなどでもかなり見難いので、jsonやxmlにして欲しい所です。。
db.par
このファイルでアノテーションファイルの在りか、BBフィルター条件を設定します。
par.par
このファイルでは矢印で示した5箇所を編集します。何サイクルのDELかで数値を調整する必要があります。下から二番目ではBBTの出力先を指定し、一番下の反応定義はLillyMol内にあるのでそちらを指定します。
path.par
こちらでは途中の作業フォルダ名を設定します。実行した日付と、中間値に設定した重原子数を付けていたようなのでそれに従っています。自動で日付がつく部分があるので、日付は実行日にしておいた方が良いようです。
BBTの作成
設定ができたのでいよいよ実行していきます。
conda activate edesigner # 出力先フォルダ準備 mkdir bbt # e_bbt_creater.pyの実行 ./run_e_bbt_creater.sh e_bbt_creator.v.9.0.0 Creating db run folder... Generating BB types... Reading compound sets... Reading Test collection ... Processing chunk 1 with 1000 records... 731 records remained after filtering by antidel FGs 687 records remained after filtering by belonging to a BBT 687 records remained after desalting smiles 687 records remained after removing molecules with incalculable n atoms 687 records remained after removing molecules with incalculable excess n atoms 678 records remained after removing compounds with excess natoms 678 records remained after pooling chunks A total of 678 records before combination and elimination of duplicates A total of 678 records remained after combination and elimination of duplicates Updating BBTs... Reporting compound files... pickling BBTs object... Reporting BBTs file... Run time = 0.0 min OK
pandas関係のwarningが出たりしますが、上記のような表示が出ていれば成功です。compsとdataフォルダが作られ、以下のようなファイルができていると思います。
% tree -F comps comps/ └── 20230428/ ├── 1.smi ├── 124.smi ├── 128.smi ├── 130.smi ├── 132.smi ├── 133.smi ├── 136.smi ~~~~~~~~略~~~~~~~~~ % tree -F data data/ ├── 20230428_BBT_report.csv └── 20230428_BBTs.pic
eDESIGNsの作成
続いて論文中で言う所のeDESIGNsを作成するためには、e_designer.pyを実行します。run_とついている方を使ってもいいですが、run_*系のスクリプトは所定のフォルダが作られているか確認した後に、pythonスクリプトを実行するだけですので、python直接実行でも変わりません。
% python e_designer.py e_designer.v.9.0.0 Loading BBTs... Creating reaction indexes... Creating designs... Creating headpieces... this round number designs = 6 cycle 0 number designs = 6 Saving designs to file... Creating cycle 1... Reading from disk from design number 0... Processing 6 designs... Time to expand designs: 1.0 seconds Writting to disk 271 designs... cycle 1 number designs = 271 Creating cycle 2... Reading from disk from design number 0... Processing 271 designs... Time to expand designs: 1.0 seconds Writting to disk 5622 designs... cycle 2 number designs = 5622 Creating cycle 3... Reading from disk from design number 0... Processing 5622 designs... Time to expand designs: 4.0 seconds Removing desings with not enough size... Adding lib_id to designs... Maintaining lib_id dictionary... Adding desing_id to desings... Writting to disk 38736 designs... cycle 3 number designs = 46659 Numebr of designs after removing low density desings: 38736 Number of library ids generated: 3065 Saving lib_id_list to file... Running time: 0.1 min. OK
こんな表示になれば成功です。この例ではBBが1000個入ったデータを使いましたが、可能な3サイクルのDELは結構な数になることが見て取れます。このツールを使う利点の一つでもあると思います。dataフォルダにファイルが増えていることを確認できます。
% tree -F data data/ ├── 20230428_3Cboth34_0.pic ├── 20230428_3Cboth34_1.pic ├── 20230428_3Cboth34_2.pic ├── 20230428_3Cboth34_3.pic ├── 20230428_3Cboth34_lib_id_list.pic ├── 20230428_BBT_report.csv └── 20230428_BBTs.pic
libDESIGNsの作成
次に、lib_designer.pyを使ってlibDESIGNsを作っていきます。ここも実行するだけです。
% python lib_designer.py lib_designer.v.9.0.0 Loading BBTs... Loading dictionary of libraries... Creating libraries for 3065 library ids Reading designs... Processing libraries... Processing 3065 libraries... 72 libraries remaining after removing those that do not fulfill the criteria Saving libraries to disk... Running time: 0.6 min. OK % tree -F results results/ └── 20230428_3Cboth34_libDESIGNS.pic
ここで候補のライブラリー情報が読み取られ、par.parに記載した条件を満たすようなライブラリーのみに絞り込まれます。結果は、上に示したように、resultsフォルダ下にpickleオブジェクトとして保存されます。
library configの出力
最終ステップとして、lib_design_interpreter.py を使って各ライブラリーのレシピ情報のようなファイルを作成します。
% python lib_design_interpreter.py lib_design_interpreter.v.9.0.0 Loading BBTs... Loading pickled designs to object... Creating config.txt file... Translated 72 library designs Running time: 0.0 min. OK % tree -F results results/ ├── 20230428_3Cboth34_config.txt └── 20230428_3Cboth34_libDESIGNS.pic
フィルターを通過した72のライブラリー情報が変換され、resultsフォルダに_configとして書き出されます。中身は以下のようになっており、全てのライブラリー情報が一つのファイルにまとまっていますので、特定の情報を抜き出すにはパースする必要があります。
Start enumeration instructionsからEnd enumeration instructionsまでが一つのDELの情報となっており、今回の場合は72種のDEL情報が一つのファイルに含まれています(.INTERNALと.ALLは同じなので144)。INTERNALのBBとEXTERNALを分けて準備した場合別に使えるようにという配慮のようです。
どのように活用するか
ここまででeDESIGNERの基本的な機能を使いましたので、どのように活用できそうか考えてみます。
- トータルバランスの悪いBBの除外
- 新たに作るライブラリー案のアイデア出し
- 作る前に構造発生して物性値分布の確認
トータルバランスの悪いBBの除外
設定した条件を満たすようなBB、ライブラリーが残ってくるのでフィルターとして使えます。
新たに作るライブラリー案のアイデア出し
反応やBBの組み合わせが網羅的に出てきますので、内容を読み取れば意外なBBや反応の組み合わせが見つかることがあります。
作る前に構造発生して物性値分布の確認
ここまでの機能だけではできませんが、configに従って構造発生することで事前に物性値を計算することができます。
まとめ
記事3つ分かかってしまいましたが、eDESIGNERの使い方を見てきました。本ツールに限らず、オープンソースツールを使って色々なモダリティに手を出すことができるようになってきています。うまく活用できるようになっていきたいなと思います。