{"id":19945,"name":"POMATO","description":"An easy to use tool for the comprehensive analysis of the modern electricity market.","url":"https://github.com/richard-weinhold/pomato","last_synced_at":"2026-04-07T14:30:29.358Z","repository":{"id":37662272,"uuid":"263364296","full_name":"richard-weinhold/pomato","owner":"richard-weinhold","description":"Power Market Tool for the comprehensive analyses of modern electricity markets (Python+Julia)","archived":false,"fork":false,"pushed_at":"2025-08-12T11:48:03.000Z","size":96428,"stargazers_count":89,"open_issues_count":6,"forks_count":21,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-12-14T18:07:27.140Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richard-weinhold.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2020-05-12T14:42:17.000Z","updated_at":"2025-11-03T04:43:04.000Z","dependencies_parsed_at":"2025-08-26T00:35:51.658Z","dependency_job_id":"a41cb777-690c-4be1-9ad0-672af30581e4","html_url":"https://github.com/richard-weinhold/pomato","commit_stats":{"total_commits":462,"total_committers":4,"mean_commits":115.5,"dds":"0.023809523809523836","last_synced_commit":"d2b614f526e67e072a48084be60d06a1e39be78e"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/richard-weinhold/pomato","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richard-weinhold","download_url":"https://codeload.github.com/richard-weinhold/pomato/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27779856,"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","status":"online","status_checked_at":"2025-12-17T02:00:08.291Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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"}},"owner":{"login":"richard-weinhold","name":null,"uuid":"35365656","kind":"user","description":"","email":"","website":"pomato.io","location":"Berlin","twitter":null,"company":"TU Berlin","icon_url":"https://avatars.githubusercontent.com/u/35365656?v=4","repositories_count":9,"last_synced_at":"2024-06-11T15:58:22.251Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/richard-weinhold","funding_links":[],"total_stars":85,"followers":25,"following":3,"created_at":"2022-11-15T17:38:54.362Z","updated_at":"2024-06-11T15:58:26.593Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richard-weinhold","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richard-weinhold/repositories"},"packages":[],"commits":{"id":1254004,"full_name":"richard-weinhold/pomato","default_branch":"main","total_commits":475,"total_committers":4,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":118.75,"dds":0.023157894736842155,"past_year_total_commits":13,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":13.0,"past_year_dds":0.0,"last_synced_at":"2025-12-31T00:38:32.059Z","last_synced_commit":"3c2c80f7dbdb91683d7c5d9dbfabc63d49adfa27","created_at":"2023-03-27T10:50:06.106Z","updated_at":"2025-12-31T00:38:19.853Z","committers":[{"name":"riw","email":"riw@wip.tu-berlin.de","login":"richard-weinhold","count":464},{"name":"Robert Mieth","email":"robert.mieth@ieee.org","login":"mieth-robert","count":9},{"name":"Florian Maurer","email":"maurer@fh-aachen.de","login":"maurerle","count":1},{"name":"tmar","email":"tmar@future-demand.com","login":null,"count":1}],"past_year_committers":[{"name":"richard-weinhold","email":"35365656+richard-weinhold","login":"richard-weinhold","count":13}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-12-31T00:00:56.974Z","repositories_count":6146605,"commits_count":931092363,"contributors_count":36236558,"owners_count":1130999,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"richard-weinhold/pomato","html_url":"https://github.com/richard-weinhold/pomato","last_synced_at":"2025-09-01T03:33:23.504Z","status":"error","issues_count":6,"pull_requests_count":2,"avg_time_to_close_issue":2468017.0,"avg_time_to_close_pull_request":21703865.5,"issues_closed_count":1,"pull_requests_closed_count":2,"pull_request_authors_count":2,"issue_authors_count":6,"avg_comments_per_issue":3.5,"avg_comments_per_pull_request":1.0,"merged_pull_requests_count":1,"bot_issues_count":0,"bot_pull_requests_count":1,"past_year_issues_count":2,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":2468017.0,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":2,"past_year_avg_comments_per_issue":0.5,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:58:54.409Z","updated_at":"2025-09-02T21:41:49.255Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/richard-weinhold%2Fpomato/issues","issue_labels_count":{},"pull_request_labels_count":{"dependencies":1},"issue_author_associations_count":{"NONE":7},"pull_request_author_associations_count":{"NONE":1,"CONTRIBUTOR":1},"issue_authors":{"um488":2,"35604":1,"Simplified-Mind":1,"paul-rupf":1,"Tamysam":1,"Mikalls":1},"pull_request_authors":{"maurerle":1,"dependabot[bot]":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-12-31T00:00:36.777Z","repositories_count":12502245,"issues_count":35675631,"pull_requests_count":117146314,"authors_count":11079196,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":2},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{"um488":2},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{"IssuesEvent":6,"WatchEvent":10,"IssueCommentEvent":2,"PushEvent":7,"ForkEvent":2},"last_year":{"IssuesEvent":3,"WatchEvent":6,"IssueCommentEvent":1,"PushEvent":7,"ForkEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-09-09T02:33:04.962Z","updated_at":"2022-09-09T02:33:04.962Z","repository_link":"https://github.com/richard-weinhold/pomato/blob/main/setup.py","dependencies":[{"id":4252640412,"package_name":"alabaster","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640413,"package_name":"numpydoc","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640414,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640415,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640416,"package_name":"xlrd","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640417,"package_name":"openpyxl","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640418,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640419,"package_name":"pathlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640420,"package_name":"psutil","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640421,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640422,"package_name":"plotly","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640423,"package_name":"progress","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640424,"package_name":"geojson","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640425,"package_name":"shapely","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640426,"package_name":"logaugment","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640427,"package_name":"kaleido","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640428,"package_name":"dash","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640429,"package_name":"dash_bootstrap_components","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640430,"package_name":"dash_daq","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640431,"package_name":"pycddlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640432,"package_name":"requests","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":4252640433,"package_name":"pypoman","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pomato_testing.yml","sha":null,"kind":"manifest","created_at":"2025-07-21T07:41:13.165Z","updated_at":"2025-07-21T07:41:13.165Z","repository_link":"https://github.com/richard-weinhold/pomato/blob/main/.github/workflows/pomato_testing.yml","dependencies":[{"id":24248695183,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":24248695184,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":24248695185,"package_name":"julia-actions/setup-julia","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":24248695186,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/python-package.yml","sha":null,"kind":"manifest","created_at":"2025-07-21T07:41:13.221Z","updated_at":"2025-07-21T07:41:13.221Z","repository_link":"https://github.com/richard-weinhold/pomato/blob/main/.github/workflows/python-package.yml","dependencies":[{"id":24248695188,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":24248695189,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":24248695190,"package_name":"julia-actions/setup-julia","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":24248695191,"package_name":"codecov/codecov-action","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2025-07-21T07:41:13.278Z","updated_at":"2025-07-21T07:41:13.278Z","repository_link":"https://github.com/richard-weinhold/pomato/blob/main/docs/requirements.txt","dependencies":[]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2025-07-21T07:41:13.328Z","updated_at":"2025-07-21T07:41:13.328Z","repository_link":"https://github.com/richard-weinhold/pomato/blob/main/requirements.txt","dependencies":[]}],"score":5.940171252720432,"created_at":"2023-09-11T14:52:08.371Z","updated_at":"2026-04-07T14:30:29.361Z","avatar_url":"https://github.com/richard-weinhold.png","language":"Python","category":"Energy Systems","sub_category":"Energy Markets","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"\u003cimg  height=\"24\" src=\"https://raw.githubusercontent.com/richard-weinhold/pomato/main/docs/_static/graphics/pomato_logo_small.png\"\u003e POMATO - Power Market Tool \u003cimg  height=\"24\" src=\"https://raw.githubusercontent.com/richard-weinhold/pomato/main/docs/_static/graphics/pomato_logo_small.png\"\u003e\n=========================================================================================================================================================\n\nMain Branch: [![Python package](https://github.com/richard-weinhold/pomato/actions/workflows/pomato_testing.yml/badge.svg?branch=main)](https://github.com/richard-weinhold/pomato/actions/workflows/pomato_testing.yml) [![codecov](https://codecov.io/gh/richard-weinhold/pomato/branch/main/graph/badge.svg?token=1K2PHOjJmC)](https://codecov.io/gh/richard-weinhold/pomato)\n\n\nConstruction Branch: [![Python package](https://github.com/richard-weinhold/pomato/actions/workflows/pomato_testing.yml/badge.svg?branch=construction)](https://github.com/richard-weinhold/pomato/actions/workflows/pomato_testing.yml) [![codecov](https://codecov.io/gh/richard-weinhold/pomato/branch/construction/graph/badge.svg?token=1K2PHOjJmC)](https://codecov.io/gh/richard-weinhold/pomato)\n\n\nDocumentation Status: [![Documentation Status](https://readthedocs.org/projects/pomato/badge/?version=latest)](https://pomato.readthedocs.io/en/latest/?badge=latest)\n\nOverview\n--------\n\nPOMATO stands for (POwer MArket TOol) and is an easy to use tool for the comprehensive\nanalysis of the modern electricity market. It comprises the necessary power\nengineering framework to account for power flow physics, thermal transport\nconstraints and security policies of the underlying transmission\ninfrastructure, depending on the requirements defined by the user.\nPOMATO was specifically designed to realistically model Flow-Based\nMarket-Coupling (FBMC) and is therefore equipped with a fast security\nconstrained optimal power flow algorithm and allows zonal market clearing\nwith endogenously generated flow-based parameters, and redispatch.\n\nDocumentation\n-------------\n\nComprehensive documentation is available at [pomato.readthedocs.io](https://pomato.readthedocs.io/).\n\nInstallation\n------------\n\nPOMATO is written in python and julia. Python takes care of the data processing\nand julia runs the economic dispatch and N-1 redundancy removal algorithm. \n\nThe recommended way to install POMATO with python and pip:\n\n  - Install [python](https://www.python.org/downloads/) for your operating system. On linux\n    based operating systems python is often already installed and available under the python3\n    command. For Windows install python into a folder of your choice. POMATO is written and tested\n    in python 3.10. \n  \n  - Install [julia](https://julialang.org/downloads/) for your operating system. POMATO is\n    written and tested with 1.10. \n\n  - Add *python* and *julia* to the system Path, this allows you to start  *python* and *julia*\n    directly for the command line without typing out the full path of the installation. PLattform\n    specific instructions on how to do this are part of the [julia installation\n    instructions](https://julialang.org/downloads/platform/) and work analogous for the python .  \n  \n  - Install POMATO through *pip* in python. It is recommended to create a virtual environment and\n    install pomato into it, but not necessary:\n        \n        python -m venv pomato\n        ./pomato/Scripts/activate\n        pip install git+https://github.com/richard-weinhold/pomato.git\n\n\nThis will not only clone the master branch of this repository into the local python environment, but\nalso pull the master branch of the MarketModel and RedundancyRemoval julia packages which are\nrequired to run POMATO. This process can take a few minutes to complete.\n\nAfter this is completed pomato can be imported in python:\n\n    from pomato import POMATO\n\nSee the [POMATO Documentation](https://pomato.readthedocs.io/en/latest/installation.html) for\nfurther information on the installation process. \n\nExamples\n--------\nThis release includes two examples in the *examples* folder. Including the contents of this folder\ninto a pomato working directory will allow their execution:\n\n  - The IEEE 118 bus network, which contains a singular timestep. The data is available under \n    open license at [https://power-grid-lib.github.io/](https://power-grid-lib.github.io/) and re-hosted in this repository.\n\n        $ python /run_pomato_ieee.py\n\n  - The DE case study, based on data from openly available data sources. The file can be run via\n\n        $ python /run_pomato_de.py\n\nSee more in depth descriptions of this two case studies along with a FBMC and chance constrained\nexamples, part of the [POMATO\nDocumentation](https://pomato.readthedocs.io/en/latest/running_pomato.html).\n\nThe *examples* folder also contains the two examples as Jupyter notebooks. Another possibility to\naccess the functionality of POMATO with an online REPL/Console when running POMATO inside a IDE with\nan interactive IPython Console (e.g. Spyder) to access POMATO objects and variables.\n\nRelease Status\n--------------\n\nPOMATO was part of my PhD that has concluded in 2021. The dissertation is available from\n[TU-Berlin](https://depositonce.tu-berlin.de/items/d3b3a941-8c35-41b5-b404-f75034f971be) and the\nslides of the defence here in this repository\n[Link](https://github.com/richard-weinhold/pomato/blob/8f2da62856b84fa6b3132683b452e690b9cc4167/docs/_static/files/pomato_defence_plain_final.pdf). \n\nThis means the model is no longer actively developed, although I try to have an eye on things. So\nplease feel free to contact me, but also know that POMATO is now a hobby that exists beside work. \n\nI have tried to make everything robust by including a documentation and testing, but I am not a\nsoftware engineer, thus the \"program\" is not written with robustness in mind and our experience is\nlimited when it comes to common best practices. Expect errors, bug, funky behavior and code\nstructures from the minds of two engineering economists.  \n\nRelated Publications\n--------------------\n\n- [Weinhold and Mieth (2023), Uncertainty-Aware Capacity Allocation in Flow-Based Market\n  Coupling](https://ieeexplore.ieee.org/abstract/document/10094020)\n- [Weinhold (2022), Dissertation, Open-source modeling of flow based market\n  coupling](https://depositonce.tu-berlin.de/items/d3b3a941-8c35-41b5-b404-f75034f971be) (Dissertation - Available from TU - Berlin). \n- [Weinhold (2021), Dissertation, Open-source modeling of flow based market\n  coupling](https://github.com/richard-weinhold/pomato/blob/8f2da62856b84fa6b3132683b452e690b9cc4167/docs/_static/files/pomato_defence_plain_final.pdf)\n  (Defence Slides). \n- [Weinhold (2020), Evaluating Policy Implications on the Restrictiveness of Flow-based Market\n  Coupling with High Shares of Intermittent Generation: A Case Study for Central Western\n  Europe](https://arxiv.org/abs/2109.04940)\n- [Weinhold and Mieth (2021), Power Market Tool (POMATO) for the Analysis of Zonal \n   Electricity Markets](https://www.sciencedirect.com/science/article/pii/S2352711021001394)\n- [Weinhold and Mieth (2020), Fast Security-Constrained Optimal Power Flow through \n   Low-Impact and Redundancy Screening](https://ieeexplore.ieee.org/document/9094021)\n- [Schönheit, Weinhold, Dierstein (2020), The impact of different strategies for generation shift\n   keys (GSKs) on  the flow-based market coupling domain: A model-based analysis of Central Western\n   Europe](https://www.sciencedirect.com/science/article/pii/S0306261919317544)\n\n\nPOMATO was also presented as part of the 2021 JuliaCon JuMP-dev train. The talk is available on\n[JuliaCon2021 youtube channel](https://www.youtube.com/watch?v=n0wmYTm6Y64). \n\nAcknowledgments\n---------------\n\nRichard and Robert would like to acknowledge the support of Reiner Lemoine-Foundation, the Danish\nEnergy Agency and Federal Ministry for Economic Affairs and Energy (BMWi). Robert Mieth was funded\nby the Reiner Lemoine-Foundation scholarship. Richard Weinhold was funded by the Danish Energy\nAgency through parts of the project. The development of POMATO and its applications was also funded\nby BMWi in the project “Long-term Planning and Short-term Optimization of the German Electricity\nSystem Within the European Context” (LKD-EU, 03ET4028A) and the project “Modellierung (De-)Zentraler\nEnergiewenden: Wechselwirkungen, Koordination und Lösungsansätze aus systemorientierter Perspektive”\n(MODEZEEN, 03EI1019B).\n\n\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["economic-dispatch-problem","flow-based-market-coupling","optimal-power-flow","transmission-system"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/19945","html_url":"https://ost.ecosyste.ms/projects/19945"}