Machine learning framework for electronic structure prediction of molecules
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Cython First commit Sep 9, 2016
data Added readme to data Sep 20, 2016
src Updated Oct 19, 2016
utils Updated utils Aug 31, 2017
LICENSE Update Aug 17, 2017


RoboBohr is a machine learning framework for predicting electronic structure of molecules. RoboBohr currently has 4 modes of operation:

  1. query: Reads input sdf files and creates list of objects that contain types of atoms and coordinates for each entry in the sdf input. The list of these objects are then used to create input files for the pwscf code of the Quantum Espresso package.
  2. createFeatures: From the list of objects generated in the query step, creates a design matrix and saves on file.
  3. cluster: Creates job submission files for submitting the pwscf input files in an HPC environment. Torque and Slurm scheduling systems are supported.
  4. outcomes: Analyzes the output files generated from pwscf runs and stores relevant outcome quantities (e.g. ground state energies) and creates a log file.


The sdf data files can be downloaded from the PubChem database. Specifically, their FTP server has all the data in sdf file format. In the examples provided, the Compound_3D/01_conf_per_cmpd/ folder has been used to generate molecular data.

There a sereval choices of features that are available. These include, pair-distances and Coulomb matrices. The Coulomb matrix features allows random copies of the same molecule with re-shuffled indices as well as the eigenspectrum for feature matrix construction.

In the folder utils simple utilies are included to download the whole PubChem data and parse it into JSON. This allows feature engineering besides the Coulomb Matrix representation for future studies.


The main part of RoboBohr is written in Python with extensions written in C (wrapped using Cython). The data analsysis, visualization and training of learning algorithms are performed by R scripts included in the repo.


The preprint of the article explaining RoboBohr can be accessed from here. An illustration of results from RoboBohr and alaysis performed in R can be found in the RPubs article