Methodology
The ECHO-AIR model works by a series of two modules. First, the model estimates annual average change in PM2.5 concentrations as part of the Concentration Module. Second, the excess mortality resulting from the concentration change is calculated in the Health Module.
Concentration Module Methodology
The InMAP Source Receptor Matrix (ISRM) links emissions sources to changes in receptor concentrations. There is a matrix layer for each of the five precursor species: primary PM2.5, ammonia (NH3), oxides of nitrogen (NOx), oxides of sulfur (SOx), and volatile organic compounds (VOC). By default, the tool uses the California ISRM. For each of these species in the California ISRM, the ISRM matrix dimensions are: 3 elevations by 21,705 sources by 21,705 receptors. The three elevations of release height within the ISRM are:
- Less than 57 meters
- Between 57 and 140 meters
- Greater than 760 meters.
If your run includes emissions occurring between 140 and 760 meters, please see the additional documentation here. Emission files with larger areas are less likely to provide accurate data for disparity, equity, and environmental justice analyse. A file with a max area exceeding 2500 km^2 would trigger a warning output, although processing will still continue.
The model is capable of reading in a different ISRM, if specified by the user.
The units of each cell within the ISRM are micrograms per meter cubed per microgram per second, or concentration per emissions.
The concentration module has the following steps. Details about the code handling each step are described in the Code Details section.
- Preprocessing: the tool will load the emissions shapefile and perform a series of formatting checks and adjustments. Any updates will be reported through the command line. Additionally, the ISRM layers will be imported as an object. The tool will also identify how many of the ISRM layers are required for concentration calculations.
For each layer triggered in the preprocessing step:
- Emissions Re-Allocation: the model will re-grid emissions to the ISRM grid.
- The emissions shape and the ISRM shape are intersected.
- Emissions for the intersection object are allocated from the original emissions shape by the percent of the original emissions area that is contained within the intersection.
- Emissions are summed by ISRM grid cell.
- Note: for point source emissions, a small buffer is added to each point to allocate to ISRM grid cells.
- Matrix Multiplication: Once the emissions are re-gridded to the ISRM grid, they are multiplied by the ISRM grid level for the corresponding layer.
Once all layers are done:
- Sum all Concentrations: concentrations of PM2.5 are summed by ISRM grid cell.
Health Module Methodology
The ISRM Tool calculations health module follows US EPA BenMAP CE methodology and CARB guidance.
Currently, the tool is only built out to use the Krewski et al. (2009), endpoint parameters and functions.1 The Krewski function is as follows:
ΔM = (1 - (exp(βd x ΔCi)-1) x Ii,d,g x Pi,g
where β is the endpoint parameter from Krewski et al. (2009), d is the disease endpoint, C is the concentration of PM2.5, i is the grid cell, I is the baseline incidence, g is the group, and P is the population estimate. The tool takes the following steps to estimate these concentrations.
-
Preprocessing: the tool will merge the population and incidence data based on geographic intersections using the
health_data.py
object type. -
Estimation by Endpoint: the tool will then calculate excess mortality by endpoint:
- The population-incidence data are spatially merged with the exposure concentrations estimated in the Concentration Module.
- For each row of the intersection, the excess mortality is estimated based on the function of choice (currently, only Krewski).
- Excess mortality is summed across age ranges by ISRM grid cell and racial/ethnic group.
Once all endpoints are done:
- Export and Visualize: excess mortality is exported as a shapefile and as a plot.
Other Features
ECHO-AIR has a command called check-setup
that allows the user to make sure that all of the code and data files are properly saved and named in order to make sure that the program will run.