cgeniepy.skill#

Classes#

ArrComparison

quantitatively compare similarity metrics between two 2D arrays (model and observation)

DFComparison

Quantitatively compare similarity metrics between two columns in a dataframe-like objects

TaylorDiagram

Taylor diagram.

Module Contents#

class cgeniepy.skill.ArrComparison(model, observation, model_name='Model', obs_name='Observation', label=None)#

quantitatively compare similarity metrics between two 2D arrays (model and observation)

model#
data#
model_name = 'Model'#
obs_name = 'Observation'#
label = None#
safe_unveil(array)#

get pure array from a numpy masked array object

intersect_index(verbose=False)#

Return the index where corresponding values are not nan in both input arrays. One then can filter the array by the output boolean array.

mscore()#

Calculate skill metric M-score. See more in the paper Watterson, I. G. (1996)

pearson_r()#

calculate pearson correlation coefficient for 2D array

spearman_r()#

calculate spearman correlation

mae()#

Mean Absolute Error (MAE)

cos_similarity()#

Cosine similarity that ignores the magnitude of data, but focuses on the direction

rmse()#

Root Mean Sqaure Error (rmse, or rmsd)

mse()#

Mean Squared Error (MSE)

nrmse()#

Normalised RMSE facilitating the comparison between datasets or models with different scales

crmse()#

centred Root Mean Sqaure Error (rmse, or rmsd). See Talor, K. E. (2001) JGR

lm_pvalue(method='pearson')#

get p-value from linear regression

plot(ax=None, diagonal=True, log_scale=False, title='Model vs Observation', savefig_name=None, metric=['rmse', 'r2', 'm', 'p'], *args, **kwargs)#
class cgeniepy.skill.DFComparison(df, model_col, observation_col, *args, **kwargs)#

Bases: ArrComparison

Quantitatively compare similarity metrics between two columns in a dataframe-like objects

model#
data#
class cgeniepy.skill.TaylorDiagram(ac: ArrComparison | list)#

Bases: object

Taylor diagram.

A visualisation of model-data comparison considering (1) RMSE; (2) Correlation; (3) Standard Deviation.

In practical it is a polar axis with point with std as radiance and corr as theta. The cRMSE then measures the distance from reference point, which is at (ref_std, 0)

see https://en.wikipedia.org/wiki/Taylor_diagram#/media/File:Taylor_diagram_fig2.png and https://bookdown.org/david_carslaw/openair/sections/model-evaluation/taylor-diagram.html (Figure 20.2)

This class is modified from Yannick Copin, https://gist.github.com/ycopin/3342888

ac#
extract_data()#
setup_ax(fig=None, positive_only=True, crmse_contour=False)#
add_point(correlation, std, *args, **kwargs)#
plot(cmap=None, add_legend=True, *args, **kwargs)#
savefig(*args, **kwargs)#
add_line(theta1, radius1, theta2, radius2, *args, **kwargs)#

Add a line in the polar axis

If you need to convert the correlation into theta/radian, use np.arccos(correlation)