Package: chemtsv2
ChemTSv2ChemTSv2[^13] is a refined and extended version of ChemTS[^1] and MPChemTS[^2].
The original implementations are available athttps://github.com/tsudalab/ChemTSandhttps://github.com/yoshizoe/mp-chemts, respectively.ChemTSv2 provides:easy-to-run interface by using only a configuration fileeasy-to-define framework for users' any reward function, molecular filter, and tree policyvarious usage examples in the GitHub repository[^13]: Ishida, S. and Aasawat, T. and Sumita, M. and Katouda, M. and Yoshizawa, T. and Yoshizoe, K. and Tsuda, K. and Terayama, K. (2023). ChemTSv2: Functional molecular design using de novo molecule generator.WIREs Computational Molecular Sciencehttps://wires.onlinelibrary.wiley.com/doi/10.1002/wcms.1680[^1]: Yang, X., Zhang, J., Yoshizoe, K., Terayama, K., & Tsuda, K. (2017). ChemTS: an efficient python library for de novo molecular generation.Science and Technology of Advanced Materials, 18(1), 972–976.https://doi.org/10.1080/14686996.2017.1401424[^2]: Yang, X., Aasawat, T., & Yoshizoe, K. (2021). Practical Massively Parallel Monte-Carlo Tree Search Applied to Molecular Design.In International Conference on Learning Representations.https://openreview.net/forum?id=6k7VdojAIKHow to setup :pushpin:Requirements :memo:Click to show/hide requirementspython: 3.11rdkit: 2023.9.1tensorflow: 2.14.1pyyamlpandas: 2.1.3joblibmpi4py: 3.1.5 (for massive parallel mode)ChemTSv2 with single process mode :red_car:Click to show/hide the instructioncdYOUR_WORKSPACE
python3.11-mvenv.venvsource.venv/bin/activate
pipinstall--upgradechemtsv2ChemTSv2 with massive parallel mode :airplane:Click to show/hide the instructionNOTE: You need to run ChemTSv2-MP on a server where OpenMPI or MPICH is installed.
If you can't find `mpiexec` command, please consult your server administrator to install such an MPI library.If you can use/prepare a server with MPI environment, please follow the (a) instruction; otherwise, please follow the (b) instruction.(a) Installation on a server WITH a MPI environmentcdYOUR_WORKSPACE
python3.11-mvenv.venvsource.venv/bin/activate
pipinstall--upgradechemtsv2[mp](b) Installation on a server WITHOUT a MPI environmentcondacreate-nmpchempython=3.11-cconda-forge# swith to the `mpchem` environmentcondainstall-cconda-forgeopenmpicxx-compilermpimpi4py=3.1.5
pipinstall--upgradechemtsv2How to run ChemTSv2 :pushpin:1. Clone this repository and move into itgitclonegit@github.com:molecule-generator-collection/ChemTSv2.gitcdChemTSv22. Prepare a reward filePlease refer toreward/README.md.
An example of reward definition for LogP maximization task is as follows.fromrdkit.ChemimportDescriptorsimportnumpyasnpfromchemtsv2.rewardimportRewardclassLogP_reward(Reward):defget_objective_functions(conf):defLogP(mol):returnDescriptors.MolLogP(mol)return[LogP]defcalc_reward_from_objective_values(objective_values,conf):logp=objective_values[0]returnnp.tanh(logp/10)3. Prepare a config fileThe explanation of options are described in theSupport option/functionsection.
The prepared reward file needs to be specified inreward_setting.
For details, please refer to a sample file (config/setting.yaml).
If you want to pass any value tocalc_reward_from_objective_values(e.g., weights for each value), add it in the config file.4. Generate moleculesChemTSv2 with single process mode :red_car:chemtsv2-cconfig/setting.yamlChemTSv2 with massive parallel mode :airplane:mpiexec-n4chemtsv2-mp--configconfig/setting_mp.yamlChemTSv2 with Dockerdockerbuild-tchemtsv2:1.0.0.
dockerrun-u$(id-u):$(id-g)\--rm\--mounttype=bind,source=./,target=/app/\chemtsv2:1.0.0\chemtsv2-cconfig/setting.yamlExample usage :pushpin:TargetRewardConfigAdditional requirementRef.LogPlogP_reward.pysetting.yaml--JscoreJscore_reward.pysetting_jscore.yaml-[^1]Absorption wavelengthchro_reward.pysetting_chro.yamlGaussian 16[^3]via QCforever[^10][^4]Absorption wavelengthchro_gamess_reward.pysetting_chro_gamess.yamlGAMESS 2022.2[^12] via QCforever[^10]Upper-absorption & fluorescencewavelengthfluor_reward.pysetting_fluor.yamlGaussian 16[^3]via QCforever[^10][^5]Kinase inhibitory activitiesdscore_reward.pysetting_dscore.yamlLightGBM[^6][^7]Docking scoreVina_binary_reward.pysetting_vina_binary.yamlAutoDock Vina[^8][^9]Pharmacophorepharmacophore_reward.pysetting_pharmacophore.yaml-[^11][^3]: Frisch, M. J. et al. Gaussian 16 Revision C.01. 2016; Gaussian Inc. Wallingford CT.
[^4]: Sumita, M., Yang, X., Ishihara, S., Tamura, R., & Tsuda, K. (2018). Hunting for Organic Molecules with Artificial Intelligence: Molecules Optimized for Desired Excitation Energies.ACS Central Science, 4(9), 1126–1133.https://doi.org/10.1021/acscentsci.8b00213[^5]: Sumita, M., Terayama, K., Suzuki, N., Ishihara, S., Tamura, R., Chahal, M. K., Payne, D. T., Yoshizoe, K., & Tsuda, K. (2022). De novo creation of a naked eye–detectable fluorescent molecule based on quantum chemical computation and machine learning.Science Advances, 8(10).https://doi.org/10.1126/sciadv.abj3906[^6]: Ke, G., Meng, Q., Finley, T., Wang, T., Chen, W., Ma, W., … Liu, T.-Y. (2017). Lightgbm: A highly efficient gradient boosting decision tree.Advances in Neural Information Processing Systems, 30, 3146–3154.
[^7]: Yoshizawa, T., Ishida, S., Sato, T., Ohta, M., Honma, T., & Terayama, K. (2022). Selective Inhibitor Design for Kinase Homologs Using Multiobjective Monte Carlo Tree Search.Journal of Chemical Information and Modeling, 62(22), 5351–5360.https://doi.org/10.1021/acs.jcim.2c00787[^8]: Eberhardt, J., Santos-Martins, D., Tillack, A. F., & Forli, S. (2021). AutoDock Vina 1.2.0: New Docking Methods, Expanded Force Field, and Python Bindings.Journal of Chemical Information and Modeling, 61(8), 3891–3898.https://doi.org/10.1021/acs.jcim.1c00203[^9]: Ma, B., Terayama, K., Matsumoto, S., Isaka, Y., Sasakura, Y., Iwata, H., Araki, M., & Okuno, Y. (2021). Structure-Based de Novo Molecular Generator Combined with Artificial Intelligence and Docking Simulations.Journal of Chemical Information and Modeling, 61(7), 3304–3313.https://doi.org/10.1021/acs.jcim.1c00679[^10]: Sumita, M., Terayama, K., Tamura, R., & Tsuda, K. (2022). QCforever: A Quantum Chemistry Wrapper for Everyone to Use in Black-Box Optimization.Journal of Chemical Information and Modeling, 62(18), 4427–4434.https://doi.org/10.1021/acs.jcim.2c00812[^11]: 石田祥一, 吉澤竜哉, 寺山慧 (2023). 深層学習と木探索に基づくde novo分子設計,SAR News, 44.
[^12]: Barca, Giuseppe M. J. et al. (2020). Recent developments in the general atomic and molecular electronic structure system.The Journal of Chemical Physics, 152(15), 154102.https://doi.org/10.1063/5.0005188Support option/function :pushpin:OptionSingle processMassive parallelDescriptionc_val:white_check_mark::white_check_mark:Exploration parameter to balance the trade-off between exploration and exploitation. A larger value (e.g., 1.0) prioritizes exploration, and a smaller value (e.g., 0.1) prioritizes exploitation.threshold_type:white_check_mark::heavy_check_mark:Threshold type to select how long (hours) or how many (generation_num) molecule generation to perform. Massive parallel mode currently supports only the how long (hours) option.hours:white_check_mark::white_check_mark:Time for molecule generation in hoursgeneration_num:white_check_mark::white_large_square:Number of molecules to be generated. Please note that the specified number is usually exceeded.expansion_threshold:white_check_mark::white_large_square:(Advanced) Expansion threshold of the cumulative probability. The default is set to 0.995.simulation_num:white_check_mark::white_large_square:(Advanced) Number of rollout runs in one cycle of MCTS. The default is set to 3.flush_threshold:white_check_mark::white_large_square:Threshold for saving the progress of a molecule generation. If the number of generated molecules exceeds the threshold value, the result is saved. The default is set to -1, and this represents no progress is to be saved.Molecule filter:white_check_mark::white_check_mark:Molecule filter to skip reward calculation of unfavorable generated molecules. Please refer to filter/README.md for details.RNN model replacement:white_check_mark::white_check_mark:Users can switch RNN models used in expansion and rollout steps of ChemTSv2. The model needs to be trained using Tensorflow.model_jsonspecifies the JSON file that contains the architecture of the RNN model, andmodel_weightspecifies the file in H5 format that contains a set of the values of the weights.Reward replacement:white_check_mark::white_check_mark:Users can use any reward function as long as they follow the reward base class (reward/reward.py). Please refer to reward/README.md for details.Policy replacement:white_check_mark::white_large_square:(Advanced) Users can use any policy function as long as they follow the policy base class (policy/policy.py). Please refer to policy/README.md for details.Restart:beginner::beginner:Users can save the checkpoint file and restart from the file. If users want to save a checkpoint file,(SP mode)setsave_checkpointto True and specify the file name incheckpoint_file. If users want to restart from the checkpoint, setrestartto True and specify the checkpoint file incheckpoint_file.(MP mode)under development.:white_check_mark: indicates that the option/function is supported.:heavy_check_mark: indicates that the option/function is partially supported.:beginner: indicates that the option/function is beta version.:white_large_square: indicates that the option/function is NOT supported.Filter functions are described infilter/README.md.Advanced usage :pushpin:Extend user-specified SMILESYou can extend the SMILES string you input.
In this case, you need to put the atom you want to extend at the end of the string and run ChemTS with--input_smilesargument as follows.chemtsv2-cconfig/setting.yaml--input_smiles'C1=C(C)N=CC(N)=C1C'Specify the last atom of SMILES string using OpenBabelOpenBabelcan be used to rearrange a SMILES string so that the specified atom comes last.
For example, if you want to rearrangeBrinNC1=CC(Br)=CC=C1to the last position, run the following command:# obabel -:"<SMILES>" -osmi -xl <atom no.># Atom numbers correspond to the order of atoms in an input SMILES string.# In this example, `Br` appears fifth, so we specify `5` as a <atom no.>.obabel-:"NC1=CC(Br)=CC=C1"-osmi-xl5# output: Nc1cc(ccc1)BrPlease refer to theofficial documentationfor detailed usage.Train RNN models using your own datasetIf you want to use the RNN models trained on your own datasets, usetrain_model/train_RNN.pyandtrain_model/model_setting.yamlto train the models.
You need to prepare a dataset that only contains SMILES string and modify the path indatasetkey inmodel_setting.yaml. And then, run the following command:cd train_model/
python train_RNN.py -c model_setting.yamlPlease note that the current version of ChemTSv2 does not support the change for RNN model structures, and users can only change the parameters described inmodel_setting.yaml.Once you train the RNN model, specify the path to the checkpoint and token files inmodel_settingandtokenkeys in ChemTSv2 config files to run ChemTSv2 with your own RNN model.GPU accelerationIf you want to use GPU, run ChemTS with--gpu GPU_IDargument as follows.chemtsv2-cconfig/setting.yaml--gpu0How to cite@article{Ishida2023,
  doi = {10.1002/wcms.1680},
  url = {https://doi.org/10.1002/wcms.1680},
  year = {2023},
  month = jul,
  publisher = {Wiley},
  author = {Shoichi Ishida and Tanuj Aasawat and Masato Sumita and Michio Katouda and Tatsuya Yoshizawa and Kazuki Yoshizoe and Koji Tsuda and Kei Terayama},
  title = {ChemTSv2: Functional molecular design using de novo molecule generator},
  journal = {{WIREs} Computational Molecular Science}
}License :pushpin:This package is distributed under the MIT License.Contact :pushpin:Shoichi Ishida (ishida.sho.nm@yokohama-cu.ac.jp)Kei Terayama (terayama@yokohama-cu.ac.jp).