RoboBohr is a machine learning framework for predicting electronic structure of molecules. RoboBohr currently has 4 modes of operation:
- 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.
- createFeatures: From the list of objects generated in the query step, creates a design matrix and saves on file.
- cluster: Creates job submission files for submitting the pwscf input files in an HPC environment. Torque and Slurm scheduling systems are supported.
- 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.