forked from contrailcirrus/pycontrails
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaccf_debug.py
105 lines (79 loc) · 2.55 KB
/
accf_debug.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import pandas as pd
import numpy as np
import xarray as xr
import matplotlib
import matplotlib.colors as mcolors
# matplotlib.use('Agg') # Prevents GUI windows
from pycontrails.core.met import MetDataset, MetVariable, MetDataArray
from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap
from pycontrails import Flight
from pycontrails.datalib.ecmwf import ERA5, ERA5ModelLevel
from pycontrails.datalib.ecmwf.variables import PotentialVorticity
from pycontrails.models.cocip import Cocip
from pycontrails.models.humidity_scaling import ExponentialBoostHumidityScaling
from pycontrails.models.issr import ISSR
from pycontrails.physics import units
from pycontrails.models.accf import ACCF
from pycontrails.datalib import ecmwf
from pycontrails.core.fuel import JetA, SAF20, SAF100
from pycontrails.models.cocip.output_formats import flight_waypoint_summary_statistics, contrail_flight_summary_statistics
from pycontrails.physics.thermo import rh
from pycontrails.core.met_var import RelativeHumidity
from pycontrails.core.cache import DiskCacheStore
from pathlib import Path
import os
import pickle
save_path_contrail = f'results/malaga/climate/mees/era5model/cocip_contrail.parquet'
contrail = pd.read_parquet(save_path_contrail)
plt.figure()
ax1 = plt.axes()
# Plot contrail LW RF
contrail.plot.scatter(
"longitude",
"latitude",
c="rf_lw",
cmap="Reds",
ax=ax1,
label="Contrail LW RF",
)
ax1.legend()
# Create a new figure for the second plot
plt.figure()
ax2 = plt.axes()
# Plot contrail SW RF
contrail.plot.scatter(
"longitude",
"latitude",
c="rf_sw",
cmap="Blues_r",
ax=ax2,
label="Contrail SW RF",
)
ax2.legend()
plt.figure()
ax3 = plt.axes()
# Get absolute max value for symmetric colormap
ef_min = contrail["ef"].min()
ef_max = contrail["ef"].max()
max_abs = max(abs(ef_min), abs(ef_max)) # Ensure symmetry
# Normalize colormap around 0, using symmetric min/max values
norm = mcolors.TwoSlopeNorm(vmin=-max_abs, vcenter=0.0, vmax=max_abs)
# Use Matplotlib's scatter instead of Pandas
sc = ax3.scatter(
contrail["longitude"],
contrail["latitude"],
c=contrail["ef"],
cmap="coolwarm",
norm=norm, # Symmetric colormap
alpha=0.7, # Make points slightly transparent for better visibility
label="Contrail EF",
)
# Add colorbar
cbar = plt.colorbar(sc, ax=ax3, label="Energy Forcing (EF)")
cbar.formatter.set_powerlimits((0, 0)) # Ensure scientific notation format
ax3.legend()
plt.xlabel("Longitude")
plt.ylabel("Latitude")
plt.title("Contrail Energy Forcing Evolution")
plt.show()