{"id":19253283,"url":"https://github.com/dhi/modelskill","last_synced_at":"2025-10-26T23:04:10.838Z","repository":{"id":38198461,"uuid":"334095571","full_name":"DHI/modelskill","owner":"DHI","description":"Compare results from MIKE and other simulations with measurements","archived":false,"fork":false,"pushed_at":"2024-11-23T15:12:39.000Z","size":144616,"stargazers_count":33,"open_issues_count":33,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-11-28T13:37:59.082Z","etag":null,"topics":["comparer","measurements","mike","model","observations","python","skill","validation"],"latest_commit_sha":null,"homepage":"https://dhi.github.io/modelskill","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DHI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-29T09:24:00.000Z","updated_at":"2024-11-20T10:39:23.000Z","dependencies_parsed_at":"2023-09-23T12:34:46.385Z","dependency_job_id":"abcba011-01a4-48f7-b1ea-02143dd4a5d4","html_url":"https://github.com/DHI/modelskill","commit_stats":{"total_commits":2838,"total_committers":17,"mean_commits":"166.94117647058823","dds":0.3534178999295279,"last_synced_commit":"9b8b55029855e9dc1055c1dd3c7856ee4c00cc8c"},"previous_names":["dhi/fmskill"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DHI%2Fmodelskill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DHI%2Fmodelskill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DHI%2Fmodelskill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DHI%2Fmodelskill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DHI","download_url":"https://codeload.github.com/DHI/modelskill/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247622983,"owners_count":20968575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["comparer","measurements","mike","model","observations","python","skill","validation"],"created_at":"2024-11-09T18:30:01.261Z","updated_at":"2025-10-26T23:04:05.788Z","avatar_url":"https://github.com/DHI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/DHI/modelskill/main/images/logo/modelskill.svg\" width=\"300\"\u003e\n\n# ModelSkill: Flexible Model skill evaluation.\n ![Python version](https://img.shields.io/pypi/pyversions/modelskill.svg) \n![Python package](https://github.com/DHI/modelskill/actions/workflows/full_test.yml/badge.svg) [![PyPI version](https://badge.fury.io/py/modelskill.svg)](https://badge.fury.io/py/modelskill)\n![Downloads](https://img.shields.io/pypi/dm/modelskill)\n\n[ModelSkill](https://github.com/DHI/modelskill) is a python package for scoring [MIKE](https://www.mikepoweredbydhi.com) models (other models can be evaluated as well). \n\nContribute with new ideas in the [discussion](https://github.com/DHI/modelskill/discussions), report an [issue](https://github.com/DHI/modelskill/issues) or browse the [documentation](https://dhi.github.io/modelskill/). Access observational data (e.g. altimetry data) from the sister library [WatObs](https://github.com/DHI/watobs). \n\n\n## Use cases\n\n[ModelSkill](https://github.com/DHI/modelskill) would like to be your companion during the different phases of a MIKE modelling workflow.\n\n* Model setup - exploratory phase   \n* Model calibration\n* Model validation and reporting - communicate your final results\n\n## Installation\n\nFrom [pypi](https://pypi.org/project/modelskill/):\n\n`\u003e pip install modelskill`\n\nOr the development version:\n\n`\u003e pip install https://github.com/DHI/modelskill/archive/main.zip`\n\n\n## Example notebooks\n\n\n* [Hydrology_Vistula_Catchment.ipynb](https://nbviewer.jupyter.org/github/DHI/modelskill/blob/main/notebooks/Hydrology_Vistula_Catchment.ipynb)\n* [Metocean_multi_model_comparison.ipynb](https://nbviewer.jupyter.org/github/DHI/modelskill/blob/main/notebooks/Metocean_multi_model_comparison.ipynb)\n* [Multi_variable_comparison.ipynb](https://nbviewer.jupyter.org/github/DHI/modelskill/blob/main/notebooks/Multi_variable_comparison.ipynb)\n* [Metocean_track_comparison_global.ipynb](https://nbviewer.jupyter.org/github/DHI/modelskill/blob/main/notebooks/Metocean_track_comparison_global.ipynb) \n* [Gridded_NetCDF_ModelResult.ipynb](https://nbviewer.jupyter.org/github/DHI/modelskill/blob/main/notebooks/Gridded_NetCDF_ModelResult.ipynb)\n* [Directional_data_comparison.ipynb](https://nbviewer.jupyter.org/github/DHI/modelskill/blob/main/notebooks/Directional_data_comparison.ipynb)\n* [Combine_comparers.ipynb](https://nbviewer.jupyter.org/github/DHI/modelskill/blob/main/notebooks/Combine_comparers.ipynb)\n\n\n## Workflow\n\n1. Define **ModelResults**\n2. Define **Observations**\n3. **Match** Observations and ModelResults\n4. Do plotting, statistics, reporting using the **Comparer**\n\nRead more about the workflow in the [getting started guide](https://dhi.github.io/modelskill/user-guide/getting-started.html).\n\n\n## Example of use\n\nStart by defining model results and observations:\n\n```python\n\u003e\u003e\u003e import modelskill as ms\n\u003e\u003e\u003e mr = ms.DfsuModelResult(\"HKZN_local_2017_DutchCoast.dfsu\", name=\"HKZN_local\", item=0)\n\u003e\u003e\u003e HKNA = ms.PointObservation(\"HKNA_Hm0.dfs0\", item=0, x=4.2420, y=52.6887, name=\"HKNA\")\n\u003e\u003e\u003e EPL = ms.PointObservation(\"eur_Hm0.dfs0\", item=0, x=3.2760, y=51.9990, name=\"EPL\")\n\u003e\u003e\u003e c2 = ms.TrackObservation(\"Alti_c2_Dutch.dfs0\", item=3, name=\"c2\")\n```\n\nThen, connect observations and model results, and extract data at observation points:\n\n```python\n\u003e\u003e\u003e cc = ms.match([HKNA, EPL, c2], mr)\n```\n\nWith the comparer object, cc, all sorts of skill assessments and plots can be made:\n\n```python\n\u003e\u003e\u003e cc.skill().round(2)\n               n  bias  rmse  urmse   mae    cc    si    r2\nobservation                                                \nHKNA         385 -0.20  0.35   0.29  0.25  0.97  0.09  0.99\nEPL           66 -0.08  0.22   0.20  0.18  0.97  0.07  0.99\nc2           113 -0.00  0.35   0.35  0.29  0.97  0.12  0.99\n```\n\n### Overview of observation locations\n\n```python\nms.plotting.spatial_overview([HKNA, EPL, c2], mr, figsize=(7,7))\n```\n\n![map](https://raw.githubusercontent.com/DHI/modelskill/main/images/map.png)\n\n\n\n### Scatter plot\n\n```python\ncc.plot.scatter()\n```\n\n![scatter](https://raw.githubusercontent.com/DHI/modelskill/main/images/scatter.png)\n\n### Timeseries plot\n\nTimeseries plots can either be static and report-friendly ([matplotlib](https://matplotlib.org/)) or interactive with zoom functionality ([plotly](https://plotly.com/python/)).\n\n```python\ncc[\"HKNA\"].plot.timeseries(width=1000, backend=\"plotly\")\n```\n\n![timeseries](https://raw.githubusercontent.com/DHI/modelskill/main/images/plotly_timeseries.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhi%2Fmodelskill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhi%2Fmodelskill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhi%2Fmodelskill/lists"}