This is a repository for paper "Towards Data-driven Design of Asymmetric Hydrogenation of Olefins: Database and Hierarchical Learning". Here, you can find scripts used in this study.
👉️The full AHO dataset is available at AHO-Dataset.zip. 👈️
The online database server can be accessed at http://asymcatml.net/
Asymmetric hydrogenation of olefins is one of the most powerful asymmetric transformations in molecular synthesis. Although several privileged catalyst scaffolds are available, the catalyst development for asymmetric hydrogenation is still a time- and resource-consuming process due to the lack of predictive catalyst design strategy. Targeting the data-driven design of asymmetric catalysis, we herein report the development of a standardized database that contains the detailed information of over 12000 literature asymmetric hydrogenations of olefins. This database provides a valuable platform for the machine learning applications in asymmetric catalysis. Based on this database, we developed a hierarchical learning approach to achieve predictive machine leaning model using only dozens of enantioselectivity data with the target olefin, which offers a useful solution for the few-shot learning problem in the early stage of catalysis screening.

In order to run Jupyter Notebook for machine learning application demonstration, several third-party python packages are required.
python>=3.8.5
numpy>=1.19.2
pandas>=1.2.0
ase>=3.21.0
dscribe>=1.0.0
rdkit>=2019.09.3
openbabel>=3.1.0
scikit-learn>=0.23.2
mordred>=1.2.0
matplotlib>=3.3.2
We suggest using Anaconda to install the python 3.8.5 or higher version, as conda and pip together make the installation of these dependences much easier. All test are executed under Ubuntu 18.04, as the dscribe package currently only support Unix-based systems.
We suggest using Anaconda to prepare dependence as many packages are built-in Anaconda base environment. For those packages not built-in, you may input following commands to install them and follow the installation instructions.
conda install ase
pip install dscribe
conda install rdkit -c rdkit
conda install openbabel -c conda-forge
conda install -c rdkit -c mordred-descriptor mordred
Here we provide several tutorials in Jupyter Notebook format to demonstrate how to generate descriptors with provided reaction data, train machine learning model and use hierarchical learning approach to handle few-shot learning problem.
You can find information about reaction of Asymmetric Hydrogenation over there.
If the database or hierarchical learning is used in your publication, please cite as: Xu, L. -C.; Zhang, S. -Q.; Li, X.; Tang, M. -J.; Xie, P. -P.; Hong, X. Angew. Chem. Int. Ed. 2021, 60, 22804.
Email: hxchem@zju.edu.cn; licheng_xu@zju.edu.cn
Project Name: Asymmetric Hydrogenation of Olefins (AHO)
Goal: Fix Windows compatibility, resolve expired external dataset URLs, and improve code stability under modern Matplotlib and RDKit environments.
Test Environment: Windows 11/10 | Python 3.10 | RDKit | Scikit-Learn | Matplotlib
examples/mlutils.py
Fixed invalid LaTeX math syntax indrawregfigby replacing\itGwith standardG(ΔΔG). Addedtry-exceptexception guard aroundplt.tight_layout().
-
examples/01-generate_descriptors.ipynb
Replaced Linux-specific bash commands (! wget,! unzip) with cross-platform Pythonzipfileextraction logic. -
examples/02-train_simple_ML_model.ipynb
Replaced%matplotlib notebookwith%matplotlib inline. Added fallback logic to extract localdatasets_for_fig_4.zipand generate dataset matrices (resolving expiredasymcatml.netURLs). -
examples/03-hierarchical_learning.ipynb
Wrappedfrom rdkit.Chem import Drawintry-exceptto prevent Windows GUI DLL load failures. Replaced! cat /proc/cpuinfowithos.cpu_count(). Updateddisplay.set_matplotlib_formats('svg')to standardset_matplotlib_formats('svg'). -
examples/04-generate_correct_chiral_biaryl.ipynb
Addedos.makedirs('./biaryl', exist_ok=True)to ensuremol_1.sdfexports smoothly. -
examples/05-generate_correct_molecule_contain_ferrocene.ipynb
Addedtry-exceptguard forDrawimport and display. Included missing ferrocene templateexamples/Ferr/Ferr_std_reverse.sdf. -
examples/06-show_olefins_approaching_PCA.ipynb
Replaced%matplotlib notebookwith%matplotlib inline. AddedDrawimport guard.
-
examples/Ferr/Ferr_std_reverse.sdf
Generated reverse ferrocene 3D template file by flipping X coordinates ofFerr_std.sdf. -
examples/data/screening_desc_ensemble.npz
Preprocessed descriptor ensemble dataset generated from localrelated_dataset_a.csv. -
examples/data/target.npz
Preprocessed target dataset. -
examples/data/hierarchical_learning_set.npz
Preprocessed hierarchical learning dataset.
- Problem: Original code used Linux-specific bash commands (
! wget,! unzip,! mv,! cat /proc/cpuinfo), causing syntax errors or missing command failures on Windows. - Solution: Refactored logic using Python standard library modules (
os,zipfile,sys) to ensure out-of-the-box execution across Windows, macOS, and Linux.
- Problem: Original code relied on external laboratory server
http://asymcatml.net/download/..., which is now unreachable (404 Error). - Solution: Added automated extraction and RDKit descriptor fallback using local
datasets_for_fig_4.zip, eliminating external server dependency.
- Problem:
- Matplotlib math parser throws
ValueError: Unknown symbol: \itGfor legacy\itGLaTeX syntax. %matplotlib notebooktriggersIPython is not definedJavaScript error in modern JupyterLab.- RDKit
Drawimport fails on Windows environments missing GUI/Cairo C++ DLLs.
- Matplotlib math parser throws
- Solution: Switched to
%matplotlib inline, updated LaTeX\itGtoG, and addedtry-exceptguards aroundDrawimports.