The Advanced Electrolyte Model (AEM) Application Program Interface (API) is a supporting software toolbox to the AEM CLI executable, designed to analyze and predict the properties of electrolyte compositions used in various applications. Developed by Ridgetop Group, Inc. and in collaboration with Adarsh Dave (Carnegie Mellon University), this API allows users to create, manage, and simulate electrolyte compositions with Python scripts, leveraging the extensive databases of solvents and salts with the AEM compound library. Additionally, the API converts generated report files from the .txt to .csv and .json formats, visualizes any quantity from any of those reports, and shows an example of combining results from AEM output Report 1, saving that to a .csv file, and providing detailed insights into example key properties such as density, viscosity, conductivity, and ion association populations through graphical plots.
Link to Repository: https://github.com/RidgetopGroupInc/AEM-API
Table of Contents
About the AEM API
Shown in the figure below is a block diagram of the AEM API architecture. The diagram is divided into several sections, each elaborating on different aspects of the AEM API, from input parameters to outputs, classes, and reports.
- On the **user level**, there are three major inputs - **Electrolyte Composition**, **ACCC Electrolyte Composition**, and **Input Parameters**. In the Electrolyte Composition, the user can define up to 10 solvents (fixed mode) or 5 solvents (matrix mode) and up to two salts. In the ACCC Electrolyte Composition, the user can define up to 10 ACCC solvents (fixed mode) or 5 ACCC solvents (matrix mode) and only one ACCC salt. The ACCC salt chosen must contain all the identifiers for the chosen ACCC solvent. The user can choose between a pure non-ACCC composition, a pure ACCC composition, or a cross composition between non-ACCC and ACCC components. Next, Input Parameters lists the various inputs required for running AEM CLI executable. These inputs are essential for configuring AEM simulation runs and determining the specific conditions under which the model operates.
- Within the **API itself (AEM_API.py)** there are three classes - the **ElectrolyteComposition Class**, the **ACCCElectrolyteComposition Class**, and the **AEM_API Class**. The ElectrolyteComposition Class includes functions for managing the non-ACCC composition, whereas the ACCCElectrolyteComposition Class includes functions for managing the ACCC composition. The AEM_API Class contains functions for reading inputs, generating compositions, running simulations using the AEM CLI program, saving logs, exporting files and results, processing data, and saving processed data.
- Within the **AEM_PARSER (AEM_PARSER.py)** there are various classes such as the **aem_run class**, the **aem_report class**, **aem_report01, aem_report02, ....., aem_report20 classes** for each report generated by AEM. Additionally, there various major functions defined such as - the **parseReport function**, the **parse_composition_temperature function**, **parseReport01, parseReport02, ....., parseReport20 functions** for each report, the **aem_convert_to_csv function**, and the the **aem_convert_to_json function**. These classes and functions are responsible to create the .csv and .json files from the default output .txt files from the AEM CLI program.
- The **Outputs** from the API are organized into the **AEM_API_Output** directory in run directories with the name **AEMRun-RunID-RunDate-RunTime**. Each run directory includes the **Reports** and a **run log .json file (AEMRun-RunID-RunDate-RunTime-Log.json)**. The Reports folder contains different types of reports generate in .txt, .csv, and .json formats. The **.csv** files are saved in the **Reports\csv** folder, whereas The **.json** files are saved in the **Reports\json** folder. These reports cover a wide range of analyses, from key properties summaries and thermodynamic terms to density, viscosity, conductivity, and cation desolvation. Other reports focus on dielectric analysis, transport properties, molar volume, ion-pair formation, self-diffusion coefficients, and ligand-wise analyses, among others. Each report provides detailed insights into specific aspects of the electrolyte compositions and their behaviors under various conditions.
Getting Started
To get a local copy up and running follow these simple steps.
Prerequisites
- Python 3.7 or higher
- git 2.46.0 or higher
Installation
- Clone the repo
git clone https://github.com/RidgetopGroupInc/AEM-API.git
- Install the required dependencies
pip install -r requirements.txt
Roadmap
See the open issues for a list of proposed features (and known issues).
Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
)
- Commit your Changes (
git commit -m 'Add some AmazingFeature'
)
- Push to the Branch (
git push origin feature/AmazingFeature
)
- Open a Pull Request
License
Distributed under the GNU GPL-3.0 License. See LICENSE
for more information.
Contact
For Scientific Enquiries
For Technical Enquiries & Assistance
AEM API
AEM GUI/CLI
For Business & Licensing Enquiries
Acknowledgements