Welcome to echemdb’s documentation!

Binder DOI

This echemdb module provides a Python library to interact with a database of frictionless datapackages containing electrochemical data following echemdb’s metadata schema. Such a database can be generated from the data on echemdb.org or from local files.

Examples

The currently available data shown on echemdb.org can be downloaded and stored in a database.

from echemdb.cv.cv_database import CVDatabase
db = CVDatabase()
db.describe()
{'number of references': 39,
 'number of entries': 195,
 'materials': {'Ag', 'Au', 'Cu', 'Pt', 'Ru'}}

Filtering the database for entries having specific properties, e.g., containing Pt as working electrode material, returns a new database.

db_filtered = db.filter(lambda entry: entry.system.electrodes.working_electrode.material == 'Pt')
db_filtered.describe()
/home/runner/work/echemdb/echemdb/echemdb/cv/cv_database.py:83: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.
  pd.unique(pd.Series([entry.get_electrode("WE").material for entry in self]))
{'number of references': 0, 'number of entries': 0, 'materials': set()}

A single entry can be retrieved with the identifiers provided on the website (see for example engstfeld_2018_polycrystalline_17743_f4b_1)

entry = db['engstfeld_2018_polycrystalline_17743_f4b_1']

Each entry has a set of descriptors such as its source or the electrochemical system.

entry.source # or entry['source']
{'citation key': 'engstfeld_2018_polycrystalline_17743', 'url': 'https://doi.org/10.1002/chem.201803418', 'techniques': ['XPS', 'STM'], 'figure': '1', 'curve': '1', 'bibdata': '@article{engstfeld_2018_polycrystalline_17743,\n    author = "Engstfeld, Albert K and Maagaard, Thomas and Horch, Sebastian and Chorkendorff, Ib and Stephens, Ifan EL",\n    title = "Polycrystalline and single-crystal Cu electrodes: influence of experimental conditions on the electrochemical properties in alkaline media",\n    journal = "Chem.-Eur. J",\n    volume = "24",\n    number = "67",\n    pages = "17743--17755",\n    year = "2018",\n    abstract = "Single and polycrystalline Cu electrodes serve as model systems for the study of the electroreduction of CO2, CO and nitrate, or for corrosion studies; even so, there are very few reports combining electrochemical measurements with structural characterization. Herein both the electrochemical properties of polycrystalline Cu and single crystal Cu(1 0 0) electrodes in alkaline solutions (0.1 m KOH and 0.1 m NaOH) are investigated. It is demonstrated that the pre-treatment of the electrodes plays a crucial role in determining their electrochemical properties. Scanning tunneling microscopy, X-ray photoelectron spectroscopy and cyclic voltammetry are performed on Cu(1 0 0) electrodes prepared under UHV conditions; it is shown that the electrochemical properties of these atomically well-defined electrodes are distinct from electrodes prepared by other methods. Also highlighted is the significant role of residual oxygen and electrolyte convection in influencing the electrochemical properties."\n}\n'}

The data related to an entry can be returned as a pandas dataframe (values are provided in SI units).

entry.df.head()
t E j
0 0.000000 -0.196962 0.043009
1 0.011368 -0.196393 0.051408
2 0.030365 -0.195443 0.058212
3 0.050365 -0.194443 0.062875
4 0.055176 -0.194203 0.063810
entry.field_unit('E')
'V'

The dataframe can be returned with custom or original figure axes’ units by rescaling the entry.

entry.rescale({'E' : 'mV', 'j' : 'uA / m2'}).df.head()
t E j
0 0.000000 -196.961730 43008.842162
1 0.011368 -196.393321 51408.199892
2 0.030365 -195.443463 58212.028842
3 0.050365 -194.443463 62874.687137
4 0.055176 -194.202944 63810.108398
original_entry = entry.rescale('original')
original_entry.df.head()
t E j
0 0.000000 -0.196962 4.300884
1 0.011368 -0.196393 5.140820
2 0.030365 -0.195443 5.821203
3 0.050365 -0.194443 6.287469
4 0.055176 -0.194203 6.381011

The data can be visualized in a plotly figure:

original_entry.plot()

Installation

This package is available on PiPY and can be installed with pip:

pip install echemdb

The package is also available on conda-forge an can be installed with conda:

conda install -c conda-forge echemdb

See the installation instructions for further details.

License

The contents of this repository are licensed under the GNU General Public License v3.0 or, at your option, any later version.