/SESAMI_web

The interface to the SESAMI analysis tools

Primary LanguagePythonMIT LicenseMIT

DOI DOI

Introduction

Forget about using an old excel spreadsheet from your co-workers! On-the-fly, the SESAMI (Script to Estimate the Surface Area of Materials from their Isotherms) website performs Brunauer-Emmett-Teller (BET), BET+Excess Sorption Work (ESW), and Machine Learning (ML) methods for surface area estimation in nanoporous materials. This website allows a user to upload either an Adsorption Information File (AIF) or a Comma Separated-Values (CSV) file.

This website is based on the MOFSimplify website developed by the Kulik Group at MIT.

For additional support, feedback, and inquiry, please raise a GitHub issue in this repo. For specific questions, contact Yongchul Chung at drygchung@gmail.com.

Sample Output

For the downloadable figures generated on the website, a user can adjust the font type, font size, dot-per-inch (dpi), and legend to their liking.

example_input

Website Configuration

The website is powered by Mongo DB 5.3.1 and Google Cloud Run.

Calculation Details

The SESAMI 1 algorithms employed in this code select the linear region from an isotherm and compute the surface area of the corresponding material. A detailed description of the algorithm can be found on page S5 of J. Phys. Chem. C 2019, 123, 33, 20195 - 20209. An excerpt from the SI is provided below for completeness.

BET Areas (SESAMI 1)

We consider the “right-most” region, which is the region having a high-pressure limit at the point where the first maximum of q(1 − p/p0) with respect to p/p0 occurs (q is the loading, p is the vapor pressure, and p0 is the saturation vapor pressure), as per consistency criterion 1, and a low-pressure limit at the lowest pressure point on the isotherm. Next, we consider a region that has the same upper pressure limit but a lower pressure limit that is shifted to the right by one point on the pressure axis. We continue to move the lower pressure limit to the right until we locate a region with 4 consecutive data points. Then, we shift the upper pressure limit to a smaller value by one point, and again move the lower pressure limit to the right as before until we reach another 4-point linear region. The process continues until we reach a 4-point region starting at the lowest pressure point on the isotherm, which we define as the “left-most” region. We select a linear region to compute the BET area that satisfies as many consistency criteria as possible and contains at least 4 points.

Best Region for BET Area Calculation

To select the best region (i.e., the linear region that satisfies the most consistency criteria), we search through all possible “linear” regions. Here, a linear region is a set of 4+ consecutive points having an R2 value greater than 0.998, and fulfilling consistency criteria 1 and 2. We start with the “right-most” region from the isotherm, and check if it is “linear.” If it is, we store it as the “current best region.” If not, we continue to consider subsequent regions until we find one that is “linear.” Then, we move on to other candidate regions at lower pressures.

If a region is not “linear” as judged by R2, it is disregarded. If it is “linear” and satisfies criteria 1 and 2, we check if it satisfies consistency criteria 3 and 4 and has an R2 > 0.9995. The satisfaction of all these conditions indicates that the region is suitable for BET analysis. If all conditions are satisfied, we choose the current region as the “final best region” and the algorithm ends. If not, we check if the current region satisfies more consistency criteria than the “current best region.” If it does, we replace the “current best region” with the current region. This process is repeated until we reach the “left-most” region. At this point, we end the search by choosing the “current best region” as the “final best region.” The final best region is used to compute the BET area for the structure. See the function picklen in betan.py.

The SESAMI 1 algorithm

BET + ESW Areas (SESAMI 1)

The BET + ESW areas are computed in the same way as the BET areas except that the algorithm is forced to include the first (lowest loading) ESW minimum in the selected region. Thus, the chosen region must satisfy consistency criteria 1 and 2 and have an R2 > 0.998, and include the relative pressure corresponding to the first ESW minimum point. The correct calculation of the BET + ESW areas depends on the correct identification of the ESW minimum. If the ESW minimum is wrongly identified, the BET + ESW area will also be wrong. Thus, we recommend that users ensure that the first minimum is correctly identified.

ML Areas (SESAMI 2)

The machine learning areas are computed using a Lasso linear regression model that takes as input the mean loading values of seven logarithmically divided pressure subregions. The model is trained on GCMC-calculated argon isotherms at 87 K. For more information, see Beyond the BET Analysis: The Surface Area Prediction of Nanoporous Materials Using a Machine Learning Method and SESAMI_2.py.

Preparing Input Files

A user can provide an adsorption isotherm to the website as either an AIF file or a CSV file.

Use https://clownfish-app-lzoex.ondigitalocean.app/ to convert instrument output to AIF file ormat.

For inputting isotherm data as a CSV file, see this example.

Hosting Site on Your Computer

  1. Download and activate the required packages used by SESAMI web. This can be done in two ways:
    • Option 1: Make and activate a Conda environment using environment.yml. See this resource for more information.
    • Option 2: Install Python dependencies without Conda, referring to environment.txt for versioning information. These were the package versions used by the developers on macOS Ventura 13.3.1, on a 2020 MacBook Pro (non-M1).
  2. Use the following command in the terminal to run: python app.py
  3. Upload AIF or CSV formatted data.
  4. Click Run calculation and wait a few seconds.

Note, the front end of the website is index.html and the backend is app.py. The backend makes use of routines in the folder SESAMI, which contains the SESAMI 1 and 2 code.

When running the site locally, one should disable the "Share data with developers" option.

References

Authors

  • Gianmarco G. Terrones (SESAMI web interface development)
  • Archit Datar (SESAMI python code development)
  • Yongchul G. Chung (project supervision, Mongo DB Atlas and Google Cloud integration)

JOSS Paper Supplementary Files

Files used for software performance benchmarking can be found here.

Note: In the benchmarking of the JOSS paper, an older version of BETSI was used. The newer version has implemented bug fixes and makes successful predictions where the previous version did not. The updated BETSI results, corresponding to Tables 1-3 of the paper, are here and here.

Funding Acknowledgements

  • Gianmarco G. Terrones was supported by the Government of Portugal through the Portuguese Foundation for International Cooperation in Science, Technology and Higher Education and through the MIT Portugal Program.
  • Software and website development was supported by the Office of Naval Research under grant number N00014-20-1-2150, as well as by the National Research Foundation of Korea (NRF) under grant number 2020R1C1C1010373 funded by the government of Korea (MSIT).
  • Gianmarco G. Terrones was partially supported by an Alfred P. Sloan Foundation Scholarship (Grant Number G-2020-14067).