Tip
Need help? Please let us know in the SUEWS Community.
Please report issues with the manual on GitHub Issues (or use Report Issue for This Page for page-specific feedback).
Please cite SUEWS with proper information from our Zenodo page.
6.3.7.4. supy.util.attribute_q2#
- supy.util.attribute_q2(df_output_A: DataFrame, df_output_B: DataFrame, df_forcing_A: DataFrame, df_forcing_B: DataFrame, min_flux: float = 0.1) AttributionResult[source]#
Decompose q2 (2m specific humidity) differences between two SUEWS scenarios.
The difference in 2m specific humidity is attributed to: - Flux changes (Q_E latent heat flux) - Resistance changes (turbulent exchange efficiency) - Air property changes (rho * L_v)
- Parameters:
df_output_A (pd.DataFrame) – SUEWS output DataFrame for scenario A (reference/baseline)
df_output_B (pd.DataFrame) – SUEWS output DataFrame for scenario B (modified/test)
df_forcing_A (pd.DataFrame) – Forcing DataFrame for scenario A. Must contain ‘Tair’, ‘RH’, ‘pres’ columns.
df_forcing_B (pd.DataFrame) – Forcing DataFrame for scenario B. Must contain ‘Tair’, ‘RH’, ‘pres’ columns.
min_flux (float, optional) – Minimum flux threshold (W/m2) for resistance calculation. Timesteps with abs(Q_E) < min_flux are flagged. Default 0.1.
- Returns:
Container with contributions timeseries, summary statistics, and metadata.
- Return type:
Examples
Compare baseline vs. irrigated scenario:
>>> result = attribute_q2(df_output_baseline, df_output_irrigated, ... df_forcing_A=df_forcing, df_forcing_B=df_forcing) >>> print(result) q2 Attribution Results ======================================== Mean delta_q2: +0.0012 g/kg
6.3.7.4. Component Breakdown:#
flux_total : +0.0008 g/kg (66.7%) resistance : +0.0003 g/kg (25.0%) air_props : +0.0001 g/kg ( 8.3%)
>>> result.plot(kind="bar") # Visualise contributions