echemdb
The electrochemical data shown on the echemdb.org website can be stored in a collection.
from unitpackage.cv.cv_collection import CVCollection
db = CVCollection.from_remote()
type(db)
unitpackage.cv.cv_collection.CVCollection
Collection
In contrast to the Collection
object described in the usage section, CVCollection
provides data specific functionality. All other functionalities of the base class also apply here.
For example, statistics of the collection can be shown.
Show statistics of the collection
db.describe()
{'number of references': 44,
'number of entries': 205,
'materials': {'Ag', 'Au', 'Cu', 'Pt', 'Ru'}}
Metadata
The entries have properties which allow for more convenient filtering of the collection.
db_filtered = db.filter(lambda entry: entry.get_electrode('WE').material == 'Pt')
db_filtered.describe()
{'number of references': 19, 'number of entries': 130, 'materials': {'Pt'}}
Single entries can be selected by their identifier provided on echemdb.org for each entry.
entry = db['engstfeld_2018_polycrystalline_17743_f4b_1']
type(entry)
unitpackage.cv.cv_entry.CVEntry
entry.package
provides a full list of available descriptors.
As indicated above, electrodes used to record the data are listed in the system.electrodes
descriptor and are accessible with
entry.get_electrode('WE')
{'name': 'WE', 'function': 'working electrode', 'crystallographic orientation': '100', 'geometric electrolyte contact area': {'unit': '1 / cm2'}, 'material': 'Cu', 'preparation procedure': {'description': ['Sputter and heating under UHV conditions.']}, 'shape': {'diameter': {'unit': 'mm', 'value': 4.4}, 'height': {'unit': 'mm', 'value': 2}, 'type': 'head shaped'}, 'source': {'manufacturer': 'Mateck'}}
Note
Usually measurements are performed in a three electrode configuration, with a working electrode WE
, a counter electrode CE
, and a reference electrode REF
.
Data
In a freshly created collection all values of in the dataframe are in SI units.
entry.df.head(5)
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 |
The original units in the published figure are stored as metadata.
entry.figure_description
{'version': 1, 'type': 'digitized', 'simultaneous measurements': [], 'measurement type': 'CV', 'fields': [{'name': 'E', 'type': 'number', 'unit': 'V', 'orientation': 'x', 'reference': 'RHE'}, {'name': 'j', 'type': 'number', 'unit': 'uA / cm2', 'orientation': 'y'}], 'comment': 'Small humps around 0.3 to 0.45 V are complicated to digitize.', 'scan rate': {'value': 50.0, 'unit': 'mV / s'}}
An entry can be rescaled to these original units.
original_entry = entry.rescale('original')
original_entry.df.head(5)
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 |
Plotting
The default plot to present the data is j
vs. E
(or I
vs. E
).
The curve label consists of the figure number in the original publication followed by a unique identifier.
entry.plot()
The dimensions of the axis can still be specified explicitly.
entry.plot(x_label='t', y_label='j')
Bibliography
All entries within the CVCollection
are referenced and included in a bibtex bibliography.
len(db.bibliography.entries)
44
Each entry in the echemdb collection can be cited.
entry = db['engstfeld_2018_polycrystalline_17743_f4b_1']
entry.citation(backend='text') # other available backends: 'latex' or 'markdown'. 'text' is default.
'A. K. Engstfeld et al. Polycrystalline and single-crystal Cu electrodes: influence of experimental conditions on the electrochemical properties in alkaline media. Chem.-Eur. J, 24(67):17743–17755, 2018.'