Skip to main content
ACS AuthorChoice logoLink to ACS AuthorChoice
. 2025 Apr 15;1(8):1540–1544. doi: 10.1021/acselectrochem.4c00218

ElectroKitty: A Python Tool for Modeling Electrochemical Data Including Non-Langmuir Adsorption

Ožbej Vodeb †,‡,*, Pedro Farinazzo Bergamo Dias Martins , Dušan Strmčnik , Nejc Hodnik †,‡,§, Miran Gaberšček
PMCID: PMC12337095  PMID: 40799482

Abstract

The use of simulation and various forms of data analysis is becoming more frequent in all areas of electrochemistry. To support this, we have created ElectroKitty, a Python package that can simulate complex reaction pathways. Since experimental data often exhibits non-idealities with adsorbed species, we have programmed ElectroKitty to incorporate such corrections. To demonstrate the versatility of our package we selected four common reaction pathways and validated it against an established simulator. We also demonstrate the Frumkin isotherm and how ElectroKitty can reproduce it. In addition, to demonstrate the more advanced features of our package, we used ElectroKitty to simulate OH adsorption on a Pt(111) surface using a straightforward model.

Keywords: simulation, electrochemistry, voltammetry, data analysis


graphic file with name ec4c00218_0005.jpg


graphic file with name ec4c00218_0004.jpg

Introduction

The basics of electrochemical data analysis include: finding current peaks, performing Tafel analysis, correcting uncompensated resistances, and sometimes even fitting models directly to measured data. Over the years, many different tools have been developed to process or even simulate data. Today, almost every potentiostat program has methods for processing data, with some having more advanced features than others. However, direct simulation of experiments is still not very common. A likely reason for this is that it is not straightforward to program a numerical algorithm that solves the governing equations, let alone fits the data. Unless an electrochemist has sufficient background in mathematics and computer science, fitting a model can be a daunting task.

Numerous software packages have been developed over the years to facilitate simulation and data fitting. Some of the most well-known are DigiElch distributed by Gamry Instruments, , MECSim developed at Monash University, , and KISSA. All these simulators offer the possibility to compute electrochemical responses for different electrode geometries and to simulate different mechanistic networks. It is also worth mentioning that many different projects have emerged in recent years. Some of these projects are Soft Potato, , FreeSim, Polarographica, and ecsim. Two other projects that should be mentioned here are RedoxPySolid, , which was developed for the simulation of surface heterogeneity, and EchemFEM, , a finite-element-based solver that can simulate the concentration, potential, and velocity profiles of a variety of geometries but has limitations when simulating different potential programs, adsorption, and surface-confined processes. For our comparison, we will exclude these two projects, as they do not fit well with the others since their use cases are very different compared to other software. In Table , we give a brief summary of the features offered by relevant projects and compare them with ElectroKitty, our own Python package.

1. A brief comparison of different electrochemical simulation packages.

Name Supported geometries Data fitting Supported mechanisms Availability
MECSim Planar, spherical, RDE, cylindrical Supported, further extended with BIOMEC , Allows combining dissolved and adsorbed species Free, open-source ,,,
DigiElch Planar, spherical, cylindrical, band, RDE Supported Allows combining dissolved and adsorbed species, includes adsorbate interaction Proprietary, distributed by Gamry Instruments
KISSA Planar, hemispherical, hemicylindrical, band, RDE Not-supported Allows combining dissolved and adsorbed species, includes electrochemiluminescence modeling Distributed by ProSense and BASi or by contacting the team
Soft Potato Planar, Band, Microdisk Not-supported Limited to predefined mechanisms Free, open-source ,
Polarographica Can be complex Supported Limited to predefined mechanisms Free, open-source
ecsim Planar, Disk, Spherical, Cylindrical, Hemispherical Not-supported Allows combining dissolved species Free, open-source
FreeSim Planar, Spherical, with various boundary conditions Not-supported Limited to predefined mechanisms Free, open-source
ElectroKitty Planar, RDE Supported Allows combining dissolved and adsorbed species, includes adsorbate interaction and thermodynamic dispersion Free, open-source

Based on the comparison, we can see that some packages can be quite versatile and can cover most use cases that an average electrochemist might have. However, almost all packages have something that they do not support or are closed sourced making them hard to integrate into larger projects. For this reason, we have developed ElectroKitty, which offers possibilities to simulate complex reaction networks, surface reactions with non-idealities, which are crucial for explaining surface oxidation and electrocatalysis, as well as offering ways to compare experiments with theory. To make ElectroKitty accessible, we have published it in Python, with all the source code and tutorials for the library available on GitHub, so it can be accessed or modified by anyone.

To showcase the capabilities of ElectroKitty we demonstrated some of the most popular reaction pathways, before moving on to the effects of interactions between surface species and a “real-world” example of these effects. For such an example, we show the voltammogram of OH adsorption on a Pt(111) surface in 0.1 M HClO4 and attempt to fit the data with a simple model. Our aim is to show that we cannot “a priori” assume, even for a single-crystal electrode, Langmuir behavior and that models that incorporate surface interactions are necessary for a complete picture of the surface. Through such demonstrations, we wish to show that ElectroKitty can provide the community with a good starting point for the study of surface complexities. Moving forward, we plan to expand its capabilities, incorporating support for complex geometries and additional features to enhance its utility for the community.

Capabilities of ElectroKitty

Common Simulation Examples

To demonstrate the basic capabilities of ElectroKitty, we simulate four common reaction pathways and compare them with the results of MECSim. The pathways chosen are the E, EE, Ecat, and ECE reaction pathways (full mechanism show in Figure ), with the ECE pathway showing the effect of uncompensated resistance. As can be seen in Figure , ElectroKitty can reproduce the currents provided by MECSim very well. The simulation details have been moved to the Supporting Information section 1, where the curious reader can find complete scripts for running the four examples. For more detailed instructions on how to use ElectroKitty, we refer the reader to ElectroKitty’s GitHub page.

1.

1

Comparison of simulation results for different reaction pathways between MECSim and ElectroKitty. The simulations can be reproduced using the scripts in Supporting Information section 1.

Demonstrating the Effect of Adsorbate Interaction

In the literature, studies on various poly- or single-crystal surfaces have shown the importance of the interaction between adsorbed surface species in the observation of electrochemical reactions. Good examples are Hydrogen under-potential deposition and OH adsorption on Pt single-crystal electrodes, , the oxidation and reduction of platinum, investigated by Conway. , The authors observed effects of interaction between surface species and also consider these effects more generally. Other examples of electrochemical responses showing adsorbate interaction include the study of adsorption of oxygen on RuO2(110) single crystals, methanol oxidation on Rh and Ir electrodes, and recent studies of the Oxygen evolution reaction on Ir. ,

These interactions can be modeled by adding an isotherm term to the rate equations. ,, This is usually done by multiplying the rate law with an exponent of the coverage multiplied with the interaction parameter (g), see eq . In ElectroKitty we currently offer only the Langmuir and Frumkin isotherms, as their effects on electrochemical thermodynamics and dynamics are well documented. In principle, the Frumkin isotherm takes into account interactions between adsorbed species (e.g., repulsive), unlike the Langmuir isotherm, which does not assume such interactions. We note that there is a plethora of other isotherms with different rationales for their use that will be implemented into the package in the future.

dθidt=kfθiegiθi+kbθjegjθj 1

First, we demonstrate and validate our simulator by reproducing the interaction effect on a CV of a 1e adsorption reaction, as was done in Bard and Faulkner (see Figure a). We see that the interaction parameter has a large influence on the voltammogram, as the current peaks “stretch” or “shrink” to different degrees depending on the sign and value of the parameter. To further validate our simulator, we can try to reproduce the Frumkin isotherm, for a certain value of the interaction parameter. We demonstrate this in Figure b, where we have reproduced three isotherms, with the g value of 0 corresponding to a Langmuir isotherm, and the other two values to a Frumkin isotherm. The code for Figure can be found in Supporting Information section 1.

2.

2

a) The effect of a Fumkin isotherm on the CV behavior of an adsorption process. Shown as a normalized current (G = i/nFAΓvf, with i as current, n the number of electrons, F the Faraday constant, A as electrode area, Γ as the maximum surface concentration, v as scan rate, and f = nF/RT, where T is temperature and R the gas constant) versus the potential. Following the convention of Bard, we see that a repulsive interaction leads to a broadening of the peak, while a positive value lengthens the peak. b) Frumkin isotherm modeled with ElectroKitty, without electron transfer, was adapted from a model in Schmickler et al. Here the coverage is plotted against the logarithm of the concentration. The equilibrium constant is assumed to be 1 in all cases, allowing it to be safely disregarded in the calculations. The scripts to recreate Figure 2 can be found in Supporting Information section 1, where all simulation parameters are listed.

Demonstrating the Importance of Including Non-Ideal Behavior in Models

As an example of adsorbate interaction we chose to simulate OH adsorption on a Pt(111) single crystal surface. For experimental details, we refer the reader to Supporting Information section 2. Figure shows experimental data that was used to fit an approximate model. As was discussed previously in the literature, the “butterfly region” of the voltammogram exhibits at least two electrochemical processes, neither of which is ideal. ,, The first process shows a broadened peak, while the second shows a sharp peak, both peaks being a consequence of oxidation of two types of water, structured and unstructured. To fit this data, we employed the covariance matrix adaptation – evolution strategy (CMA-ES) algorithm, which ElectroKitty can use as its optimization algorithm. , The model includes two electrochemical processes linked via a chemical process, that serves as an approximation of the adsorbates ordering. Such a model is far from perfect and serves only as a first approximation; for further discussion on the actual condition of the surface, we refer the reader to the relevant literature. ,,,− The green curve in Figure represents a fit where the interaction parameters were set to zero. Although ElectroKitty can approximate the experimental data to a certain extent, the fit is not entirely accurate. With the orange curve, we allow ElectroKitty to optimize non-ideal parameters as well, resulting in a significantly improved match with the data. This is also confirmed by the fit scores of both cases, with the non-ideal case having a fit score about 4.5 times better than the ideal case. In the ideal case, the relative root mean squared error (RRMSE) is 0.37, while in the non-ideal case, it is 0.08, turning the fit from unacceptable to acceptable.

3.

3

Experimental data of OH adsorption on a Pt(111) surface in 0.1 M perchloric acid (blue curve). The CV is recorded between 0.48 and 0.87 V vs. RHE, with a scan rate of 0.05 Vs–1. The mechanism of the simulation is found in the figure. The orange curve represents parameter optimization that includes non-ideality parameters, while in the case of the green curve, those are set to zero, representing adsorption without adsorbate interaction.

The data analysis can also be extended with Bayesian inference, which is also included with ElectroKitty, based on a procedure found in. We can estimate our parameter uncertainties using Bayesian inference by sampling the distribution of our fitting parameters. The results can be found in the Supporting Information section 3 (Figure S1) shown by a pairwise plot for all of our parameters and the standard deviation of experimental noise. These sorts of plots can also determine whether our model is suitable, as a model showing high scattering of parameters is likely wrong (Figure S1a), as is the case in the model without any non-ideality corrections. An argument would again be that we are overfitting our data by adding additional parameters to our model; however, as can be seen from the inference plot (Figure S1b), that is likely not the case as all parameters show a moderate amount of scattering. We refer the reader to Supporting Information section 3 for further discussion on the result.

Conclusions and outlook

With this technical note, we have introduced ElectroKitty, a Python package capable of simulating various mechanisms and then fitting the mechanism to real data. We have demonstrated the basic functionalities of ElectroKitty by simulating four reaction pathways that are common in electrochemistry. We have also shown how to simulate OH adsorption on a Pt(111) surface. We have fitted this simple model to our data and extended the fit with Bayesian Inference. Although ElectroKitty can be a powerful tool, it also has some drawbacks. For example, it requires the user to be able to program in Python. Although some other packages still offer certain advanced functionalities, we believe that ElectroKitty serves as a strong starting toolbox for tackling complex surface reactions. In conclusion, we welcome anyone who would like to contribute to the project in any way. Contributions can be made by submitting a pull request on our GitHub or contacting the corresponding author. There is still a lot to be done. Let this be a project made by the electrochemical community for the electrochemical community.

Supplementary Material

ec4c00218_si_001.pdf (750.4KB, pdf)

Acknowledgments

We would like to acknowledge Ana Rebeka Kamšek and Anja Logar for their help on various small tests with the package interoperability. The authors would like to acknowledge the support of the Slovenian Research and Innovation Agency (ARIS) programs P2-0393 and I0-0003; projects N2-0248, N2-0337, J7-4636, J7-4638 and J7-50227; grant Artificial Intelligence for Science (GC-0001); European Research Council (ERC) Starting Grant 123STABLE (grant agreement ID: 852208); and NATO Science for Peace and Security Program (Grant G6230).

The Supporting Information is available free of charge at https://pubs.acs.org/doi/10.1021/acselectrochem.4c00218.

  • Experimental details, codes, and further validations (PDF)

Ožbej Vodeb: writing, programming, testing. Pedro Martins: writing, experimental. Dušan Strmčnik: Review Nejc Hodnik: Review, financing. Miran Gaberšček: Review, financing.

The authors declare no competing financial interest.

References

  1. Zheng W.. Python for Electrochemistry: A Free and All-In-One Toolset. ECS Advances. 2023;2(4):040502. doi: 10.1149/2754-2734/acff0b. [DOI] [Google Scholar]
  2. Software from Gamry instruments. https://www.gamry.com/support-2/software/ (accessed 2024-10-25).
  3. NOVA . https://www.metrohm.com/en/service/software-center/nova.html (accessed 2024-10-25).
  4. EC lab. https://www.biologic.net/topics/ec-lab/ (accessed 2024-10-25).
  5. Bond A. M., Duffy N. W., Guo S. X., Zhang J., Elton D.. Changing the Look of Voltammetry. Anal Chem. 2005;77(9):186A. doi: 10.1021/ac053370k. [DOI] [PubMed] [Google Scholar]
  6. Bond A. M., Zhang J., Gundry L., Kennedy G. F.. Opportunities and Challenges in Applying Machine Learning to Voltammetric Mechanistic Studies. Current Opinion in Electrochemistry. 2022;34:101009. doi: 10.1016/j.coelec.2022.101009. [DOI] [Google Scholar]
  7. Gundry L., Guo S. X., Kennedy G., Keith J., Robinson M., Gavaghan D., Bond A. M., Zhang J.. Recent Advances and Future Perspectives for Automated Parameterisation, Bayesian Inference and Machine Learning in Voltammetry. Chem. Commun. 2021;57(15):1855–1870. doi: 10.1039/D0CC07549C. [DOI] [PubMed] [Google Scholar]
  8. Rudolph M., Reddy D. P., Feldberg S. W.. A Simulator for Cyclic Voltammetric Responses. Anal Chem. 1994;66(10):589A–600A. doi: 10.1021/ac00082a725. [DOI] [Google Scholar]
  9. DigiElch . https://www.gamry.com/cells-and-accessories/digielch-electrochemical-simulation-software/ (accessed 2024-10-25).
  10. MECSim webpage . https://garethkennedy.net/MECSim.html (accessed 2024-10-25).
  11. Kennedy, G. F. ; Bond, A. M. ; Simonov, A. N. . Modelling Ac Voltammetry with MECSim: Facilitating Simulation–Experiment Comparisons. Current Opinion in Electrochemistry; Elsevier B.V., 2017; pp 140–147. 10.1016/j.coelec.2016.12.001. [DOI] [Google Scholar]
  12. KISSA group . http://www.kissagroup.com/ (accessed 2024-10-25).
  13. Rodríguez, O. Soft Potato: An Open Source Electrochemical Simulator and Toolkit. ChemRxiv, 2022. 10.26434/chemrxiv-2022-4bs3w. [DOI]
  14. Soft Potato . https://softpotato.xyz/ (accessed 2025-01-30).
  15. FreeSim GitHub . https://github.com/nmerovingian/FreeSim (accessed 2025-01-30).
  16. Polarographica GitHub . https://github.com/Polarographica/Polarographica_program (accessed 2025-01-30).
  17. ecsim GitHub . https://github.com/Limhes/ecsim (accessed 2025-01-30).
  18. RedoxPySolid . https://github.com/Aleksei-Marianov/RedoxPySolid (accessed 2025-01-30).
  19. Marianov A. N., Kochubei A. S., Roman T., Conquest O. J., Stampfl C., Jiang Y.. Modeling and Experimental Study of the Electron Transfer Kinetics for Non-Ideal Electrodes Using Variable-Frequency Square Wave Voltammetry. Anal Chem. 2021;93(29):10175–10186. doi: 10.1021/acs.analchem.1c01286. [DOI] [PubMed] [Google Scholar]
  20. Roy T., Andrej J., Beck V. A.. A Scalable DG Solver for the Electroneutral Nernst-Planck Equations. J. Comput. Phys. 2023;475:111859. doi: 10.1016/j.jcp.2022.111859. [DOI] [Google Scholar]
  21. EchemFEM GitHub . https://github.com/LLNL/echemfem/tree/main (accessed 2025-01-30).
  22. BIOMEC GitHub . https://github.com/lukegun/BIOMEC (accessed 2025-01-30).
  23. Gundry L., Kennedy G., Keith J., Robinson M., Gavaghan D., Bond A. M., Zhang J.. A Comparison of Bayesian Inference Strategies for Parameterisation of Large Amplitude AC Voltammetry Derived from Total Current and Fourier Transformed Versions. ChemElectroChem. 2021;8(12):2238–2258. doi: 10.1002/celc.202100391. [DOI] [Google Scholar]
  24. ElectroKitty GitHub . https://github.com/RedrumKid/ElectroKitty (accessed 2024-10-25).
  25. Rizo R., Fernández-Vidal J., Hardwick L. J., Attard G. A., Vidal-Iglesias F. J., Climent V., Herrero E., Feliu J. M.. Investigating the Presence of Adsorbed Species on Pt Steps at Low Potentials. Nat. Commun. 2022;13(1):2550. doi: 10.1038/s41467-022-30241-7. [DOI] [PMC free article] [PubMed] [Google Scholar]
  26. Koper M. T. M., Lukkien J. J.. Modeling the Butterfly: The Voltammetry of (√3×√3)­R30° and p(2×2) Overlayers on (111) Electrodes. Journal of Electroanalytical Chemistry. 2000;485(2):161–165. doi: 10.1016/S0022-0728(00)00109-1. [DOI] [Google Scholar]
  27. Angerstein-Kozlowska H., Conway B. E., Sharp W. B. A.. The Real Condition of Electrochemically Oxidized Platinum Surfaces. J. Electroanal Chem. Interfacial Electrochem. 1973;43(1):9–36. doi: 10.1016/S0022-0728(73)80307-9. [DOI] [Google Scholar]
  28. Gilroy D., Conway B. E.. Surface Oxidation and Reduction of Platinum Electrodes: Coverage, Kinetic and Hysteresis Studies. Can. J. Chem. 1968;46(6):875–890. doi: 10.1139/v68-149. [DOI] [Google Scholar]
  29. Conway B. E., Angerstein-Kozlowska H.. The Electrochemical Study of Multiple-State Adsorption in Monolayers. Acc. Chem. Res. 1981;14(2):49–56. doi: 10.1021/ar00062a004. [DOI] [Google Scholar]
  30. Hu, B. ; Kuo, D. Y. ; Paik, H. ; Schlom, D. G. ; Suntivich, J. . Enthalpy and Entropy of Oxygen Electroadsorption on RuO2(110) in Alkaline Media. J. Chem. Phys. 2020, 152 (9). 10.1063/1.5139049. [DOI] [PubMed] [Google Scholar]
  31. Bagotzky V. S., Vassiliev Yu. B., Khazova O. A., Sedova S. S.. Adsorption and Anodic Oxidation of Methanol on Iridium and Rhodium Electrodes. Electrochim Acta. 1971;16(7):913–938. doi: 10.1016/0013-4686(71)85057-0. [DOI] [Google Scholar]
  32. Geppert J., Röse P., Czioska S., Escalera-López D., Boubnov A., Saraçi E., Cherevko S., Grunwaldt J. D., Krewer U.. Microkinetic Analysis of the Oxygen Evolution Performance at Different Stages of Iridium Oxide Degradation. J. Am. Chem. Soc. 2022;144(29):13205–13217. doi: 10.1021/jacs.2c03561. [DOI] [PMC free article] [PubMed] [Google Scholar]
  33. Vodeb O., Lončar A., Bele M., Hrnjić A., Jovanovič P., Gaberšček M., Hodnik N.. Intrinsic Properties of Nanoparticulate Ir-Based Catalysts for Oxygen Evolution Reaction by AC Voltammetry. Electrochim Acta. 2023;464:142882. doi: 10.1016/j.electacta.2023.142882. [DOI] [Google Scholar]
  34. Bard, Allen J. ; Faulkner, L. R. . Electrochemical Methods: Fundamentals and Applications, 2nd ed.; Harris, D. S. E. , Ed.; John Wiley & Sons, Inc.: New York, 2001. [Google Scholar]
  35. Schmickler, W. ; Santos, E. . Interfacial Electrochemistry; Springer Berlin Heidelberg: Berlin, Heidelberg, 2010. 10.1007/978-3-642-04937-8. [DOI] [Google Scholar]
  36. Kuzume A., Herrero E., Feliu J. M.. Oxygen Reduction on Stepped Platinum Surfaces in Acidic Media. Journal of Electroanalytical Chemistry. 2007;599(2):333–343. doi: 10.1016/j.jelechem.2006.05.006. [DOI] [Google Scholar]
  37. Hansen, N. The CMA Evolution Strategy: A Tutorial. arXiv, 2016. 10.48550/arXiv.1604.00772 [DOI]
  38. cma package GitHub . https://github.com/CMA-ES/pycma (accessed 2024-10-25).
  39. Arenz M., Stamenkovic V., Schmidt T. J., Wandelt K., Ross P. N., Markovic N. M.. The Effect of Specific Chloride Adsorption on the Electrochemical Behavior of Ultrathin Pd Films Deposited on Pt­() in Acid Solution. Surf. Sci. 2003;523(1–2):199–209. doi: 10.1016/S0039-6028(02)02456-1. [DOI] [Google Scholar]
  40. Sawatari Y., Inukai J., Ito M.. The Structure of Bisulfate and Perchlorate on a Pt(111) Electrode Surface Studied by Infrared Spectroscopy and Ab-Initio Molecular Orbital Calculation. J. Electron Spectros Relat Phenomena. 1993;64–65:515–522. doi: 10.1016/0368-2048(93)80117-5. [DOI] [Google Scholar]
  41. Herrero E., Feliu J. M., Wieckowski A., Clavilier J.. The Unusual Adsorption States of Pt(111) Electrodes Studied by an Iodine Displacement Method: Comparison with Au(111) Electrodes. Surf. Sci. 1995;325(1–2):131–138. doi: 10.1016/0039-6028(94)00730-6. [DOI] [Google Scholar]
  42. Despotovic, M. ; Nedic, V. ; Despotovic, D. ; Cvetanovic, S. . Evaluation of Empirical Models for Predicting Monthly Mean Horizontal Diffuse Solar Radiation. Renewable and Sustainable Energy Reviews; Elsevier Ltd, 2016; pp 246–260. 10.1016/j.rser.2015.11.058. [DOI] [Google Scholar]
  43. Andrieu C., Thoms J.. A Tutorial on Adaptive MCMC. Stat Comput. 2008;18(4):343–373. doi: 10.1007/s11222-008-9110-y. [DOI] [Google Scholar]

Associated Data

This section collects any data citations, data availability statements, or supplementary materials included in this article.

Data Citations

  1. Rodríguez, O. Soft Potato: An Open Source Electrochemical Simulator and Toolkit. ChemRxiv, 2022. 10.26434/chemrxiv-2022-4bs3w. [DOI]
  2. FreeSim GitHub . https://github.com/nmerovingian/FreeSim (accessed 2025-01-30).
  3. Polarographica GitHub . https://github.com/Polarographica/Polarographica_program (accessed 2025-01-30).
  4. ecsim GitHub . https://github.com/Limhes/ecsim (accessed 2025-01-30).
  5. RedoxPySolid . https://github.com/Aleksei-Marianov/RedoxPySolid (accessed 2025-01-30).
  6. EchemFEM GitHub . https://github.com/LLNL/echemfem/tree/main (accessed 2025-01-30).
  7. BIOMEC GitHub . https://github.com/lukegun/BIOMEC (accessed 2025-01-30).
  8. ElectroKitty GitHub . https://github.com/RedrumKid/ElectroKitty (accessed 2024-10-25).
  9. Hansen, N. The CMA Evolution Strategy: A Tutorial. arXiv, 2016. 10.48550/arXiv.1604.00772 [DOI]
  10. cma package GitHub . https://github.com/CMA-ES/pycma (accessed 2024-10-25).

Supplementary Materials

ec4c00218_si_001.pdf (750.4KB, pdf)

Articles from ACS Electrochemistry are provided here courtesy of American Chemical Society

RESOURCES