Skip to content

Commit

Permalink
Fix unit conversion logic (#579)
Browse files Browse the repository at this point in the history
Co-authored-by: marcel caron <[email protected]>
  • Loading branch information
MarcelCaron-NOAA and marcel caron authored Oct 4, 2024
1 parent f86afbc commit d1ec41f
Show file tree
Hide file tree
Showing 5 changed files with 190 additions and 130 deletions.
64 changes: 38 additions & 26 deletions ush/analyses/plot_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -702,22 +702,24 @@ def calculate_bootstrap_ci(logger, bs_method, model_data, stat, nrepl, level,
oobar = model_data.loc[:]['OOBAR']
if bool_convert:
coef, const = conversion
fbar = coef*fbar+const
obar = coef*obar+const
fbar_og = fbar
obar_og = obar
fbar = coef*fbar_og+const
obar = coef*obar_og+const
fobar = (
np.power(coef, 2)*fobar
+ coef*const*fbar
+ coef*const*obar
+ coef*const*fbar_og
+ coef*const*obar_og
+ np.power(const, 2)
)
ffbar = (
np.power(coef, 2)*ffbar
+ 2.*coef*const*fbar
+ 2.*coef*const*fbar_og
+ np.power(const, 2)
)
oobar = (
np.power(coef, 2)*oobar
+ 2.*coef*const*obar
+ 2.*coef*const*obar_og
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -755,23 +757,27 @@ def calculate_bootstrap_ci(logger, bs_method, model_data, stat, nrepl, level,
uvoobar = model_data.loc[:]['UVOOBAR']
if bool_convert:
coef, const = conversion
ufbar = coef*ufbar+const
vfbar = coef*vfbar+const
uobar = coef*uobar+const
vobar = coef*vobar+const
ufbar_og = ufbar
vfbar_og = vfbar
uobar_og = uobar
vobar_og = vobar
ufbar = coef*ufbar_og+const
vfbar = coef*vfbar_og+const
uobar = coef*uobar_og+const
vobar = coef*vobar_og+const
uvfobar = (
np.power(coef, 2)*uvfobar
+ coef*const*(ufbar + uobar + vfbar + vobar)
+ coef*const*(ufbar_og + uobar_og + vfbar_og + vobar_og)
+ np.power(const, 2)
)
uvffbar = (
np.power(coef, 2)*uvffbar
+ 2.*coef*const*(ufbar + vfbar)
+ 2.*coef*const*(ufbar_og + vfbar_og)
+ np.power(const, 2)
)
uvoobar = (
np.power(coef, 2)*uvoobar
+ 2.*coef*const*(uobar + vobar)
+ 2.*coef*const*(uobar_og + vobar_og)
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -1445,22 +1451,24 @@ def calculate_stat(logger, model_data, stat, conversion):
oobar = model_data.loc[:]['OOBAR']
if bool_convert:
coef, const = conversion
fbar = coef*fbar+const
obar = coef*obar+const
fbar_og = fbar
obar_og = obar
fbar = coef*fbar_og+const
obar = coef*obar_og+const
fobar = (
np.power(coef, 2)*fobar
+ coef*const*fbar
+ coef*const*obar
+ coef*const*fbar_og
+ coef*const*obar_og
+ np.power(const, 2)
)
ffbar = (
np.power(coef, 2)*ffbar
+ 2.*coef*const*fbar
+ 2.*coef*const*fbar_og
+ np.power(const, 2)
)
oobar = (
np.power(coef, 2)*oobar
+ 2.*coef*const*obar
+ 2.*coef*const*obar_og
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -1496,23 +1504,27 @@ def calculate_stat(logger, model_data, stat, conversion):
uvoobar = model_data.loc[:]['UVOOBAR']
if bool_convert:
coef, const = conversion
ufbar = coef*ufbar+const
vfbar = coef*vfbar+const
uobar = coef*uobar+const
vobar = coef*vobar+const
ufbar_og = ufbar
vfbar_og = vfbar
uobar_og = uobar
vobar_og = vobar
ufbar = coef*ufbar_og+const
vfbar = coef*vfbar_og+const
uobar = coef*uobar_og+const
vobar = coef*vobar_og+const
uvfobar = (
np.power(coef, 2)*uvfobar
+ coef*const*(ufbar + uobar + vfbar + vobar)
+ coef*const*(ufbar_og + uobar_og + vfbar_og + vobar_og)
+ np.power(const, 2)
)
uvffbar = (
np.power(coef, 2)*uvffbar
+ 2.*coef*const*(ufbar + vfbar)
+ 2.*coef*const*(ufbar_og + vfbar_og)
+ np.power(const, 2)
)
uvoobar = (
np.power(coef, 2)*uvoobar
+ 2.*coef*const*(uobar + vobar)
+ 2.*coef*const*(uobar_og + vobar_og)
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down
64 changes: 38 additions & 26 deletions ush/aqm/plot_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -702,22 +702,24 @@ def calculate_bootstrap_ci(logger, bs_method, model_data, stat, nrepl, level,
oobar = model_data.loc[:]['OOBAR']
if bool_convert:
coef, const = conversion
fbar = coef*fbar+const
obar = coef*obar+const
fbar_og = fbar
obar_og = obar
fbar = coef*fbar_og+const
obar = coef*obar_og+const
fobar = (
np.power(coef, 2)*fobar
+ coef*const*fbar
+ coef*const*obar
+ coef*const*fbar_og
+ coef*const*obar_og
+ np.power(const, 2)
)
ffbar = (
np.power(coef, 2)*ffbar
+ 2.*coef*const*fbar
+ 2.*coef*const*fbar_og
+ np.power(const, 2)
)
oobar = (
np.power(coef, 2)*oobar
+ 2.*coef*const*obar
+ 2.*coef*const*obar_og
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -755,23 +757,27 @@ def calculate_bootstrap_ci(logger, bs_method, model_data, stat, nrepl, level,
uvoobar = model_data.loc[:]['UVOOBAR']
if bool_convert:
coef, const = conversion
ufbar = coef*ufbar+const
vfbar = coef*vfbar+const
uobar = coef*uobar+const
vobar = coef*vobar+const
ufbar_og = ufbar
vfbar_og = vfbar
uobar_og = uobar
vobar_og = vobar
ufbar = coef*ufbar_og+const
vfbar = coef*vfbar_og+const
uobar = coef*uobar_og+const
vobar = coef*vobar_og+const
uvfobar = (
np.power(coef, 2)*uvfobar
+ coef*const*(ufbar + uobar + vfbar + vobar)
+ coef*const*(ufbar_og + uobar_og + vfbar_og + vobar_og)
+ np.power(const, 2)
)
uvffbar = (
np.power(coef, 2)*uvffbar
+ 2.*coef*const*(ufbar + vfbar)
+ 2.*coef*const*(ufbar_og + vfbar_og)
+ np.power(const, 2)
)
uvoobar = (
np.power(coef, 2)*uvoobar
+ 2.*coef*const*(uobar + vobar)
+ 2.*coef*const*(uobar_og + vobar_og)
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -1445,22 +1451,24 @@ def calculate_stat(logger, model_data, stat, conversion):
oobar = model_data.loc[:]['OOBAR']
if bool_convert:
coef, const = conversion
fbar = coef*fbar+const
obar = coef*obar+const
fbar_og = fbar
obar_og = obar
fbar = coef*fbar_og+const
obar = coef*obar_og+const
fobar = (
np.power(coef, 2)*fobar
+ coef*const*fbar
+ coef*const*obar
+ coef*const*fbar_og
+ coef*const*obar_og
+ np.power(const, 2)
)
ffbar = (
np.power(coef, 2)*ffbar
+ 2.*coef*const*fbar
+ 2.*coef*const*fbar_og
+ np.power(const, 2)
)
oobar = (
np.power(coef, 2)*oobar
+ 2.*coef*const*obar
+ 2.*coef*const*obar_og
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -1496,23 +1504,27 @@ def calculate_stat(logger, model_data, stat, conversion):
uvoobar = model_data.loc[:]['UVOOBAR']
if bool_convert:
coef, const = conversion
ufbar = coef*ufbar+const
vfbar = coef*vfbar+const
uobar = coef*uobar+const
vobar = coef*vobar+const
ufbar_og = ufbar
vfbar_og = vfbar
uobar_og = uobar
vobar_og = vobar
ufbar = coef*ufbar_og+const
vfbar = coef*vfbar_og+const
uobar = coef*uobar_og+const
vobar = coef*vobar_og+const
uvfobar = (
np.power(coef, 2)*uvfobar
+ coef*const*(ufbar + uobar + vfbar + vobar)
+ coef*const*(ufbar_og + uobar_og + vfbar_og + vobar_og)
+ np.power(const, 2)
)
uvffbar = (
np.power(coef, 2)*uvffbar
+ 2.*coef*const*(ufbar + vfbar)
+ 2.*coef*const*(ufbar_og + vfbar_og)
+ np.power(const, 2)
)
uvoobar = (
np.power(coef, 2)*uvoobar
+ 2.*coef*const*(uobar + vobar)
+ 2.*coef*const*(uobar_og + vobar_og)
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down
64 changes: 38 additions & 26 deletions ush/cam/plot_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -836,22 +836,24 @@ def calculate_bootstrap_ci(logger, bs_method, model_data, stat, nrepl, level,
oobar = model_data.loc[:]['OOBAR']
if bool_convert:
coef, const = conversion
fbar = coef*fbar+const
obar = coef*obar+const
fbar_og = fbar
obar_og = obar
fbar = coef*fbar_og+const
obar = coef*obar_og+const
fobar = (
np.power(coef, 2)*fobar
+ coef*const*fbar
+ coef*const*obar
+ coef*const*fbar_og
+ coef*const*obar_og
+ np.power(const, 2)
)
ffbar = (
np.power(coef, 2)*ffbar
+ 2.*coef*const*fbar
+ 2.*coef*const*fbar_og
+ np.power(const, 2)
)
oobar = (
np.power(coef, 2)*oobar
+ 2.*coef*const*obar
+ 2.*coef*const*obar_og
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -889,23 +891,27 @@ def calculate_bootstrap_ci(logger, bs_method, model_data, stat, nrepl, level,
uvoobar = model_data.loc[:]['UVOOBAR']
if bool_convert:
coef, const = conversion
ufbar = coef*ufbar+const
vfbar = coef*vfbar+const
uobar = coef*uobar+const
vobar = coef*vobar+const
ufbar_og = ufbar
vfbar_og = vfbar
uobar_og = uobar
vobar_og = vobar
ufbar = coef*ufbar_og+const
vfbar = coef*vfbar_og+const
uobar = coef*uobar_og+const
vobar = coef*vobar_og+const
uvfobar = (
np.power(coef, 2)*uvfobar
+ coef*const*(ufbar + uobar + vfbar + vobar)
+ coef*const*(ufbar_og + uobar_og + vfbar_og + vobar_og)
+ np.power(const, 2)
)
uvffbar = (
np.power(coef, 2)*uvffbar
+ 2.*coef*const*(ufbar + vfbar)
+ 2.*coef*const*(ufbar_og + vfbar_og)
+ np.power(const, 2)
)
uvoobar = (
np.power(coef, 2)*uvoobar
+ 2.*coef*const*(uobar + vobar)
+ 2.*coef*const*(uobar_og + vobar_og)
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -1608,22 +1614,24 @@ def calculate_stat(logger, model_data, stat, conversion):
oobar = model_data.loc[:]['OOBAR']
if bool_convert:
coef, const = conversion
fbar = coef*fbar+const
obar = coef*obar+const
fbar_og = fbar
obar_og = obar
fbar = coef*fbar_og+const
obar = coef*obar_og+const
fobar = (
np.power(coef, 2)*fobar
+ coef*const*fbar
+ coef*const*obar
+ coef*const*fbar_og
+ coef*const*obar_og
+ np.power(const, 2)
)
ffbar = (
np.power(coef, 2)*ffbar
+ 2.*coef*const*fbar
+ 2.*coef*const*fbar_og
+ np.power(const, 2)
)
oobar = (
np.power(coef, 2)*oobar
+ 2.*coef*const*obar
+ 2.*coef*const*obar_og
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down Expand Up @@ -1659,23 +1667,27 @@ def calculate_stat(logger, model_data, stat, conversion):
uvoobar = model_data.loc[:]['UVOOBAR']
if bool_convert:
coef, const = conversion
ufbar = coef*ufbar+const
vfbar = coef*vfbar+const
uobar = coef*uobar+const
vobar = coef*vobar+const
ufbar_og = ufbar
vfbar_og = vfbar
uobar_og = uobar
vobar_og = vobar
ufbar = coef*ufbar_og+const
vfbar = coef*vfbar_og+const
uobar = coef*uobar_og+const
vobar = coef*vobar_og+const
uvfobar = (
np.power(coef, 2)*uvfobar
+ coef*const*(ufbar + uobar + vfbar + vobar)
+ coef*const*(ufbar_og + uobar_og + vfbar_og + vobar_og)
+ np.power(const, 2)
)
uvffbar = (
np.power(coef, 2)*uvffbar
+ 2.*coef*const*(ufbar + vfbar)
+ 2.*coef*const*(ufbar_og + vfbar_og)
+ np.power(const, 2)
)
uvoobar = (
np.power(coef, 2)*uvoobar
+ 2.*coef*const*(uobar + vobar)
+ 2.*coef*const*(uobar_og + vobar_og)
+ np.power(const, 2)
)
elif all(elem in model_data_columns for elem in
Expand Down
Loading

0 comments on commit d1ec41f

Please sign in to comment.