CatApp database

Dr. Jens S. Hummelshøj, Dr. Frank Abild-Pedersen, Dr. Felix Studt, Dr. Thomas Bligaard and Prof. Jens K. Nørskov

CatApp: A Web Application for Surface Chemistry and Heterogeneous Catalysis

Angewandte Chemie International Edition, Volume 51, Issue 1, pages 272–274, January 2, 2012

The data

The csv-file has been converted to an ASE db-file using this script:

import csv
import ase.db
from ase import Atoms

reader = csv.reader(open('catappdata.csv'))
next(reader)  # skip header
with ase.db.connect('catapp.db', append=False) as con:
    for er, ea, surface, ab, a, b, ref, url, dataset in reader:
        if surface.startswith('HH- '):
            surf = surface[4:]
            surf = surface
        keys = {}
        words = surf.split()
        if len(words) == 2:
            surf, keys['site'] = words
            surf, = words
        symbols, facet = surf.split('(')
        facet = '(' + facet
        symbols = symbols.replace('-', '')
        atoms = Atoms(symbols, pbc=(True, True, False))
        a, b, ab = (x if x[:2] != 'hf' else x[2:] + '/2' for x in [a, b, ab])
        for xc in ['RPBE', 'PW91', 'BEEF']:
            if xc in dataset:
            xc = '???'
        if ea:
            keys['ea'] = float(ea)
        con.write(atoms, a=a, b=b, ab=ab, er=float(er),
                  surface=surface, facet=facet,
                  xc=xc, ref=ref, url=url, dataset=dataset,

Key-value pairs

key description unit
a Reactant A  
ab Product AB  
b Reactant B  
dataset Description of calculation  
facet Surface facet  
reference Reference  
site Adsorption site  
surface Description of surface  
url Link to reference  
xc XC-functional  

Methane example

Here we look at the correlation between the activation and reaction energy for this reaction:

\[\text{H}* + \text{CH}_3* \rightarrow \text{CH}_4\]
# creates: ch4.svg
import matplotlib.pyplot as plt
import ase.db

con = ase.db.connect('catapp.db')
x = []
y = []
for row in'H*', b='CH3*'):
plt.plot(x, y, 'o', label='H*+CH3*->CH4')
plt.xlabel('reaction energy [eV]')
plt.ylabel('activation energy [eV]')