geoprior.scripts.plot_physics_profiles#

Plot 1D physics sensitivity profiles.

Complements: - Supp. Fig. S6 (ablations: skill + coverage), - Supp. Fig. S7 (2D residual heatmaps),

by providing 1D “profiles” (physics-on only):

For each city (rows) and each metric (metric_prior, metric_cons), we draw two line profiles:

  • metric vs λ_prior (mean over λ_cons, pde_mode=’both’)

  • metric vs λ_cons (mean over λ_prior, pde_mode=’both’)

Layout#

The figure has 2 rows × 4 columns.

  • Row 1: City A (default: Nansha), with metric-prior and metric-cons profiles against λ_prior and λ_cons.

  • Row 2: City B (default: Zhongshan), with the same four panels.

Data source#

We scan for JSONL under <root>/**/ablation_records/ablation_record*.jsonl.

Outputs#

  • Figure: <out>.png and <out>.pdf

  • Tidy table copy: appendix_table_A1_phys_profiles_tidy.csv written next to the figure.

API conventions#

  • Style via scripts.utils.set_paper_style()

  • Output path via scripts.utils.resolve_fig_out()

  • JSONL discovery via cfg.PATTERNS["ablation_record_jsonl"] plus scripts.utils.find_all()

  • A main(argv) wrapper calls a dedicated *_main(argv) function.

Linting / format#

  • black + ruff, line length <= 62

Functions

figA1_phys_profiles_main([argv, prog])

main([argv, prog])

geoprior.scripts.plot_physics_profiles.figA1_phys_profiles_main(argv=None, *, prog=None)[source]#
Parameters:
Return type:

None

geoprior.scripts.plot_physics_profiles.main(argv=None, *, prog=None)[source]#
Parameters:
Return type:

None