EPA’s ESAT Documentation#
The EPA’s Environmental Source Apportionment Toolkit (ESAT) project provides an open-source python package with which source apportionment workflows can be programmatically created and run. The features available in the ESAT package include data preprocessing and cleaning, non-negative matrix factorization (NMF) algorithms (currently two options are available), solution analytics and visualizations, error estimation methods, and customized constrained factorization models. These features reproduce and expand upon what is found in EPA’s PMF5 application, which is no longer being updated or maintained.
ESAT python package focuses on source apportionment estimates using NMF algorithms. These algorithms are implemented both in python using numpy functions as well as in Rust for an optimization option. The two currently available are:
Source apportionment solution error estimation methods are also available, which are the same methods that are found in PMF5. These are:
Lastly, constrained models are able to be created where the user can define constraints and expressions which set or limit specific factor elements (single values from either the factor profile or factor contribution matrices), or define correlations between factor elements as linear expressions.
Code examples are available in the repository jupyter notebooks, which also provided detailed algorithm documentation and complete workflow examples.