tky_cowのブログ

python + chemistry, webの技術メモ等

eDESIGNERを使ってみる(番外編)


 前回まででeDESIGNERのメインの機能は使い終わりましたが、全スクリプトの半分ほどしか使っていませんでした。他のスクリプトはどんな機能があるのか見ていきましょう。

e_bb_retriever.py

 主要スクリプト以外で、おそらく一番重要なスクリプトです。ライブラリーconfigファイルに出力された各ライブラリーの構造発生に使うBB構造を集めてくれるスクリプトです。使い方は以下の通りで、dfに構造発生したいライブラリーの番号を指定します。ofは結果が出力されるフォルダです。

% python e_bb_retriever.py -tk 20230428_3Cboth34 -df 1 -of design1
e_bb_retriever.v.9.0.0
Loading pickled designs to object...
Creating dataframes and dumping them into files...
OK

% tree -F design1 
design1/
├── 20230428_3Cboth34_1_C1_all.csv
├── 20230428_3Cboth34_1_C1_int.csv
├── 20230428_3Cboth34_1_C2_all.csv
├── 20230428_3Cboth34_1_C2_int.csv
├── 20230428_3Cboth34_1_C3_all.csv
└── 20230428_3Cboth34_1_C3_int.csv

それぞれのサイクルで必要なBB情報がcsvに書き出されています。intはインターナルの略です(今回の場合はallと同じもの)。含まれる情報はシンプルで、以下のようになっています。

% head -n 5 design1/20230428_3Cboth34_1_C3_all.csv
smiles,id
CC(C)CNCC(C)O,9:1_Test:test_420
CC(C)CNCCCO,9:1_Test:test_287
CN[C@H]1CCCC[C@@H]1O,9:1_Test:test_88
OCCNCc1cccs1,10:1_Test:test_320

sample_generator.py

 こちらも機能としては有用なスクリプトなのですが、如何せん使い勝手が悪いです。。上記e_bb_retriever.pyで取り出したサイクル毎のBB情報を使って、全体構造を発生させることができるようです。しかし、各サイクルで使う連結反応や脱保護反応をSMARTS形式で指定する必要があるようで、省略もできません。eDESIGNERで使っているrxnはSMARTSとは異なる記法で書かれており、変換する術を見つけられていません。よって、挙動を試すことも出来ていません。。

bbt_analyzer.py

 BBTオブジェクトを解析してくれるスクリプトのようです。/github/edesigner_core/edesignerにいるとして、以下のように使います。

% python bbt_analyzer.py -ts 20230428 
bbt_analyzer.v.9.0.0
reading BBTs...
performing nbbs by natoms and multi analysis...
performing nbbs by natoms and multi analysis...
Running time: 0.1 sec.
OK

% 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
├── 20230428_nbbs_by_bbt_and_multi_analysis.csv
└── 20230428_nbbs_by_natoms_and_multi_analysis.csv

dataフォルダの下に二つのファイル(_nbbs_)が出力されています。

% head -n 5 ./data/20230428_nbbs_by_bbt_and_multi_analysis.csv
bbt index,bbt name,source,multiplicity,number bbs,log(number bbs),order
16,NO_FG;NO_FG;SEC_BOC,ALL,1,1,0.0,0.0
19,NO_FG;NO_FG;calc_ARYLIODIDE,ALL,1,1,0.0,1.0
22,NO_FG;NO_FG;calc_AMINES_AROMATIC_PRIMARY,ALL,1,2,0.3010299956639812,2.0
14,NO_FG;NO_FG;ESTERS_METHYL_ETHYL,ALL,1,3,0.47712125471966244,3.0

% head -n 5 ./data/20230428_nbbs_by_natoms_and_multi_analysis.csv 
number atoms,multiplicity,source,number bbs
8,1,ALL,0
9,1,ALL,3
10,1,ALL,5
11,1,ALL,13

lib_bb_analyzer.py

 BBデータの分析結果を出力するスクリプトです。

% python lib_bb_analyzer.py -ts 20230428 -tg 3Cboth34
lib_bb_analyzer.v.9.0.0
Reading bbts..
Reading lib designs...
analyzing lib designs...
analyzing bb usage...
lib_bb_analyzer.py:169: RuntimeWarning: invalid value encountered in divide
  times_array = bbs_array / ubbs_array
96
Running time: 0.1 sec.
OK

% tree -F ./data 
./data/
├── 20230428_3Cboth34_0.pic
├── 20230428_3Cboth34_1.pic
├── 20230428_3Cboth34_2.pic
├── 20230428_3Cboth34_3.pic
├── 20230428_3Cboth34_bb_analysis.csv
├── 20230428_3Cboth34_deprotection_analysis.csv
├── 20230428_3Cboth34_lib_id_list.pic
├── 20230428_3Cboth34_reaction_analysis.csv
├── 20230428_BBT_report.csv
├── 20230428_BBTs.pic
├── 20230428_nbbs_by_bbt_and_multi_analysis.csv
└── 20230428_nbbs_by_natoms_and_multi_analysis.csv

dataフォルダにanalysisと付くcsvファイルが三つ作られています。

% head -n 5 ./data/20230428_3Cboth34_bb_analysis.csv 
number atoms,multiplicity,source,number of BBs,number of unique BBs,unique BBs usage
8,all,ALL,36,1,36.0
9,all,ALL,597,16,37.3125
10,all,ALL,547,20,27.35
11,all,ALL,624,28,22.285714285714285

% head -n 5 ./data/20230428_3Cboth34_deprotection_analysis.csv
rindex,count,reaction name
3,54,6.1.1_N-Boc_deprotection_FROM_boc_AND_Null.rxn
6,30,9.7.61_Ester_hydrolysis_FROM_esters_methyl_ethyl_AND_Null.rxn

% head -n 5 ./data/20230428_3Cboth34_reaction_analysis.csv    
rindex,count,reaction name
27,60,2.1.2_Carboxylic_acid_+_amine_condensation_FROM_carboxylic_acids_AND_amines.rxn
26,54,2.1.2_Carboxylic_acid_+_amine_condensation_FROM_amines_AND_carboxylic_acids.rxn
61,30,9.7.8_Amino_to_guanidino_FROM_amines_aliphatic_AND_amines_aliphatic.rxn
3,24,1.3.1_Bromo_Buchwald-Hartwig_amination_FROM_arylbromide_AND_amines_aromatic.rxn

incompatibility_mapper.py

 官能基、反応の組み合わせが共存可能かのリストを出力するスクリプトです。

% python incompatibility_mapper.py       
incompatibility_mapper.v.1.0.0
type "incompatibility_mapper.py -h" for help
Importing modules...
incompatibility_mapper.v.1.0.0
creating FG incompatibility fileincompatibility...
creating reaction incompatibility fileincompatibility...
creating deprotection incompatibility fileincompatibility...
Running time: 0.0 min.
OK

% tree -F ./data 
./data/
~~~
├── deprotection_incompatibility.txt
├── fg_incompatibility.txt
└── reaction_incompatibility.txt

dataフォルダ下に_incompatibility.txtというファイルが3つ作成されます。

 % head -n 5 ./data/deprotection_incompatibility.txt
Deprotection	FG	onDNAincompatible
0.0.0_NO_REACTION_FROM_Null_AND_Null	NO_FG	0
0.0.0_NO_REACTION_FROM_Null_AND_Null	ALDEHYDES	0
0.0.0_NO_REACTION_FROM_Null_AND_Null	ALKYNES_TERMINAL	0
0.0.0_NO_REACTION_FROM_Null_AND_Null	AMINES_ALIPHATIC_SECONDARY	0

% head -n 5 ./data/fg_incompatibility.txt          
FG1	FG2	incompatible
NO_FG	NO_FG	0
NO_FG	ALDEHYDES	0
NO_FG	ALKYNES_TERMINAL	0
NO_FG	AMINES_ALIPHATIC_SECONDARY	0

% head -n 5 ./data/reaction_incompatibility.txt 
Reaction	FG	onDNAincompatible	offDNAincompatible
0.0.0_NO_REACTION_FROM_Null_AND_Null	NO_FG	0	0
0.0.0_NO_REACTION_FROM_Null_AND_Null	ALDEHYDES	0	0
0.0.0_NO_REACTION_FROM_Null_AND_Null	ALKYNES_TERMINAL	0	0
0.0.0_NO_REACTION_FROM_Null_AND_Null	AMINES_ALIPHATIC_SECONDARY	0	0

ほぼ備忘録のような形になりましたが、これで一通りeDESIGNERの機能を網羅しました。有効活用していきたいですね。