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の機能を網羅しました。有効活用していきたいですね。