Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ipc forests #746

Merged
merged 115 commits into from
Oct 31, 2023
Merged
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
0e07a83
starts ipc forests reader
dulte Aug 10, 2022
b165d8b
Halfway through making reader
dulte Sep 8, 2022
4ee082c
First working version of reader
dulte Sep 12, 2022
c4bf576
Sampler type filter added
dulte Sep 12, 2022
0381478
Adds sea salt correction to so4 dep
dulte Sep 15, 2022
d5c78c1
Changes how and where ts_type is calculated
dulte Sep 15, 2022
c047ba2
Adds some docstrings to metadata.py
dulte Sep 15, 2022
638316a
Adds total dep, check quality flags, and uses only the lowest sea sal…
dulte Sep 26, 2022
c0ef4d4
Merge branch 'main-dev' into ipc-forests
dulte Sep 26, 2022
b4b14ee
Can now read new model data
dulte Oct 6, 2022
8dfe6bb
Adds multiple variables
dulte Oct 11, 2022
9b250a0
More variables for task4041
dulte Oct 26, 2022
6527c4f
Adds vmr to conc for aerocom model data, in a compicated way
dulte Oct 26, 2022
f7ec1a7
Adds more variables to task4041
dulte Oct 31, 2022
fb69568
Merge branch 'main-dev' into ipc-forests
dulte Nov 14, 2022
a73f473
Adds fakedrydep and totdep
dulte Nov 23, 2022
6c90924
change path to standard aerocm location
Jan 2, 2023
42a29db
Merge branch 'griesie_fix_802' into ipc-forests
Jan 9, 2023
bedee59
switch to storeB
jgriesfeller Jan 11, 2023
7ba24e0
remove another storeA location
jgriesfeller Jan 11, 2023
e3eb3ce
Merge remote-tracking branch 'origin/ipc-forests' into ipc-forests
Jan 12, 2023
f23f897
Merge branch 'griesie-fix-759' into ipc-forests
Jan 12, 2023
d844879
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
Jan 23, 2023
539a7f0
make compatible to Python versions < 3.10
jgriesfeller Jan 26, 2023
13ff522
added udunit for mg/m2/h
jgriesfeller Jan 30, 2023
79d5aba
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
Feb 2, 2023
d667105
implement color scales from Hilde
lewisblake Feb 3, 2023
f10a0aa
run black
lewisblake Feb 3, 2023
04fae58
added alias prmm = pr used in task4041
Feb 6, 2023
ade062d
Merge pull request #818 from metno/ipc-forest-update-color_defaults
jgriesfeller Feb 7, 2023
fa6de39
Merge branch 'main-dev' into ipc-forests
jgriesfeller Feb 7, 2023
b3ab8f1
added udunit for mg/m2/h
jgriesfeller Feb 7, 2023
e647162
create fake wetdep variables for EBASMC obs network
Feb 8, 2023
f96b939
removed raise MetaDataError for data without flags. See comment for d…
jgriesfeller Feb 10, 2023
9c92244
updated version
jgriesfeller Feb 15, 2023
fd94da8
Merge branch 'griesie_fix_802' into ipc-forests
jgriesfeller Feb 27, 2023
683492d
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
Mar 23, 2023
6776152
add apt update to get recent IPs
Mar 23, 2023
8921f82
move apt update from docs yo venv
Mar 23, 2023
7a639f2
linting
Mar 23, 2023
30ef259
move code to plugins
Mar 23, 2023
2f34f03
move code location
Mar 23, 2023
a9ed982
linting
Mar 23, 2023
9ce7c6c
Merge branch 'griesie-fix-837' into ipc-forests
Mar 24, 2023
59fc53e
adjust tests to new variables
Mar 24, 2023
157b969
remove private path
Mar 24, 2023
74d47b7
remove private clutter
Mar 24, 2023
2fa2dbc
linting
Mar 24, 2023
f4fc181
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller Mar 27, 2023
052a514
linting
jgriesfeller Mar 27, 2023
bb6b8cb
remove clutter
jgriesfeller Mar 27, 2023
99a73a8
added data_searchdirno; there's one absolute path in path.ini now
jgriesfeller Mar 27, 2023
9ca9a86
linting
jgriesfeller Mar 27, 2023
b12a6e8
start ipcforests testing
jgriesfeller Mar 27, 2023
c621108
some more testing
jgriesfeller Mar 27, 2023
6aeef68
linting
Mar 28, 2023
c007b97
take years without data for a species into account
Mar 28, 2023
cc22095
added a simple metadata test
Mar 28, 2023
7160181
linting
Mar 28, 2023
80119c7
replace fake with proxy in all variable names; linting
Mar 29, 2023
2be6358
linting
Mar 29, 2023
613f2e1
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller Apr 11, 2023
d425203
updated due to PR review
jgriesfeller Apr 11, 2023
f01a4f9
Merge remote-tracking branch 'origin/ipc-forests' into ipc-forests
jgriesfeller Apr 11, 2023
8a845a7
add some deepcopy calls
jgriesfeller Apr 14, 2023
407e3d7
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller May 8, 2023
9857f49
WIP on correcting the diurnal cycle calculation
jgriesfeller May 8, 2023
34ee6ea
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller May 11, 2023
73b1be0
Merge branch 'griesie-865-adjust-aeroval-color-scales' into ipc-forests
May 23, 2023
4c13574
Merge remote-tracking branch 'origin/ipc-forests' into ipc-forests
May 23, 2023
5eb9aae
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller Jun 21, 2023
6b9b90b
corrected wetso4 definition
jgriesfeller Jul 3, 2023
c70fc31
introduced wetoxst and wetoxsc as variables
jgriesfeller Jul 4, 2023
e662d4c
introduced wetoxst and wetoxsc as variables
jgriesfeller Jul 4, 2023
e4fcfe6
introduced wetoxst and wetoxsc as variables
jgriesfeller Jul 4, 2023
19e7a8d
add DOMOS path
jgriesfeller Jul 4, 2023
14e2778
addes wetsoxsc and wetoxst definition
jgriesfeller Jul 4, 2023
a0d6d87
Merge branch 'main-dev' into ipc-forests
jgriesfeller Aug 21, 2023
d69f9ad
adjusted some colorbars
jgriesfeller Aug 28, 2023
0eaf4e1
linting
Sep 28, 2023
5d3742b
try to solve CI linting
Sep 28, 2023
419a82d
try to solve CI linting
Sep 28, 2023
97ae41a
remove black version
Sep 28, 2023
e9ee2f6
update black version
Sep 28, 2023
75a2b5d
linting (isort)
Sep 28, 2023
01a28b2
linting
Sep 28, 2023
7fc386f
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller Sep 29, 2023
0c5aef3
added variable wetna
jgriesfeller Sep 29, 2023
c13c2c2
adjusted wetoxs, wetrdn and wetoxn color bars
Oct 5, 2023
86362a3
Merge remote-tracking branch 'origin/ipc-forests' into ipc-forests
Oct 5, 2023
bd43541
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
Oct 5, 2023
2c325fd
added variable wetna
jgriesfeller Oct 6, 2023
143cc9a
Merge remote-tracking branch 'origin/ipc-forests' into ipc-forests
jgriesfeller Oct 6, 2023
827ca7a
Merge remote-tracking branch 'origin/fix922' into ipc-forests
jgriesfeller Oct 10, 2023
f5d9504
various changes to variable wetna for aeroval
Oct 11, 2023
41b4669
added deposition to forrest variables
jgriesfeller Oct 12, 2023
4021179
Merge remote-tracking branch 'origin/ipc-forests' into ipc-forests
jgriesfeller Oct 12, 2023
3bf5929
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller Oct 12, 2023
7ee8042
add statistics_model_only again that was accidently removed during merge
jgriesfeller Oct 12, 2023
ec52c40
added proxy wetdeps
jgriesfeller Oct 12, 2023
d3a65af
Merge remote-tracking branch 'origin/fix_diurnal' into ipc-forests
Oct 13, 2023
3d1d71b
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
jgriesfeller Oct 16, 2023
671f417
linting
jgriesfeller Oct 16, 2023
f3b8b3d
adjust to new plugin structure for obs reading
jgriesfeller Oct 16, 2023
b943b20
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
Oct 18, 2023
8e0ab9d
adjust tests
Oct 18, 2023
322d9f1
adjust tests
Oct 19, 2023
7862fcd
linting
Oct 19, 2023
1f84fce
Merge remote-tracking branch 'origin/main-dev' into ipc-forests
Oct 31, 2023
47529cb
added more variables
Oct 31, 2023
d0b18cd
removed duplicate wetpm10 entry introduced by merging mein-dev
Oct 31, 2023
288de77
removed unused code
Oct 31, 2023
e978e28
adjusted to review
Oct 31, 2023
da622bf
adjusted to review
Oct 31, 2023
1016ee7
adjusted test
Oct 31, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pyaerocom/_concprcp_units_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
PR_IMPLICIT_UNITS = [Unit("mm")]
DEP_TEST_UNIT = "kg m-2 s-1"


# ToDo: check if still needed
def translate_rate_units_implicit(unit_implicit, ts_type):
unit = Unit(unit_implicit)
Expand Down
4 changes: 1 addition & 3 deletions pyaerocom/aeroval/coldatatojson_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -634,7 +634,7 @@ def _init_site_coord_arrays(data):

def _get_stat_regions(lats, lons, regions):
regs = []
for (lat, lon) in zip(lats, lons):
for lat, lon in zip(lats, lons):
reg = find_closest_region_coord(lat, lon, regions=regions)
regs.append(reg)
return regs
Expand Down Expand Up @@ -857,11 +857,9 @@ def _process_map_and_scat(

# Code for the calculation of trends
if add_trends and freq != "daily":

(start, stop) = _get_min_max_year_periods([per])

if stop - start >= trends_min_yrs:

try:
time = subset.data.time.values
(obs_trend, mod_trend) = _make_trends(
Expand Down
6 changes: 3 additions & 3 deletions pyaerocom/aeroval/experiment_output.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from pyaerocom.aeroval.glob_defaults import (
extended_statistics,
statistics_defaults,
statistics_model_only,
statistics_obs_only,
statistics_trend,
var_ranges_defaults,
Expand Down Expand Up @@ -444,7 +445,6 @@ def _check_clean_ts_file(self, fp):
return modified

def _clean_modelmap_files(self):

# Note: to be called after cleanup of files in map subdir
json_files = self._get_json_output_files("contour")
rm = []
Expand Down Expand Up @@ -575,6 +575,8 @@ def _create_var_ranges_json(self):
def _create_statistics_json(self):
if self.cfg.statistics_opts.obs_only_stats:
stats_info = statistics_obs_only
elif self.cfg.statistics_opts.model_only_stats:
stats_info = statistics_model_only
else:
stats_info = statistics_defaults
stats_info.update(extended_statistics)
Expand Down Expand Up @@ -624,7 +626,6 @@ def _init_menu_entry(self, var: str) -> dict:
return {"type": tp, "cat": cat, "name": name, "longname": lname, "obs": {}}

def _check_ovar_mvar_entry(self, mcfg, mod_var, ocfg, obs_var):

muv = mcfg.model_use_vars
mrv = mcfg.model_rename_vars

Expand Down Expand Up @@ -747,7 +748,6 @@ def _create_menu_dict(self):
(obs_name, obs_var, vert_code, mod_name, mod_var, per) = self._info_from_map_file(file)

if self._is_part_of_experiment(obs_name, obs_var, mod_name, mod_var):

mcfg = self.cfg.model_cfg.get_entry(mod_name)
var = mcfg.get_varname_web(mod_var, obs_var)
if not var in new:
Expand Down
99 changes: 94 additions & 5 deletions pyaerocom/aeroval/glob_defaults.py
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the name "fake" probably should be changed at some point to something more descriptive like "synthetic"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with @MichaelSchulzMETNO we already said that we will use the word proxy instead. I will go through it and change the names.

Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,10 @@
"scale": [0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0],
"colmap": "coolwarm",
},
"wetoxs": {"scale": [0, 1.25, 2.5, 3.75, 5, 6.25, 7.5, 8.75, 10], "colmap": "coolwarm"},
"wetoxs": {"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2], "colmap": "coolwarm"},
"wetoxn": {"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2], "colmap": "coolwarm"},
"wetrdn": {
"scale": [0, 0.75, 1.5, 2.25, 3.0, 3.75, 4.5, 5.25, 6.0, 6.75, 7.5, 8.25],
"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2],
"colmap": "coolwarm",
},
"prmm": {"scale": [0, 1.25, 2.5, 3.75, 5, 6.25, 7.5, 8.75, 10], "colmap": "coolwarm"},
Expand All @@ -100,6 +100,55 @@
"colmap": "coolwarm",
},
"ts": {"scale": [265, 270, 275, 280, 285, 290, 300, 305, 310, 315, 320], "colmap": "coolwarm"},
"proxydryo3": {"scale": [0, 0.5, 1, 15, 20, 25, 0.30, 40, 50], "colmap": "coolwarm"},
"proxydrypm10": {"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2], "colmap": "coolwarm"},
"proxydrypm25": {"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2], "colmap": "coolwarm"},
"proxydryno2": {
"scale": [0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4],
"colmap": "coolwarm",
},
"proxydryhono": {"scale": [0.001, 0.002, 0.003, 0.004, 0.005, 0.006], "colmap": "coolwarm"},
"proxydryn2o5": {"scale": [0.01, 0.02, 0.03, 0.04, 0.05], "colmap": "coolwarm"},
"proxydryhno3": {
"scale": [0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4],
"colmap": "coolwarm",
},
"proxydryno3c": {
"scale": [0.01, 0.02, 0.03, 0.04, 0.05],
"colmap": "coolwarm",
},
"proxydryno3f": {"scale": [0.01, 0.02, 0.03, 0.04, 0.05], "colmap": "coolwarm"},
"proxydrynh3": {
"scale": [0, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80],
"colmap": "coolwarm",
},
"proxydrynh4": {
"scale": [0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4],
"colmap": "coolwarm",
},
"proxydryso2": {
"scale": [0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4],
"colmap": "coolwarm",
},
"proxydryso4": {
"scale": [0.01, 0.02, 0.03, 0.04, 0.05],
"colmap": "coolwarm",
},
"proxydryoxs": {
"scale": [0, 0.05, 0.1, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40],
"colmap": "coolwarm",
},
"proxydryoxn": {
"scale": [0, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80],
"colmap": "coolwarm",
},
"proxydryrdn": {
"scale": [0, 0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80],
"colmap": "coolwarm",
},
"depoxs": {"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2], "colmap": "coolwarm"},
"depoxn": {"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2], "colmap": "coolwarm"},
"deprdn": {"scale": [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2], "colmap": "coolwarm"},
}

#: Default information for statistical parameters
Expand Down Expand Up @@ -256,6 +305,18 @@
statistics_obs_only = {
"refdata_mean": {
"name": "Mean-Obs",
"longname": "Model Mean",
"scale": None,
"colmap": "coolwarm",
"unit": "1",
"decimals": 2,
},
}

# For experiments where only model data is interesting, as with proxy drydep
statistics_model_only = {
"data_mean": {
"name": "Mean-Mod",
"longname": "Observation Mean",
"scale": None,
"colmap": "coolwarm",
Expand Down Expand Up @@ -293,6 +354,7 @@
concNno=["NO", "3D", "Concentration"],
concno2=["NO2", "3D", "Gas concentrations"],
concNno2=["NO2", "3D", "Gas concentrations"],
vmrno=["NO", "3D", "Volume mixing ratios"],
vmrno2=["NO2", "3D", "Volume mixing ratios"],
concno3=["NO3", "3D", "Gas concentrations"],
conctno3=["tNO3", "3D", "Concentration"],
Expand All @@ -314,6 +376,11 @@
vmrox=["OX", "3D", "Gas volume mixing ratio"],
concco=["CO", "3D", "Particle concentration"],
vmrco=["CO", "3D", "Volume mixing ratios"],
vmrc2h2=["Ethyne", "3D", "Volume mixing ratios"],
vmrc2h4=["Ethylene", "3D", "Volume mixing ratios"],
vmrc2h6=["Ethane", "3D", "Volume mixing ratios"],
vmrhcho=["Formaldehyde", "3D", "Volume mixing ratios"],
vmrisop=["Isoprene", "3D", "Volume mixing ratios"],
# PMs
concpm10=["PM10", "3D", "Particle concentrations"],
concpm25=["PM2.5", "3D", "Particle concentrations"],
Expand All @@ -337,15 +404,37 @@
concCocpm25=["OC PM2.5", "3D", "Particle concentration"],
concCecpm10=["EC PM10", "3D", "Particle concentration"],
concCocpm10=["OC PM10", "3D", "Particle concentration"],
concCoc25=["OC PM2.5", "3D", "Particle concentration"],
# Depositions
drysox=["DryOXS", "3D", "Deposition"],
dryoxs=["FakeDryOXS", "3D", "Deposition"],
dryoxn=["FakeDryOXN", "3D", "Deposition"],
dryrdn=["FakeDryRDN", "3D", "Deposition"],
dryoxs=["proxyDryOXS", "3D", "Deposition"],
dryoxn=["proxyDryOXN", "3D", "Deposition"],
dryrdn=["proxyDryRDN", "3D", "Deposition"],
depoxs=["TotDepOXS", "3D", "Total Deposition"],
depoxn=["TotDepOXN", "3D", "Total Deposition"],
deprdn=["TotDepRDN", "3D", "Total Deposition"],
wetoxs=["WetOXS", "3D", "Deposition"],
wetoxn=["WetOXN", "3D", "Deposition"],
wetrdn=["WetRDN", "3D", "Deposition"],
prmm=["Precipitation", "3D", "Deposition"],
# Temperature
ts=["Surface Temperature", "3D", "Temperature"],
# proxy drydep
proxydryoxs=["proxyDryOXS", "3D", "Deposition"],
proxydryso2=["proxyDrySO2", "3D", "Deposition"],
proxydryso4=["proxyDrySO4", "3D", "Deposition"],
proxydryoxn=["proxyDryOXN", "3D", "Deposition"],
proxydryno2=["proxyDryNO2", "3D", "Deposition"],
proxydryno2no2=["proxyDryNO2NO2", "3D", "Deposition"],
proxydryhono=["proxyDryHONO", "3D", "Deposition"],
proxydryn2o5=["proxyDryN2O5", "3D", "Deposition"],
proxydryhno3=["proxyDryHNO3", "3D", "Deposition"],
proxydryno3c=["proxyDryNO3Coarse", "3D", "Deposition"],
proxydryno3f=["proxyDryNO3Fine", "3D", "Deposition"],
proxydryrdn=["proxyDryRDN", "3D", "Deposition"],
proxydrynh3=["proxyDryNH3", "3D", "Deposition"],
proxydrynh4=["proxyDryNH4", "3D", "Deposition"],
proxydryo3=["proxyDryO3", "3D", "Deposition"],
proxydrypm10=["proxyDryPM10", "3D", "Deposition"],
proxydrypm25=["proxyDryPM2.5", "3D", "Deposition"],
)
1 change: 0 additions & 1 deletion pyaerocom/aeroval/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ def _get_min_max_year_periods(statistics_periods):


def make_dummy_model(obs_list: list, cfg) -> str:

# Sets up variable for the model register
tmpdir = const.LOCAL_TMP_DIR
const.add_data_search_dir(tmpdir)
Expand Down
1 change: 0 additions & 1 deletion pyaerocom/aeroval/modelmaps_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ def run(self, **kwargs):
return files

def _get_vars_to_process(self, model_name, var_list):

mvars = self.cfg.model_cfg.get_entry(model_name).get_vars_to_process(
self.cfg.obs_cfg.get_all_vars()
)[1]
Expand Down
1 change: 0 additions & 1 deletion pyaerocom/aeroval/modelmaps_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ def griddeddata_to_jsondict(data, lat_res_deg=5, lon_res_deg=5):
if isinstance(nparr, dask.array.core.Array):
nparr = nparr.compute()
for i, (lat, lon) in enumerate(stacked.station_name.values):

coord = lat, lon
vals = nparr[:, i]
dd[str(coord)] = sd = {}
Expand Down
3 changes: 1 addition & 2 deletions pyaerocom/aeroval/obsentry.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class ObsEntry(BrowseDict):
(c.g. :class:`pyaerocom.io.ReadUngridded`).
"""

SUPPORTED_VERT_CODES = ["Column", "Profile", "Surface"]
SUPPORTED_VERT_CODES = ["Column", "Profile", "Surface"] # , "2D"]
ALT_NAMES_VERT_CODES = dict(ModelLevel="Profile")

SUPPORTED_VERT_LOCS = DataSource.SUPPORTED_VERT_LOCS
Expand All @@ -60,7 +60,6 @@ class ObsEntry(BrowseDict):
obs_vert_type = StrType()

def __init__(self, **kwargs):

self.obs_id = ""

self.obs_vars = []
Expand Down
3 changes: 1 addition & 2 deletions pyaerocom/aeroval/setupclasses.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ def __init__(self, **kwargs):
self.use_fairmode = False
self.use_diurnal = False
self.obs_only_stats = False
self.model_only_stats = False
self.update(**kwargs)


Expand Down Expand Up @@ -206,7 +207,6 @@ def _get_all_period_strings(self):


class WebDisplaySetup(ConstrainedContainer):

map_zoom = EitherOf(["World", "Europe"])
regions_how = EitherOf(["default", "aerocom", "htap", "country"])

Expand Down Expand Up @@ -384,7 +384,6 @@ def from_json(filepath: str) -> "EvalSetup":
return EvalSetup(**settings)

def _import_aux_funs(self):

h = ReadAuxHandler(self.io_aux_file)
self._aux_funs.update(**h.import_all())

Expand Down
2 changes: 0 additions & 2 deletions pyaerocom/aeroval/superobs_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ class SuperObsEngine(ProcessingEngine, HasColocator):
"""

def run(self, model_name, obs_name, var_list, try_colocate_if_missing=True):

self._process_entry(
model_name=model_name,
obs_name=obs_name,
Expand All @@ -27,7 +26,6 @@ def run(self, model_name, obs_name, var_list, try_colocate_if_missing=True):
)

def _process_entry(self, model_name, obs_name, var_list, try_colocate_if_missing):

sobs_cfg = self.cfg.obs_cfg.get_entry(obs_name)

if var_list is None:
Expand Down
61 changes: 60 additions & 1 deletion pyaerocom/aux_var_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -609,6 +609,18 @@ def compute_wetrdn_from_concprcprdn(data):
return _compute_wdep_from_concprcp_helper(data, "wetrdn", "concprcprdn", "pr")


def compute_wetnh4_from_concprcpnh4(data):
return _compute_wdep_from_concprcp_helper(data, "wetnh4", "concprcpnh4", "pr")


def compute_wetno3_from_concprcpno3(data):
return _compute_wdep_from_concprcp_helper(data, "wetno3", "concprcpno3", "pr")


def compute_wetso4_from_concprcpso4(data):
return _compute_wdep_from_concprcp_helper(data, "wetso4", "concprcpso4", "pr")


def vmrx_to_concx(data, p_pascal, T_kelvin, vmr_unit, mmol_var, mmol_air=None, to_unit=None):
"""
Convert volume mixing ratio (vmr) to mass concentration
Expand Down Expand Up @@ -706,7 +718,6 @@ def concx_to_vmrx(data, p_pascal, T_kelvin, conc_unit, mmol_var, mmol_air=None,


def calc_vmro3max(data):

var_name = "vmro3"
new_var_name = "vmro3max"

Expand All @@ -726,3 +737,51 @@ def calc_vmro3max(data):
# print(data.var_info)
# exit()
return o3max


def identity(data):
return data


def make_proxy_drydep_from_O3(data):
# sort of prototype to add a compted variable
# one has to extend the data structures of the station data object
# 'right', but has to return just the data array
# That concept is a bit confusing (why not do everything in data here?)
var_name = "vmro3"
new_var_name = "proxydryo3"

flags = data.data_flagged[var_name]
new_var_data = data[var_name]
units = data.var_info[var_name]["units"]
# data.var_info[new_var_name]["units"] = units

if not new_var_name in data.var_info:
data.var_info[new_var_name] = {}
data.var_info[new_var_name] = data.var_info[var_name]
data.var_info[new_var_name]["units"] = "mg m-2 d-1"

data.data_flagged[new_var_name] = flags
return new_var_data


def make_proxy_wetdep_from_O3(data):
# sort of prototype to add a compted variable
# one has to extend the data structures of the station data object
# 'right', but has to return just the data array
# That concept is a bit confusing (why not do everything in data here?)
var_name = "vmro3"
new_var_name = "proxyweto3"

flags = data.data_flagged[var_name]
new_var_data = data[var_name]
units = data.var_info[var_name]["units"]
# data.var_info[new_var_name]["units"] = units

if not new_var_name in data.var_info:
data.var_info[new_var_name] = {}
data.var_info[new_var_name] = data.var_info[var_name]
data.var_info[new_var_name]["units"] = "mg m-2 d-1"

data.data_flagged[new_var_name] = flags
return new_var_data
2 changes: 1 addition & 1 deletion pyaerocom/colocateddata.py
Original file line number Diff line number Diff line change
Expand Up @@ -1715,7 +1715,7 @@ def apply_region_mask(self, region_id, inplace=False):

drop_idx = []
nstats = len(arr.station_name)
for (lat, lon, stat) in data._iter_stats():
for lat, lon, stat in data._iter_stats():
if get_mask_value(lat, lon, mask) < 1:
drop_idx.append(stat)

Expand Down
Loading