tky_cowのブログ

python + chemistry, webの技術メモ等

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)を以下のように編集します。設定ファイルがエディターなどでもかなり見難いので、jsonxmlにして欲しい所です。。

db.par

 このファイルでアノテーションファイルの在りか、BBフィルター条件を設定します。

db.parの設定
par.par

 このファイルでは矢印で示した5箇所を編集します。何サイクルのDELかで数値を調整する必要があります。下から二番目ではBBTの出力先を指定し、一番下の反応定義はLillyMol内にあるのでそちらを指定します。

par.parの設定
path.par

 こちらでは途中の作業フォルダ名を設定します。実行した日付と、中間値に設定した重原子数を付けていたようなのでそれに従っています。自動で日付がつく部分があるので、日付は実行日にしておいた方が良いようです。

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として書き出されます。中身は以下のようになっており、全てのライブラリー情報が一つのファイルにまとまっていますので、特定の情報を抜き出すにはパースする必要があります。

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の使い方を見てきました。本ツールに限らず、オープンソースツールを使って色々なモダリティに手を出すことができるようになってきています。うまく活用できるようになっていきたいなと思います。