{"id":13719632,"url":"https://github.com/WISDEM/WOMBAT","last_synced_at":"2025-05-07T11:32:22.290Z","repository":{"id":37894918,"uuid":"359557010","full_name":"WISDEM/WOMBAT","owner":"WISDEM","description":"Windfarm Operations \u0026 Maintenance cost-Benefit Analysis Tool","archived":false,"fork":false,"pushed_at":"2025-04-24T20:25:16.000Z","size":372129,"stargazers_count":22,"open_issues_count":15,"forks_count":12,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-27T13:04:40.364Z","etag":null,"topics":["operations-maintenance","python3","simpy","simulation","wind-energy"],"latest_commit_sha":null,"homepage":"https://wisdem.github.io/WOMBAT/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WISDEM.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"citation.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-04-19T18:17:42.000Z","updated_at":"2025-04-24T20:24:33.000Z","dependencies_parsed_at":"2024-02-07T22:40:58.289Z","dependency_job_id":"9d87cf02-7af8-4374-a0b6-3ab57aae0d23","html_url":"https://github.com/WISDEM/WOMBAT","commit_stats":{"total_commits":233,"total_committers":6,"mean_commits":"38.833333333333336","dds":0.223175965665236,"last_synced_commit":"a5c5fcb363f8a5d78156b24ab683570ace6d0d10"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WISDEM%2FWOMBAT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WISDEM%2FWOMBAT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WISDEM%2FWOMBAT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WISDEM%2FWOMBAT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WISDEM","download_url":"https://codeload.github.com/WISDEM/WOMBAT/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251141857,"owners_count":21542431,"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":["operations-maintenance","python3","simpy","simulation","wind-energy"],"created_at":"2024-08-03T01:00:53.204Z","updated_at":"2025-05-07T11:32:22.260Z","avatar_url":"https://github.com/WISDEM.png","language":"Python","funding_links":[],"categories":["Renewable Energy"],"sub_categories":["Wind Energy"],"readme":"# WOMBAT: Windfarm Operations \u0026 Maintenance cost-Benefit Analysis Tool\n\n[![DOI 10.2172/1894867](https://img.shields.io/badge/DOI-10.2172%2F1894867-brightgreen?link=https://doi.org/10.2172/1894867)](https://www.osti.gov/biblio/1894867)\n[![PyPI version](https://badge.fury.io/py/wombat.svg)](https://badge.fury.io/py/wombat)\n[![codecov](https://codecov.io/gh/WISDEM/WOMBAT/branch/main/graph/badge.svg?token=SK9M10BZXY)](https://codecov.io/gh/WISDEM/WOMBAT)\n[![Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/WISDEM/WOMBAT/main?filepath=examples)\n[![Jupyter Book](https://jupyterbook.org/badge.svg)](https://wisdem.github.io/WOMBAT)\n\n[![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat\u0026labelColor=ef8336)](https://pycqa.github.io/isort/)\n\nThis library provides a tool to simulate the operation and maintenance phase (O\u0026M) of\ndistributed, land-based, and offshore windfarms using a discrete event simultaion\nframework.\n\nWOMBAT is written around the [`SimPy`](https://gitlab.com/team-simpy/simpy) discrete\nevent simulation framework. Additionally, this is supported using a flexible and modular\nobject-oriented code base, which enables the modeling of arbitrarily large (or small)\nwindfarms with as many or as few failure and maintenance tasks that can be encoded.\n\nPlease note that this is still heavily under development, so you may find some functionality\nto be incomplete at the current moment, but rest assured the functionality is expanding.\nWith that said, it would be greatly appreciated for issues or PRs to be submitted for\nany improvements at all, from fixing typos (guaranteed to be a few) to features to\ntesting.\n\nIf you use this library please cite our NREL Technical Report:\n\n```bibtex\n   @techreport{hammond2022wombat,\n      title = {Windfarm Operations and Maintenance cost-Benefit Analysis Tool (WOMBAT)},\n      author = {Hammond, Rob and Cooperman, Aubryn},\n      abstractNote = {This report provides technical documentation and background on the newly-developed Wind Operations and Maintenance cost-Benefit Analysis Tool (WOMBAT) software. WOMBAT is an open-source model that can be used to obtain cost estimates for operations and maintenance of land-based or offshore wind power plants. The software was designed to be flexible and modular to allow for implementation of new strategies and technological innovations for wind plant maintenance. WOMBAT uses a process-based simulation approach to model day-to-day operations, repairs, and weather conditions. High-level outputs from WOMBAT, including time-based availability and annual operating costs, are found to agree with published results from other models.},\n      doi = {10.2172/1894867},\n      url = {https://www.osti.gov/biblio/1894867},\n      place = {United States},\n      year = {2022},\n      month = {10},\n      institution = {National Renewable Energy Lab. (NREL)},\n   }\n```\n\n## WOMBAT in Action\n\nThere a few Jupyter notebooks to get users up and running with WOMBAT in the `examples/`\nfolder, but here are a few highlights:\n\n\u003e **Note**\n\u003e In v0.6 the results will diverge significantly under certain modeling conditions from\n\u003e past versions due to substantial model upgrades on the backend and new/updated\n\u003e features to better specify how repairs are managed.\n\n* Dinwoodie, et al. replication for `wombat` can be found in the\n  `examples folder \u003chttps://github.com/WISDEM/WOMBAT/blob/main/examples/dinwoodie_validation.ipynb\u003e`_.\n* IEA Task 26\n  `validation exercise  \u003chttps://github.com/WISDEM/WOMBAT/blob/main/examples/iea_26_validation.ipynb\u003e`_.\n* Presentations: `slides  \u003chttps://github.com/WISDEM/WOMBAT/blob/main/presentation_material/\u003e`_.\n\n\n## Setup\n\n### Requirements\n\n* Python 3.9 through 3.12\n\n### Environment Setup\n\nDownload the latest version of [Miniconda](https://docs.conda.io/en/latest/miniconda.html)\nfor the appropriate OS. Follow the remaining\n[steps](https://conda.io/projects/conda/en/latest/user-guide/install/index.html#regular-installation)\nfor the appropriate OS version.\n\nUsing conda, create a new virtual environment:\n\n```console\nconda create -n \u003cenvironment_name\u003e python=3.11\nconda activate \u003cenvironment_name\u003e\nconda install -c anaconda pip\n\n# activate the environment\nconda activate \u003cenvironment_name\u003e\n\n# to deactivate\nconda deactivate\n```\n\n### Installation\n\nOnce in your desired environment, WOMBAT can be installed from PyPI via `pip install`\nor from source.\n\n#### Pip\n\nThis option is best for those working with the latest release, or including WOMBAT as\na tool in a workflow without the desire to modify the source code.\n\n```console\npip install wombat\n```\n\n#### From Source\n\nThis option is ideal for users that wish to work with the examples, modify the source\ncode, and/or contribute back to the project.\n\nInstall it directly into an activated virtual environment:\n\n```console\ngit clone https://github.com/WISDEM/WOMBAT.git\ncd wombat\npython setup.py install\n\n# Alternatively:\npip install .\n```\n\n#### Usage\n\nAfter installation, the package can imported:\n\n```console\npython\nimport wombat\nwombat.__version__\n```\n\nFor further usage, please see the documentation site at https://wisdem.github.io/WOMBAT.\n\n### Requirements for Contributing to WOMBAT\n\n#### Code Contributions\n\nCode contributors should note that there is both an additional dependency suite for\nrunning the tests and enabling the pre-commit workflow to automatically standardize the\ncore code formatting principles. In short, the following steps should be taken, but be\nsure to read the\n[contributor's guide](https://wisdem.github.io/WOMBAT/contributing.html)\n\n```console\ngit clone https://github.com/WISDEM/WOMBAT.git\ncd wombat\n\n# Install the additional dependencies for running the tests and automatic code formatting\npip install -e '.[dev]'\n\n# Enable the pre-commit workflow for automatic code formatting\npre-commit install\n\n# ... contributions and commits ...\n\n# Run the tests and ensure they all pass\npytest tests\n```\n\nBasic pre-commit issues that users might encounter and their remedies:\n\n* For any failed run, changes may have been either automatically applied or require\n  further edits from the contributor. In either case, after changes have been made,\n  contributors will have to rerun `git add \u003cthe changed files\u003e` and\n  `git commit -m \u003cthe commit message\u003e` to restart the pre-commit workflow with the\n  applied changes. Once all checks pass, the commit is safe to be pushed.\n* `isort`, `black`, or simple file checks failed, but made changes\n  * rerun the `add` and `commit` processes as needed until the changes satisfy the checks\n* `ruff` failed:\n  * Address the errors and rerun the `add` and `commit` processes\n* `mypy` has type errors that seem incorrect\n  * Double check the typing is in fact as correct as it seems it should be and rerun the\n  `add` and `commit` processes\n  * If `mypy` simply seems confused with seemingly correct types, the following statement\n  can be added above the `mypy` error:\n  `assert isinstance(\u003cvariable of concern\u003e, \u003cthe type you think mypy should be registering\u003e)`\n  * If that's still not working, but you are definitely sure the types are correct,\n  simply add a `# type ignore` comment at the end of the line. Sometimes `mypy` struggles\n  with complex scenarios, or especially with certain `attrs` conventions.\n\n#### Documentation Contributions\n\n```console\ngit clone https://github.com/WISDEM/WOMBAT.git\ncd wombat\npip install -e '.[docs]'\n```\n\nBuild the site\n\n\u003e **Note**\n\u003e You may want to change the \"execute_notebooks\" parameter in the `docs/_config.yaml`\n\u003e file to \"off\" unless you're updating the coded examples, or they will be run every\n\u003e time you build the site.\n\n```console\njupyter-book build docs\n```\n\nView the results: `docs/_build/html/index.html`\n\n#### Code and Documentation Contributions\n\n```console\ngit clone https://github.com/WISDEM/WOMBAT.git\ncd wombat\npip install -e '.[all]'\n```\n\n### Dependencies\n\nStandard dependencies:\n\n* attrs\u003e=21\n* numpy\u003e=1.21\n* scipy\u003e=1.8\n* pandas\u003e=2\n* polars\u003e=0.17\n* pyarrow\u003e=10\n* jupyterlab\u003e=3\n* simpy\u003e=4.0.1\n* pyyaml\u003e=6\n* geopy\u003e=2.3\n* networkx\u003e=2.7\n* matplotlib\u003e=3.3\n* types-attrs\u003e=19\n* types-typed-ast\u003e=1.5\n* types-PyYAML\u003e=6\n* types-python-dateutil\u003e=2.8\n\nOptional \"dev\" dependencies:\n\n* pre-commit\u003e=2.20\n* isort\u003e=5.10\n* pytest\u003e=7\n* pytest-cov\u003e=4\n* mypy==0.991\n* ruff\u003e=0.2\n* pyupgrade\n\nOptional \"docs\" dependencies:\n\n* jupyter-book\u003e=0.15\n* myst-nb\u003e=0.16\n* myst-parser\u003e=0.17\n* linkify-it-py\u003e=2\n* sphinx-autodoc-typehints\n* sphinxcontrib-autoyaml\n* sphinxcontrib-bibtex\u003e=2.4\n* sphinxcontrib-spelling\u003e=7\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWISDEM%2FWOMBAT","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWISDEM%2FWOMBAT","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWISDEM%2FWOMBAT/lists"}