diff --git a/website/blog/2026-09-09-isrm-esm.md b/website/blog/2026-09-09-isrm-esm.md
new file mode 100644
index 000000000..22eead81a
--- /dev/null
+++ b/website/blog/2026-09-09-isrm-esm.md
@@ -0,0 +1,1193 @@
+---
+title: Using EarthSciLab for calculations with the InMAP Source Receptor Matrix (ISRM)
+author: Chris Tessum
+authorURL: https://github.com/ctessum
+---
+
+The existing online ways of using the InMAP source-receptor matrix (ISRM) are being
+retired in favor of a new service, [EarthSciLab](https://earthscilab.com).
+This tutorial walks through running point, area, and line source analyses
+through the ISRM using EarthSciLab and Python.
+
+
+
+
+## Introduction
+
+In the past, there have been three ways to interact with ISRM: 1) downloading the ISRM file and working with it locally; 2) using the service hosted at inmap.run, and 3) using the [Zarr](https://zarr.dev/) version of ISRM hosted online.
+
+You will always be able to use ISRM on your own computer, but we will be removing (free) access to the two online options in favor of a new service which we will describe in this post. There are two reasons for this: 1) as usage has increased, making the online services available for free has become a financial burden; and 2) the new service offers capabilities that the two old options do not.
+
+### earthscilab.com
+
+[EarthSciLab](https://earthscilab.com) is an online service that allows users to specify a model as a system of equations, and then run the model either in their browser or using cloud computing resources. It is built on top of [EarthSciAST](https://github.com/EarthSciML/EarthSciAST), an open-source system for compiling equations into runnable model simulations.
+
+Simulations that are run in EarthSciLab using your browser are free, but the service charges for simulations run using cloud computing resources, so that it is able to recoup the cost of those resources. Because the ISRM is a large file stored in the cloud, doing the calculations in this notebook using EarthSciLab may cost you a little bit. However, for calculations of the scale included in this notebook, the cost to you is minimal and may be zero.
+
+### Bugs fixed compared to previous versions
+
+While creating this tutorial, I found a couple of bugs in previous versions of ISRM and the code that interacted with it. Both of them have been fixed in this version, but have not yet been fixed in the older versions.
+
+1. In the Go code for the `inmap srpredict` command that performed analyses using the ISRM, interpolations for plume rises that fell between available layers are performed backwards, so a plume that should have been near the bottom of a gap between layers was placed near the top, and vice versa. For more details and an analysis of the impacts, refer [here](https://github.com/spatialmodel/inmap/issues/121).
+
+2. In the Zarr version of ISRM (at s3://inmap-model/isrm_v1.2.1.zarr), the `layers` variable which specified which vertical layers SR matrices had been calculated for read [0, 1, 2], when it should have said [0, 3, 6]. This has been fixed in a new version of the file at s3://inmap-model/isrm_v1.2.2.zarr, which has also be re-compressed to take up less space.
+
+If you prefer, a working [Jupyter notebook](https://jupyter.org/) version of this tutorial is available [here](https://github.com/spatialmodel/inmap/blob/master/website/static/blog/2026-09-09-isrm-esm/isrm_esm.ipynb).
+
+---
+## Setup
+
+Below is a bunch of code related to logging into the EarthSciLab service, setting up our ISRM calculation in the format required for EarthSciLab (which is a general service for evaluating geoscience equations and doesn't include any InMAP- or ISRM-related functionality itself), and actually running the simulation. You don't need to understand the code in the next cell in order to run your own analyses using ISRM.
+
+```python
+import base64
+import copy
+import io
+import json
+import pathlib
+import ssl
+import tempfile
+import time
+import urllib.error
+import urllib.parse
+import urllib.request
+import webbrowser
+import zipfile
+
+import earthsci_ast
+import geopandas as gpd
+import numpy as np
+import pandas as pd
+from shapely.geometry import LineString, Polygon, box
+
+API = "https://api.earthscilab.com"
+WORKOS = "https://api.workos.com"
+REPO_RAW = "https://raw.githubusercontent.com/EarthSciML/isrm.esm/main/"
+
+_downloads = {}
+
+
+def download(url):
+ """`url`'s bytes, fetched once per kernel and kept in memory."""
+ if url not in _downloads:
+ with urllib.request.urlopen(url, timeout=900) as resp:
+ _downloads[url] = resp.read()
+ print(f"fetched {url.rsplit('/', 1)[-1]} ({len(_downloads[url]):,} bytes)")
+ return _downloads[url]
+
+
+class HttpError(Exception):
+ def __init__(self, status, body, url):
+ super().__init__(f"HTTP {status} from {url}: {body[:600]}")
+ self.status, self.body = status, body
+
+
+class OAuthError(Exception):
+ """A 400 from WorkOS carrying an OAuth 2.0 `error` code."""
+ def __init__(self, error, description):
+ super().__init__(f"{error}: {description}")
+ self.error = error
+
+
+def _open(req, timeout):
+ try:
+ return urllib.request.urlopen(req, timeout=timeout, context=ssl.create_default_context())
+ except urllib.error.HTTPError as e:
+ body = e.read().decode("utf-8", "replace")
+ try:
+ payload = json.loads(body)
+ except ValueError:
+ payload = {}
+ if e.code == 400 and "error" in payload:
+ raise OAuthError(payload["error"], payload.get("error_description", "")) from None
+ raise HttpError(e.code, body, req.full_url) from None
+
+
+def http_json(method, url, *, json_body=None, form=None, raw=None, headers=None, timeout=120.0):
+ """One request, JSON in and JSON out (or `None` for an empty 204 body)."""
+ data, hdrs = None, dict(headers or {})
+ if json_body is not None:
+ data = json.dumps(json_body).encode()
+ hdrs["Content-Type"] = "application/json"
+ elif form is not None:
+ data = urllib.parse.urlencode(form).encode()
+ hdrs["Content-Type"] = "application/x-www-form-urlencoded"
+ elif raw is not None:
+ data = raw
+ hdrs["Content-Type"] = "application/octet-stream"
+ req = urllib.request.Request(url, data=data, headers=hdrs, method=method)
+ with _open(req, timeout) as resp:
+ body = resp.read()
+ return json.loads(body) if body else None
+
+class Session:
+ """A signed-in EarthSciLab caller, refreshed on demand."""
+
+ DEVICE_GRANT = "urn:ietf:params:oauth:grant-type:device_code"
+
+ def __init__(self):
+ self.client_id = http_json("GET", f"{API}/auth/config")["client_id"]
+ self._access = None
+ self._refresh_token = None
+
+ @staticmethod
+ def _expiry(token):
+ if not token:
+ return 0.0
+ try:
+ payload = token.split(".")[1]
+ payload += "=" * (-len(payload) % 4)
+ return float(json.loads(base64.urlsafe_b64decode(payload)).get("exp", 0))
+ except Exception:
+ return 0.0
+
+ def _adopt(self, response):
+ self._access = response["access_token"]
+ # Refresh tokens ROTATE. Keeping the new one is not housekeeping — hold on
+ # to the old one and the next refresh fails.
+ if response.get("refresh_token"):
+ self._refresh_token = response["refresh_token"]
+
+ def _refresh(self):
+ if not self._refresh_token:
+ return False
+ try:
+ self._adopt(http_json("POST", f"{WORKOS}/user_management/authenticate", form={
+ "grant_type": "refresh_token", "refresh_token": self._refresh_token,
+ "client_id": self.client_id}))
+ return True
+ except OAuthError:
+ self._refresh_token = None
+ return False
+
+ def login(self):
+ start = http_json("POST", f"{WORKOS}/user_management/authorize/device",
+ form={"client_id": self.client_id})
+ print(f"\n Your code is: {start['user_code']}")
+ print(f" Open: {start['verification_uri_complete']}\n")
+ try:
+ webbrowser.open(start["verification_uri_complete"])
+ except Exception:
+ pass
+ interval = float(start.get("interval", 5))
+ deadline = time.time() + float(start.get("expires_in", 300))
+ while time.time() < deadline:
+ time.sleep(interval)
+ try:
+ self._adopt(http_json("POST", f"{WORKOS}/user_management/authenticate", form={
+ "grant_type": self.DEVICE_GRANT, "device_code": start["device_code"],
+ "client_id": self.client_id}))
+ return
+ except OAuthError as e:
+ if e.error == "authorization_pending":
+ continue
+ if e.error == "slow_down":
+ interval += 1
+ continue
+ raise RuntimeError(f"sign-in refused: {e}") from None
+ raise RuntimeError("sign-in timed out; run this cell again")
+
+ def headers(self):
+ if time.time() > self._expiry(self._access) - 60:
+ if not self._refresh():
+ self.login()
+ return {"Authorization": f"Bearer {self._access}"}
+
+ def get(self, path, timeout=120.0):
+ return http_json("GET", f"{API}{path}", headers=self.headers(), timeout=timeout)
+
+ def post(self, path, body=None, timeout=300.0):
+ return http_json("POST", f"{API}{path}", json_body=body,
+ headers=self.headers(), timeout=timeout)
+
+ def put_bytes(self, path, payload, timeout=600.0):
+ return http_json("PUT", f"{API}{path}", raw=payload,
+ headers=self.headers(), timeout=timeout)
+
+ def stream(self, path, timeout):
+ headers = dict(self.headers(), Accept="text/event-stream")
+ req = urllib.request.Request(f"{API}{path}", headers=headers, method="GET")
+ return _open(req, timeout)
+
+
+# Each emission column, and the SR pathway it feeds.
+PATHWAYS = {"PM25": "PrimaryPM25", "VOC": "SOA", "NOx": "pNO3",
+ "NH3": "pNH4", "SOx": "pSO4"}
+STACK = ["STKHGT", "STKDIAM", "STKTEMP", "STKVEL"]
+
+TOTALS = ["TotalPM25", "deathsK", "deathsL"]
+CELL = ["rcv_W", "rcv_S", "rcv_E", "rcv_N"] # each receptor's own rectangle
+OBSERVEDS = TOTALS + CELL
+
+# The InMAP grid's own projection, and a SPHERE rather than an ellipsoid. The
+# documents project lon/lat with these same parameters, so a length or an area
+# measured here is the one the document measures.
+LCC = ("+proj=lcc +lat_1=33 +lat_2=45 +lat_0=40 +lon_0=-97 "
+ "+a=6370997 +b=6370997 +units=m +no_defs")
+
+# The readers declare a file's CRS and reproject nothing, and the documents do
+# the projection themselves, so the file goes out geographic.
+FILE_CRS = "EPSG:4269"
+
+FAMILIES = {"Point": "point", "MultiPoint": "point",
+ "Polygon": "polygon", "MultiPolygon": "polygon",
+ "LineString": "line", "MultiLineString": "line"}
+
+TEMPLATES = {("point", True): "isrm_gdf_point.esm",
+ ("point", False): "isrm_gdf_point_flat.esm",
+ ("polygon", False): "isrm_gdf_polygon.esm",
+ ("line", False): "isrm_gdf_line.esm"}
+
+# `GET /datasets/{id}/field` clamps to this and a query cannot raise it. The
+# receptor axis is 52,411, so a whole field fits and comes back at stride 1.
+MAX_VALUES = 262_144
+
+
+def _explode(gdf, columns):
+ """One row per part, with every emission column split among the parts."""
+ multi = int(gdf.geom_type.str.startswith("Multi").sum())
+ gdf = gdf.reset_index(drop=True) # so the parent index is unique
+ parts = gdf.explode(index_parts=False) # ... and repeated once per part
+ if len(parts) == len(gdf):
+ return parts.reset_index(drop=True)
+
+ measure = parts.geometry.area
+ if not (measure > 0).any():
+ measure = parts.geometry.length
+ if not (measure > 0).any(): # points: all a point has is its count
+ measure = pd.Series(1.0, index=parts.index)
+ share = measure / measure.groupby(level=0).transform("sum")
+
+ parts = parts.copy()
+ for column in columns:
+ parts[column] = parts[column].astype(float) * share
+ print(f" split {multi} multi-part record(s) into {len(parts) - len(gdf)} extra "
+ f"part(s), emissions shared by area/length")
+ return parts.reset_index(drop=True)
+
+
+def _drop_holes(gdf):
+ """Replace each polygon by its exterior ring."""
+ holes = int(sum(len(g.interiors) for g in gdf.geometry))
+ if not holes:
+ return gdf
+ gdf = gdf.copy()
+ gdf["geometry"] = [Polygon(g.exterior) for g in gdf.geometry]
+ print(f" dropped {holes} interior ring(s); mass unchanged, footprint now "
+ f"includes the holes")
+ return gdf
+
+
+def _segmentize(gdf, columns):
+ """Cut every polyline into two-vertex segments, emission split by length."""
+ rows = []
+ for _, record in gdf.iterrows():
+ coords = list(record.geometry.coords)
+ segments = [LineString([a, b]) for a, b in zip(coords, coords[1:])]
+ lengths = np.array([s.length for s in segments], dtype=float)
+ share = (lengths / lengths.sum() if lengths.sum() > 0
+ else np.full(len(segments), 1.0 / len(segments)))
+ for segment, fraction in zip(segments, share):
+ rows.append({**{c: float(record[c]) * fraction for c in columns},
+ "geometry": segment})
+ print(f" cut {len(gdf)} polyline(s) into {len(rows)} two-vertex segment(s)")
+ return gpd.GeoDataFrame(rows, geometry="geometry", crs=gdf.crs)
+
+
+def normalize(gdf):
+ """A frame the reader can be handed, and what the document needs to know."""
+ if gdf.crs is None:
+ raise ValueError("the frame has no CRS; set one so it can be reprojected to "
+ "the geographic CRS the documents project from")
+
+ columns = [c for c in PATHWAYS if c in gdf.columns]
+ if not columns:
+ raise ValueError(f"no emission column: expected one or more of "
+ f"{list(PATHWAYS)} in kg/yr, got {list(gdf.columns)}")
+
+ families = {FAMILIES.get(t) for t in gdf.geom_type.unique()}
+ if len(families) != 1 or None in families:
+ raise ValueError(f"one geometry family per frame; got "
+ f"{sorted(gdf.geom_type.unique())}")
+ family = families.pop()
+
+ stack = [c for c in STACK if c in gdf.columns]
+ plume = family == "point" and len(stack) == len(STACK)
+ if family == "point" and stack and not plume:
+ raise ValueError(f"plume rise needs all of {STACK}; the frame has {stack}")
+
+ # Work in the grid's own metres: every share below is a ratio of areas or
+ # lengths, and the document computes them in this same projection.
+ frame = _explode(gdf.to_crs(LCC), columns)
+ if family == "polygon":
+ frame = _drop_holes(frame)
+ if family == "line":
+ frame = _segmentize(frame, columns)
+
+ keep = columns + (STACK if plume else [])
+ frame = frame[keep + ["geometry"]].copy()
+ for column in keep:
+ frame[column] = np.asarray(frame[column], dtype=float)
+
+ # The vertex axis the reader pads to, and the document declares.
+ nvert_max = (1 if family == "point" else
+ 2 if family == "line" else
+ max(len(g.exterior.coords) for g in frame.geometry))
+
+ frame = frame.to_crs(FILE_CRS)
+ print(f" {len(frame):,} records · {family} · nvert_max {nvert_max} · "
+ f"{', '.join(keep)}" + (" · ASME plume rise" if plume else ""))
+ return frame, family, columns, plume, nvert_max
+
+
+def shapefile_zip(frame):
+ """The frame as a zipped four-file shapefile set, in memory.
+
+ GDAL writes a shapefile as several files with a shared stem, so this is the
+ one step that needs a directory — a temporary one, gone on the way out.
+ `emis.shp` is the member every generated document names.
+ """
+ with tempfile.TemporaryDirectory() as tmp:
+ frame.to_file(pathlib.Path(tmp) / "emis.shp", driver="ESRI Shapefile",
+ engine="pyogrio")
+ buffer = io.BytesIO()
+ with zipfile.ZipFile(buffer, "w") as archive:
+ for part in sorted(pathlib.Path(tmp).iterdir()):
+ archive.writestr(part.name, part.read_bytes())
+ return buffer.getvalue()
+
+
+def equation_refs(doc):
+ """`lhs` -> every variable its right-hand side needs."""
+ loaded = earthsci_ast.load_document(copy.deepcopy(doc))
+ model = loaded.models[next(iter(doc["models"]))]
+ return {eq.lhs: earthsci_ast.free_variables(eq.rhs) for eq in model.equations}
+
+
+def prune_pathways(doc, columns):
+ """Keep only the pathways the frame has columns for."""
+ model = doc["models"]["ISRM"]
+ variables, equations = model["variables"], model["equations"]
+ report = doc["metadata"]["x_esd"]["report"]
+
+ keep = [PATHWAYS[c] for c in columns]
+ report["pathways"] = [p for p in report["pathways"] if p["sr_array"] in keep]
+
+ total = next(e for e in equations if e["lhs"] == "TotalPM25")
+ terms = [{"op": "index", "args": [f"conc_{p}", "rcv"]} for p in keep]
+ total["rhs"]["args"] = [f"conc_{p}" for p in keep]
+ total["rhs"]["expr"]["args"][1] = ({"op": "+", "args": terms} if len(terms) > 1
+ else terms[0])
+
+ roots = [report["total_pm25"], *report["deaths"].values(), report["record_field"],
+ *CELL, "rcv_cx", "rcv_cy"]
+ for pathway in report["pathways"]:
+ roots += [pathway["concentration"], *pathway["emissions"],
+ "pm_" + pathway["sr_array"]]
+
+ refs = equation_refs(doc)
+ needed, stack = set(), list(roots)
+ while stack:
+ name = stack.pop()
+ if name in needed or name not in variables:
+ continue
+ needed.add(name)
+ stack.extend(refs.get(name, set()) & set(variables))
+
+ dropped = sorted(set(variables) - needed)
+ model["variables"] = {n: v for n, v in variables.items() if n in needed}
+ model["equations"] = [e for e in equations if e["lhs"] in needed]
+ live = {(v.get("update") or {}).get("source") for v in model["variables"].values()}
+ for source in [s for s in doc["data_sources"] if s not in live]:
+ doc["data_sources"].pop(source)
+ dropped.append(source)
+ if dropped:
+ print(f" pruned {len(dropped)} variable(s)/source(s); {len(keep)} pathway(s) "
+ f"kept: {', '.join(keep)}")
+ return doc
+
+
+def fold_in_template_library(doc):
+ """Merge the imported `expression_templates` in, and drop the import key.
+
+ Not using `earthsci_ast.emit_document` because it closes the metaparameters
+ into the index sets, turning `emis_records: {size: "N_REC"}` into `{size: 0}`.
+ """
+ for model in doc["models"].values():
+ merged = {}
+ for imported in model.pop("expression_template_imports", []) or []:
+ library = json.loads(download(REPO_RAW + imported["ref"].rsplit("/", 1)[-1]))
+ merged.update(library.get("expression_templates") or {})
+ merged.update(model.get("expression_templates") or {}) # the document's own win
+ model["expression_templates"] = merged
+ return doc
+
+
+def build_document(family, plume, columns, nvert_max, url, records=None):
+ """The template, made into the document this particular frame needs."""
+ name = TEMPLATES[(family, plume)]
+ doc = fold_in_template_library(json.loads(download(REPO_RAW + name)))
+
+ source = doc["data_sources"]["Emis"]
+ source["source"]["url_template"] = url
+
+ # `nvert_max` is TWO declarations that have to agree: what the reader pads the
+ # vertex axis to, and how wide the document says that axis is. Setting only
+ # the reader's half is not a validation error and not a wrong number — the
+ # engine reads a [records, 5, 2] array into a [records, 56, 2] parameter and
+ # the worker dies with no message at all. The axis is found through the
+ # geometry variable rather than by name, because each family calls it
+ # something different (N_EVERT, N_PVERT, N_LVERT).
+ source["reader_options"]["nvert_max"] = nvert_max
+ model = doc["models"]["ISRM"]
+ geometry = next(name for name, v in model["variables"].items()
+ if ((v.get("update") or {}).get("from") or {})
+ .get("file_variable") == "geometry")
+ axis = model["variables"][geometry]["shape"][1]
+ doc["metaparameters"][doc["index_sets"][axis]["size"]]["default"] = nvert_max
+
+ if records:
+ # Scale is a DOCUMENT edit, not a request parameter: a loader-level
+ # `select` range on the source that discovers its own extent.
+ source["select"] = {"axes": [{"range": {"start": 0, "stop": records}}]}
+
+ prune_pathways(doc, columns)
+
+ # Cheaper to hear it from the library than from the API, which rejects an
+ # invalid document with a bare "not valid under any of the schemas listed in
+ # the 'oneOf' keyword" and 60 KB of echoed model, naming nothing.
+ result = earthsci_ast.validate(earthsci_ast.load_document(copy.deepcopy(doc)))
+ problems = list(result.schema_errors) + list(result.structural_errors)
+ if problems:
+ raise RuntimeError("the document this frame produced is invalid:\n "
+ + "\n ".join(str(p) for p in problems[:6]))
+
+ print(f" {name} · {axis} width {nvert_max} · valid"
+ + (f" · first {records:,} records" if records else ""))
+ return doc
+
+TERMINAL = {"succeeded", "failed", "cancelled", "capped"}
+
+
+def money(dollars):
+ return "—" if dollars is None else (
+ f"${dollars:.4f}" if 0 < abs(dollars) < 0.01 else f"${dollars:.2f}")
+
+
+def clock(seconds):
+ seconds = int(seconds)
+ if seconds >= 3600:
+ return f"{seconds // 3600}h{seconds % 3600 // 60:02d}m"
+ return f"{seconds // 60}m{seconds % 60:02d}s" if seconds >= 60 else f"{seconds}s"
+
+
+def upload_dataset(session, payload, name, esio_format="shapefile"):
+ """Put bytes in the dataset store under `name`; return the committed record."""
+ created = session.post("/datasets", {"format": esio_format, "origin": "upload"})
+ if created["upload"]["mode"] != "proxy":
+ raise RuntimeError(f"this deployment wants a {created['upload']['mode']!r} "
+ "upload, not a proxied one")
+ if len(payload) > created["max_object_bytes"]:
+ raise RuntimeError(f"{name} is {len(payload):,} B, over the "
+ f"{created['max_object_bytes']:,} B per-object ceiling")
+ session.put_bytes(f"{created['upload']['url']}?key={urllib.parse.quote(name)}",
+ payload)
+ dataset = session.post(f"/datasets/{created['id']}/commit")
+ print(f" uploaded {name} ({len(payload):,} B) as dataset {dataset['id']}")
+ return dataset
+
+
+def dataset_url(dataset):
+ """Where a document's `url_template` should point at this dataset."""
+ base = dataset["store_url"].rstrip("/")
+ return base if dataset.get("format") == "zarr" else f"{base}/{dataset['object_key']}"
+
+
+def quote(doc, observeds):
+ """Price the run. No auth — `POST /quote` has no database."""
+ routing = http_json("POST", f"{API}/quote", timeout=300.0,
+ json_body={"esm": doc, "kind": "evaluate",
+ "observeds": observeds})
+ option = routing.get("dispatchable")
+ if not option:
+ raise RuntimeError(f"no dispatchable backend: {routing.get('reason')}")
+ estimate, sizing = option["estimate"], routing.get("sizing") or {}
+ print(f" {option['backend']} · {sizing.get('vcpus')} vCPU / "
+ f"{sizing.get('memory_mb')} MB · {clock(estimate['resource_seconds'])} "
+ f"predicted (cap {clock(estimate['max_resource_seconds'])}) · "
+ f"{money(estimate['price'])}")
+ return estimate["price"]
+
+
+def watch(session, run_id):
+ """Follow a run to a terminal event, surviving a dropped connection.
+
+ The stream replays everything already recorded before it streams, so a
+ reconnect sees what it missed — including a terminal event that landed while
+ we were disconnected.
+ """
+ started = time.time()
+ while True:
+ try:
+ with session.stream(f"/runs/{run_id}/events", timeout=240.0) as resp:
+ for line in resp:
+ line = line.decode("utf-8", "replace").strip()
+ if not line.startswith("data:"):
+ continue
+ event = json.loads(line[5:]).get("kind") or {}
+ kind = event.get("type")
+ if kind == "progress":
+ f = event.get("fraction", 0.0)
+ print(f"\r [{'#' * int(f * 40):<40}] {f * 100:5.1f}% "
+ f"elapsed {clock(time.time() - started)}", end="", flush=True)
+ elif kind in ("queued", "started"):
+ print(f" {kind}", flush=True)
+ elif kind in TERMINAL:
+ print()
+ return event
+ except (HttpError, OAuthError, urllib.error.URLError, OSError, ValueError) as e:
+ print(f"\n (stream dropped: {e}; the run is server-side and unaffected)")
+ run = session.get(f"/runs/{run_id}")
+ if run["status"] in TERMINAL:
+ return {"type": run["status"]}
+ time.sleep(5)
+
+
+def read_fields(session, dataset_id, names):
+ """One 1-D array per name."""
+ dataset = session.get(f"/datasets/{dataset_id}")
+ pins = ",".join(f"{d['name']}:0" for d in dataset.get("dims", []) if d["size"] == 1)
+ series = {}
+ for name in names:
+ query = {"var": name, "max_values": MAX_VALUES}
+ if pins:
+ query["at"] = pins
+ field = session.get(f"/datasets/{dataset_id}/field?{urllib.parse.urlencode(query)}")
+ if len(field["axes"]) != 1 or field["axes"][0]["stride"] != 1:
+ raise RuntimeError(f"{name}: expected one free axis read whole: "
+ f"{field['axes']}")
+ series[name] = field["values"]
+ return series
+
+
+def receptor_frame(series):
+ """The answer as a GeoDataFrame: one cell rectangle per receptor.
+
+ Handed back in the InMAP/EPA Lambert conformal projection
+ Call `.to_crs(...)` to switch to another CRS.
+ """
+ cells = [box(w, s, e, n) for w, s, e, n in
+ zip(series["rcv_W"], series["rcv_S"], series["rcv_E"], series["rcv_N"])]
+ return gpd.GeoDataFrame({name: series[name] for name in TOTALS},
+ geometry=cells, crs=LCC)
+
+def run_isrm(gdf, records=None, max_price=None):
+ """Run the InMAP ISRM over `gdf` on EarthSciLab, and bring the answer back.
+
+ `gdf` carries one row per source, geometry in any CRS, and a column per
+ pollutant in kg/yr (see 2.1). Returns a GeoDataFrame of the 52,411 receptor
+ cells with TotalPM25 in µg/m³ and the two mortality estimates, and the run's
+ id in `.attrs`.
+ """
+ print("layer")
+ frame, family, columns, plume, nvert_max = normalize(gdf)
+
+ print("upload")
+ dataset = upload_dataset(session, shapefile_zip(frame), "emis.zip")
+
+ print("document")
+ doc = build_document(family, plume, columns, nvert_max,
+ dataset_url(dataset), records=records)
+
+ print("quote")
+ price = quote(doc, OBSERVEDS)
+
+ print("run")
+ run = session.post("/runs", {
+ "esm": doc, "kind": "evaluate", "observeds": OBSERVEDS,
+ "max_price": price if max_price is None else max_price})
+ print(f" run {run['id']} — {run['status']} on {run['backend']}, "
+ f"{money(run['price'])}")
+ outcome = watch(session, run["id"])
+ if outcome["type"] != "succeeded":
+ raise RuntimeError(f"run {run['id']} {outcome['type']}: "
+ f"{outcome.get('message', '')}")
+ print(f" succeeded in {clock(outcome.get('resource_seconds', 0))} of resource time")
+
+ receptors = receptor_frame(read_fields(session, outcome["dataset_id"], OBSERVEDS))
+ receptors.attrs.update(run_id=run["id"], dataset_id=dataset["id"],
+ records=len(frame), pathways=columns)
+ for name in TOTALS:
+ print(f" sum({name})".ljust(22) + repr(float(receptors[name].sum())))
+ return receptors
+```
+
+### Sign in
+
+Before you can run an analysis or simulation, you will need an EarthSciLab account. Go to https://earthscilab.com/ and click "Sign in" in the upper right corner of the page, then click "Sign up" and follow the instructions.
+
+Once you have an account, run the code in the cell below and then follow the instructions to login to your account in this notebook.
+
+```python
+session = Session()
+print("signed in as", session.get("/me")["email"])
+print("credit:", session.get("/credits"))
+```
+
+## Run an analysis
+
+An order to calculate air quality impacts using ISRM in EarthSciLab, you will need a [GeoPandas](https://geopandas.org/en/stable/) GeoDataFrame including the geometry of each emissions record, plus the following information:
+
+| column | units | meaning |
+|---|---|---|
+| `PM25` | kg/yr | emissions of primary PM2.5, resulting in `PrimaryPM25` concentrations |
+| `NOx` | kg/yr | emissions of NOx, resulting in `pNO3` concentrations |
+| `NH3` | kg/yr | emissions of NH3, resulting in `pNH4` concentrations |
+| `SOx` | kg/yr | emissions of SO2, resulting in `pSO4` concentrations |
+| `VOC` | kg/yr | emissions of VOCs, resulting in `SOA` concentrations |
+| `STKHGT` | m | stack height — POINT frames only |
+| `STKDIAM` | m | stack exit diameter |
+| `STKTEMP` | K | exit gas temperature |
+| `STKVEL` | m/s | exit gas velocity |
+
+Each record should either have information for all four stack parameter columns or for none.
+If the stack parameters are specified, a point source's mass is allocated to a vertical emission height using a plume rise algorithm;
+otherwise emissions are assumed to occur at ground level.
+
+Below, we will demonstrate a couple of analyses to get you started:
+
+### Example point source analysis
+
+The cell below creates a function that download's a US EPA emissions inventory for electricity generating units (EGUs)
+and processes it into the required geodataframe format described above:
+
+```python
+FF10_URL = ("https://gaftp.epa.gov/air/emismod/2016/alpha/2016fd/emissions/"
+ "2016fd_inputs_point.zip")
+
+# FF10 point columns are positional (0-based), as EarthSciIO's own reader has
+# them; isrm_point.esm's metadata.x_esd.columns names the same indices.
+FF10 = {12: "POLID", 13: "ANN_VALUE", 17: "STKHGT", 18: "STKDIAM",
+ 19: "STKTEMP", 21: "STKVEL", 23: "LONGITUDE", 24: "LATITUDE"}
+
+SHORT_TON_KG = 907.18474
+
+
+def _compared_codes(node, found=None):
+ """Every integer an `==` in this expression compares against.
+
+ Collected by walking rather than by indexing, because the shape of a mask
+ depends on how many codes it covers: `is_VOC` is an `or` of 35 `==` nodes
+ and `is_NH3` is a single bare `==`.
+ """
+ found = set() if found is None else found
+ if isinstance(node, dict):
+ if node.get("op") == "==":
+ args = node.get("args") or []
+ if len(args) == 2 and isinstance(args[1], (int, float)):
+ found.add(int(args[1]))
+ for value in node.values():
+ _compared_codes(value, found)
+ elif isinstance(node, list):
+ for item in node:
+ _compared_codes(item, found)
+ return found
+
+
+def pollutant_classes():
+ """`POLID` -> emission column, read out of isrm_point.esm itself."""
+ model = json.loads(download(REPO_RAW + "isrm_point.esm"))["models"]["ISRM"]
+ codes = model["variables"]["pollutant"]["update"]["from"]["codes"]["map"]
+ classes = {}
+ for column in PATHWAYS:
+ mask = next(e for e in model["equations"] if e["lhs"] == f"is_{column}")
+ wanted = _compared_codes(mask["rhs"])
+ for polid, code in codes.items():
+ if code in wanted:
+ classes[polid.upper()] = column
+ return classes
+
+
+def egu_points(limit=None):
+ """The EGU inventory as one row per stack, in SI units."""
+ classes = pollutant_classes()
+ with zipfile.ZipFile(io.BytesIO(download(FF10_URL))) as archive:
+ member = next(n for n in archive.namelist()
+ if "egu" in n.lower() and not n.endswith("/"))
+ raw = pd.read_csv(io.BytesIO(archive.read(member)), header=None, comment="#",
+ usecols=list(FF10), names=None, dtype=str,
+ engine="python", on_bad_lines="skip")
+ raw = raw.rename(columns=FF10)
+ # One asserted header line survives the '#' comments.
+ if str(raw.iloc[0]["POLID"]).strip().lower() in ("polid", "poll"):
+ raw = raw.iloc[1:]
+ print(f" {member}: {len(raw):,} FF10 rows")
+
+ raw["column"] = raw["POLID"].str.strip().str.upper().map(classes)
+ raw = raw.dropna(subset=["column"])
+ numeric = ["ANN_VALUE", "STKHGT", "STKDIAM", "STKTEMP", "STKVEL",
+ "LONGITUDE", "LATITUDE"]
+ for name in numeric:
+ raw[name] = pd.to_numeric(raw[name], errors="coerce")
+ raw = raw.dropna(subset=numeric)
+ print(f" {len(raw):,} rows classified into {sorted(raw['column'].unique())}")
+
+ # A stack IS its location plus its four parameters: rows that agree on all
+ # six are the same physical stack, and summing them is exact for a linear
+ # model. Pivoting on that key is what turns long into wide.
+ key = ["LONGITUDE", "LATITUDE", "STKHGT", "STKDIAM", "STKTEMP", "STKVEL"]
+ wide = (raw.pivot_table(index=key, columns="column", values="ANN_VALUE",
+ aggfunc="sum", fill_value=0.0)
+ .reset_index())
+ wide.columns.name = None
+ print(f" pivoted to {len(wide):,} stacks")
+ if limit:
+ wide = wide.head(limit)
+
+ emissions = [c for c in PATHWAYS if c in wide.columns]
+ for column in emissions:
+ wide[column] = wide[column] * SHORT_TON_KG # short ton/yr -> kg/yr
+ wide["STKHGT"] = wide["STKHGT"] * 0.3048 # ft -> m
+ wide["STKDIAM"] = wide["STKDIAM"] * 0.3048
+ wide["STKVEL"] = wide["STKVEL"] * 0.3048 # ft/s -> m/s
+ wide["STKTEMP"] = (wide["STKTEMP"] - 32.0) * 5.0 / 9.0 + 273.15 # degF -> K
+
+ return gpd.GeoDataFrame(
+ wide[emissions + STACK],
+ geometry=gpd.points_from_xy(wide["LONGITUDE"], wide["LATITUDE"]),
+ crs="EPSG:4269")
+```
+
+Now, we can run the function we created above to get the emissions geodataframe:
+
+```python
+points = egu_points(limit=100) # <- Change to limit=None to run the full inventory. The limit is just for a quick test.
+print()
+print(points[[c for c in PATHWAYS if c in points.columns]].sum().to_string())
+points.head(3)
+```
+
+ 2016fd_cb6_16j/inputs/ptegu/egucems_2016v2_POINT_20180327_HCLCLaug_12apr2018_v2.csv: 93,459 FF10 rows
+ 24,597 rows classified into ['NH3', 'NOx', 'PM25', 'SOx', 'VOC']
+ pivoted to 2,159 stacks
+
+ PM25 1.336610e+06
+ VOC 5.199170e+05
+ NOx 4.129675e+06
+ NH3 9.602069e+05
+ SOx 3.480194e+06
+
+
+
+
+
+
+
+
PM25
+
VOC
+
NOx
+
NH3
+
SOx
+
STKHGT
+
STKDIAM
+
STKTEMP
+
STKVEL
+
geometry
+
+
+
+
+
0
+
21772.433760
+
7348.196394
+
71331.936106
+
2068.381207
+
7457.058563
+
54.8640
+
4.2672
+
372.038889
+
0.272278
+
POINT (-122.6862 48.8287)
+
+
+
1
+
2449.398798
+
90.718474
+
8164.662660
+
3265.865064
+
544.310844
+
25.6032
+
3.3528
+
394.261111
+
21.153120
+
POINT (-122.487 48.7451)
+
+
+
2
+
1451.495584
+
90.718474
+
6350.293180
+
2177.243376
+
362.873896
+
25.6032
+
3.3528
+
394.261111
+
21.153120
+
POINT (-122.487 48.7454)
+
+
+
+
+
+Now, we can run the `run_isrm` function we created at the top of the notebook to calculate the resulting PM2.5 concentrations. It can take a while, depending on how many emissions records you are processing. Also, there will be a progress bar but it may get stuck for a while at around 75%; this is normal.
+
+```python
+point_receptors = run_isrm(points)
+```
+
+ layer
+ 100 records · point · nvert_max 1 · PM25, VOC, NOx, NH3, SOx, STKHGT, STKDIAM, STKTEMP, STKVEL · ASME plume rise
+ upload
+ uploaded emis.zip (26,476 B) as dataset 7e562bc1-6aea-4bdd-aab1-34b0c0b435b0
+ document
+ isrm_gdf_point.esm · emis_vertex width 1 · valid
+ quote
+ cloud_batch · 4.0 vCPU / 16384 MB · 10m00s predicted (cap 1h20m) · $0.04
+ run
+ run 8a632caa-d3f0-41e5-babc-f53900505468 — running on cloud_batch, $0.04
+ queued
+ started
+ [###################################### ] 96.3% elapsed 2m32s
+ succeeded in 2m11s of resource time
+ sum(TotalPM25) 281.24156822422736
+ sum(deathsK) 43.91889991152327
+ sum(deathsL) 98.79455102893459
+
+#### Plotting the result
+
+The cell below creates a function to show our calculate concentrations or health impacts on a map:
+
+```python
+import matplotlib.pyplot as plt
+from matplotlib.colors import ListedColormap
+
+# `Blues` with its white end trimmed off: at pure white the lowest cells are
+# invisible against the page.
+SEQUENTIAL = ListedColormap(plt.get_cmap("Blues")(np.linspace(0.15, 1.0, 256)))
+
+# State outlines, to give the concentration field somewhere to stand. 20m is the
+# coarsest of the three cartographic generalisations the Census publishes — at
+# the scale these maps are drawn at, the finer ones are only more vertices.
+STATES_URL = ("https://www2.census.gov/geo/tiger/GENZ2020/shp/"
+ "cb_2020_us_state_20m.zip")
+
+_states = {}
+
+
+def states():
+ """State boundaries in the receptor grid's projection, read once."""
+ if "gdf" not in _states:
+ _states["gdf"] = gpd.read_file(io.BytesIO(download(STATES_URL))).to_crs(LCC)
+ return _states["gdf"]
+
+
+def show(receptors, title="", column="TotalPM25", units="µg/m³",
+ clip_pct=99.0, share=1.0, height=6.4, boundaries=True):
+ """The receptor grid as a choropleth."""
+ v = receptors[column].to_numpy()
+ vmax = np.percentile(v, clip_pct) or v.max() or 1.0
+
+ bounds = receptors.total_bounds
+ if share:
+ order = np.argsort(v)[::-1]
+ keep = order[:np.searchsorted(np.cumsum(v[order]), v.sum() * share) + 1]
+ bounds = receptors.iloc[keep].total_bounds
+ x0, y0, x1, y1 = bounds
+ pad = 0.06 * max(x1 - x0, y1 - y0)
+
+ # The figure follows the MAP's shape: these are metres in both directions, so
+ # the axes are equal-aspect and their width follows the extent.
+ span = height * (x1 - x0) / (y1 - y0)
+ fig, ax = plt.subplots(figsize=(min(13.0, max(4.5, span)) + 1.8, height), dpi=150)
+
+ # No edge colour: at 52,411 cells a stroke per rectangle is most of the ink on
+ # the page, and the boundaries it draws are the grid's, not the data's.
+ receptors.plot(ax=ax, column=column, cmap=SEQUENTIAL, vmin=0.0, vmax=vmax,
+ linewidth=0.0, edgecolor="none", rasterized=True, legend=True,
+ legend_kwds={"label": f"{column} ({units})", "shrink": 0.55,
+ "extend": "max" if v.max() > vmax else "neither"})
+
+ # Over the choropleth, and thin enough not to compete with it. Reprojected to
+ # whatever CRS the caller handed the receptors over in, so a `.to_crs(...)`
+ # upstream carries the outlines with it.
+ if boundaries:
+ states().to_crs(receptors.crs).boundary.plot(
+ ax=ax, color="0.35", linewidth=0.4, zorder=3)
+
+ ax.set_xlim(x0 - pad, x1 + pad)
+ ax.set_ylim(y0 - pad, y1 + pad)
+ ax.set_aspect("equal")
+ ax.set_axis_off()
+ ax.set_title(
+ f"{title or column}\n"
+ f"{receptors.attrs.get('records', len(receptors)):,} emission records · "
+ f"{', '.join(receptors.attrs.get('pathways', []))} · "
+ f"run {receptors.attrs.get('run_id', '?')[:8]}\n"
+ f"scale clipped at the {clip_pct:g}th percentile ({vmax:.3g} {units}); "
+ f"true maximum {v.max():.3g} {units}",
+ fontsize=9, loc="left")
+ fig.tight_layout()
+ return ax
+```
+
+Now, we can use that function to make our map:
+
+```python
+show(point_receptors, "PM2.5 from EGU point sources, through the InMAP ISRM")
+plt.show()
+```
+
+
+
+
+
+---
+### Example area source analysis
+
+We can use the same set of functions with a polygon-type geodataframe to simulate impacts of area emission sources. Here, we give all the counties in Illinois a consistent rate of emissions:
+
+```python
+COUNTIES_URL = ("https://www2.census.gov/geo/tiger/GENZ2020/shp/"
+ "cb_2020_us_county_20m.zip")
+STATE = "17" # Illinois
+RATE_PM25 = 1000.0 # kg/yr per km² of land area — an example rate
+
+counties = gpd.read_file(io.BytesIO(download(COUNTIES_URL)))
+counties = counties[counties["STATEFP"] == STATE].copy()
+counties["PM25"] = RATE_PM25 * counties["ALAND"] / 1e6
+polygons = counties[["NAME", "PM25", "geometry"]]
+print(f"{len(polygons)} counties · {polygons['PM25'].sum():,.0f} kg/yr of primary PM2.5")
+polygons.head(3)
+```
+
+ 102 counties · 143,778,461 kg/yr of primary PM2.5
+
+
+
+
+
+
+
+
NAME
+
PM25
+
geometry
+
+
+
+
+
2
+
Stephenson
+
1461392.061
+
POLYGON ((-89.92647 42.50579, -89.83759 42.504...
+
+
+
11
+
Putnam
+
414649.315
+
POLYGON ((-89.46639 41.23387, -89.35673 41.233...
+
+
+
105
+
Richland
+
932484.098
+
POLYGON ((-88.25778 38.73114, -88.25858 38.847...
+
+
+
+
+
+```python
+polygon_receptors = run_isrm(polygons)
+```
+
+ layer
+ 102 records · polygon · nvert_max 56 · PM25
+ upload
+ uploaded emis.zip (32,094 B) as dataset bec630dc-e16d-4d6c-ba6c-bff82fe70e6d
+ document
+ pruned 20 variable(s)/source(s); 1 pathway(s) kept: PrimaryPM25
+ isrm_gdf_polygon.esm · poly_vertex width 56 · valid
+ quote
+ cloud_batch · 4.0 vCPU / 16384 MB · 10m00s predicted (cap 1h20m) · $0.04
+ run
+ run 74baed7f-877c-4f68-8319-4df323e75605 — running on cloud_batch, $0.04
+ queued
+ started
+ [####################################### ] 97.6% elapsed 2m34s
+ succeeded in 2m14s of resource time
+ sum(TotalPM25) 4219.068006714893
+ sum(deathsK) 1406.9517405485624
+ sum(deathsL) 3176.194766023125
+
+```python
+show(polygon_receptors, "PM2.5 from an Illinois county area-source layer")
+plt.show()
+```
+
+
+
+
+
+---
+## Example line source analysis
+
+Here, we calculate impacts of emissions on interstates in Illinois, with a constant rate of emission per kilometer of road. Before running the air quality analysis, we simplify the line shapes to reduce computational burden. (We simplify to 200m segments, which is still one fifth of InMAP's smallest grid cells.)
+
+```python
+ROADS_URL = (f"https://www2.census.gov/geo/tiger/TIGER2020/PRISECROADS/"
+ f"tl_2020_{STATE}_prisecroads.zip")
+SIMPLIFY_M = 200.0 # a fifth of the ISRM grid's finest cell
+RATE_ROAD_PM25 = 40.0 # kg/yr per km of road — example rates, as above
+RATE_ROAD_NOX = 400.0
+
+roads = gpd.read_file(io.BytesIO(download(ROADS_URL)))
+interstates = roads[(roads["MTFCC"] == "S1100") & (roads["RTTYP"] == "I")].to_crs(LCC)
+interstates["geometry"] = interstates.simplify(SIMPLIFY_M)
+
+km = interstates.length / 1000.0
+interstates["PM25"] = RATE_ROAD_PM25 * km
+interstates["NOx"] = RATE_ROAD_NOX * km
+lines = interstates[["FULLNAME", "PM25", "NOx", "geometry"]]
+print(f"{len(lines)} road(s) · {km.sum():,.0f} km · "
+ f"{lines['PM25'].sum():,.0f} kg/yr PM2.5, {lines['NOx'].sum():,.0f} kg/yr NOx")
+lines.head(3)
+```
+
+ 292 road(s) · 7,350 km · 294,004 kg/yr PM2.5, 2,940,040 kg/yr NOx
+
+
+
+
+
+
+
+
FULLNAME
+
PM25
+
NOx
+
geometry
+
+
+
+
+
4056
+
I- 57
+
527.653989
+
5276.539890
+
LINESTRING (729166.377 -47083.84, 729759.571 -...
+
+
+
4061
+
I- 355
+
1153.178387
+
11531.783871
+
LINESTRING (739525.605 227788.524, 739083.546 ...
+
+
+
4089
+
I- 294
+
1434.358024
+
14343.580243
+
LINESTRING (747536.216 242857.167, 747643.526 ...
+
+
+
+
+
+```python
+line_receptors = run_isrm(lines)
+```
+
+ layer
+ cut 292 polyline(s) into 1931 two-vertex segment(s)
+ 1,931 records · line · nvert_max 2 · PM25, NOx
+ upload
+ uploaded emis.zip (280,947 B) as dataset 3295a982-c57f-4c9c-bb72-483cdc82cf28
+ document
+ pruned 15 variable(s)/source(s); 2 pathway(s) kept: PrimaryPM25, pNO3
+ isrm_gdf_line.esm · line_vertex width 2 · valid
+ quote
+ cloud_batch · 4.0 vCPU / 16384 MB · 10m00s predicted (cap 1h20m) · $0.04
+ run
+ run 90026046-ca04-4022-b854-3a9313bd29a2 — running on cloud_batch, $0.04
+ queued
+ started
+ [###################################### ] 96.9% elapsed 2m26s
+ succeeded in 2m03s of resource time
+ sum(TotalPM25) 42.41880153885225
+ sum(deathsK) 13.106555416146492
+ sum(deathsL) 29.473888255125694
+
+```python
+show(line_receptors, "PM2.5 from Illinois interstate line sources")
+plt.show()
+```
+
+
+
+
+
+---
+## Cleaning up
+
+Each run uploaded an emissions dataset. You will theoretically be billed for storing these on the server, although the cost for files this size is minimal. The cell below will delete them, you can also do it at https://earthscilab.com.
+
+```python
+for receptors in (point_receptors, polygon_receptors, line_receptors):
+ dataset_id = receptors.attrs["dataset_id"]
+ http_json("DELETE", f"{API}/datasets/{dataset_id}", headers=session.headers())
+ print("deleted", dataset_id)
+```
+
+ deleted 7e562bc1-6aea-4bdd-aab1-34b0c0b435b0
+ deleted bec630dc-e16d-4d6c-ba6c-bff82fe70e6d
+ deleted 3295a982-c57f-4c9c-bb72-483cdc82cf28
+
+## Conclusion
+
+That's all for this tutorial! If you have any questions or run into any issues, feel free to get touch at https://earthsciml.discourse.group/ or https://groups.google.com/g/inmap-users.
diff --git a/website/static/blog/2026-09-09-isrm-esm/isrm_esm.ipynb b/website/static/blog/2026-09-09-isrm-esm/isrm_esm.ipynb
new file mode 100644
index 000000000..9cca6ef2d
--- /dev/null
+++ b/website/static/blog/2026-09-09-isrm-esm/isrm_esm.ipynb
@@ -0,0 +1,1495 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Using EarthSciLab for calculations with the InMAP Source Receptor Matrix (ISRM)\n",
+ "\n",
+ "Author: Chris Tessum (ctessum@illinois.edu)\n",
+ "\n",
+ "## Introduction\n",
+ "\n",
+ "In the past, there have been three ways to interact with ISRM: 1) downloading the ISRM file and working with it locally; 2) using the service hosted at inmap.run, and 3) using the [Zarr](https://zarr.dev/) version of ISRM hosted online.\n",
+ "\n",
+ "You will always be able to use ISRM on your own computer, but we will be removing (free) access to the two online options in favor of a new service which we will describe in this post. There are two reasons for this: 1) as usage has increased, making the online services available for free has become a financial burden; and 2) the new service offers capabilities that the two old options do not.\n",
+ "\n",
+ "### earthscilab.com\n",
+ "\n",
+ "[EarthSciLab](https://earthscilab.com) is an online service that allows users to specify a model as a system of equations, and then run the model either in their browser or using cloud computing resources. It is built on top of [EarthSciAST](https://github.com/EarthSciML/EarthSciAST), an open-source system for compiling equations into runnable model simulations.\n",
+ "\n",
+ "Simulations that are run in EarthSciLab using your browser are free, but the service charges for simulations run using cloud computing resources, so that it is able to recoup the cost of those resources. Because the ISRM is a large file stored in the cloud, doing the calculations in this notebook using EarthSciLab may cost you a little bit. However, for calculations of the scale included in this notebook, the cost to you is minimal and may be zero.\n",
+ "\n",
+ "### Bugs fixed compared to previous versions\n",
+ "\n",
+ "While creating this tutorial, I found a couple of bugs in previous versions of ISRM and the code that interacted with it. Both of them have been fixed in this version, but have not yet been fixed in the older versions.\n",
+ "\n",
+ "1. In the Go code for the `inmap srpredict` command that performed analyses using the ISRM, interpolations for plume rises that fell between available layers are performed backwards, so a plume that should have been near the bottom of a gap between layers was placed near the top, and vice versa. For more details and an analysis of the impacts, refer [here](https://github.com/spatialmodel/inmap/issues/121).\n",
+ "\n",
+ "2. In the Zarr version of ISRM (at s3://inmap-model/isrm_v1.2.1.zarr), the `layers` variable which specified which vertical layers SR matrices had been calculated for read [0, 1, 2], when it should have said [0, 3, 6]. This has been fixed in a new version of the file at s3://inmap-model/isrm_v1.2.2.zarr, which has also be re-compressed to take up less space."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "## Setup\n",
+ "\n",
+ "Below is a bunch of code related to logging into the EarthSciLab service, setting up our ISRM calculation in the format required for EarthSciLab (which is a general service for evaluating geoscience equations and doesn't include any InMAP- or ISRM-related functionality itself), and actually running the simulation. You don't need to understand the code in the next cell in order to run your own analyses using ISRM."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b99ab797",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import base64\n",
+ "import copy\n",
+ "import io\n",
+ "import json\n",
+ "import pathlib\n",
+ "import ssl\n",
+ "import tempfile\n",
+ "import time\n",
+ "import urllib.error\n",
+ "import urllib.parse\n",
+ "import urllib.request\n",
+ "import webbrowser\n",
+ "import zipfile\n",
+ "\n",
+ "import earthsci_ast\n",
+ "import geopandas as gpd\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "from shapely.geometry import LineString, Polygon, box\n",
+ "\n",
+ "API = \"https://api.earthscilab.com\"\n",
+ "WORKOS = \"https://api.workos.com\"\n",
+ "REPO_RAW = \"https://raw.githubusercontent.com/EarthSciML/isrm.esm/main/\"\n",
+ "\n",
+ "_downloads = {}\n",
+ "\n",
+ "\n",
+ "def download(url):\n",
+ " \"\"\"`url`'s bytes, fetched once per kernel and kept in memory.\"\"\"\n",
+ " if url not in _downloads:\n",
+ " with urllib.request.urlopen(url, timeout=900) as resp:\n",
+ " _downloads[url] = resp.read()\n",
+ " print(f\"fetched {url.rsplit('/', 1)[-1]} ({len(_downloads[url]):,} bytes)\")\n",
+ " return _downloads[url]\n",
+ "\n",
+ "\n",
+ "class HttpError(Exception):\n",
+ " def __init__(self, status, body, url):\n",
+ " super().__init__(f\"HTTP {status} from {url}: {body[:600]}\")\n",
+ " self.status, self.body = status, body\n",
+ "\n",
+ "\n",
+ "class OAuthError(Exception):\n",
+ " \"\"\"A 400 from WorkOS carrying an OAuth 2.0 `error` code.\"\"\"\n",
+ " def __init__(self, error, description):\n",
+ " super().__init__(f\"{error}: {description}\")\n",
+ " self.error = error\n",
+ "\n",
+ "\n",
+ "def _open(req, timeout):\n",
+ " try:\n",
+ " return urllib.request.urlopen(req, timeout=timeout, context=ssl.create_default_context())\n",
+ " except urllib.error.HTTPError as e:\n",
+ " body = e.read().decode(\"utf-8\", \"replace\")\n",
+ " try:\n",
+ " payload = json.loads(body)\n",
+ " except ValueError:\n",
+ " payload = {}\n",
+ " if e.code == 400 and \"error\" in payload:\n",
+ " raise OAuthError(payload[\"error\"], payload.get(\"error_description\", \"\")) from None\n",
+ " raise HttpError(e.code, body, req.full_url) from None\n",
+ "\n",
+ "\n",
+ "def http_json(method, url, *, json_body=None, form=None, raw=None, headers=None, timeout=120.0):\n",
+ " \"\"\"One request, JSON in and JSON out (or `None` for an empty 204 body).\"\"\"\n",
+ " data, hdrs = None, dict(headers or {})\n",
+ " if json_body is not None:\n",
+ " data = json.dumps(json_body).encode()\n",
+ " hdrs[\"Content-Type\"] = \"application/json\"\n",
+ " elif form is not None:\n",
+ " data = urllib.parse.urlencode(form).encode()\n",
+ " hdrs[\"Content-Type\"] = \"application/x-www-form-urlencoded\"\n",
+ " elif raw is not None:\n",
+ " data = raw\n",
+ " hdrs[\"Content-Type\"] = \"application/octet-stream\"\n",
+ " req = urllib.request.Request(url, data=data, headers=hdrs, method=method)\n",
+ " with _open(req, timeout) as resp:\n",
+ " body = resp.read()\n",
+ " return json.loads(body) if body else None\n",
+ "\n",
+ "class Session:\n",
+ " \"\"\"A signed-in EarthSciLab caller, refreshed on demand.\"\"\"\n",
+ "\n",
+ " DEVICE_GRANT = \"urn:ietf:params:oauth:grant-type:device_code\"\n",
+ "\n",
+ " def __init__(self):\n",
+ " self.client_id = http_json(\"GET\", f\"{API}/auth/config\")[\"client_id\"]\n",
+ " self._access = None\n",
+ " self._refresh_token = None\n",
+ "\n",
+ " @staticmethod\n",
+ " def _expiry(token):\n",
+ " if not token:\n",
+ " return 0.0\n",
+ " try:\n",
+ " payload = token.split(\".\")[1]\n",
+ " payload += \"=\" * (-len(payload) % 4)\n",
+ " return float(json.loads(base64.urlsafe_b64decode(payload)).get(\"exp\", 0))\n",
+ " except Exception:\n",
+ " return 0.0\n",
+ "\n",
+ " def _adopt(self, response):\n",
+ " self._access = response[\"access_token\"]\n",
+ " # Refresh tokens ROTATE. Keeping the new one is not housekeeping — hold on\n",
+ " # to the old one and the next refresh fails.\n",
+ " if response.get(\"refresh_token\"):\n",
+ " self._refresh_token = response[\"refresh_token\"]\n",
+ "\n",
+ " def _refresh(self):\n",
+ " if not self._refresh_token:\n",
+ " return False\n",
+ " try:\n",
+ " self._adopt(http_json(\"POST\", f\"{WORKOS}/user_management/authenticate\", form={\n",
+ " \"grant_type\": \"refresh_token\", \"refresh_token\": self._refresh_token,\n",
+ " \"client_id\": self.client_id}))\n",
+ " return True\n",
+ " except OAuthError:\n",
+ " self._refresh_token = None\n",
+ " return False\n",
+ "\n",
+ " def login(self):\n",
+ " start = http_json(\"POST\", f\"{WORKOS}/user_management/authorize/device\",\n",
+ " form={\"client_id\": self.client_id})\n",
+ " print(f\"\\n Your code is: {start['user_code']}\")\n",
+ " print(f\" Open: {start['verification_uri_complete']}\\n\")\n",
+ " try:\n",
+ " webbrowser.open(start[\"verification_uri_complete\"])\n",
+ " except Exception:\n",
+ " pass\n",
+ " interval = float(start.get(\"interval\", 5))\n",
+ " deadline = time.time() + float(start.get(\"expires_in\", 300))\n",
+ " while time.time() < deadline:\n",
+ " time.sleep(interval)\n",
+ " try:\n",
+ " self._adopt(http_json(\"POST\", f\"{WORKOS}/user_management/authenticate\", form={\n",
+ " \"grant_type\": self.DEVICE_GRANT, \"device_code\": start[\"device_code\"],\n",
+ " \"client_id\": self.client_id}))\n",
+ " return\n",
+ " except OAuthError as e:\n",
+ " if e.error == \"authorization_pending\":\n",
+ " continue\n",
+ " if e.error == \"slow_down\":\n",
+ " interval += 1\n",
+ " continue\n",
+ " raise RuntimeError(f\"sign-in refused: {e}\") from None\n",
+ " raise RuntimeError(\"sign-in timed out; run this cell again\")\n",
+ "\n",
+ " def headers(self):\n",
+ " if time.time() > self._expiry(self._access) - 60:\n",
+ " if not self._refresh():\n",
+ " self.login()\n",
+ " return {\"Authorization\": f\"Bearer {self._access}\"}\n",
+ "\n",
+ " def get(self, path, timeout=120.0):\n",
+ " return http_json(\"GET\", f\"{API}{path}\", headers=self.headers(), timeout=timeout)\n",
+ "\n",
+ " def post(self, path, body=None, timeout=300.0):\n",
+ " return http_json(\"POST\", f\"{API}{path}\", json_body=body,\n",
+ " headers=self.headers(), timeout=timeout)\n",
+ "\n",
+ " def put_bytes(self, path, payload, timeout=600.0):\n",
+ " return http_json(\"PUT\", f\"{API}{path}\", raw=payload,\n",
+ " headers=self.headers(), timeout=timeout)\n",
+ "\n",
+ " def stream(self, path, timeout):\n",
+ " headers = dict(self.headers(), Accept=\"text/event-stream\")\n",
+ " req = urllib.request.Request(f\"{API}{path}\", headers=headers, method=\"GET\")\n",
+ " return _open(req, timeout)\n",
+ "\n",
+ "\n",
+ "# Each emission column, and the SR pathway it feeds.\n",
+ "PATHWAYS = {\"PM25\": \"PrimaryPM25\", \"VOC\": \"SOA\", \"NOx\": \"pNO3\",\n",
+ " \"NH3\": \"pNH4\", \"SOx\": \"pSO4\"}\n",
+ "STACK = [\"STKHGT\", \"STKDIAM\", \"STKTEMP\", \"STKVEL\"]\n",
+ "\n",
+ "TOTALS = [\"TotalPM25\", \"deathsK\", \"deathsL\"]\n",
+ "CELL = [\"rcv_W\", \"rcv_S\", \"rcv_E\", \"rcv_N\"] # each receptor's own rectangle\n",
+ "OBSERVEDS = TOTALS + CELL\n",
+ "\n",
+ "# The InMAP grid's own projection, and a SPHERE rather than an ellipsoid. The\n",
+ "# documents project lon/lat with these same parameters, so a length or an area\n",
+ "# measured here is the one the document measures.\n",
+ "LCC = (\"+proj=lcc +lat_1=33 +lat_2=45 +lat_0=40 +lon_0=-97 \"\n",
+ " \"+a=6370997 +b=6370997 +units=m +no_defs\")\n",
+ "\n",
+ "# The readers declare a file's CRS and reproject nothing, and the documents do\n",
+ "# the projection themselves, so the file goes out geographic.\n",
+ "FILE_CRS = \"EPSG:4269\"\n",
+ "\n",
+ "FAMILIES = {\"Point\": \"point\", \"MultiPoint\": \"point\",\n",
+ " \"Polygon\": \"polygon\", \"MultiPolygon\": \"polygon\",\n",
+ " \"LineString\": \"line\", \"MultiLineString\": \"line\"}\n",
+ "\n",
+ "TEMPLATES = {(\"point\", True): \"isrm_gdf_point.esm\",\n",
+ " (\"point\", False): \"isrm_gdf_point_flat.esm\",\n",
+ " (\"polygon\", False): \"isrm_gdf_polygon.esm\",\n",
+ " (\"line\", False): \"isrm_gdf_line.esm\"}\n",
+ "\n",
+ "# `GET /datasets/{id}/field` clamps to this and a query cannot raise it. The\n",
+ "# receptor axis is 52,411, so a whole field fits and comes back at stride 1.\n",
+ "MAX_VALUES = 262_144\n",
+ "\n",
+ "\n",
+ "def _explode(gdf, columns):\n",
+ " \"\"\"One row per part, with every emission column split among the parts.\"\"\"\n",
+ " multi = int(gdf.geom_type.str.startswith(\"Multi\").sum())\n",
+ " gdf = gdf.reset_index(drop=True) # so the parent index is unique\n",
+ " parts = gdf.explode(index_parts=False) # ... and repeated once per part\n",
+ " if len(parts) == len(gdf):\n",
+ " return parts.reset_index(drop=True)\n",
+ "\n",
+ " measure = parts.geometry.area\n",
+ " if not (measure > 0).any():\n",
+ " measure = parts.geometry.length\n",
+ " if not (measure > 0).any(): # points: all a point has is its count\n",
+ " measure = pd.Series(1.0, index=parts.index)\n",
+ " share = measure / measure.groupby(level=0).transform(\"sum\")\n",
+ "\n",
+ " parts = parts.copy()\n",
+ " for column in columns:\n",
+ " parts[column] = parts[column].astype(float) * share\n",
+ " print(f\" split {multi} multi-part record(s) into {len(parts) - len(gdf)} extra \"\n",
+ " f\"part(s), emissions shared by area/length\")\n",
+ " return parts.reset_index(drop=True)\n",
+ "\n",
+ "\n",
+ "def _drop_holes(gdf):\n",
+ " \"\"\"Replace each polygon by its exterior ring.\"\"\"\n",
+ " holes = int(sum(len(g.interiors) for g in gdf.geometry))\n",
+ " if not holes:\n",
+ " return gdf\n",
+ " gdf = gdf.copy()\n",
+ " gdf[\"geometry\"] = [Polygon(g.exterior) for g in gdf.geometry]\n",
+ " print(f\" dropped {holes} interior ring(s); mass unchanged, footprint now \"\n",
+ " f\"includes the holes\")\n",
+ " return gdf\n",
+ "\n",
+ "\n",
+ "def _segmentize(gdf, columns):\n",
+ " \"\"\"Cut every polyline into two-vertex segments, emission split by length.\"\"\"\n",
+ " rows = []\n",
+ " for _, record in gdf.iterrows():\n",
+ " coords = list(record.geometry.coords)\n",
+ " segments = [LineString([a, b]) for a, b in zip(coords, coords[1:])]\n",
+ " lengths = np.array([s.length for s in segments], dtype=float)\n",
+ " share = (lengths / lengths.sum() if lengths.sum() > 0\n",
+ " else np.full(len(segments), 1.0 / len(segments)))\n",
+ " for segment, fraction in zip(segments, share):\n",
+ " rows.append({**{c: float(record[c]) * fraction for c in columns},\n",
+ " \"geometry\": segment})\n",
+ " print(f\" cut {len(gdf)} polyline(s) into {len(rows)} two-vertex segment(s)\")\n",
+ " return gpd.GeoDataFrame(rows, geometry=\"geometry\", crs=gdf.crs)\n",
+ "\n",
+ "\n",
+ "def normalize(gdf):\n",
+ " \"\"\"A frame the reader can be handed, and what the document needs to know.\"\"\"\n",
+ " if gdf.crs is None:\n",
+ " raise ValueError(\"the frame has no CRS; set one so it can be reprojected to \"\n",
+ " \"the geographic CRS the documents project from\")\n",
+ "\n",
+ " columns = [c for c in PATHWAYS if c in gdf.columns]\n",
+ " if not columns:\n",
+ " raise ValueError(f\"no emission column: expected one or more of \"\n",
+ " f\"{list(PATHWAYS)} in kg/yr, got {list(gdf.columns)}\")\n",
+ "\n",
+ " families = {FAMILIES.get(t) for t in gdf.geom_type.unique()}\n",
+ " if len(families) != 1 or None in families:\n",
+ " raise ValueError(f\"one geometry family per frame; got \"\n",
+ " f\"{sorted(gdf.geom_type.unique())}\")\n",
+ " family = families.pop()\n",
+ "\n",
+ " stack = [c for c in STACK if c in gdf.columns]\n",
+ " plume = family == \"point\" and len(stack) == len(STACK)\n",
+ " if family == \"point\" and stack and not plume:\n",
+ " raise ValueError(f\"plume rise needs all of {STACK}; the frame has {stack}\")\n",
+ "\n",
+ " # Work in the grid's own metres: every share below is a ratio of areas or\n",
+ " # lengths, and the document computes them in this same projection.\n",
+ " frame = _explode(gdf.to_crs(LCC), columns)\n",
+ " if family == \"polygon\":\n",
+ " frame = _drop_holes(frame)\n",
+ " if family == \"line\":\n",
+ " frame = _segmentize(frame, columns)\n",
+ "\n",
+ " keep = columns + (STACK if plume else [])\n",
+ " frame = frame[keep + [\"geometry\"]].copy()\n",
+ " for column in keep:\n",
+ " frame[column] = np.asarray(frame[column], dtype=float)\n",
+ "\n",
+ " # The vertex axis the reader pads to, and the document declares.\n",
+ " nvert_max = (1 if family == \"point\" else\n",
+ " 2 if family == \"line\" else\n",
+ " max(len(g.exterior.coords) for g in frame.geometry))\n",
+ "\n",
+ " frame = frame.to_crs(FILE_CRS)\n",
+ " print(f\" {len(frame):,} records · {family} · nvert_max {nvert_max} · \"\n",
+ " f\"{', '.join(keep)}\" + (\" · ASME plume rise\" if plume else \"\"))\n",
+ " return frame, family, columns, plume, nvert_max\n",
+ "\n",
+ "\n",
+ "def shapefile_zip(frame):\n",
+ " \"\"\"The frame as a zipped four-file shapefile set, in memory.\n",
+ "\n",
+ " GDAL writes a shapefile as several files with a shared stem, so this is the\n",
+ " one step that needs a directory — a temporary one, gone on the way out.\n",
+ " `emis.shp` is the member every generated document names.\n",
+ " \"\"\"\n",
+ " with tempfile.TemporaryDirectory() as tmp:\n",
+ " frame.to_file(pathlib.Path(tmp) / \"emis.shp\", driver=\"ESRI Shapefile\",\n",
+ " engine=\"pyogrio\")\n",
+ " buffer = io.BytesIO()\n",
+ " with zipfile.ZipFile(buffer, \"w\") as archive:\n",
+ " for part in sorted(pathlib.Path(tmp).iterdir()):\n",
+ " archive.writestr(part.name, part.read_bytes())\n",
+ " return buffer.getvalue()\n",
+ "\n",
+ "\n",
+ "def equation_refs(doc):\n",
+ " \"\"\"`lhs` -> every variable its right-hand side needs.\"\"\"\n",
+ " loaded = earthsci_ast.load_document(copy.deepcopy(doc))\n",
+ " model = loaded.models[next(iter(doc[\"models\"]))]\n",
+ " return {eq.lhs: earthsci_ast.free_variables(eq.rhs) for eq in model.equations}\n",
+ "\n",
+ "\n",
+ "def prune_pathways(doc, columns):\n",
+ " \"\"\"Keep only the pathways the frame has columns for.\"\"\"\n",
+ " model = doc[\"models\"][\"ISRM\"]\n",
+ " variables, equations = model[\"variables\"], model[\"equations\"]\n",
+ " report = doc[\"metadata\"][\"x_esd\"][\"report\"]\n",
+ "\n",
+ " keep = [PATHWAYS[c] for c in columns]\n",
+ " report[\"pathways\"] = [p for p in report[\"pathways\"] if p[\"sr_array\"] in keep]\n",
+ "\n",
+ " total = next(e for e in equations if e[\"lhs\"] == \"TotalPM25\")\n",
+ " terms = [{\"op\": \"index\", \"args\": [f\"conc_{p}\", \"rcv\"]} for p in keep]\n",
+ " total[\"rhs\"][\"args\"] = [f\"conc_{p}\" for p in keep]\n",
+ " total[\"rhs\"][\"expr\"][\"args\"][1] = ({\"op\": \"+\", \"args\": terms} if len(terms) > 1\n",
+ " else terms[0])\n",
+ "\n",
+ " roots = [report[\"total_pm25\"], *report[\"deaths\"].values(), report[\"record_field\"],\n",
+ " *CELL, \"rcv_cx\", \"rcv_cy\"]\n",
+ " for pathway in report[\"pathways\"]:\n",
+ " roots += [pathway[\"concentration\"], *pathway[\"emissions\"],\n",
+ " \"pm_\" + pathway[\"sr_array\"]]\n",
+ "\n",
+ " refs = equation_refs(doc)\n",
+ " needed, stack = set(), list(roots)\n",
+ " while stack:\n",
+ " name = stack.pop()\n",
+ " if name in needed or name not in variables:\n",
+ " continue\n",
+ " needed.add(name)\n",
+ " stack.extend(refs.get(name, set()) & set(variables))\n",
+ "\n",
+ " dropped = sorted(set(variables) - needed)\n",
+ " model[\"variables\"] = {n: v for n, v in variables.items() if n in needed}\n",
+ " model[\"equations\"] = [e for e in equations if e[\"lhs\"] in needed]\n",
+ " live = {(v.get(\"update\") or {}).get(\"source\") for v in model[\"variables\"].values()}\n",
+ " for source in [s for s in doc[\"data_sources\"] if s not in live]:\n",
+ " doc[\"data_sources\"].pop(source)\n",
+ " dropped.append(source)\n",
+ " if dropped:\n",
+ " print(f\" pruned {len(dropped)} variable(s)/source(s); {len(keep)} pathway(s) \"\n",
+ " f\"kept: {', '.join(keep)}\")\n",
+ " return doc\n",
+ "\n",
+ "\n",
+ "def fold_in_template_library(doc):\n",
+ " \"\"\"Merge the imported `expression_templates` in, and drop the import key.\n",
+ "\n",
+ " Not using `earthsci_ast.emit_document` because it closes the metaparameters \n",
+ " into the index sets, turning `emis_records: {size: \"N_REC\"}` into `{size: 0}`.\n",
+ " \"\"\"\n",
+ " for model in doc[\"models\"].values():\n",
+ " merged = {}\n",
+ " for imported in model.pop(\"expression_template_imports\", []) or []:\n",
+ " library = json.loads(download(REPO_RAW + imported[\"ref\"].rsplit(\"/\", 1)[-1]))\n",
+ " merged.update(library.get(\"expression_templates\") or {})\n",
+ " merged.update(model.get(\"expression_templates\") or {}) # the document's own win\n",
+ " model[\"expression_templates\"] = merged\n",
+ " return doc\n",
+ "\n",
+ "\n",
+ "def build_document(family, plume, columns, nvert_max, url, records=None):\n",
+ " \"\"\"The template, made into the document this particular frame needs.\"\"\"\n",
+ " name = TEMPLATES[(family, plume)]\n",
+ " doc = fold_in_template_library(json.loads(download(REPO_RAW + name)))\n",
+ "\n",
+ " source = doc[\"data_sources\"][\"Emis\"]\n",
+ " source[\"source\"][\"url_template\"] = url\n",
+ "\n",
+ " # `nvert_max` is TWO declarations that have to agree: what the reader pads the\n",
+ " # vertex axis to, and how wide the document says that axis is. Setting only\n",
+ " # the reader's half is not a validation error and not a wrong number — the\n",
+ " # engine reads a [records, 5, 2] array into a [records, 56, 2] parameter and\n",
+ " # the worker dies with no message at all. The axis is found through the\n",
+ " # geometry variable rather than by name, because each family calls it\n",
+ " # something different (N_EVERT, N_PVERT, N_LVERT).\n",
+ " source[\"reader_options\"][\"nvert_max\"] = nvert_max\n",
+ " model = doc[\"models\"][\"ISRM\"]\n",
+ " geometry = next(name for name, v in model[\"variables\"].items()\n",
+ " if ((v.get(\"update\") or {}).get(\"from\") or {})\n",
+ " .get(\"file_variable\") == \"geometry\")\n",
+ " axis = model[\"variables\"][geometry][\"shape\"][1]\n",
+ " doc[\"metaparameters\"][doc[\"index_sets\"][axis][\"size\"]][\"default\"] = nvert_max\n",
+ "\n",
+ " if records:\n",
+ " # Scale is a DOCUMENT edit, not a request parameter: a loader-level\n",
+ " # `select` range on the source that discovers its own extent.\n",
+ " source[\"select\"] = {\"axes\": [{\"range\": {\"start\": 0, \"stop\": records}}]}\n",
+ "\n",
+ " prune_pathways(doc, columns)\n",
+ "\n",
+ " # Cheaper to hear it from the library than from the API, which rejects an\n",
+ " # invalid document with a bare \"not valid under any of the schemas listed in\n",
+ " # the 'oneOf' keyword\" and 60 KB of echoed model, naming nothing.\n",
+ " result = earthsci_ast.validate(earthsci_ast.load_document(copy.deepcopy(doc)))\n",
+ " problems = list(result.schema_errors) + list(result.structural_errors)\n",
+ " if problems:\n",
+ " raise RuntimeError(\"the document this frame produced is invalid:\\n \"\n",
+ " + \"\\n \".join(str(p) for p in problems[:6]))\n",
+ "\n",
+ " print(f\" {name} · {axis} width {nvert_max} · valid\"\n",
+ " + (f\" · first {records:,} records\" if records else \"\"))\n",
+ " return doc\n",
+ "\n",
+ "TERMINAL = {\"succeeded\", \"failed\", \"cancelled\", \"capped\"}\n",
+ "\n",
+ "\n",
+ "def money(dollars):\n",
+ " return \"—\" if dollars is None else (\n",
+ " f\"${dollars:.4f}\" if 0 < abs(dollars) < 0.01 else f\"${dollars:.2f}\")\n",
+ "\n",
+ "\n",
+ "def clock(seconds):\n",
+ " seconds = int(seconds)\n",
+ " if seconds >= 3600:\n",
+ " return f\"{seconds // 3600}h{seconds % 3600 // 60:02d}m\"\n",
+ " return f\"{seconds // 60}m{seconds % 60:02d}s\" if seconds >= 60 else f\"{seconds}s\"\n",
+ "\n",
+ "\n",
+ "def upload_dataset(session, payload, name, esio_format=\"shapefile\"):\n",
+ " \"\"\"Put bytes in the dataset store under `name`; return the committed record.\"\"\"\n",
+ " created = session.post(\"/datasets\", {\"format\": esio_format, \"origin\": \"upload\"})\n",
+ " if created[\"upload\"][\"mode\"] != \"proxy\":\n",
+ " raise RuntimeError(f\"this deployment wants a {created['upload']['mode']!r} \"\n",
+ " \"upload, not a proxied one\")\n",
+ " if len(payload) > created[\"max_object_bytes\"]:\n",
+ " raise RuntimeError(f\"{name} is {len(payload):,} B, over the \"\n",
+ " f\"{created['max_object_bytes']:,} B per-object ceiling\")\n",
+ " session.put_bytes(f\"{created['upload']['url']}?key={urllib.parse.quote(name)}\",\n",
+ " payload)\n",
+ " dataset = session.post(f\"/datasets/{created['id']}/commit\")\n",
+ " print(f\" uploaded {name} ({len(payload):,} B) as dataset {dataset['id']}\")\n",
+ " return dataset\n",
+ "\n",
+ "\n",
+ "def dataset_url(dataset):\n",
+ " \"\"\"Where a document's `url_template` should point at this dataset.\"\"\"\n",
+ " base = dataset[\"store_url\"].rstrip(\"/\")\n",
+ " return base if dataset.get(\"format\") == \"zarr\" else f\"{base}/{dataset['object_key']}\"\n",
+ "\n",
+ "\n",
+ "def quote(doc, observeds):\n",
+ " \"\"\"Price the run. No auth — `POST /quote` has no database.\"\"\"\n",
+ " routing = http_json(\"POST\", f\"{API}/quote\", timeout=300.0,\n",
+ " json_body={\"esm\": doc, \"kind\": \"evaluate\",\n",
+ " \"observeds\": observeds})\n",
+ " option = routing.get(\"dispatchable\")\n",
+ " if not option:\n",
+ " raise RuntimeError(f\"no dispatchable backend: {routing.get('reason')}\")\n",
+ " estimate, sizing = option[\"estimate\"], routing.get(\"sizing\") or {}\n",
+ " print(f\" {option['backend']} · {sizing.get('vcpus')} vCPU / \"\n",
+ " f\"{sizing.get('memory_mb')} MB · {clock(estimate['resource_seconds'])} \"\n",
+ " f\"predicted (cap {clock(estimate['max_resource_seconds'])}) · \"\n",
+ " f\"{money(estimate['price'])}\")\n",
+ " return estimate[\"price\"]\n",
+ "\n",
+ "\n",
+ "def watch(session, run_id):\n",
+ " \"\"\"Follow a run to a terminal event, surviving a dropped connection.\n",
+ "\n",
+ " The stream replays everything already recorded before it streams, so a\n",
+ " reconnect sees what it missed — including a terminal event that landed while\n",
+ " we were disconnected.\n",
+ " \"\"\"\n",
+ " started = time.time()\n",
+ " while True:\n",
+ " try:\n",
+ " with session.stream(f\"/runs/{run_id}/events\", timeout=240.0) as resp:\n",
+ " for line in resp:\n",
+ " line = line.decode(\"utf-8\", \"replace\").strip()\n",
+ " if not line.startswith(\"data:\"):\n",
+ " continue\n",
+ " event = json.loads(line[5:]).get(\"kind\") or {}\n",
+ " kind = event.get(\"type\")\n",
+ " if kind == \"progress\":\n",
+ " f = event.get(\"fraction\", 0.0)\n",
+ " print(f\"\\r [{'#' * int(f * 40):<40}] {f * 100:5.1f}% \"\n",
+ " f\"elapsed {clock(time.time() - started)}\", end=\"\", flush=True)\n",
+ " elif kind in (\"queued\", \"started\"):\n",
+ " print(f\" {kind}\", flush=True)\n",
+ " elif kind in TERMINAL:\n",
+ " print()\n",
+ " return event\n",
+ " except (HttpError, OAuthError, urllib.error.URLError, OSError, ValueError) as e:\n",
+ " print(f\"\\n (stream dropped: {e}; the run is server-side and unaffected)\")\n",
+ " run = session.get(f\"/runs/{run_id}\")\n",
+ " if run[\"status\"] in TERMINAL:\n",
+ " return {\"type\": run[\"status\"]}\n",
+ " time.sleep(5)\n",
+ "\n",
+ "\n",
+ "def read_fields(session, dataset_id, names):\n",
+ " \"\"\"One 1-D array per name.\"\"\"\n",
+ " dataset = session.get(f\"/datasets/{dataset_id}\")\n",
+ " pins = \",\".join(f\"{d['name']}:0\" for d in dataset.get(\"dims\", []) if d[\"size\"] == 1)\n",
+ " series = {}\n",
+ " for name in names:\n",
+ " query = {\"var\": name, \"max_values\": MAX_VALUES}\n",
+ " if pins:\n",
+ " query[\"at\"] = pins\n",
+ " field = session.get(f\"/datasets/{dataset_id}/field?{urllib.parse.urlencode(query)}\")\n",
+ " if len(field[\"axes\"]) != 1 or field[\"axes\"][0][\"stride\"] != 1:\n",
+ " raise RuntimeError(f\"{name}: expected one free axis read whole: \"\n",
+ " f\"{field['axes']}\")\n",
+ " series[name] = field[\"values\"]\n",
+ " return series\n",
+ "\n",
+ "\n",
+ "def receptor_frame(series):\n",
+ " \"\"\"The answer as a GeoDataFrame: one cell rectangle per receptor.\n",
+ "\n",
+ " Handed back in the InMAP/EPA Lambert conformal projection\n",
+ " Call `.to_crs(...)` to switch to another CRS.\n",
+ " \"\"\"\n",
+ " cells = [box(w, s, e, n) for w, s, e, n in\n",
+ " zip(series[\"rcv_W\"], series[\"rcv_S\"], series[\"rcv_E\"], series[\"rcv_N\"])]\n",
+ " return gpd.GeoDataFrame({name: series[name] for name in TOTALS},\n",
+ " geometry=cells, crs=LCC)\n",
+ "\n",
+ "def run_isrm(gdf, records=None, max_price=None):\n",
+ " \"\"\"Run the InMAP ISRM over `gdf` on EarthSciLab, and bring the answer back.\n",
+ "\n",
+ " `gdf` carries one row per source, geometry in any CRS, and a column per\n",
+ " pollutant in kg/yr (see 2.1). Returns a GeoDataFrame of the 52,411 receptor\n",
+ " cells with TotalPM25 in µg/m³ and the two mortality estimates, and the run's\n",
+ " id in `.attrs`.\n",
+ " \"\"\"\n",
+ " print(\"layer\")\n",
+ " frame, family, columns, plume, nvert_max = normalize(gdf)\n",
+ "\n",
+ " print(\"upload\")\n",
+ " dataset = upload_dataset(session, shapefile_zip(frame), \"emis.zip\")\n",
+ "\n",
+ " print(\"document\")\n",
+ " doc = build_document(family, plume, columns, nvert_max,\n",
+ " dataset_url(dataset), records=records)\n",
+ "\n",
+ " print(\"quote\")\n",
+ " price = quote(doc, OBSERVEDS)\n",
+ "\n",
+ " print(\"run\")\n",
+ " run = session.post(\"/runs\", {\n",
+ " \"esm\": doc, \"kind\": \"evaluate\", \"observeds\": OBSERVEDS,\n",
+ " \"max_price\": price if max_price is None else max_price})\n",
+ " print(f\" run {run['id']} — {run['status']} on {run['backend']}, \"\n",
+ " f\"{money(run['price'])}\")\n",
+ " outcome = watch(session, run[\"id\"])\n",
+ " if outcome[\"type\"] != \"succeeded\":\n",
+ " raise RuntimeError(f\"run {run['id']} {outcome['type']}: \"\n",
+ " f\"{outcome.get('message', '')}\")\n",
+ " print(f\" succeeded in {clock(outcome.get('resource_seconds', 0))} of resource time\")\n",
+ "\n",
+ " receptors = receptor_frame(read_fields(session, outcome[\"dataset_id\"], OBSERVEDS))\n",
+ " receptors.attrs.update(run_id=run[\"id\"], dataset_id=dataset[\"id\"],\n",
+ " records=len(frame), pathways=columns)\n",
+ " for name in TOTALS:\n",
+ " print(f\" sum({name})\".ljust(22) + repr(float(receptors[name].sum())))\n",
+ " return receptors"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b87aa472",
+ "metadata": {},
+ "source": [
+ "### Sign in\n",
+ "\n",
+ "Before you can run an analysis or simulation, you will need an EarthSciLab account. Go to https://earthscilab.com/ and click \"Sign in\" in the upper right corner of the page, then click \"Sign up\" and follow the instructions.\n",
+ "\n",
+ "Once you have an account, run the code in the cell below and then follow the instructions to login to your account in this notebook."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "8ac9ba96",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ ]
+ }
+ ],
+ "source": [
+ "session = Session()\n",
+ "print(\"signed in as\", session.get(\"/me\")[\"email\"])\n",
+ "print(\"credit:\", session.get(\"/credits\"))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "03fe7d1f",
+ "metadata": {},
+ "source": [
+ "## Run an analysis\n",
+ "\n",
+ "An order to calculate air quality impacts using ISRM in EarthSciLab, you will need a [GeoPandas](https://geopandas.org/en/stable/) GeoDataFrame including the geometry of each emissions record, plus the following information:\n",
+ "\n",
+ "| column | units | meaning |\n",
+ "|---|---|---|\n",
+ "| `PM25` | kg/yr | emissions of primary PM2.5, resulting in `PrimaryPM25` concentrations |\n",
+ "| `NOx` | kg/yr | emissions of NOx, resulting in `pNO3` concentrations |\n",
+ "| `NH3` | kg/yr | emissions of NH3, resulting in `pNH4` concentrations |\n",
+ "| `SOx` | kg/yr | emissions of SO2, resulting in `pSO4` concentrations |\n",
+ "| `VOC` | kg/yr | emissions of VOCs, resulting in `SOA` concentrations |\n",
+ "| `STKHGT` | m | stack height — POINT frames only |\n",
+ "| `STKDIAM` | m | stack exit diameter |\n",
+ "| `STKTEMP` | K | exit gas temperature |\n",
+ "| `STKVEL` | m/s | exit gas velocity |\n",
+ "\n",
+ "Each record should either have information for all four stack parameter columns or for none. \n",
+ "If the stack parameters are specified, a point source's mass is allocated to a vertical emission height using a plume rise algorithm; \n",
+ "otherwise emissions are assumed to occur at ground level.\n",
+ "\n",
+ "Below, we will demonstrate a couple of analyses to get you started:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e10732b1",
+ "metadata": {},
+ "source": [
+ "\n",
+ "### Example point source analysis\n",
+ "\n",
+ "The cell below creates a function that download's a US EPA emissions inventory for electricity generating units (EGUs)\n",
+ "and processes it into the required geodataframe format described above:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "b82a18f7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "FF10_URL = (\"https://gaftp.epa.gov/air/emismod/2016/alpha/2016fd/emissions/\"\n",
+ " \"2016fd_inputs_point.zip\")\n",
+ "\n",
+ "# FF10 point columns are positional (0-based), as EarthSciIO's own reader has\n",
+ "# them; isrm_point.esm's metadata.x_esd.columns names the same indices.\n",
+ "FF10 = {12: \"POLID\", 13: \"ANN_VALUE\", 17: \"STKHGT\", 18: \"STKDIAM\",\n",
+ " 19: \"STKTEMP\", 21: \"STKVEL\", 23: \"LONGITUDE\", 24: \"LATITUDE\"}\n",
+ "\n",
+ "SHORT_TON_KG = 907.18474\n",
+ "\n",
+ "\n",
+ "def _compared_codes(node, found=None):\n",
+ " \"\"\"Every integer an `==` in this expression compares against.\n",
+ "\n",
+ " Collected by walking rather than by indexing, because the shape of a mask\n",
+ " depends on how many codes it covers: `is_VOC` is an `or` of 35 `==` nodes\n",
+ " and `is_NH3` is a single bare `==`.\n",
+ " \"\"\"\n",
+ " found = set() if found is None else found\n",
+ " if isinstance(node, dict):\n",
+ " if node.get(\"op\") == \"==\":\n",
+ " args = node.get(\"args\") or []\n",
+ " if len(args) == 2 and isinstance(args[1], (int, float)):\n",
+ " found.add(int(args[1]))\n",
+ " for value in node.values():\n",
+ " _compared_codes(value, found)\n",
+ " elif isinstance(node, list):\n",
+ " for item in node:\n",
+ " _compared_codes(item, found)\n",
+ " return found\n",
+ "\n",
+ "\n",
+ "def pollutant_classes():\n",
+ " \"\"\"`POLID` -> emission column, read out of isrm_point.esm itself.\"\"\"\n",
+ " model = json.loads(download(REPO_RAW + \"isrm_point.esm\"))[\"models\"][\"ISRM\"]\n",
+ " codes = model[\"variables\"][\"pollutant\"][\"update\"][\"from\"][\"codes\"][\"map\"]\n",
+ " classes = {}\n",
+ " for column in PATHWAYS:\n",
+ " mask = next(e for e in model[\"equations\"] if e[\"lhs\"] == f\"is_{column}\")\n",
+ " wanted = _compared_codes(mask[\"rhs\"])\n",
+ " for polid, code in codes.items():\n",
+ " if code in wanted:\n",
+ " classes[polid.upper()] = column\n",
+ " return classes\n",
+ "\n",
+ "\n",
+ "def egu_points(limit=None):\n",
+ " \"\"\"The EGU inventory as one row per stack, in SI units.\"\"\"\n",
+ " classes = pollutant_classes()\n",
+ " with zipfile.ZipFile(io.BytesIO(download(FF10_URL))) as archive:\n",
+ " member = next(n for n in archive.namelist()\n",
+ " if \"egu\" in n.lower() and not n.endswith(\"/\"))\n",
+ " raw = pd.read_csv(io.BytesIO(archive.read(member)), header=None, comment=\"#\",\n",
+ " usecols=list(FF10), names=None, dtype=str,\n",
+ " engine=\"python\", on_bad_lines=\"skip\")\n",
+ " raw = raw.rename(columns=FF10)\n",
+ " # One asserted header line survives the '#' comments.\n",
+ " if str(raw.iloc[0][\"POLID\"]).strip().lower() in (\"polid\", \"poll\"):\n",
+ " raw = raw.iloc[1:]\n",
+ " print(f\" {member}: {len(raw):,} FF10 rows\")\n",
+ "\n",
+ " raw[\"column\"] = raw[\"POLID\"].str.strip().str.upper().map(classes)\n",
+ " raw = raw.dropna(subset=[\"column\"])\n",
+ " numeric = [\"ANN_VALUE\", \"STKHGT\", \"STKDIAM\", \"STKTEMP\", \"STKVEL\",\n",
+ " \"LONGITUDE\", \"LATITUDE\"]\n",
+ " for name in numeric:\n",
+ " raw[name] = pd.to_numeric(raw[name], errors=\"coerce\")\n",
+ " raw = raw.dropna(subset=numeric)\n",
+ " print(f\" {len(raw):,} rows classified into {sorted(raw['column'].unique())}\")\n",
+ "\n",
+ " # A stack IS its location plus its four parameters: rows that agree on all\n",
+ " # six are the same physical stack, and summing them is exact for a linear\n",
+ " # model. Pivoting on that key is what turns long into wide.\n",
+ " key = [\"LONGITUDE\", \"LATITUDE\", \"STKHGT\", \"STKDIAM\", \"STKTEMP\", \"STKVEL\"]\n",
+ " wide = (raw.pivot_table(index=key, columns=\"column\", values=\"ANN_VALUE\",\n",
+ " aggfunc=\"sum\", fill_value=0.0)\n",
+ " .reset_index())\n",
+ " wide.columns.name = None\n",
+ " print(f\" pivoted to {len(wide):,} stacks\")\n",
+ " if limit:\n",
+ " wide = wide.head(limit)\n",
+ "\n",
+ " emissions = [c for c in PATHWAYS if c in wide.columns]\n",
+ " for column in emissions:\n",
+ " wide[column] = wide[column] * SHORT_TON_KG # short ton/yr -> kg/yr\n",
+ " wide[\"STKHGT\"] = wide[\"STKHGT\"] * 0.3048 # ft -> m\n",
+ " wide[\"STKDIAM\"] = wide[\"STKDIAM\"] * 0.3048\n",
+ " wide[\"STKVEL\"] = wide[\"STKVEL\"] * 0.3048 # ft/s -> m/s\n",
+ " wide[\"STKTEMP\"] = (wide[\"STKTEMP\"] - 32.0) * 5.0 / 9.0 + 273.15 # degF -> K\n",
+ "\n",
+ " return gpd.GeoDataFrame(\n",
+ " wide[emissions + STACK],\n",
+ " geometry=gpd.points_from_xy(wide[\"LONGITUDE\"], wide[\"LATITUDE\"]),\n",
+ " crs=\"EPSG:4269\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a146319f",
+ "metadata": {},
+ "source": [
+ "Now, we can run the function we created above to get the emissions geodataframe:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "88c801ac",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " 2016fd_cb6_16j/inputs/ptegu/egucems_2016v2_POINT_20180327_HCLCLaug_12apr2018_v2.csv: 93,459 FF10 rows\n",
+ " 24,597 rows classified into ['NH3', 'NOx', 'PM25', 'SOx', 'VOC']\n",
+ " pivoted to 2,159 stacks\n",
+ "\n",
+ "PM25 1.336610e+06\n",
+ "VOC 5.199170e+05\n",
+ "NOx 4.129675e+06\n",
+ "NH3 9.602069e+05\n",
+ "SOx 3.480194e+06\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
PM25
\n",
+ "
VOC
\n",
+ "
NOx
\n",
+ "
NH3
\n",
+ "
SOx
\n",
+ "
STKHGT
\n",
+ "
STKDIAM
\n",
+ "
STKTEMP
\n",
+ "
STKVEL
\n",
+ "
geometry
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
21772.433760
\n",
+ "
7348.196394
\n",
+ "
71331.936106
\n",
+ "
2068.381207
\n",
+ "
7457.058563
\n",
+ "
54.8640
\n",
+ "
4.2672
\n",
+ "
372.038889
\n",
+ "
0.272278
\n",
+ "
POINT (-122.6862 48.8287)
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
2449.398798
\n",
+ "
90.718474
\n",
+ "
8164.662660
\n",
+ "
3265.865064
\n",
+ "
544.310844
\n",
+ "
25.6032
\n",
+ "
3.3528
\n",
+ "
394.261111
\n",
+ "
21.153120
\n",
+ "
POINT (-122.487 48.7451)
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
1451.495584
\n",
+ "
90.718474
\n",
+ "
6350.293180
\n",
+ "
2177.243376
\n",
+ "
362.873896
\n",
+ "
25.6032
\n",
+ "
3.3528
\n",
+ "
394.261111
\n",
+ "
21.153120
\n",
+ "
POINT (-122.487 48.7454)
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " PM25 VOC NOx NH3 SOx STKHGT \\\n",
+ "0 21772.433760 7348.196394 71331.936106 2068.381207 7457.058563 54.8640 \n",
+ "1 2449.398798 90.718474 8164.662660 3265.865064 544.310844 25.6032 \n",
+ "2 1451.495584 90.718474 6350.293180 2177.243376 362.873896 25.6032 \n",
+ "\n",
+ " STKDIAM STKTEMP STKVEL geometry \n",
+ "0 4.2672 372.038889 0.272278 POINT (-122.6862 48.8287) \n",
+ "1 3.3528 394.261111 21.153120 POINT (-122.487 48.7451) \n",
+ "2 3.3528 394.261111 21.153120 POINT (-122.487 48.7454) "
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "points = egu_points(limit=100) # <- Change to limit=None to run the full inventory. The limit is just for a quick test.\n",
+ "print()\n",
+ "print(points[[c for c in PATHWAYS if c in points.columns]].sum().to_string())\n",
+ "points.head(3)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5a9f9266",
+ "metadata": {},
+ "source": [
+ "Now, we can run the `run_isrm` function we created at the top of the notebook to calculate the resulting PM2.5 concentrations. It can take a while, depending on how many emissions records you are processing. Also, there will be a progress bar but it may get stuck for a while at around 75%; this is normal."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "243d6332",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "layer\n",
+ " 100 records · point · nvert_max 1 · PM25, VOC, NOx, NH3, SOx, STKHGT, STKDIAM, STKTEMP, STKVEL · ASME plume rise\n",
+ "upload\n",
+ " uploaded emis.zip (26,476 B) as dataset 7e562bc1-6aea-4bdd-aab1-34b0c0b435b0\n",
+ "document\n",
+ " isrm_gdf_point.esm · emis_vertex width 1 · valid\n",
+ "quote\n",
+ " cloud_batch · 4.0 vCPU / 16384 MB · 10m00s predicted (cap 1h20m) · $0.04\n",
+ "run\n",
+ " run 8a632caa-d3f0-41e5-babc-f53900505468 — running on cloud_batch, $0.04\n",
+ " queued\n",
+ " started\n",
+ " [###################################### ] 96.3% elapsed 2m32s\n",
+ " succeeded in 2m11s of resource time\n",
+ " sum(TotalPM25) 281.24156822422736\n",
+ " sum(deathsK) 43.91889991152327\n",
+ " sum(deathsL) 98.79455102893459\n"
+ ]
+ }
+ ],
+ "source": [
+ "point_receptors = run_isrm(points)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e0a1f493",
+ "metadata": {},
+ "source": [
+ "#### Plotting the result\n",
+ "\n",
+ "The cell below creates a function to show our calculate concentrations or health impacts on a map:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "14eb6fe6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "from matplotlib.colors import ListedColormap\n",
+ "\n",
+ "# `Blues` with its white end trimmed off: at pure white the lowest cells are\n",
+ "# invisible against the page.\n",
+ "SEQUENTIAL = ListedColormap(plt.get_cmap(\"Blues\")(np.linspace(0.15, 1.0, 256)))\n",
+ "\n",
+ "# State outlines, to give the concentration field somewhere to stand. 20m is the\n",
+ "# coarsest of the three cartographic generalisations the Census publishes — at\n",
+ "# the scale these maps are drawn at, the finer ones are only more vertices.\n",
+ "STATES_URL = (\"https://www2.census.gov/geo/tiger/GENZ2020/shp/\"\n",
+ " \"cb_2020_us_state_20m.zip\")\n",
+ "\n",
+ "_states = {}\n",
+ "\n",
+ "\n",
+ "def states():\n",
+ " \"\"\"State boundaries in the receptor grid's projection, read once.\"\"\"\n",
+ " if \"gdf\" not in _states:\n",
+ " _states[\"gdf\"] = gpd.read_file(io.BytesIO(download(STATES_URL))).to_crs(LCC)\n",
+ " return _states[\"gdf\"]\n",
+ "\n",
+ "\n",
+ "def show(receptors, title=\"\", column=\"TotalPM25\", units=\"µg/m³\",\n",
+ " clip_pct=99.0, share=1.0, height=6.4, boundaries=True):\n",
+ " \"\"\"The receptor grid as a choropleth.\"\"\"\n",
+ " v = receptors[column].to_numpy()\n",
+ " vmax = np.percentile(v, clip_pct) or v.max() or 1.0\n",
+ "\n",
+ " bounds = receptors.total_bounds\n",
+ " if share:\n",
+ " order = np.argsort(v)[::-1]\n",
+ " keep = order[:np.searchsorted(np.cumsum(v[order]), v.sum() * share) + 1]\n",
+ " bounds = receptors.iloc[keep].total_bounds\n",
+ " x0, y0, x1, y1 = bounds\n",
+ " pad = 0.06 * max(x1 - x0, y1 - y0)\n",
+ "\n",
+ " # The figure follows the MAP's shape: these are metres in both directions, so\n",
+ " # the axes are equal-aspect and their width follows the extent.\n",
+ " span = height * (x1 - x0) / (y1 - y0)\n",
+ " fig, ax = plt.subplots(figsize=(min(13.0, max(4.5, span)) + 1.8, height), dpi=150)\n",
+ "\n",
+ " # No edge colour: at 52,411 cells a stroke per rectangle is most of the ink on\n",
+ " # the page, and the boundaries it draws are the grid's, not the data's.\n",
+ " receptors.plot(ax=ax, column=column, cmap=SEQUENTIAL, vmin=0.0, vmax=vmax,\n",
+ " linewidth=0.0, edgecolor=\"none\", rasterized=True, legend=True,\n",
+ " legend_kwds={\"label\": f\"{column} ({units})\", \"shrink\": 0.55,\n",
+ " \"extend\": \"max\" if v.max() > vmax else \"neither\"})\n",
+ "\n",
+ " # Over the choropleth, and thin enough not to compete with it. Reprojected to\n",
+ " # whatever CRS the caller handed the receptors over in, so a `.to_crs(...)`\n",
+ " # upstream carries the outlines with it.\n",
+ " if boundaries:\n",
+ " states().to_crs(receptors.crs).boundary.plot(\n",
+ " ax=ax, color=\"0.35\", linewidth=0.4, zorder=3)\n",
+ "\n",
+ " ax.set_xlim(x0 - pad, x1 + pad)\n",
+ " ax.set_ylim(y0 - pad, y1 + pad)\n",
+ " ax.set_aspect(\"equal\")\n",
+ " ax.set_axis_off()\n",
+ " ax.set_title(\n",
+ " f\"{title or column}\\n\"\n",
+ " f\"{receptors.attrs.get('records', len(receptors)):,} emission records · \"\n",
+ " f\"{', '.join(receptors.attrs.get('pathways', []))} · \"\n",
+ " f\"run {receptors.attrs.get('run_id', '?')[:8]}\\n\"\n",
+ " f\"scale clipped at the {clip_pct:g}th percentile ({vmax:.3g} {units}); \"\n",
+ " f\"true maximum {v.max():.3g} {units}\",\n",
+ " fontsize=9, loc=\"left\")\n",
+ " fig.tight_layout()\n",
+ " return ax"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "10ccb18d",
+ "metadata": {},
+ "source": [
+ "Now, we can use that function to make our map:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "d015f6cd",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABO8AAAOxCAYAAACtxYMhAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvctoD+AAAAAlwSFlzAAAXEgAAFxIBZ5/SUgABAABJREFUeJzs3Qd0VNX2x/GdAgQIoffee++CFAHF3nvvqM/euz7bs+vzb++9IHZFRVFAQOkgvffeOyHJ/Nfv4M2bTCbJTDJJJsn3s9asSWbu3Ln33DJz9+yzT4zP5/MZAAAAAAAAgKgTW9gLAAAAAAAAACA4gncAAAAAAABAlCJ4BwAAAAAAAEQpgncAAAAAAABAlCJ4BwAAAAAAAEQpgncAAAAAAABAlCJ4BwAAAAAAAEQpgncAAAAAAABAlCJ4BwAAAAAAAEQpgncAAAAAAABAlCJ4BwAAAAAAAEQpgncAAAAAAABAlCJ4BwAAAAAAAEQpgncAAAAAAABAlCJ4BwAAAAAAAEQpgncAAAAAAABAcQ3erVixwho1apTh1rJlSzviiCPsscces127dgWddujQoVnO87333kuf7vHHH09/3Ofz2fjx4+26666zAQMGuPc57LDD7Pbbb7c1a9aEtdxt27bNtNze7cMPPwx5PmlpafbSSy+59W3WrJl7/d69e60oevTRR7NsE+82ffr0TK/Tdvn666/tkksusR49eliLFi2sV69edvLJJ9sDDzxgc+bMyfSas846y81v9erVQZflwIED7vlBgwZZNLjjjjvc8mzatKmwFwX5SNtX2/mWW24plu383HPPZXkcF6X3COarr75y7/v0009HZD663XnnnVlOd+ONN6ZP9/PPPwedJiUlxTp37uymefbZZ0N6T90aN25sbdq0seOPP97eeecd9zmTl/XX57A+S3U+1edmt27d7PTTT7fXXnvNtm/fHtKyHH300e6zLjk5OV/bDAAAAEAQvjxatGiRT7PJ6tayZUvfli1bMkwbGxvr7mfNmhV0nj179kyf5vbbb09//MEHH8zyfSpWrOibNGlSyMtdvnz5LOf18ssvhzyfZ599NtPrd+3a5SuKbr755my3pW4TJ07M8JqVK1f6evTokePr3nvvvQyv69+/v3t82bJlQZdl37596ftPNLj00kvd8qxbty7X87jhhht8DRs29G3dujWiy4bw7Nmzx22Hq666KtNz2r7azhdeeGGxbNb7778/6HEcrtdee8214R9//JFv7xGu999/373v3XffHZH56DOocuXKvv3792eaRuf4xMTE9M+pL7/8Mui8vvnmm/RzYLNmzXJ8z6xuJ5xwgi8tLS1X679q1SpfkyZNspy31jGcZTn88MN9KSkp+dZmAAAAADKLWLfZPn362LJly9zt77//tjfffNNq1qxpCxYssGeeeSbDtH379rUyZcrYW2+9lWk+8+bNs7/++ssGDx4cNItBr33hhRds9OjRNnfuXPvyyy+tQ4cOtmPHDrv88svDWmZlH3jL7H8799xzQ57HBx98YOXKlbMffvjBlixZ4l5fvnx5K8qUXRGsXXRTFolHGRvKOJw0aZLVrVvXZVr+8ccftnDhQps8ebLLxnjooYesffv2QbM1ihJlrWj9q1evnqesLmWfpqamRnTZEB5lMWk7bNy4kabLJZ1v1Yb79u0rtm2oLLVt27a581igzz77zHbv3h30c8rf22+/bTExMXbaaafZ4sWLbdy4cdlO/69//Sv9XDt16lR75JFHrFSpUvbNN9/Y999/n6v1uPXWW23p0qXWvHlztzzKiJw5c6Z98cUXdtVVV1liYmKOyzJt2jT3OZ6QkODWYcSIEfnWZgAAAAAyi7cI0Zd6dYXxtGvXzpKSklzXnMALlsqVK9uJJ57oAl9PPPGEuzjxKOhXunRpO+ecczJ1q7n33nvt3//+d4bHWrdu7QJ66tqjCxJdOGj+oVAA0X+Zc2PlypXpXYqKCwWoQmmXBx980F2Qdu/e3W2rSpUqZQqOajvfc889dvDgQSvKqlat6m4ASoaBAwfaokWL3I9MZ555Zobn9JhKL3jnvmA2b97sAm79+vWzu+66yz7//HPXBfbwww/P8j0rVqyYfu7VfZcuXWzr1q2uK6w+R4877riw1+OXX35x91pO//O6fvRSaYPnn38+pGXRDzcbNmxwP2ToB5szzjgj4m0GAAAAoBAGrPCCHcGyrlQfTRc33377bfpjCvC8//77LuATLFDiH+TzV61aNVdvThkOCvwVBAURdUGjdZg1a1Z6HZ+7777bPT9mzBj3vy5Y5s+fbxdeeKHLQDvhhBPS57Fu3TqXFeHVievfv78LZu7ZsyfT+11xxRVufqoFp3lqWgUNlSWorApRVoPeX0EzXSSpNqAyZPKDsiC1HGpzZXMEBu5C3XaR4t8+CgDrgrlVq1buYnfUqFFBXxNO+wereef/np988onLQlQ9qaOOOirTxWnv3r3Ts1F0QR64v2RFF+7KvtFFsQLVWi9tV2V55mV9tB9qOYLRc7rA9ue/rqpJqQwbHXOffvpp+jTKhFW2jl6rZVXb63gOrNc1e/ZsGzZsmHt/tdeQIUPs9ddfD1rXS0ECHTtaJ+3TmufLL7/sliM3lLGr+cjIkSMz1PbS8vtTZulNN91knTp1csfu1VdfnSlbz79Gnv6+4YYb3HqpbTw6Lv/zn/+4baft0rNnT1enc/369VnuZ9k9F1h3Uf+rlljHjh3dcqpt165d6/atrOYlCgZpW+s4UUDpjTfeCKkNL730UlcfU84777z09lMgKLfvoWxU7Vfavtp3tB7a7vpBJpI1+MJZZ53bLrroIhf8WrVqVfrjyiZX7VV9hmVHtVP12adztAJfOl8r+yzY8Zjbz9FQf1jTD1X169fP87nZ+2Esq9fktc0AAAAAZMGXR14du0GDBmV4XLXMevfu7Z677LLLMkx74okn+lJTU33169f3HXvssemv+eKLL9zzI0eO9H377beZat5lZc2aNb4yZcpkWoacat7VqVPHvaZ58+ZuWfVeqg8Uiuuvvz5oPaArr7zSPa910P9XXHGFr0KFCunPd+7c2T0/e/ZsX/Xq1YPOo0OHDr7t27dneD+1mZ675ZZbMk1ft25dV6urS5cumZ477rjjwq55N3z48BynnTp1qpu2Xbt2vtyIdM07r31uvPHGTG0QExPje+uttzJMH277B6t5573nvffem2kequv0008/pU+rbZTd/hLMgQMHfK1atQr6uri4uAx1p8Jdn65du/qqVq0a9H31XM2aNYO2b2BdxFdffdU9/8477/hKlSoV9P1VF9LzwQcfZDndaaedlqGul44hrz5W4G3YsGG+3PDOK8Fu06dPT695d8opp/jatGmTaZq2bdtmqOflTX/SSSdlqCumfU5U31CvCfZ+auN58+YF3c+CnYeC7YMbNmzwNW7cONO8dW49/fTTM83Lq0d35513un0o8HVPPvlkjm2oc3aw9VGt0ty8h/bzoUOHBp1n6dKlfd99911I2zarmm/hLo83n8cee8y3fPlyty0feuih9Odvu+02tw9v3LjRvVdW9ds6derkPpe2bdvm/n/kkUfctO+++27Iy/7nn3/6atWq5Z574403crX+F1xwQfq5Rp+VOclqPtOmTXP7lZ7TsZkfbQYAAAAguIgF7xISElwBc92qVauWfmGkINncuXMzTKtAgOhLvC6m1q5dm35RqCCHghKhBu8OHjzoGzJkiHv/mTNn5nnACg18MW7cuBxfr0E4FHhSYE4Xafpbt82bN2cI3ukiRsunQM7ixYvT19Ub5KFv375uWgVfPv30UxdIDBac8IInSUlJvqeffto3Y8YM34QJE1zwUY83atTIvVbzmDNnju/rr7/21atXzz2naUPhBWYUBPK2pf/NCzz6F2I/+eSTM81H6xn4WgVmCiJ4V7ZsWXfRqOCiCuZrkAgFgPS4Lhw94bZ/dsE7FWHXReuUKVPc++q1enzgwIHp0yqAogCPHtdFcOD+Eszvv//uptf+9f333/vmz5/v1unFF190xe+17+d2fXIbvCtXrpxrXw0Oo+VXEXotV3x8vNvXFSgYNWqUO+YVdDn//PN9zzzzjJvHkiVLXDBGx97DDz/s++uvv1zw6quvvvJ169bNzV/BPc9ZZ52VHpDVtHofrdu1117ru+aaa3y5sXfvXnd8aL5HH310+nbQTUEkLxinddH+rgCD1kXtr31Rz6ldPf7TK5A9YsQIt5wKYMjll1/unveOTW0XrYO2kx7v1atXnoJ3F198sXusY8eO7pj3jn39r2XKKnin8+51113nGz9+vO/vv//2Pf744+440blbP6xkRwHDu+66K317ee3nndvCfY977rnHTa99wGsjHSNPPPGEO25r1Kjhtlteg3ehLo9/IEp0jm3atKkLLOuYUzBNx7JkFYjSOdcLAnu8oNaAAQOyXHZ9/njnTJ3rvc8lHe8aaCU366/znvYHb15aF52PdVyuWLEipGXR397rr7766ixfk5c2AwAAAJC1fBttVhfpRx55pAtmBE7rBe8U5NHFzH/+8x934aeLK10USijBOwX5zjvvPPe6zz77LKzlVoDihRdecMEQjXqr13uZggogKngUCl3UeBkn/rzgnbJu/IMsoot774I+cFQ+XUwpuKGgoH9mlRc8Ccza0GivXnsvXbo004iQek5ZUZEYbdY/2KMLLz2m7J5ACsgEvrZPnz4FErxTYDOQLjb13CuvvJLr9s8uePfmm29mmIcuWHWxrXn4O/fcc930mzZtCmmdFIzW9M8//3ym5/yXLTfrk9vgnReI83frrbdme6x67+sFfPyDXx5lBipLSaNqejQarI7tYIGbwGMqHAo4ajlOPfXUTM95wTgFjAJHBf7555/dc1rfwOkVaFm/fn2mZVRgV+2v49SftpMXWF2wYEGugneav+at0T0D9yn9r8ezCt4pABpIgSY9pyBrTpStpmkVqA0UznvoWFHwTOfcYNv5ueeec9P/8MMPeQ7ehbrOgYGoDz/80P2vYLoCo/pbP15kF4jyMrOVTe5PI7XqMy/wXJ3VCK86bhUQ9wKjuVl/7xjUMirYqyCzgu2aVvf33XdfSMviBSODBXcj0WYAAAAACni02TVr1rg6Tz/99FOWdbWkadOmru6QaqapkLfqHqleTihU80qDYXz88cdu4Av9HQ6NaKv6XL169XL1lfT633//3bp27eqWX39Hgmo4xcfHZxpRV1QjSrWI/DVo0MAOO+ww27Vrl61evTrT/AIHxlAdI9U0Ug0nDdrhT/W1RPWvIjHarGpG+dcZFLVVsO3qvUY1y4Lx2kS184LxBrgIbLucnHrqqZke00iP/u2el/YP5vjjj89U90nbQ/MIVsctVCoor1pzd955pzsuVJ9L7ak2i4uLS58u0uuTnWB1zTS6tFx22WVBX+Mt64wZM9y96r2pJpz2E92aNGni6srp+Pev5ac6clp+1QvToCcaHVMDxORmvwiXBsEJHPhGNcu8WniBVNNQo2v7U3vrPKhzY2C9MW2nk046KcP2C5dqiql+mmobesejR/+rxl6o+2xO65cbobyH2kh1QzXQkM7D3n6hfUI3jWAtwWo85sfyBHPKKae4mp76nFI9zVq1amU7QJHOXap3p/3n2GOPzfCcagTqR7N333032xFely9f7moVark0be3atS0vdAxqf1OdUh2vam/Vq9S6qH6rRm3Palk0KJFqeGof1zGowTdyEm6bAQAAACik0WZDpQLWCkxoBDsF8po3b57ja3RBrAsRDQqh4F24gTvxD354NNiFLjCmTp2aodh2XuiiJavAVLly5YK+xns82AitFSpUCLouWT0uCopEerRZBVQUQJkyZYq7+PYPHqiYufd67RfBeANcaJAF/+L+Hj0uoY4c7An2fl57eoHCvLR/MNm1vYJ3sbG5j5G/+uqrbqCEH374wV1Aa6AADUKigRS8wS5ysz4KMGYlu8L42e3P5cuXz3ZdvEEmFJjIyv79+9P/VvBGg0j8+OOP7lh/8cUXXfBSgVEFmAMH1YiknLZpfh3n4WwXb38uW7Zs0Omzejw365cbobyHt0/s3bs32wCd/36Rn8uT1TnlrLPOcgNqaBtocJDsgscahEnnRAVovR9QArehAnL3339/pu3tP8JrfkpMTHSjxWrdNEDU8OHDMwXm/ZdFAVUF7zSK/JNPPukGE9HAIpFqMwAAAACFONpsKBR400WVAhKhjESniyKN6jl27Fg3cl9uAnfZ8bKIwg0ahaNhw4buPlh23759+1yAQhc6derUsWilQI1GbdSF2W233ZarrDJRUCqY7777LsN0ofrjjz8yPaZ9xb/dC6v9vSBeuMERjSKq7Dvt7xpZ+KGHHnKZaLrgzu36aARLZd/oeX/K9Fm4cGFYy6cLe1GQLTteZqimC5bZqZuCdIFBAAXqn332Wfv1119tw4YNLuCijNassjbzazuEq27duq7d1f6B7Szeunrbz39k0cCMVi2rAuX+tD3VFsoiDmwL/Z9V1mskRKoN1Ub60UQZz1ntE7opA7Uw6bNJAUa168UXX5zttMoi9wKTK1asyHDzfpRQADtS2d154Y0a6y1XTgE/jZqsba5svUi2GQAAAIAoD94p+0TBAl2gnXvuudlOqwtadQWbOXOmjRgxImgXvlCzmf7v//7PNm7cmP7Ypk2b7NZbb7Wvv/7aBQzUFS2/qCtxvXr13MWbgjK6wPGW4YILLnAXUkOGDMkyYydaPPzwwy6Ip65Ryt5QEME/y0+BIG2nYJT1oayT5557zmVUecENvV5duB588EH3/9lnnx3WMt1www3pATx1T/vmm29csEsU8CnM9k9KSnL3yuwMhQKYyq5bsGBBhkwlrxu01405N+ujjCDNU13gvMwvdUnVdvGyoUJ15plnuntl17z//vvp2UXq0qlueuqeJ97xrWCvuksqaKXMHt1rX1AW7ejRo9Pnq/mp+6GCjP7Be3UB1rEbbndw/4w0BS2U1ReJjK6sqL0HDRrkllPbQdtDtH20nbS91J3Wv7SAl6ml4MjOnTvTj6OrrroqU/daHXsDBgxwAd1hw4a5H0BE9/pfj+eXcPfl7LaFzuOaj87JXtaubspmVAa0AtXZZSQWBGV5KuCmAFx2GWcKLo8cOdJtG+1fwQKROm+KzpsFQedQfeapLf2DrePHj3fnS1FGXSh0flDmq35I0HkpEm0GAAAAoAgE70QXabpY87IAsqILWl3AKtvk2muvTb/I87/pgslfy5YtM3XL1AWUXq8aVboIVZfPGjVq2FNPPeWeV3aBuo7mF2Xj/Pe//3XZK3ovZR7q/XX7/PPP3TJ5y1IY1E0zWNvq5gViRBdk3vIqSKb6gcrOUDaNulwpe1F1k/S3AqP+dAGoAIaCJ5pGF7uq66R5qV6SAhfKtlHtsXAo+KHu13pPLYuCigr2aJ28C8jCan+1j6gOlrKm1J5e19dgFKhSN1m1lYIcXrs+8sgjLphx1FFH5Xp9FAzS9Aqeanrt7wqi6dgI7OqXE2XCqt6dgkYKUmlZdWxpvpdeeml6F3QFmq6//nqbNWuW20YKkqsdFORSWyiQ6J9xNnHiRFcjrEqVKu6m9dEy6hhXsMG/jpy6IGoeWt+cqO169Ojhgg+arxdEDDx3RILaXfuhlsvbJmoXbSe1vwJW/l34FQjVtlBGqpZN7aj7jz76yLVZIM1H3TNVV0zHm+ave9UBVa09yY/uit6+rG3mdbPP7Y8pyqpUVubTTz/tgtDax/WZoP1CP9YogBtu1//8oP1ENRizo3ZXptn555/vzjfBzqHe+U4/bOjclN9+++03F8zVsnvHnI5RnVv1w5m2X+D5OSvaZ3XeVhDQC0Lmtc0AAAAAFJHgXai8CzhlaQV2R/JugXWh9FhgjS0FLlQMXxf/unjasmWLCxzqYkb1ihRgyG+60NUFurqLKUNMWTlahqFDh9qECRPSC6kXBi1LVu0beLGp5Z0zZ45rM12YKhinTCMF31SzTBeFukBUEC2QglDKPlGherWBCrQrK0nBIwWjXnnllbCXXUEOZZpoPropEKAAmeZX2O2v5VJXMnUTVDac2lP7XnYF9lWwX0EABQTUrrpXEOf777/PkB0a7vponqpHpYCpMu0UKBw8eLDrmhqsNlhOXnvtNZdB6WX0KTNO81FQzz97UsFCBTiUbaZ1UTvomFXXW2VYKfjnef75593/Cl4p+07rpFqJCuqOGjUqQzaW2lHtqWy/UGhZtd/pXKKMw2DnjkhQkFHtf+SRR7ogmtZB20dZSRrQR13P/Smoo0EBtL10vlM7ajl/+eWXoEHVbt26uVqI6lrtbXdNp/3DqyvpZclFer0UWNbxpX3Hv0touLQPqkuwflBR8FHnDmWwKcCkwLCO6fxYh/zgdZlVgC4rajMFpXV+UgZbftMPLvrM0/lZ+5S2k87T+tFK3VknT54cVoDtnHPOced2ZcpqMAsAAAAA+S9GQ87mZQa6AFcXOC/bJpRplVGhi7Ts6KJaF3BeBpd3gZ5TpoKyChQc8eiiMrCulD9d7CtjSBcy/q8LlS78FSQJHA3QW34FHnK68NQAHFoG1bvKaoAHXcTrYs/rYhi4DFr2wKL5CsroQk3tp3bMiQIkXte7rKidlEmU07p4mW+h0nZQ90C1VW6CR6qLpi7Pane1oS5OtT7KKskp8yiU9vf2PQV8vUyp7LaJ91yw4vPqpqrnda919eqcZUeBJa2P2j/YYCvhro9Hh7/2U20rb3tpn9Gx6p/Zlt26BtJ7a98L5Rj3tlFOWbdbt251653VfqzgmGrIKXMwnFqFWlbdFHD0asgpU1BtETiCqwIfes5/m3mPBZs+kPZJ7UehHhsKiinTSeeQrPbBwDbS9tSyKQCmjGOdl71zoOgY003nq8CRib3nAs+h2VG7af/R9tb8NN+8vofWU/MNN/tZ5xAvwOsFLnOzzt58Qjlveq/Xvu61tbZN4OjCWS2rty9lteyRWP9g5x4tq7df5WY+3r6oZdc65LbNor00BAAAAFBsgndANAgM3qHkUABNQQN1OX399detpLn55ptdhqO6VyuwqgDmNddc42qv6V5dcwEAAAAARRfBOxQLBO9KLg12oBp28+fPt+bNm1tJo4w/ZUKpy62yTL3sWT2uwX2iedRqAAAAAEAxq3kHAIFUv09dx0ti4M4b8MGr36fAnbp/alAUjbpM4A4AAAAAij4y71AshFOTDSiOVBdRGXiqZRZY2w0AAAAAUHQRvAMAAAAAAACiFN1mAQAAAAAAgChF8A4AAAAAAACIUvGRnNnatWttzJgxduDAARsyZIjVrVs32+lXrVplU6ZMsbS0NOvcubM1adIkotNHC9Wh+vbbb61Tp07uVlTfA4eott5nn31mLVu2tN69exdas3z++ee2e/fu9P810qhGGO3atatVr1496LRxcXF23nnnBa0LePDgQfvoo4/M5/O5+Rx33HGZ1nv27Nm2bNkyS0hIcPuZagwGM3r0aDeIRDCNGjWyAQMG5GqdZ8yY4W4aXbZNmzbZTvvpp5/a/v377dxzz3VtE3iumj59uhvgQevavXt3q1y5ckjLsH37dnce2rRpkyUlJbnzXKtWrVyb5PX4lV69ern5BRtV9++//8723JqX9Yqk3K6P97rs9hGtn0bR7devX6bPAO3jmueKFSssMTHRHQu1a9eO2Hqlpqa65dYxoIFBtJxt27Z1f2cnWrZLUTZnzhxbsmSJO3c1a9bMDVQTaXPnzrV58+ZZuXLlrFu3bpnOo7ndz9avX+/mrfsaNWq485fOHQAAAEDIfBHw+OOP+7p27eqLiYnxaZa6jRw5MsvpU1JSfFdeeWWG6XU755xzfPv378/z9NFm8uTJbnnvv//+Iv0eOGTVqlWurbVPFqaGDRtmOB68W3x8vO+KK67wJScnB5129OjRQec3YsSI9Gl0PHvWrFnjO++883zly5fP9F7HHHOMb/369ZnmdeKJJwZdNt1OPfXUXK/zb7/95uZx3HHHZTvd7Nmz3XS9evXK9PjgwYMzLVNcXJzv7LPP9q1bty7LeS5ZssQtu6YNfH1SUpLvkksu8W3dujVPx69uPXv2DDrN7bffnuW5NS/rlR9yuz7e67LbR+6++243zfvvv5/+2MaNG90+Wq5cuQzrHxsb6zv//PN9e/bsyfM6ffXVV7569eplauMqVaq4c8Hu3bujfrsURTNmzHD7UGAbHn744b65c+dG7D26deuWYf5lypTx3XjjjRmmC3c/++mnn3z9+vXL9N1Fr7/vvvt8aWlpEVl+AAAAFH8Rybx75plnbMOGDVanTh03yqGyErJzxx132KuvvuqyFZR1oayYUaNGuawf/eL9+uuv52n6aKNMiwsvvDBfM+IK4j0QnbTdvdFGFy5c6DKDXnvtNatQoYI99dRT6dPp2NTx8vbbb9vAgQMzzefNN9902SPr1q3L8Ljm+cEHH1j58uVdxpCyjTZv3mxjx461H374wY4++mibPHmyy+oLpCy/wMc1j9zq37+/y7b68ccf3QjDymIJ5p133nH3F198cfpjEydOtKFDh9rOnTtdO/Tp08cdN6tXr7Y///zTPv74Y5swYYJbrwYNGmSYnzLtjjrqKNu6dauVKlXKZc4o63DPnj3u9QsWLLC33nrLbrzxxjxnVP3111/29ddf24knnhjS9HlZr4IQ7vrkhjKgtI9WrFjR+vbt6zL5tP5a7/fff99lYCpbNrfUdqeeeqrLvKtZs6bLylJb67NO2aj6fLrnnnvcMVJUtktRoEzFI4880h3ryoJTGyrz/o8//rBx48a5Y3L+/PmufXNLGXQ6r3hZkdp/9B1j/Pjx9t5777nvN7ndz7755hu3fWvVquUyBbUOyiDU7d///rd7n3vvvTfP7QQAAIASIBIRwGeeecZlTOhX5GuuuSbbzDtlGpQuXdqXkJDgXuOZP3++r1KlSu4X7IULF+Z6eqCkZd4FUkaSHq9cuXKGaZU5d/XVV7usjx07dmR4jbLrlA3kZUP5Z97p+NI8AzOLpk+f7qtYsaKbfsyYMUEz7/bt2+eLtAceeMDNW+edYJSpW7t2bV/ZsmV927dvd4/t2rUrPWvq5JNP9m3atCnDa5YtW5ae3dO3b98Mz2m969evn57xt3r16kzvuXPnTt9bb73l2jE3vIyzIUOGuOVu166dLzU1NcdMtbysV37K7frkNvNuxYoVvi+++CJDtqn89ddf7v2V+bR58+Zcr89pp53m3vPyyy/P9B7ax1599VXftm3bon67FDUfffSRa6MuXbpkOP+ozdu2beue++abb/L0HjrXaT7KnNu7d2/649rOH3zwQYZpw93PtGxjx47NlGH35JNPuvesXr16npYdAAAAJUdEBqxQtokyEYLV0QqkekbKEFK2kF7jUf2wf/3rX+5X9S+++CLX04dCmUQjRoxwNbFUhyiYNWvWuOwd1akRZdYMHz7cfv31V0tJSUmfTvXBlGHxySefuGyKYFTHSfNSra5gv/orK+Wrr75yGRyaXzA5TZfdeyhbRNkvWsYvv/wyy1pkgeu8dOlSt87aBqrzFapg81F7f/fddxmmU21EZSUoA0XvoeyK7Gg/UIaD1kOZl8r+CkbZUcoIU2bmb7/9Zvv27cuyLpuWU+2jmzI5lFWxaNGi9Gm0f2n7ahm1rPo/p7qMygpT9sWkSZNcJkZBU403ZaJs27bNdu3aleE5ZaKpdp32fX9qB63bRRddlGl+zZs3dxl0/llFoizPc845J32bFxQto841XnZdoJ9++sllD5588skuQ0beeOMNlyGj2lTaNsqw8adsQu0zyqpSVo+Oc49eq+2qjEGda4LVm1OWo9pW2cd5oddfc8017hjXPpeT3K6XzmHKFPrwww+D7tM6HtW+WR1j+bU+uaXMNW1vZUX6U4Zkz5493flS58jc0vaX2267LdN7aB+74oorrFKlSkVmuwRSBqHmu3jx4vTPSJ37f/75Z/e/MsX0fGBWrv9zqueW1fz0+al20DoHnpOy433unHbaaRnOP2rzU045JcM0/nTuU/1dfQbofJzVttc5X5nKjRs3dtusbNmy6c9pO+tcmpf97Pjjj7fDDz8803ejW265xWXhqW6mao0Go22g841uar9gQl3P3E4PAACAKBLpaGBOmXfDhg1zz6u+VqBx48a5584444xcT58d1axSnZzA2jndu3f3LV26NMO0Wn499/TTT/suvfTSDNPrF39lBCoDy/vV3rspM0eZPznVo1M2U+fOnTMtS8eOHX1TpkwJe7qsat798ccfvqZNm2Z4rbIDVG9J2ULB1lkZTddff32GOj2q6ZVdHcNg83nqqad8l112Wfp8lD3hUZZStWrVMixXqVKlfHfccUemDB158803fTVq1MgwvbIx77nnnvRp9Dpl5ahWUWBNqvfeey/TPL3ssKlTp/qaNWuWPv1rr73mnl++fLmvU6dOmba9MikCM++UsXHmmWe6TFD/6bXM77zzjq8gM+9mzpyZXrPJ2xe9zDtp3759plpwzZs39x1xxBEuUy4w8y47F198sZt+2rRpWbbtxx9/7OqFKWslUrSsmr+y/wLpfKDnRo0alf7YwIED3WPDhw8PKavvuuuuy/RaZdzkF+/4vfDCC13mjo43Hbf+GT7BMtXysl7eYzpm/H322WfpGWMFvT65zbzLijJMlYWpLO0DBw7ken1UXzWcfSBat0tWdIxq3sog1GeDd/7SceafKeZ/THm851SPMnB+b7zxhqsF6X9OrFq1qvvsDsXEiRPda0466aRMzx111FHuub///jv9MWU/alspWz/ws+WWW27JlAF37733uucffPDB9M9LZftp+QKz6yK5nx08eNB9LjVp0iRoncRgNf4GDRrk27BhQ67WM9zpAQAAEH0iOtpsKLwMnWAjxXqPKWMht9NnRZkKqmujaZUNoowI1QBT5p3qdak20axZs9xj/l566SVbvny5G/lQ2RPK/FKmwXXXXeeyCzT63THHHOPqeikbTNllyt7y6pBl5dprr3XvrVo4Go1Rv+Qr40ujKCrTS8sXznTBaNm0XhoZT9lCyg5QXR/V8lEWjDIgvBEh/b388ssuY+Kwww5zr9N76Zf/888/32Xt+WcnZEdtpzbScjdt2jR9eykj45JLLnF/a5mU9aDlUkbAf/7zHzcK35133pk+H9Vv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eOGFGbJjwp0+Gte5uFJ2jNo6NTU103PK3tCxXL169QJbHmW8/vHHHy57JzDj8vnnn7dy5crZSy+9ZPPmzbPvv//emjdvbn/++ac98cQTIc0/3PlceeWVtm7dOpdF89NPP9mcOXPss88+s2bNmtmXX35pb775ZqZMmJNPPtneeecdl0GoTGTt+40bN7YFCxbYQw89lKf5FzZl+ezdu9eOP/74iM63TJky6ZkznTt3ttatW2eapmvXri4r8d57781zVmJ2+z3ypjDOG4XtwIED1qBBA5cdqnNYXFxcnub37LPPujYMvAUK93xTks8fAACg6Iov7AUorkqXLh20eweKj+HDh7v7//73v3b++eenP67uh6tWrbLffvvNBUJ69+6dq+kRHapWrepuBUkBtWrVqtkxxxyT4fGXX37Z3T/55JN21VVXub/V5VUXqe3atbNXXnnFBXViY7P/XSac+WzZssVGjx5tNWrUcBfkiYmJbvo2bdpYx44dXRc1BaPVZc3z8MMPW3x8xo8XzVcXk927d3eBSU9u5l/Yvv32W7ec6pqXH/TZsWPHDitbtqx7r5iYmAzPK+Cv248//phpH0HJPW8UNu2LJ510UsTmp3NgKN+jwjnfRIPCPn8AAICiKSKZd/pycOqpp7pf+jp16mSnnXaaffHFF0Fr8vz+++/uokPTtW/f3k4//XQbNWpUhmmWL19ud999t8su0IWbvnxde+21tmTJkrCWSxeE55xzjnsffYk78cQTXXZJuEJZ5kDBat751ylTZomWTReoPXr0sEceecT27duXYR7hTp+b9U5OTrannnrKBYw0rbbd1KlTw26jULeZLsLVfvL0009nW8cmN6/R+1100UWu3osyVO6///4sa3jldf9QwE2C1a3xHvPfT8KZPr/WOVB+72P+858/f77LLtRrTjjhhPRplIGgLDDV8VIASTWLbr31Vlu/fn2Geal2kdriiCOOcPuY1lWZratXr870vldccYV7X2WCqK6b95qjjjrKfv755wzTat9XjSVRDUKvnbU/h1u7KpxlzMqGDRtcEEsXwaVKlcrwnAK8ekznI3/aBspaU5vNnTs3x/cIZz6qx6hzudrGC6x5WrRoYTVr1nRZpKpZ5wm8kPbUqlXL3VesWDH9sdzMPyvarzSfrJ7TeSmQMnO0X3rHzz333OP2SWXyBJuXlvW7775z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RCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwAAAAAAAECUIngHAAAAAAAARCmCdwhLcnKyvfXWW3bffffZhg0bQnrNTTfdZDt27LB7773Xdu3alecWX7Vqld11112WlpaW53kBAAAAAABEM4J3CEvp0qXtkksusbJly9qePXtCek25cuUsNTXVmjVrZhMnTrQZM2bkqdXr169vTZs2tffff98FEwEAAAAAAIorgnfIFWXQ1alTJ6RpBw8ebCNHjrQuXbrY5MmT7dNPP81zq1988cVWuXJle+CBB2z58uV5nh8AAAAAAEA0IniHsP3+++8uky5Uffr0senTp1uTJk3sjDPOsAYNGuS51WNjY+2EE06wK6+80l588cWQu/ACAAAAAAAUJQTvEJZ58+bZ2LFj7f7777eEhISQXlOqVCk77LDDbNKkSbZp0yarWbNmxFq9YcOGdvrpp9v3338fsXkCAAAAAABEC4J3CNm+fftcnTnVvFMdu3Co3t2KFStcjbqDBw/ac88957rSRmLQCXXHnTNnjh04cCDP8wIAAAAAAIgmBO8QEp/PZ2+88YYNGjTI6tWrF3arqavsypUrrXXr1vbTTz9Zq1atbMmSJfbLL7/keQvEx8fbcccdZ4888oht2bIlz/MDAAAAAACIFgTvEJLZs2fbwoULrWfPnrlqMWXq7dy503WZff75523o0KHWsWNHGz9+fES2wMCBA13X3NGjR0dkfgAAAAAAANEgvrAXAEVDmzZtXIDsm2++sXPOOSfs18+YMcPat2/v/h4+fLjr5lq3bl27+eabI7aMKSkpVq1atYjNDwAAAAAAoLARvENI4uLirGnTprnOlFu8eLEbIVbmzp1r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AAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiFME7AAAAAAAAIEoRvAMAAAAAAACiVHxhLwAARIQvAvOIicA8AAAAAACIIDLvAAAAAAAAgChF8A4AAAAAAACIUgTvAAAAAAAAgChF8A4AAAAAAACIUgTvAAAAAAAAgChF8A4AAAAAAACIUgTvAAAAAAAAgChF8A4AAAAAAACIUgTvAAAAAAAAgChF8A4AAAAAAACIUgTvAAAAAAAAgChF8A4AAAAAAACIUgTvAAAAAAAAgChF8A4AAAAAAACIUgTvAAAAAAAAgChF8A4AAAAAAACIUvGFvQBAieWz4iEmAvMoLm0BAAAAAECE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twuuvzfL7hmR1qh5a1fGSUXLa9QKXtwdCOZQN51oKYpWcjVt1dYWzJ5RIoN3Ck4tWzzfXcD7F6vXvqmi9hp1Vl3vOvfsY0effHami3vVj1MwL7tutv7Gj/7Rvd+ZF11dqCOnKhCmwS3GjfreZV8qA1bBkHmzprmaff2GHONKZXjZiBrUZNG8WS5br7B+yKtavaalpaW6bpCRGgkURYe6q6su3Py/Z1j5xApWo3Zd1/Vax15ejiVllapLq+afH9mvzz90h5UtW9badswcqPbXpUdf+/GLj92PBVq/SJs9bbIb4Xn4e6/ZyedckuG5E8680J3vGAwGKFrefPNNe+aZZ2zevHnux8jGjRvbFVdcYbfcckuurgPDnd/q1avt8ccft6+//trWrFnjXlOrVi0bMmSI3X333daiRQsrigjeochaPG+2K2pbEN15kDfqgvX1h6/a4JPOdhc5BUWFjlNSU6xCxczdr9JSUmzjhrVWq26DAlseFB27d+109YZQuHZu2+ZGiy5pVixdaL9+/5WrN+f/y/HfU/90QYI69RtbwybNbcDQE62U6gIGiTNrtNndO3farKl/uu60hw8+NlNwS0Xq586calMm/O6CTmddck36gA2FqU79RlaxSlWb/tcfru6huu1p2cqULWvffvqeTRzzi1v/Zq3buXXq0DX39e0iRd9FUlMLppYroocyPl99+iHr0LWX616tgFskKdNUIyarjmUkTZ041g4c2Gd33P9CjtNqpGZ1FVeA/8gTTo94tqK+o5158VU2e9oka9y8VYbnVRMwPwfsAIp25l101ry79dZb7amnnnJ/6zuKfoBctmyZ3XnnnTZ58mT7/PPPw/phI9z5LViwwHr37m3btm3L8Jp169bZe++9Z8OHD7dRo0ZZnz59rKgheIcia+KYUW7UPUS/rz94xRo2a23tuxXsSXLy+NHWtVd/S0jIXGT5j9EjbezP31inHn3suDMuKtDlQvTbvmVjxC/CED51lerYvXeJajqNlqruoPUaNnXZn28+96gbCVsj77bu0MXOvuzakLJQ1BVtwFEn2O8/fe1+NPn4rf+zU8651MoklHXZbKN//MoVzm/eur3LbqlWs5ZFC33JPvbUc4M+d+r5l1s0atqqnX32ziuua2TjZq1cxreyBVNSDnXXad2+i9Vt0KiwFxMRdGD/fvvkrRetzxFDrdth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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "show(point_receptors, \"PM2.5 from EGU point sources, through the InMAP ISRM\")\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "94a2e602",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### Example area source analysis\n",
+ "\n",
+ "We can use the same set of functions with a polygon-type geodataframe to simulate impacts of area emission sources. Here, we give all the counties in Illinois a consistent rate of emissions:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "e6e399b6",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "102 counties · 143,778,461 kg/yr of primary PM2.5\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "