<jupyter_start><jupyter_text>Diagnostic output skillMeasurement diagnostics (type 1) support different type of skill assessments by comparison between the model result and the measurements stored in the file:* skill() - table with skill statistics* scatter() - scatter plotThe same skill assessment methods and properties are available for their main data properties .result, .forecast, .forecast_at_update, and .analysis (if the file contains no updates only .result and .forecast will be available and they will be identical).<jupyter_code>import fmdap
fn = '../tests/testdata/Diagnostics_F16_EnKF.dfs0'
diag = fmdap.read_diagnostic(fn, name="F16")<jupyter_output><empty_output><jupyter_text>skill()<jupyter_code>diag.skill()
diag.forecast_at_update.skill().round(3)
diag.analysis.skill(metrics=["mape","mef","nse","r2","lin_slope"])<jupyter_output><empty_output><jupyter_text>scatter()diag.scatter() = diag.result.scatter()<jupyter_code>diag.scatter(figsize=(6,6))
diag.analysis.scatter(figsize=(6,6), show_points=False)
diag.forecast.scatter(figsize=(6,6), show_hist=False)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12285456187895212, 'fraction_numerical': 0.012646793134598013, 'mean_word_length': 8.47008547008547, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '417528', 'license': 'MIT', 'n_tokens_mistral': 360, 'n_tokens_neox': 357, 'n_words': 82, 'path': 'notebooks/Diagnostic_output_skill.ipynb', 'repo_name': 'DHI/fmdap', 'size': '1107'}