cgeniepy.skill ============== .. py:module:: cgeniepy.skill Classes ------- .. autoapisummary:: cgeniepy.skill.ArrComparison cgeniepy.skill.DFComparison cgeniepy.skill.TaylorDiagram Module Contents --------------- .. py:class:: ArrComparison(model, observation, model_name='Model', obs_name='Observation', label=None) quantitatively compare similarity metrics between two 2D arrays (model and observation) .. py:attribute:: model .. py:attribute:: data .. py:attribute:: model_name :value: 'Model' .. py:attribute:: obs_name :value: 'Observation' .. py:attribute:: label :value: None .. py:method:: safe_unveil(array) get pure array from a numpy masked array object .. py:method:: 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. .. py:method:: mscore() Calculate skill metric M-score. See more in the paper Watterson, I. G. (1996) .. py:method:: pearson_r() calculate pearson correlation coefficient for 2D array .. py:method:: spearman_r() calculate spearman correlation .. py:method:: mae() Mean Absolute Error (MAE) .. py:method:: cos_similarity() Cosine similarity that ignores the magnitude of data, but focuses on the direction .. py:method:: rmse() Root Mean Sqaure Error (rmse, or rmsd) .. py:method:: mse() Mean Squared Error (MSE) .. py:method:: nrmse() Normalised RMSE facilitating the comparison between datasets or models with different scales .. py:method:: crmse() centred Root Mean Sqaure Error (rmse, or rmsd). See Talor, K. E. (2001) JGR .. py:method:: lm_pvalue(method='pearson') get p-value from linear regression .. py:method:: plot(ax=None, diagonal=True, log_scale=False, title='Model vs Observation', savefig_name=None, metric=['rmse', 'r2', 'm', 'p'], *args, **kwargs) .. py:class:: DFComparison(df, model_col, observation_col, *args, **kwargs) Bases: :py:obj:`ArrComparison` Quantitatively compare similarity metrics between two columns in a dataframe-like objects .. py:attribute:: model .. py:attribute:: data .. py:class:: TaylorDiagram(ac: Union[ArrComparison, list]) Bases: :py:obj:`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 .. py:attribute:: ac .. py:method:: extract_data() .. py:method:: setup_ax(fig=None, positive_only=True, crmse_contour=False) .. py:method:: add_point(correlation, std, *args, **kwargs) .. py:method:: plot(cmap=None, add_legend=True, *args, **kwargs) .. py:method:: savefig(*args, **kwargs) .. py:method:: 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)