slv.inversion.pipelines.project_jacobian#

slv.inversion.pipelines.project_jacobian(project, sel, target, flux_bins, *, location_mapper=None, workers=None, threshold=1e-15, sparse=True)[source]#

One STILT project’s flux Jacobian, from stilt.Project.jacobian.

sel is the rows of project.simulations to use, all of one variant. Each footprint is summed onto target per flux bin. Rows are (obs_location, obs_time): the receptor’s location id, renamed by location_mapper when it names a site, and its time; they are the one block concentration. Columns are the target’s cells and the bins’ left edges ((lon, lat, time) for a longitude/latitude grid), the one block flux. Entries below threshold are zero.

Every receptor with a footprint gets a row. One whose footprint is empty (all its particles left the domain) or misses the target gets a row of zeros: it saw no emissions, which is a real observation. A receptor with no footprint (not run yet, or failed) gets no row, and build_problem() drops its obs. Returns None when no receptor has a footprint.

Return type:

Operator | None