{"id":24962,"name":"EPyT","description":"A Common programming framework for research and development in the growing field of smart water networks.","url":"https://github.com/OpenWaterAnalytics/EPyT","last_synced_at":"2026-04-21T21:30:36.463Z","repository":{"id":39914144,"uuid":"497006956","full_name":"OpenWaterAnalytics/EPyT","owner":"OpenWaterAnalytics","description":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations","archived":false,"fork":false,"pushed_at":"2026-02-06T06:26:55.000Z","size":27888,"stargazers_count":69,"open_issues_count":4,"forks_count":36,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2026-02-07T17:50:33.691Z","etag":null,"topics":["epanet","epanet-matlab-toolkit","epanet-python-toolkit","network","python","simulation","water"],"latest_commit_sha":null,"homepage":"https://epanet-python-toolkit-epyt.readthedocs.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenWaterAnalytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-27T13:27:08.000Z","updated_at":"2026-02-06T06:26:59.000Z","dependencies_parsed_at":"2023-02-18T17:30:52.464Z","dependency_job_id":"ad53110a-4bbf-4be4-a7e2-8e3670823d36","html_url":"https://github.com/OpenWaterAnalytics/EPyT","commit_stats":{"total_commits":499,"total_committers":6,"mean_commits":83.16666666666667,"dds":0.5230460921843687,"last_synced_commit":"03c825c074409a0afe863a28beeea44b6503a9b9"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29295687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T09:11:24.369Z","status":"ssl_error","status_checked_at":"2026-02-10T09:10:47.789Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"OpenWaterAnalytics","name":"Open Water Analytics","uuid":"2392819","kind":"organization","description":null,"email":null,"website":"http://wateranalytics.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2392819?v=4","repositories_count":22,"last_synced_at":"2024-03-26T06:56:35.196Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/OpenWaterAnalytics","funding_links":[],"total_stars":615,"followers":93,"following":0,"created_at":"2022-11-03T08:29:18.396Z","updated_at":"2024-03-26T06:56:40.064Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics/repositories"},"packages":[{"id":11733443,"name":"github.com/openwateranalytics/epyt","ecosystem":"go","description":null,"homepage":null,"licenses":"eupl-1.2","normalized_licenses":["EUPL-1.2"],"repository_url":"https://github.com/openwateranalytics/epyt","keywords_array":[],"namespace":null,"versions_count":15,"first_release_published_at":"2023-05-31T12:21:27.000Z","latest_release_published_at":"2025-05-09T22:58:30.000Z","latest_release_number":"v1.2.2","last_synced_at":"2026-02-02T03:42:32.369Z","created_at":"2025-06-05T11:16:07.771Z","updated_at":"2026-02-02T03:42:32.369Z","registry_url":"https://pkg.go.dev/github.com/openwateranalytics/epyt","install_command":"go get github.com/openwateranalytics/epyt","documentation_url":"https://pkg.go.dev/github.com/openwateranalytics/epyt#section-documentation","metadata":{},"repo_metadata":{"id":39914144,"uuid":"497006956","full_name":"OpenWaterAnalytics/EPyT","owner":"OpenWaterAnalytics","description":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations","archived":false,"fork":false,"pushed_at":"2025-09-23T10:18:02.000Z","size":26373,"stargazers_count":66,"open_issues_count":4,"forks_count":34,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2025-11-03T11:01:58.849Z","etag":null,"topics":["epanet","epanet-matlab-toolkit","epanet-python-toolkit","network","python","simulation","water"],"latest_commit_sha":null,"homepage":"https://epanet-python-toolkit-epyt.readthedocs.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenWaterAnalytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-27T13:27:08.000Z","updated_at":"2025-10-27T15:49:14.000Z","dependencies_parsed_at":"2023-02-18T17:30:52.464Z","dependency_job_id":"ad53110a-4bbf-4be4-a7e2-8e3670823d36","html_url":"https://github.com/OpenWaterAnalytics/EPyT","commit_stats":{"total_commits":499,"total_committers":6,"mean_commits":83.16666666666667,"dds":0.5230460921843687,"last_synced_commit":"03c825c074409a0afe863a28beeea44b6503a9b9"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282445597,"owners_count":26670239,"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-11-03T02:00:05.676Z","response_time":108,"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_record":{"login":"OpenWaterAnalytics","name":"Open Water Analytics","uuid":"2392819","kind":"organization","description":null,"email":null,"website":"http://wateranalytics.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2392819?v=4","repositories_count":22,"last_synced_at":"2024-03-26T06:56:35.196Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/OpenWaterAnalytics","funding_links":[],"total_stars":615,"followers":93,"following":0,"created_at":"2022-11-03T08:29:18.396Z","updated_at":"2024-03-26T06:56:40.064Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics/repositories"},"tags":[{"name":"v1.2.2","sha":"7ad1e1e77421e8f89588d3d63f228b7e47a86c6f","kind":"commit","published_at":"2025-05-09T22:58:30.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.2.2","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.2.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.2.2/manifests"},{"name":"v1.2.1","sha":"d7b11e9bed88f6371e06f52832e6615c46e90f19","kind":"commit","published_at":"2025-01-09T06:58:50.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.2.1","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.2.1/manifests"},{"name":"v1.2.0","sha":"03c825c074409a0afe863a28beeea44b6503a9b9","kind":"commit","published_at":"2024-08-01T19:08:54.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.2.0","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.2.0/manifests"},{"name":"v1.1.9","sha":"aabbc7ed5cd54bbd4ffafcb60a09db067ad4d2f6","kind":"commit","published_at":"2024-06-24T09:36:07.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.1.9","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.1.9","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.1.9","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.9/manifests"},{"name":"v1.1.6","sha":"4e152fcc138c0e8a11bac02261386a4671de9a2c","kind":"commit","published_at":"2024-05-11T10:37:50.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.1.6","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.1.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.1.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.6/manifests"},{"name":"v1.1.3","sha":"8382653746b92db0852bd4639c27778651fadb4b","kind":"commit","published_at":"2024-05-01T07:15:49.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.1.3","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.3/manifests"},{"name":"v1.1.2","sha":"4872eff732aad1f389dc2e316e4aec116a931696","kind":"commit","published_at":"2024-04-21T19:26:32.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.1.2","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"e9f79551c7d87d4d49ae04d114b54fd6c6a4e6de","kind":"commit","published_at":"2024-04-19T23:26:54.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.1.1","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.1.1/manifests"},{"name":"v1.0.9-beta.6","sha":"85d0946948d2192fb8fc119ce7b1d9be3ba7b74d","kind":"commit","published_at":"2024-04-17T15:09:58.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.9-beta.6","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.9-beta.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.0.9-beta.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.6/manifests"},{"name":"v1.0.9-beta.4","sha":"4f1731b3aea5efce2260ea7b65ba448684dfae43","kind":"commit","published_at":"2024-04-16T20:43:50.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.9-beta.4","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.9-beta.4","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.0.9-beta.4","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.4/manifests"},{"name":"v1.0.9-beta.2","sha":"3c961f3e8d1d2534158eabf85049bbf841ef0ed6","kind":"commit","published_at":"2024-03-19T17:57:45.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.9-beta.2","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.9-beta.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.0.9-beta.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.2/manifests"},{"name":"v1.0.8","sha":"6f584d946f183b385277fe0aa06590365e1ba700","kind":"commit","published_at":"2023-11-29T19:04:41.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.8","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.0.8","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.8/manifests"},{"name":"v1.0.7","sha":"aeac686134d00cb1167c3c69e08c337054125577","kind":"commit","published_at":"2023-08-23T17:43:37.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.7","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.0.7","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.7/manifests"},{"name":"v1.0.6","sha":"83e0cbd8cc4af2d0d24038056384e0142b237910","kind":"commit","published_at":"2023-06-24T07:14:50.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.6","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.0.6","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.6/manifests"},{"name":"v1.0.5","sha":"b1891e2aba5e4b0b4e1d8757a9cefc975b7faf73","kind":"commit","published_at":"2023-05-31T12:21:27.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.5","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT@v1.0.5","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.5/manifests"}]},"repo_metadata_updated_at":"2025-11-11T15:26:49.749Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.757538697138725,"dependent_packages_count":5.395053785167736,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.57629624115323},"purl":"pkg:golang/github.com/openwateranalytics/epyt","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/openwateranalytics/epyt","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/openwateranalytics/epyt","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/openwateranalytics/epyt/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T18:37:51.838Z","issues_count":32,"pull_requests_count":75,"avg_time_to_close_issue":11164319.055555556,"avg_time_to_close_pull_request":1046263.0428571429,"issues_closed_count":18,"pull_requests_closed_count":70,"pull_request_authors_count":6,"issue_authors_count":13,"avg_comments_per_issue":0.46875,"avg_comments_per_pull_request":0.17333333333333334,"merged_pull_requests_count":68,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":9,"past_year_pull_requests_count":24,"past_year_avg_time_to_close_issue":8540599.666666666,"past_year_avg_time_to_close_pull_request":3504198.95,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":20,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":8,"past_year_avg_comments_per_issue":0.5555555555555556,"past_year_avg_comments_per_pull_request":0.375,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":20,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/issues","maintainers":[{"login":"Mariosmsk","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mariosmsk"},{"login":"MariosDem","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MariosDem"},{"login":"eladsal","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eladsal"}],"active_maintainers":[{"login":"Mariosmsk","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mariosmsk"},{"login":"eladsal","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eladsal"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenwateranalytics%2Fepyt/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenwateranalytics%2Fepyt/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenwateranalytics%2Fepyt/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenwateranalytics%2Fepyt/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fopenwateranalytics%2Fepyt/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2033883,"maintainers_count":0,"namespaces_count":765081,"keywords_count":112149,"github":"golang","metadata":{"funded_packages_count":52901},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-02-05T05:16:36.711Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":4451949,"name":"epyt","ecosystem":"pypi","description":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations. The EPyT is inspired by the EPANET-Matlab Toolkit.","homepage":"https://github.com/OpenWaterAnalytics/EPyT","licenses":"European Union Public Licence 1.2 (EUPL 1.2)","normalized_licenses":["EUPL-1.1"],"repository_url":"https://github.com/OpenWaterAnalytics/EPyT","keywords_array":["epanet","water","networks","hydraulics","quality","simulations","emt","epanet matlab toolkit"],"namespace":null,"versions_count":33,"first_release_published_at":"2022-05-27T14:16:30.000Z","latest_release_published_at":"2025-06-25T10:28:00.000Z","latest_release_number":"1.2.3","last_synced_at":"2026-02-02T03:42:35.043Z","created_at":"2022-05-27T14:21:13.510Z","updated_at":"2026-02-02T03:42:35.043Z","registry_url":"https://pypi.org/project/epyt/","install_command":"pip install epyt --index-url https://pypi.org/simple","documentation_url":"https://epyt.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9"],"normalized_name":"epyt","project_status":null},"repo_metadata":{"id":39914144,"uuid":"497006956","full_name":"OpenWaterAnalytics/EPyT","owner":"OpenWaterAnalytics","description":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations","archived":false,"fork":false,"pushed_at":"2024-08-03T13:10:51.000Z","size":26391,"stargazers_count":38,"open_issues_count":6,"forks_count":26,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2024-10-29T20:34:59.407Z","etag":null,"topics":["epanet","epanet-matlab-toolkit","epanet-python-toolkit","network","python","simulation","water"],"latest_commit_sha":null,"homepage":"https://epanet-python-toolkit-epyt.readthedocs.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenWaterAnalytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-05-27T13:27:08.000Z","updated_at":"2024-09-23T11:20:05.000Z","dependencies_parsed_at":"2023-02-18T17:30:52.464Z","dependency_job_id":"ad53110a-4bbf-4be4-a7e2-8e3670823d36","html_url":"https://github.com/OpenWaterAnalytics/EPyT","commit_stats":{"total_commits":304,"total_committers":6,"mean_commits":"50.666666666666664","dds":0.6085526315789473,"last_synced_commit":"3c961f3e8d1d2534158eabf85049bbf841ef0ed6"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222131011,"owners_count":16936304,"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"},"owner_record":{"login":"OpenWaterAnalytics","name":"Open Water Analytics","uuid":"2392819","kind":"organization","description":null,"email":null,"website":"http://wateranalytics.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2392819?v=4","repositories_count":22,"last_synced_at":"2024-03-26T06:56:35.196Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/OpenWaterAnalytics","funding_links":[],"total_stars":615,"followers":93,"following":0,"created_at":"2022-11-03T08:29:18.396Z","updated_at":"2024-03-26T06:56:40.064Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics/repositories"},"tags":[{"name":"v1.0.9-beta.2","sha":"3c961f3e8d1d2534158eabf85049bbf841ef0ed6","kind":"commit","published_at":"2024-03-19T17:57:45.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.9-beta.2","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.9-beta.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.9-beta.2/manifests"},{"name":"v1.0.8","sha":"6f584d946f183b385277fe0aa06590365e1ba700","kind":"commit","published_at":"2023-11-29T19:04:41.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.8","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.8/manifests"},{"name":"v1.0.7","sha":"aeac686134d00cb1167c3c69e08c337054125577","kind":"commit","published_at":"2023-08-23T17:43:37.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.7","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.7/manifests"},{"name":"v1.0.6","sha":"83e0cbd8cc4af2d0d24038056384e0142b237910","kind":"commit","published_at":"2023-06-24T07:14:50.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.6","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.6/manifests"},{"name":"v1.0.5","sha":"b1891e2aba5e4b0b4e1d8757a9cefc975b7faf73","kind":"commit","published_at":"2023-05-31T12:21:27.000Z","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/v1.0.5","html_url":"https://github.com/OpenWaterAnalytics/EPyT/releases/tag/v1.0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags/v1.0.5/manifests"}]},"repo_metadata_updated_at":"2024-10-29T23:13:08.181Z","dependent_packages_count":3,"downloads":7162,"downloads_period":"last-month","dependent_repos_count":2,"rankings":{"downloads":13.282898225615083,"dependent_repos_count":11.550464889720951,"dependent_packages_count":10.104988627979555,"stargazers_count":12.682946358612037,"forks_count":8.898310739320827,"docker_downloads_count":null,"average":11.30392176824969},"purl":"pkg:pypi/epyt","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/epyt","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/epyt","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/epyt/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T19:31:59.254Z","issues_count":26,"pull_requests_count":44,"avg_time_to_close_issue":3607101.3529411764,"avg_time_to_close_pull_request":58161.88372093024,"issues_closed_count":17,"pull_requests_closed_count":43,"pull_request_authors_count":4,"issue_authors_count":6,"avg_comments_per_issue":0.5,"avg_comments_per_pull_request":0.06818181818181818,"merged_pull_requests_count":40,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":16,"past_year_pull_requests_count":24,"past_year_avg_time_to_close_issue":2778871.5,"past_year_avg_time_to_close_pull_request":94995.47826086957,"past_year_issues_closed_count":8,"past_year_pull_requests_closed_count":23,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.5,"past_year_avg_comments_per_pull_request":0.08333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":20,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/issues","maintainers":[{"login":"Mariosmsk","count":16,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mariosmsk"},{"login":"MariosDem","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MariosDem"}],"active_maintainers":[{"login":"Mariosmsk","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mariosmsk"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/epyt/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/epyt/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/epyt/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/epyt/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/epyt/codemeta","maintainers":[{"uuid":"eldemet","login":"eldemet","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/eldemet/","role":null,"created_at":"2022-11-24T15:18:19.434Z","updated_at":"2022-11-24T15:18:19.434Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/eldemet/packages"},{"uuid":"mariosmsk","login":"mariosmsk","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/mariosmsk/","role":null,"created_at":"2022-11-24T15:18:19.504Z","updated_at":"2022-11-24T15:18:19.504Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mariosmsk/packages"},{"uuid":"MariosDem","login":"MariosDem","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/MariosDem/","role":null,"created_at":"2022-11-24T15:18:19.540Z","updated_at":"2022-11-24T15:18:19.540Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/MariosDem/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":783721,"maintainers_count":329397,"namespaces_count":0,"keywords_count":256281,"github":"pypi","metadata":{"funded_packages_count":52073},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-02-05T06:02:35.125Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},{"id":11733437,"name":"github.com/OpenWaterAnalytics/EPyT","ecosystem":"go","description":null,"homepage":null,"licenses":"eupl-1.2","normalized_licenses":["EUPL-1.2"],"repository_url":"https://github.com/OpenWaterAnalytics/EPyT","keywords_array":[],"namespace":null,"versions_count":15,"first_release_published_at":"2025-06-05T11:17:39.691Z","latest_release_published_at":"2025-05-09T22:58:30.000Z","latest_release_number":"v1.2.2","last_synced_at":"2026-02-02T03:42:39.272Z","created_at":"2025-06-05T11:16:05.031Z","updated_at":"2026-02-02T03:42:39.273Z","registry_url":"https://pkg.go.dev/github.com/OpenWaterAnalytics/EPyT","install_command":"go get github.com/OpenWaterAnalytics/EPyT","documentation_url":"https://pkg.go.dev/github.com/OpenWaterAnalytics/EPyT#section-documentation","metadata":{},"repo_metadata":{"id":39914144,"uuid":"497006956","full_name":"OpenWaterAnalytics/EPyT","owner":"OpenWaterAnalytics","description":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations","archived":false,"fork":false,"pushed_at":"2025-09-23T10:18:02.000Z","size":26373,"stargazers_count":66,"open_issues_count":4,"forks_count":34,"subscribers_count":9,"default_branch":"dev","last_synced_at":"2025-11-03T11:01:58.849Z","etag":null,"topics":["epanet","epanet-matlab-toolkit","epanet-python-toolkit","network","python","simulation","water"],"latest_commit_sha":null,"homepage":"https://epanet-python-toolkit-epyt.readthedocs.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenWaterAnalytics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-27T13:27:08.000Z","updated_at":"2025-10-27T15:49:14.000Z","dependencies_parsed_at":"2023-02-18T17:30:52.464Z","dependency_job_id":"ad53110a-4bbf-4be4-a7e2-8e3670823d36","html_url":"https://github.com/OpenWaterAnalytics/EPyT","commit_stats":{"total_commits":499,"total_committers":6,"mean_commits":83.16666666666667,"dds":0.5230460921843687,"last_synced_commit":"03c825c074409a0afe863a28beeea44b6503a9b9"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/OpenWaterAnalytics/EPyT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","download_url":"https://codeload.github.com/OpenWaterAnalytics/EPyT/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":283517792,"owners_count":26849048,"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-11-09T02:00:05.828Z","response_time":62,"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_record":{"login":"OpenWaterAnalytics","name":"Open Water Analytics","uuid":"2392819","kind":"organization","description":null,"email":null,"website":"http://wateranalytics.org","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/2392819?v=4","repositories_count":22,"last_synced_at":"2024-03-26T06:56:35.196Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/OpenWaterAnalytics","funding_links":[],"total_stars":615,"followers":93,"following":0,"created_at":"2022-11-03T08:29:18.396Z","updated_at":"2024-03-26T06:56:40.064Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenWaterAnalytics/repositories"},"tags":[]},"repo_metadata_updated_at":"2025-11-11T15:26:49.830Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.757538697138725,"dependent_packages_count":5.395053785167736,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.57629624115323},"purl":"pkg:golang/github.com/%21open%21water%21analytics/%21e%21py%21t","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/OpenWaterAnalytics/EPyT","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/OpenWaterAnalytics/EPyT","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/OpenWaterAnalytics/EPyT/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-10-14T18:37:51.838Z","issues_count":32,"pull_requests_count":75,"avg_time_to_close_issue":11164319.055555556,"avg_time_to_close_pull_request":1046263.0428571429,"issues_closed_count":18,"pull_requests_closed_count":70,"pull_request_authors_count":6,"issue_authors_count":13,"avg_comments_per_issue":0.46875,"avg_comments_per_pull_request":0.17333333333333334,"merged_pull_requests_count":68,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":9,"past_year_pull_requests_count":24,"past_year_avg_time_to_close_issue":8540599.666666666,"past_year_avg_time_to_close_pull_request":3504198.95,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":20,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":8,"past_year_avg_comments_per_issue":0.5555555555555556,"past_year_avg_comments_per_pull_request":0.375,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":20,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/issues","maintainers":[{"login":"Mariosmsk","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mariosmsk"},{"login":"MariosDem","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MariosDem"},{"login":"eladsal","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eladsal"}],"active_maintainers":[{"login":"Mariosmsk","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mariosmsk"},{"login":"eladsal","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eladsal"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FOpenWaterAnalytics%2FEPyT/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FOpenWaterAnalytics%2FEPyT/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FOpenWaterAnalytics%2FEPyT/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FOpenWaterAnalytics%2FEPyT/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2FOpenWaterAnalytics%2FEPyT/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2033883,"maintainers_count":0,"namespaces_count":765081,"keywords_count":112149,"github":"golang","metadata":{"funded_packages_count":52901},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-02-05T05:16:36.711Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}}],"commits":{"id":1358444,"full_name":"OpenWaterAnalytics/EPyT","default_branch":"dev","total_commits":731,"total_committers":8,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":91.375,"dds":0.48290013679890564,"past_year_total_commits":72,"past_year_total_committers":6,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":12.0,"past_year_dds":0.45833333333333337,"last_synced_at":"2026-02-05T09:44:52.419Z","last_synced_commit":"05693aa0a40b0d183131f875ef2c3c5e81830f33","created_at":"2023-09-12T12:09:28.467Z","updated_at":"2026-02-05T09:44:03.904Z","committers":[{"name":"Marios S. Kyriakou","email":"mariosmsk@gmail.com","login":"Mariosmsk","count":378},{"name":"ichrys03","email":"79056704+ichrys03","login":"ichrys03","count":256},{"name":"Marios Demetriades","email":"66776265+MariosDem","login":"MariosDem","count":72},{"name":"Demetrios G. Eliades","email":"eldemet@gmail.com","login":"eldemet","count":14},{"name":"André Artelt","email":"aartelt@techfak.de","login":"andreArtelt","count":8},{"name":"froglegseternal","email":"quinngdavid@gmail.com","login":"froglegseternal","count":1},{"name":"Elad Salomons","email":"elad.salomons@xylem.com","login":null,"count":1},{"name":"Angus McBride","email":"git@zog.mozmail.com","login":null,"count":1}],"past_year_committers":[{"name":"Marios S. Kyriakou","email":"mariosmsk@gmail.com","login":"Mariosmsk","count":39},{"name":"ichrys03","email":"79056704+ichrys03","login":"ichrys03","count":29},{"name":"froglegseternal","email":"quinngdavid@gmail.com","login":"froglegseternal","count":1},{"name":"André Artelt","email":"aartelt@techfak.de","login":"andreArtelt","count":1},{"name":"Elad Salomons","email":"elad.salomons@xylem.com","login":null,"count":1},{"name":"Angus McBride","email":"git@zog.mozmail.com","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-02-07T00:00:11.968Z","repositories_count":6168235,"commits_count":929251275,"contributors_count":36100118,"owners_count":1140160,"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":"OpenWaterAnalytics/EPyT","html_url":"https://github.com/OpenWaterAnalytics/EPyT","last_synced_at":"2026-02-03T08:00:36.868Z","status":"active","issues_count":32,"pull_requests_count":76,"avg_time_to_close_issue":11164319.055555556,"avg_time_to_close_pull_request":1081433.9295774647,"issues_closed_count":18,"pull_requests_closed_count":71,"pull_request_authors_count":7,"issue_authors_count":13,"avg_comments_per_issue":0.46875,"avg_comments_per_pull_request":0.17105263157894737,"merged_pull_requests_count":69,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":6,"past_year_pull_requests_count":15,"past_year_avg_time_to_close_issue":8540599.666666666,"past_year_avg_time_to_close_pull_request":1038543.4615384615,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":13,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":5,"past_year_avg_comments_per_issue":0.8333333333333334,"past_year_avg_comments_per_pull_request":0.06666666666666667,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":13,"created_at":"2023-05-15T03:43:51.371Z","updated_at":"2026-02-03T08:00:36.869Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenWaterAnalytics%2FEPyT/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":16,"CONTRIBUTOR":14,"MEMBER":2},"pull_request_author_associations_count":{"CONTRIBUTOR":35,"MEMBER":20,"NONE":13,"COLLABORATOR":8},"issue_authors":{"sdlj2008":7,"ichrys03":7,"andreArtelt":6,"Mariosmsk":2,"hossain93":2,"lldl42":1,"jpesantezsarmiento":1,"hnz92":1,"brendanjosey":1,"FengWinner":1,"pstahlhofen":1,"GalPerelman":1,"prachiwakode":1},"pull_request_authors":{"ichrys03":33,"Mariosmsk":19,"andreArtelt":12,"MariosDem":8,"froglegseternal":2,"angusmcb":1,"eladsal":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-02-05T00:00:25.354Z","repositories_count":13090956,"issues_count":35550515,"pull_requests_count":115324875,"authors_count":11145429,"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":4,"CONTRIBUTOR":2},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":12,"NONE":2,"MEMBER":1},"past_year_issue_authors":{"ichrys03":2,"FengWinner":1,"hnz92":1,"jpesantezsarmiento":1,"pstahlhofen":1},"past_year_pull_request_authors":{"ichrys03":9,"froglegseternal":2,"andreArtelt":2,"angusmcb":1,"eladsal":1},"maintainers":[{"login":"Mariosmsk","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Mariosmsk"},{"login":"MariosDem","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MariosDem"},{"login":"eladsal","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eladsal"}],"active_maintainers":[{"login":"eladsal","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/eladsal"}]},"events":{"total":{"ReleaseEvent":2,"DeleteEvent":4,"PullRequestEvent":23,"ForkEvent":7,"IssuesEvent":15,"WatchEvent":19,"IssueCommentEvent":15,"PushEvent":49,"PullRequestReviewEvent":4,"CreateEvent":3},"last_year":{"ReleaseEvent":1,"DeleteEvent":4,"PullRequestEvent":13,"ForkEvent":7,"IssuesEvent":10,"WatchEvent":16,"IssueCommentEvent":8,"PushEvent":41,"PullRequestReviewEvent":3,"CreateEvent":1}},"keywords":["epanet","epanet-matlab-toolkit","epanet-python-toolkit","network","python","simulation","water"],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/build_tests.yml","sha":null,"kind":"manifest","created_at":"2023-02-18T17:30:52.230Z","updated_at":"2023-02-18T17:30:52.230Z","repository_link":"https://github.com/OpenWaterAnalytics/EPyT/blob/dev/.github/workflows/build_tests.yml","dependencies":[{"id":7766417652,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":7766417653,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/draft-pdf.yml","sha":null,"kind":"manifest","created_at":"2023-02-18T17:30:52.304Z","updated_at":"2023-02-18T17:30:52.304Z","repository_link":"https://github.com/OpenWaterAnalytics/EPyT/blob/dev/.github/workflows/draft-pdf.yml","dependencies":[{"id":7766417656,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7766417657,"package_name":"openjournals/openjournals-draft-action","ecosystem":"actions","requirements":"master","direct":true,"kind":"composite","optional":false},{"id":7766417658,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"docs/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T15:36:23.591Z","updated_at":"2022-08-09T15:36:23.591Z","repository_link":"https://github.com/OpenWaterAnalytics/EPyT/blob/dev/docs/requirements.txt","dependencies":[{"id":920115260,"package_name":"sphinx-copybutton","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":920115261,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":920115262,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":920115263,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-09T15:36:23.865Z","updated_at":"2022-08-09T15:36:23.865Z","repository_link":"https://github.com/OpenWaterAnalytics/EPyT/blob/dev/requirements.txt","dependencies":[{"id":920117850,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":920117851,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":920117852,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-08-09T15:36:24.046Z","updated_at":"2022-08-09T15:36:24.046Z","repository_link":"https://github.com/OpenWaterAnalytics/EPyT/blob/dev/setup.py","dependencies":[{"id":920122017,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":920122021,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":920122023,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":15.247561916421894,"created_at":"2023-09-12T07:39:06.139Z","updated_at":"2026-04-21T21:30:36.468Z","avatar_url":"https://github.com/OpenWaterAnalytics.png","language":"Jupyter Notebook","category":"Natural Resources","sub_category":"Water Supply and Quality","monthly_downloads":7162,"total_dependent_repos":2,"total_dependent_packages":3,"readme":"﻿﻿\u003ca href=\"http://www.kios.ucy.ac.cy\"\u003e\u003cimg src=\"https://www.kios.ucy.ac.cy/wp-content/uploads/2021/07/Logotype-KIOS.svg\" width=\"200\" height=\"100\"/\u003e\u003ca\u003e\n\n[![license](https://img.shields.io/pypi/l/epyt.svg)](https://github.com/KIOS-Research/EPyT/blob/main/LICENSE.md)\n[![pypi](https://img.shields.io/pypi/v/epyt.svg)](https://pypi.org/project/epyt/)\n[![Downloads](https://static.pepy.tech/badge/epyt)](https://pepy.tech/project/epyt)\n[![Downloads](https://static.pepy.tech/badge/epyt/month)](https://pepy.tech/project/epyt)\n[![build](https://github.com/OpenWaterAnalytics/EPyT/actions/workflows/build_tests.yml/badge.svg)](https://github.com/OpenWaterAnalytics/EPyT/actions/workflows/build_tests.yml)\n[![Documentation Status](https://readthedocs.org/projects/epanet-python-toolkit-epyt/badge/?version=latest)](https://epanet-python-toolkit-epyt.readthedocs.io/en/latest/?badge=latest)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.05947/status.svg)](https://doi.org/10.21105/joss.05947)\n\n\n# EPANET Python Toolkit (EPyT)\n\nThe `EPANET-Python Toolkit` is an open-source software, originally developed by the [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/) which operates within the Python environment, for providing a programming interface for the latest version of [EPANET](https://github.com/OpenWaterAnalytics/epanet), a hydraulic and quality modeling software created by the US EPA, with Python, a  high-level technical computing software. The goal of the EPANET Python Toolkit is to serve as a common programming framework for research and development in the growing field of smart water networks.\n\nThe `EPANET-Python Toolkit` features easy to use commands/wrappers for viewing, modifying, simulating and plotting results produced by the EPANET libraries.  \n\nFor support, please use the OWA community forum: https://github.com/orgs/OpenWaterAnalytics/discussions\n\n## Table of Contents\n\n- [EPANET Python Toolkit (EPyT)](#epanet-python-toolkit-epyt)\n- [How to cite](#how-to-cite)\n- [Requirements](#requirements)\n- [How to install](#how-to-install)\n- [How to use the Toolkit](#how-to-use-the-toolkit)\n- [How to fix/report bugs](#how-to-fixreport-bugs)\n- [Licenses](#licenses)\n- [Contributors](#contributors)\n- [Contributing](#contributing)\n- [Recommendation](#recommendation)\n- [List of EPyT Functions](#list-of-epyt-functions)\n- [List of EPANET 2.2 Functions](#list-of-epanet-2012-functions-supported)\n- [List of EPANET 2.3 Functions Supported](#list-of-epanet-23-functions-supported)\n- [List of EPANET MSX Functions API](#list-of-epanet-msx-functions-api)\n\n## How to cite \n\nKyriakou, M. S., Demetriades, M., Vrachimis, S. G., Eliades, D. G., \u0026 Polycarpou, M. M. (2023). EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations. Journal of Open Source Software, 8(92), 5947. https://doi.org/10.21105/joss.05947\n\n```\n@article{Kyriakou2023,\nauthor = {Kyriakou, Marios S. and Demetriades, Marios and Vrachimis, Stelios G. and Eliades, Demetrios G. and Polycarpou, Marios M.},\ndoi = {10.21105/joss.05947},\njournal = {Journal of Open Source Software},\nmonth = dec,\nnumber = {92},\npages = {5947},\ntitle = {{EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations}},\nurl = {https://joss.theoj.org/papers/10.21105/joss.05947},\nvolume = {8},\nyear = {2023}\n}\n```\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## Requirements\n\n* Python \u003e=3.9\n* Windows, OSX or Linux\n* [EPANET 2.2](https://github.com/OpenWaterAnalytics/epanet)\n\nLinux: `sudo cp libepanet2.so /lib/x86_64-linux-gnu/libepanet.so`\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## How to install\n\n**Environments -\u003e base (root) -\u003e open terminal -\u003e pip install epyt**\n\n* PyPI: \u003cb\u003epip install epyt\u003c/b\u003e\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## How to use the Toolkit\n\n**Minimum Example:**\n\n```python\n\u003e\u003e\u003e from epyt import epanet\n\u003e\u003e\u003e \n\u003e\u003e\u003e d = epanet('Net1.inp')\n\u003e\u003e\u003e d.getNodeCount()\n\u003e\u003e\u003e d.getNodeElevations()\n``` \n\n**Minumun Example using custom Library:**\n```python\n\u003e\u003e\u003e from epyt import epanet\n\u003e\u003e\u003e\n\u003e\u003e\u003eepanetlib=os.path.join(os.getcwd(), 'epyt','libraries','win','epanet2.dll')\n\u003e\u003e\u003emsxlib=os.path.join(os.getcwd(), 'epyt','libraries','win','epanetmsx.dll')\n\u003e\u003e\u003ed = epanet(inpname, customlib=epanetlib)\n\u003e\u003e\u003ed.loadMSXFile(msxname, customMSXlib=msxlib)\n``` \n\n**More examples:** \n\n[https://github.com/KIOS-Research/EPYT/tree/main/epyt/examples](https://github.com/KIOS-Research/EPYT/tree/main/epyt/examples#readme)\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## How to fix/report bugs\n\nTo fix a bug `Fork` the `EPyT`, `Edit` the code and make the appropriate change, and then `Pull` it so that we evaluate it. \n\nKeep in mind that some bugs may exist in the `EPANET` libraries, in case you are not receiving the expected results.\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## Licenses\n\n* `EPANET`: Public Domain\n* `EPANET-Python Toolkit (EPyT)`: EUPL\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## Contributors\n\n* Marios Kyriakou, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n* Marios Demetriades, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n* Stelios Vrachimis, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n* Demetrios Eliades, [KIOS Research and Innovation Center of Excellence, University of Cyprus](http://www.kios.ucy.ac.cy/)\n\nThe `EPyT` is based/inspired on the [EPANET-Matlab Toolkit](https://github.com/OpenWaterAnalytics/EPANET-Matlab-Toolkit).\n\n## Contributing\nIf you want to contribute, please check out our [Code of Conduct](https://github.com/KIOS-Research/EPyT/blob/dev/CODE_OF_CONDUCT.md). Everyone is welcome to contribute whether reporting a new [issue](https://github.com/KIOS-Research/EPyT/issues), suggesting a new feature, or writing code. If you want to contribute code, you can create a new fork in the repo to your own account. Make your commits on your dev branch (based on dev) and when you are finished then you can create a [pull request](https://github.com/KIOS-Research/EPyT/pulls) to test the code and discuss your changes.\n\n## Recommendation\n\n* Install Anaconda\u003cbr\u003e\n* Run `EPyT` with [Spyder IDE](https://www.spyder-ide.org/)\n* Run `EPyT` with [PyCharm](https://www.jetbrains.com/pycharm/)\n\n*Settings on Spyder IDE*\n\n* Tools -\u003e Preferrences\n![image](https://user-images.githubusercontent.com/2945956/154067349-3aed266f-3a23-4573-8b93-db0b4f224964.png)\n* View -\u003e Window layouts -\u003e Matlab layout\n* Enable interactive plot on matlibplot\n  : Tools -\u003e Preferences -\u003e IPython console -\u003e Graphics -\u003e Graphics backend -\u003e Backend: Automatic\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## List of EPyT Functions\n\n| Function                            |Description|\n|-------------------------------------|---------------------------|\n| addControls                         | Adds a new simple control |\n| addCurve                            | Adds a new curve appended to the end of the existing curves |\n| addLinkPipe                         | Adds a new pipe |\n| addLinkPipeCV                       | Adds a new control valve pipe |\n| addLinkPump                         | Adds a new pump |\n| addLinkValveFCV                     | Adds a new FCV valve |\n| addLinkValveGPV                     | Adds a new GPV valve |\n| addLinkValvePBV                     | Adds a new PBV valve |\n| addLinkValvePCV                     | Adds a new PCV valve and returns the index of the new PCV valve |\n| addLinkValvePRV                     | Adds a new PRV valve |\n| addLinkValvePSV                     | Adds a new PSV valve |\n| addLinkValveTCV                     | Adds a new TCV valve |\n| addNodeJunction                     | Adds a new junction |\n| addNodeJunctionDemand               | Adds a new demand to a junction given the junction index, base demand, demand time pattern and demand category name |\n| addNodeReservoir                    | Adds a new reservoir |\n| addNodeTank                         | Adds a new tank |\n| addPattern                          | Adds a new time pattern to the network |\n| addRules                            | Adds a new rule-based control to a project |\n| appRotateNetwork                    | Rotates the network by theta degrees counter-clockwise |\n| appShiftNetwork                     | Shifts the network |\n| clearReport                         | Clears the contents of a project's report file |\n| closeHydraulicAnalysis              | Closes the hydraulic analysis system, freeing all allocated memory |\n| closeNetwork                        | Closes down the Toolkit system |\n| closeQualityAnalysis                | Closes the water quality analysis system, freeing all allocated memory |\n| copyReport                          | Copies the current contents of a project's report file to another file |\n| createProject                       | Creates a new epanet projec |\n| deleteAllTemps                      | Delete all temporary files (.inp, .bin) created in networks folder |\n| deleteControls                      | Deletes an existing simple control |\n| deleteCurve                         | Deletes a data curve from a project |\n| deleteLink                          | Deletes a link |\n| deleteNode                          | Deletes nodes |\n| deleteNodeJunctionDemand            | Deletes a demand from a junction given the junction index and demand index.\n| deletePattern                       | Deletes a time pattern from a project |\n| deletePatternsAll                   | Deletes all time patterns from a project |\n| deleteProject                       | Deletes the epanet project |\n| deleteRules                         | Deletes an existing rule-based control given it's index |\n| getAdjacencyMatrix                  | Compute the adjacency matrix (connectivity graph) considering the flows, using mean flow |\n| getAllAttributes                    | Get all attributes of a given Python object |\n| getCMDCODE                          | Retrieves the CMC code |\n| getComputedHydraulicTimeSeries      | Computes hydraulic simulation and retrieves all time-series |\n| getComputedQualityTimeSeries        | Computes Quality simulation and retrieves all or some time-series |\n| getComputedTimeSeries               | Run analysis with binary fil |\n| getConnectivityMatrix               | Retrieve the Connectivity Matrix of the networ |\n| getConsumerDemandDelivered          | Retrieves the delivered consumer demand for a specific node |\n| getConsumerDemandRequested          | Retrieves the requested consumer demand for a specific node |\n| getControlCount                     | Retrieves the number of controls =\u003e will replace getControlRulesCount |\n| getControlRulesCount                | Retrieves the number of controls |\n| getControlState                     | Retrieves the enabled state of a specified control in the EPANET model |\n| getControls                         | Retrieves the parameters of all control statements |\n| getCounts                           | Retrieves the number of network components |\n| getCurveComment                     | Retrieves the comment string of a curve |\n| getCurveCount                       | Retrieves the number of curves |\n| getCurveIndex                       | Retrieves the index of a curve with specific ID |\n| getCurveLengths                     | Retrieves number of points in a curve |\n| getCurveNameID                      | Retrieves the IDs of curves |\n| getCurveType                        | Retrieves the curve-type for all curves |\n| getCurveTypeIndex                   | Retrieves the curve-type index for all curves |\n| getCurveValue                       | Retrieves the X, Y values of points of curves |\n| getCurvesInfo                       | Retrieves all the info of curves |\n| getDemandModel                      | Retrieves the type of demand model in use and its parameters |\n| getENfunctionsImpemented            | Retrieves the epanet functions that have been developed |\n| getError                            | Retrieves the text of the message associated with a particular error or warning code |\n| getFlowUnits                        | Retrieves flow units used to express all flow rates |\n| getLibFunctions                     | Retrieves the functions of DLL |\n| getLinkActualQuality                | Retrieves the current computed link quality (read only) |\n| getLinkBulkReactionCoeff            | Retrieves the value of all link bulk chemical reaction coefficient |\n| getLinkComment                      | Retrieves the comment string assigned to the link object |\n| getLinkCount                        | Retrieves the number of links |\n| getLinkDiameter                     | Retrieves the value of link diameters |\n| getLinkEnergy                       | Retrieves the current computed pump energy usage (read only) |\n| getLinkExpansionProperties          | Retrieves the expansion properties for a specified link (pipe) |\n| getLinkFlows                        | Retrieves the current computed flow rate (read only) |\n| getLinkHeadloss                     | Retrieves the current computed head loss (read only) |\n| getLinkInControl                    | Function to determine wether a link apperas in any simple or rule based control |\n| getLinkIndex                        | Retrieves the indices of all links, or the indices of an ID set of links |\n| getLinkInitialSetting               | Retrieves the value of all link roughness for pipes or initial speed for pumps or initial setting for valves |\n| getLinkInitialStatus                | Retrieves the value of all link initial status |\n| getLinkLeakArea                     | Function to retrieve the leak area for a specified link (pipe) |\n| getLinkLeakageRate                  | Retrieves the leakage rate of a specific pipe (link) at a given point in time |\n| getLinkLength                       | Retrieves the value of link lengths |\n| getLinkMinorLossCoeff               | Retrieves the value of link minor loss coefficients |\n| getLinkNameID                       | Retrieves the ID label(s) of all links, or the IDs of an index set of links |\n| getLinkNodesIndex                   | Retrieves the indexes of the from/to nodes of all links |\n| getLinkPipeCount                    | Retrieves the number of pipes |\n| getLinkPipeIndex                    | Retrieves the pipe indices |\n| getLinkPipeNameID                   | Retrieves the pipe ID |\n| getLinkPumpCount                    | Retrieves the number of pumps |\n| getLinkPumpECost                    | Retrieves the pump average energy price |\n| getLinkPumpECurve                   | Retrieves the pump efficiency v |\n| getLinkPumpEPat                     | Retrieves the pump energy price time pattern index |\n| getLinkPumpEfficiency               | Retrieves the current computed pump efficiency (read only) |\n| getLinkPumpHCurve                   | Retrieves the pump head v |\n| getLinkPumpHeadCurveIndex           | Retrieves the index of a head curve for all pumps |\n| getLinkPumpIndex                    | Retrieves the pump indices |\n| getLinkPumpNameID                   | Retrieves the pump ID |\n| getLinkPumpPatternIndex             | Retrieves the pump speed time pattern index |\n| getLinkPumpPatternNameID            | Retrieves pump pattern name ID |\n| getLinkPumpPower                    | Retrieves the pump constant power rating (read only) |\n| getLinkPumpState                    | Retrieves the current computed pump state (read only) (see @ref EN_PumpStateType) |\n| getLinkPumpSwitches                 | Retrieves the number of pump switches |\n| getLinkPumpType                     | Retrieves the type of a pump |\n| getLinkPumpTypeCode                 | Retrieves the code of type of a pump |\n| getLinkQuality                      | Retrieves the value of link quality |\n| getLinkResultIndex                  | Retrieves the order in which a link's results were saved to an output file |\n| getLinkRoughnessCoeff               | Retrieves the value of link roughness coefficient |\n| getLinkSettings                     | Retrieves the current computed value of all link roughness for pipes or actual speed for pumps or actual setting for valves |\n| getLinkStatus                       | Retrieves the current link status (see @ref EN_LinkStatusType) (0 = closed, 1 = open) |\n| getLinkType                         | Retrieves the link-type code for all links |\n| getLinkTypeIndex                    | Retrieves the link-type code for all links |\n| getLinkValues                       | Retrieves property values for all links within the EPANET model during a hydraulic analysis |\n| getLinkValveCount                   | Retrieves the number of valves |\n| getLinkValveCurveGPV                | Retrieves the valve curve for a specified general purpose valve (GPV) |\n| getLinkValveCurvePCV                | Retrieves the valve curve for a specified pressure control valve (PCV) |\n| getLinkValveIndex                   | Retrieves the valve indices |\n| getLinkValveNameID                  | Retrieves the valve ID |\n| getLinkVelocity                     | Retrieves the current computed flow velocity (read only) |\n| getLinkVertices                     | Retrieves the coordinate's of a vertex point assigned to a link |\n| getLinkVerticesCount                | Retrieves the number of internal vertex points assigned to a link |\n| getLinkWallReactionCoeff            | Retrieves the value of all pipe wall chemical reaction coefficient |\n| getLinksInfo                        | Retrieves all link info |\n| getNetworksDatabase                 | Retrieves all EPANET Input Files from EPyT database |\n| getNodeActualDemand                 | Retrieves the computed value of all node actual demands |\n| getNodeActualDemandSensingNodes     | Retrieves the computed demand values at some sensing nodes |\n| getNodeActualQuality                | Retrieves the computed values of the actual quality for all nodes |\n| getNodeActualQualitySensingNodes    | Retrieves the computed quality values at some sensing node |\n| getNodeBaseDemands                  | Retrieves the value of all node base demands |\n| getNodeComment                      | Retrieves the comment string assigned to the node object |\n| getNodeCount                        | Retrieves the number of nodes |\n| getNodeDemandCategoriesNumber       | Retrieves the value of all node base demands categorie number |\n| getNodeDemandDeficit                | Retrieves the amount that full demand is reduced under PDA |\n| getNodeDemandPatternIndex           | Retrieves the value of all node base demands pattern index |\n| getNodeDemandPatternNameID          | Retrieves the value of all node base demands pattern name ID |\n| getNodeElevations                   | Retrieves the value of all node elevations |\n| getNodeEmitterCoeff                 | Retrieves the value of all node emmitter coefficients |\n| getNodeEmitterFlow                  | Retrieves node emmiter flow |\n| getNodeHydraulicHead                | Retrieves the computed values of all node hydraulic heads |\n| getNodeInControl                    | Function to determine wether a node apperas in any simple or rule based control |\n| getNodeIndex                        | Retrieves the indices of all nodes or some nodes with a specified ID |\n| getNodeInitialQuality               | Retrieves the value of all node initial quality |\n| getNodeJunctionCount                | Retrieves the number of junction nodes |\n| getNodeJunctionDemandIndex          | Retrieves the demand index of the junctions |\n| getNodeJunctionDemandName           | Gets the name of a node's demand category |\n| getNodeJunctionIndex                | Retrieves the indices of junctions |\n| getNodeJunctionNameID               | Retrieves the junction ID label |\n| getNodeLeakageFlow                  | Retrieves the leakage flow for a specific node |\n| getNodeMassFlowRate                 | Retrieves the computed mass flow rates per minute of chemical sources for all nodes |\n| getNodeNameID                       | Retrieves the ID label of all nodes or some nodes with a specified index |\n| getNodePatternIndex                 | Retrieves the value of all node demand pattern indices |\n| getNodePressure                     | Retrieves the computed values of all node pressures |\n| getNodeReservoirCount               | Retrieves the number of Reservoirs |\n| getNodeReservoirIndex               | Retrieves the indices of reservoirs |\n| getNodeReservoirNameID              | Retrieves the reservoir ID label |\n| getNodeResultIndex                  | Retrieves the order in which a node's results were saved to an output file |\n| getNodeSourcePatternIndex           | Retrieves the value of all node source pattern index |\n| getNodeSourceQuality                | Retrieves the value of all node source quality |\n| getNodeSourceType                   | Retrieves the value of all node source type |\n| getNodeSourceTypeIndex              | Retrieves the value of all node source type index |\n| getNodeTankBulkReactionCoeff        | Retrieves the tank bulk rate coefficient |\n| getNodeTankCanOverFlow              | Retrieves the tank can overflow (= 1) or not (= 0) |\n| getNodeTankCount                    | Retrieves the number of Tanks |\n| getNodeTankData                     | Retrieves a group of properties for a tank |\n| getNodeTankDiameter                 | Retrieves the tank diameters |\n| getNodeTankIndex                    | Retrieves the tank indices |\n| getNodeTankInitialLevel             | Retrieves the value of all tank initial water levels |\n| getNodeTankInitialWaterVolume       | Retrieves the tank initial water volume |\n| getNodeTankMaximumWaterLevel        | Retrieves the tank maximum water level |\n| getNodeTankMaximumWaterVolume       | Retrieves the tank maximum water volume |\n| getNodeTankMinimumWaterLevel        | Retrieves the tank minimum water level |\n| getNodeTankMinimumWaterVolume       | Retrieves the tank minimum water volume |\n| getNodeTankMixZoneVolume            | Retrieves the tank mixing zone volume |\n| getNodeTankMixingFraction           | Retrieves the tank Fraction of total volume occupied by the inlet/outlet zone in a 2-compartment tank |\n| getNodeTankMixingModelCode          | Retrieves the tank mixing model code |\n| getNodeTankMixingModelType          | Retrieves the tank mixing model type |\n| getNodeTankNameID                   | Retrieves the tank IDs |\n| getNodeTankReservoirCount           | Retrieves the number of tanks |\n| getNodeTankVolume                   | Retrieves the tank volume |\n| getNodeTankVolumeCurveIndex         | Retrieves the tank volume curve index |\n| getNodeType                         | Retrieves the node-type code for all nodes |\n| getNodeTypeIndex                    | Retrieves the node-type code for all nodes |\n| getNodesConnectingLinksID           | Retrieves the id of the from/to nodes of all links |\n| getNodesConnectingLinksIndex        | Retrieves the indexes of the from/to nodes of all links |\n| getNodesInfo                        | Retrieves nodes info (elevations, demand patterns, emmitter coeff, initial quality, source quality, source pattern index, source type index, node type index) |\n| getOptionsAccuracyValue             | Retrieves the total normalized flow change for hydraulic convergence |\n| getOptionsCheckFrequency            | Retrieves the frequency of hydraulic status checks |\n| getOptionsDampLimit                 | Retrieves the accuracy level where solution damping begins |\n| getOptionsDemandCharge              | Retrieves the energy charge per maximum KW usage |\n| getOptionsDemandPattern             | Retrieves the default Demand pattern |\n| getOptionsEmitterBackFlow           | Retrieves the current setting for allowing reverse flow through emitters |\n| getOptionsEmitterExponent           | Retrieves the power exponent for the emmitters |\n| getOptionsExtraTrials               | Retrieves the extra trials allowed if hydraulics don't converge |\n| getOptionsFlowChange                | Retrieves the maximum flow change for hydraulic convergence |\n| getOptionsGlobalEffic               | Retrieves the global efficiency for pumps(percent) |\n| getOptionsGlobalPattern             | Retrieves the index of the global energy price pattern |\n| getOptionsGlobalPrice               | Retrieves the global average energy price per kW-Hour |\n| getOptionsHeadError                 | Retrieves the maximum head loss error for hydraulic convergence |\n| getOptionsHeadLossFormula           | Retrieves the headloss formula |\n| getOptionsLimitingConcentration     | Retrieves the limiting concentration for growth reactions |\n| getOptionsMaxTrials                 | Retrieves the maximum hydraulic trials allowed for hydraulic convergence |\n| getOptionsMaximumCheck              | Retrieves the maximum trials for status checking |\n| getOptionsPatternDemandMultiplier   | Retrieves the global pattern demand multiplier |\n| getOptionsPipeBulkReactionOrder     | Retrieves the bulk water reaction order for pipes |\n| getOptionsPipeWallReactionOrder     | Retrieves the wall reaction order for pipes (either 0 or 1) |\n| getOptionsPressureUnits             | get the pressure unit used in Epanet |\n| getOptionsQualityTolerance          | Retrieves the water quality analysis tolerance |\n| getOptionsSpecificDiffusivity       | Retrieves the specific diffusivity (relative to chlorine at 20 deg C) |\n| getOptionsSpecificGravity           | Retrieves the specific gravity |\n| getOptionsSpecificViscosity         | Retrieves the specific viscosity |\n| getOptionsStatusReport              | get the type of the status report(full/no/normal) |\n| getOptionsTankBulkReactionOrder     | Retrieves the bulk water reaction order for tanks |\n| getPattern                          | Retrieves the multiplier factor for all patterns and all times |\n| getPatternAverageDefaultValue       | Retrieves the average value of the default pattern |\n| getPatternAverageValue              | Retrieves the average values of all the time patterns |\n| getPatternComment                   | Retrieves the comment string assigned to the pattern object |\n| getPatternCount                     | Retrieves the number of patterns |\n| getPatternIndex                     | Retrieves the index of all or some time patterns given their IDs |\n| getPatternLengths                   | Retrieves the number of time periods in all or some time patterns |\n| getPatternNameID                    | Retrieves the ID label of all or some time patterns indices |\n| getPatternValue                     | Retrieves the multiplier factor for a certain pattern and time |\n| getQualityCode                      | Retrieves the code of water quality analysis type |\n| getQualityInfo                      | Retrieves quality analysis information (type, chemical name, units, trace node ID) |\n| getQualityTraceNodeIndex            | Retrieves the trace node index of water quality analysis type |\n| getQualityType                      | Retrieves the type of water quality analysis type |\n| getRuleCount                        | Retrieves the number of rules |\n| getRuleEnabled                      | Retrieves the enabled state of a specific rule in the EPANET model |\n| getRuleID                           | Retrieves the ID name of a rule-based control given its index |\n| getRuleInfo                         | Retrieves summary information about a rule-based control given it's index |\n| getRules                            | Retrieves the rule - based control statements |\n| getStatistic                        | Returns error code |\n| getStatisticDeficientNodes          | Retrieves the number of deficient nodes in the simulation |\n| getStatisticDemandReduction         | Retrieves the demand reduction statistic from the simulation |\n| getStatisticIterations              | Retrieves the number of iterations taken in the simulation |\n| getStatisticRelativeError           | Retrieves the relative error statistic from the simulation |\n| getStatisticTotalLeakageLoss        | Retrieves the total leakage loss statistic from the simulation. |\n| getTimeHTime                        | Retrieves the elapsed time of current hydraulic solution |\n| getTimeHaltFlag                     | Retrieves the number of halt flag indicating if the simulation was halted |\n| getTimeHydraulicStep                | Retrieves the value of the hydraulic time step |\n| getTimeNextEvent                    | Retrieves the shortest time until a tank becomes empty or full |\n| getTimeNextEventTank                | Retrieves the index of tank with shortest time to become empty or full |\n| getTimePatternStart                 | Retrieves the value of pattern start time |\n| getTimePatternStep                  | Retrieves the value of the pattern time step |\n| getTimeQTime                        | Retrieves the elapsed time of current quality solution |\n| getTimeQualityStep                  | Retrieves the value of the water quality time step |\n| getTimeReportingPeriods             | Retrieves the number of reporting periods saved to the binary |\n| getTimeReportingStart               | Retrieves the value of the reporting start time |\n| getTimeReportingStep                | Retrieves the value of the reporting time step |\n| getTimeRuleControlStep              | Retrieves the time step for evaluating rule-based controls |\n| getTimeSimulationDuration           | Retrieves the value of simulation duration |\n| getTimeStartClockStartTime          | Retrieves the simulation starting time of day |\n| getTimeStartTime                    | Retrieves the simulation starting time of day |\n| getTimeStatisticsIndex              | Retrieves the index of the type of time series post-processing |\n| getTimeStatisticsType               | Retrieves the type of time series post-processing |\n| getTimetoNextEvent                  | Determines the type of event that will cause the end of the current time step/duration/index |\n| getTitle                            | Retrieves the title lines of the project |\n| getUnits                            | Retrieves the Units of Measurement |\n| getVersion                          | Retrieves the current EPANET version of DLL |\n| initializeEPANET                    | Initializes an EPANET project that isn't opened with an input fil |\n| initializeHydraulicAnalysis         | Initializes storage tank levels, link status and settings, and the simulation clock time prior to running a hydraulic analysis |\n| initializeQualityAnalysis           | Initializes water quality and the simulation clock time prior to running a water quality analysis |\n| loadEPANETFile                      | Load epanet file when use bin functions |\n| loadMSXEPANETFile                   | Re-Load EPANET MSX file - parfor |\n| loadPatternFile                     | loads time patterns from a file into a project under a specific pattern ID |\n| nextHydraulicAnalysisStep           | Determines the length of time until the next hydraulic event occurs in an extended period simulation |\n| nextQualityAnalysisStep             | Advances the water quality simulation to the start of the next hydraulic time period |\n| openAnyInp                          | Open as on matlab editor any EPANET input file using built function open |\n| openCurrentInp                      | Opens EPANET input file who is loade |\n| openHydraulicAnalysis               | Opens the hydraulics analysis system |\n| openQualityAnalysis                 | Opens the water quality analysis system |\n| openX                               | enable the opening of input files with formatting errors |\n| plot                                | Plot Network, show all components, plot pressure/flow/elevation |\n| plot_close                          | Close all open figures |\n| plot_save                           | Save plot |\n| plot_show                           | Show plot |\n| reloadNetwork                       | Reloads the Network (ENopen) |\n| runEPANETexe                        | Runs epanet .exe file |\n| runHydraulicAnalysis                | Runs a single period hydraulic analysis, retrieving the current simulation clock time t |\n| runQualityAnalysis                  | Makes available the hydraulic and water quality results that occur at the start of the next time period of a water quality analysis, where the start of the period is returned in t |\n| runsCompleteSimulation              | Runs a complete hydraulic and water simulation to create binary \u0026 report files with name: [NETWORK_temp.txt], [NETWORK_temp.bin] OR you can use argument to runs a complete simulation via self.api.en_epane |\n| saveHydraulicFile                   | Saves the current contents of the binary hydraulics file to a file |\n| saveHydraulicsOutputReportingFile   | Transfers results of a hydraulic simulation from the binary Hydraulics file to the binary Output file, where results are only reported at uniform reporting intervals |\n| saveInputFile                       | Writes all current network input data to a file using the format of an EPANET input file |\n| setCMDCODE                          | Sets the CMC code |\n| setControlEnabled                   | Sets the control state to either enable or disable in the EPANET model |\n| setControls                         | Sets the parameters of a simple control statement |\n| setCurve                            | Sets x, y values for a specific curve |\n| setCurveComment                     | Sets the comment string of a curve |\n| setCurveNameID                      | Sets the name ID of a curve given it's index and the new ID |\n| setCurveType                        | Sets the type of a specified curve in the EPANET model |\n| setCurveTypeEfficiency              | Sets the type of curve to Efficiency in the EPANET model |\n| setCurveTypeGeneral                 | Sets the type of a curve to general in the EPANET model |\n| setCurveTypeHeadloss                | Sets the type of a curve to Headloss in the EPANET model |\n| setCurveTypePump                    | Sets the type of a curve to Pump in the EPANET model |\n| setCurveTypeValveCurve              | Sets the type of a curve to Valve in the EPANET model |\n| setCurveTypeVolume                  | Sets the type of a curve to Volume in the EPANET model |\n| setCurveValue                       | Sets x, y point for a specific point number and curve |\n| setDemandModel                      | Sets the type of demand model to use and its parameters |\n| setFlowUnitsAFD                     | Sets flow units to AFD(Acre-Feet per Day) |\n| setFlowUnitsCFS                     | Sets flow units to CFS(Cubic Feet per Second) |\n| setFlowUnitsCMD                     | Sets flow units to CMD(Cubic Meters per Day) |\n| setFlowUnitsCMH                     | Sets flow units to CMH(Cubic Meters per Hour) |\n| setFlowUnitsCMS                     | Sets flow units to CMS(Cubic Meters per Second) |\n| setFlowUnitsGPM                     | Sets flow units to GPM(Gallons Per Minute) |\n| setFlowUnitsIMGD                    | Sets flow units to IMGD(Imperial Million Gallons per Day) |\n| setFlowUnitsLPM                     | Sets flow units to LPM(Liters Per Minute) |\n| setFlowUnitsLPS                     | Sets flow units to LPS(Liters Per Second) |\n| setFlowUnitsMGD                     | Sets flow units to MGD(Million Gallons per Day) |\n| setFlowUnitsMLD                     | Sets flow units to MLD(Million Liters per Day) |\n| setLinkBulkReactionCoeff            | Sets the value of bulk chemical reaction coefficient |\n| setLinkComment                      | Sets the comment string assigned to the link object |\n| setLinkDiameter                     | Sets the values of diameters |\n| setLinkExpansionProperties          | Sets the expansion properties for a specified link (pipe) |\n| setLinkInitialSetting               | Sets the values of initial settings, roughness for pipes or initial speed for pumps or initial setting for valves |\n| setLinkInitialStatus                | Sets the values of initial status |\n| setLinkLeakArea                     | Sets the leak area for a specified link (pipe) |\n| setLinkLength                       | Sets the values of lengths |\n| setLinkMinorLossCoeff               | Sets the values of minor loss coefficient |\n| setLinkNameID                       | Sets the ID name for links |\n| setLinkNodesIndex                   | Sets the indexes of a link's start- and end-nodes |\n| setLinkPipeData                     | Sets a group of properties for a pipe |\n| setLinkPumpECost                    | Sets the pump average energy price |\n| setLinkPumpECurve                   | Sets the pump efficiency v |\n| setLinkPumpEPat                     | Sets the pump energy price time pattern index |\n| setLinkPumpHCurve                   | Sets the pump head v |\n| setLinkPumpHeadCurveIndex           | Sets the curves index for pumps index |\n| setLinkPumpPatternIndex             | Sets the pump speed time pattern index |\n| setLinkPumpPower                    | Sets the power for pumps |\n| setLinkRoughnessCoeff               | Sets the values of roughness coefficient |\n| setLinkSettings                     | Sets the values of current settings, roughness for pipes or initial speed for pumps or initial setting for valves |\n| setLinkStatus                       | Sets the values of current status for links |\n| setLinkTypePipe                     | Sets the link type pipe for a specified link |\n| setLinkTypePipeCV                   | Sets the link type cvpipe(pipe with check valve) for a specified link |\n| setLinkTypePump                     | Sets the link type pump for a specified link |\n| setLinkTypeValveFCV                 | Sets the link type valve FCV(flow control valve) for a specified link |\n| setLinkTypeValveGPV                 | Sets the link type valve GPV(general purpose valve) for a specified link |\n| setLinkTypeValvePBV                 | Sets the link type valve PBV(pressure breaker valve) for a specified link |\n| setLinkTypeValvePCV                 | Sets the link type valve PCV(Position control valve) for a specified link |\n| setLinkTypeValvePRV                 | Sets the link type valve PRV(pressure reducing valve) for a specified link |\n| setLinkTypeValvePSV                 | Sets the link type valve PSV(pressure sustaining valve) for a specified link |\n| setLinkTypeValveTCV                 | Sets the link type valve TCV(throttle control valve) for a specified link |\n| setLinkValveCurveGPV                | Sets the valve curve for a specified general purpose valve (GPV) |\n| setLinkValveCurvePCV                | Sets the valve curve for a specified pressure control valve (PCV) |\n| setLinkVertices                     | Assigns a set of internal vertex points to a link |\n| setLinkWallReactionCoeff            | Sets the value of wall chemical reaction coefficient |\n| setNodeBaseDemands                  | Sets the values of demand for nodes |\n| setNodeComment                      | Sets the comment string assigned to the node object |\n| setNodeCoordinates                  | Sets node coordinates |\n| setNodeDemandPatternIndex           | Sets the values of demand time pattern indices |\n| setNodeElevations                   | Sets the values of elevation for nodes |\n| setNodeEmitterCoeff                 | Sets the values of emitter coefficient for nodes |\n| setNodeInitialQuality               | Sets the values of initial quality for nodes |\n| setNodeJunctionData                 | Sets a group of properties for a junction node |\n| setNodeJunctionDemandName           | Assigns a name to a node's demand category |\n| setNodeNameID                       | Sets the ID name for nodes |\n| setNodeSourcePatternIndex           | Sets the values of quality source pattern index |\n| setNodeSourceQuality                | Sets the values of quality source strength |\n| setNodeSourceType                   | Sets the values of quality source type |\n| setNodeTankBulkReactionCoeff        | Sets the tank bulk reaction coefficient |\n| setNodeTankCanOverFlow              | Sets the tank can-overflow (= 1) or not (= 0) |\n| setNodeTankData                     | Sets a group of properties for a tank |\n| setNodeTankDiameter                 | Sets the diameter value for tanks |\n| setNodeTankInitialLevel             | Sets the values of initial level for tanks |\n| setNodeTankMaximumWaterLevel        | Sets the maximum water level value for tanks |\n| setNodeTankMinimumWaterLevel        | Sets the minimum water level value for tanks |\n| setNodeTankMinimumWaterVolume       | Sets the minimum water volume value for tanks |\n| setNodeTankMixingFraction           | Sets the tank mixing fraction of total volume occupied by the inlet/outlet zone in a 2-compartment tank |\n| setNodeTankMixingModelType          | Sets the mixing model type value for tanks |\n| setNodeTypeJunction                 | Transforms a node to JUNCTION The new node keeps the id,coordinates and elevation of the deleted on |\n| setNodeTypeReservoir                | Transforms a node to RESERVOIR The new node keeps the id,coordinates and elevation of the deleted on |\n| setNodeTypeTank                     | Transforms a node to TANK The new node keeps the id,coordinates and elevation of the deleted on |\n| setNodesConnectingLinksID           | Sets the IDs of a link's start- and end-nodes |\n| setOptionsAccuracyValue             | Sets the total normalized flow change for hydraulic convergence |\n| setOptionsCheckFrequency            | Sets the frequency of hydraulic status checks |\n| setOptionsDampLimit                 | Sets the accuracy level where solution damping begins |\n| setOptionsDemandCharge              | Sets the energy charge per maximum KW usage |\n| setOptionsDemandPattern             | Retrieves the default Demand pattern |\n| setOptionsEmitterBackFlowAllowed    | Sets the option to allow reverse flow through emitters |\n| setOptionsEmitterBackFlowDisallowed | Sets the option  prevent reverse flow through emitters |\n| setOptionsEmitterExponent           | Sets the power exponent for the emmitters |\n| setOptionsExtraTrials               | Sets the extra trials allowed if hydraulics don't converge |\n| setOptionsFlowChange                | Sets the maximum flow change for hydraulic convergence |\n| setOptionsGlobalEffic               | Sets the global efficiency for pumps(percent) |\n| setOptionsGlobalPattern             | Sets the global energy price pattern |\n| setOptionsGlobalPrice               | Sets the global average energy price per kW-Hour |\n| setOptionsHeadError                 | Sets the maximum head loss error for hydraulic convergence |\n| setOptionsHeadLossFormula           | Sets the headloss formula |\n| setOptionsLimitingConcentration     | Sets the limiting concentration for growth reactions |\n| setOptionsMaxTrials                 | Sets the maximum hydraulic trials allowed for hydraulic convergence |\n| setOptionsMaximumCheck              | Sets the maximum trials for status checking |\n| setOptionsPatternDemandMultiplier   | Sets the global pattern demand multiplier |\n| setOptionsPipeBulkReactionOrder     | Sets the bulk water reaction order for pipes |\n| setOptionsPipeWallReactionOrder     | Sets the wall reaction order for pipes (either 0 or 1) |\n| setOptionsPressureUnits             | Sets the pressure unit used in Epanet |\n| setOptionsPressureUnitsKPA          | Set pressure units to KPA and check if the change is possible |\n| setOptionsPressureUnitsMeters       | Set pressure units to Meters and check if the change is possible |\n| setOptionsPressureUnitsPSI          | Set pressure units to PSI and check if the change is possible |\n| setOptionsQualityTolerance          | Sets the water quality analysis tolerance |\n| setOptionsSpecificDiffusivity       | Sets the specific diffusivity (relative to chlorine at 20 deg C) |\n| setOptionsSpecificGravity           | Sets the specific gravity |\n| setOptionsSpecificViscosity         | Sets the specific viscosity |\n| setOptionsStatusReport              | Sets the status report for epanet |\n| setOptionsStatusReportFull          | set the status report option to full report |\n| setOptionsStatusReportNo            | set the status report option to no Report |\n| setOptionsStatusReportNormal        | set the status report option to normal report |\n| setOptionsTankBulkReactionOrder     | Sets the bulk water reaction order for tanks |\n| setPattern                          | Sets all of the multiplier factors for a specific time pattern |\n| setPatternComment                   | Sets the comment string assigned to the pattern object |\n| setPatternMatrix                    | Sets all of the multiplier factors for all time patterns |\n| setPatternNameID                    | Sets the name ID of a time pattern given it's index and the new ID |\n| setPatternValue                     | Sets the multiplier factor for a specific period within a time pattern |\n| setQualityType                      | Sets the type of water quality analysis called for |\n| setReport                           | Issues a report formatting command |\n| setReportFormatReset                | Resets a project's report options to their default values |\n| setReportStatus                     | Sets the level of hydraulic status reporting |\n| setRuleElseAction                   | Sets rule - based control else actions |\n| setRuleEnabled                      | Enables a specific rule in the EPANET model |\n| setRulePremise                      | Sets the premise of a rule - based control |\n| setRulePremiseObjectNameID          | Sets the ID of an object in a premise of a rule-based control |\n| setRulePremiseStatus                | Sets the status being compared to in a premise of a rule-based control |\n| setRulePremiseValue                 | Sets the value being compared to in a premise of a rule-based control |\n| setRulePriority                     | Sets rule - based control priority |\n| setRuleThenAction                   | Sets rule - based control then actions |\n| setRules                            | Sets a rule - based control |\n| setTimeClockStartTime               | Sets the start time for simulation |\n| setTimeHydraulicStep                | Sets the hydraulic time step |\n| setTimePatternStart                 | Sets the time when time patterns begin |\n| setTimePatternStep                  | Sets the time pattern step |\n| setTimeQualityStep                  | Sets the quality time step |\n| setTimeReportingStart               | Sets the time when reporting starts |\n| setTimeReportingStep                | Sets the reporting time step |\n| setTimeRuleControlStep              | Sets the rule-based control evaluation time step |\n| setTimeSimulationDuration           | Sets the simulation duration (in seconds) |\n| setTimeStatisticsType               | Sets the statistic type |\n| setTitle                            | Sets the title lines of the project |\n| setVertex                           | Sets the coordinates of a vertex point in a link within the EPANET model |\n| solveCompleteHydraulics             | Runs a complete hydraulic simulation with results for all time periods written to the binary Hydraulics file |\n| solveCompleteQuality                | Runs a complete water quality simulation with results at uniform reporting intervals written to EPANET's binary Output file |\n| splitPipe                           | Splits a pipe, creating two new pipes and adds a junction/node in between |\n| stepQualityAnalysisTimeLeft         | Advances the water quality simulation one water quality time step |\n| unload                              | unload library and close the EPANET Toolkit system |\n| useHydraulicFile                    | Uses the contents of the specified file as the current binary hydraulics file |\n| writeLineInReportFile               | Writes a line of text to the EPANET report file |\n| writeReport                         | Writes a formatted text report on simulation results to the Report file |\n\n## \u003cb\u003e MSX Functions \u003c/b\u003e \n| Function                            |Description|\n|-------------------------------------|---------------------------|\n| addMSXPattern                   | Adds a new, empty MSX source time pattern to the project |\n| getMSXAreaUnits                 | Retrieves the area units (FT2/M2/CM2) |\n| getMSXAtol                      | Retrieves the absolute concentration tolerance |\n| getMSXCompiler                  | Retrieves the compiler (NONE/VC/GC) |\n| getMSXComputedLinkQualitySpecie | Returns the link quality for specific specie |\n| getMSXComputedNodeQualitySpecie | Returns the node quality for specific specie |\n| getMSXComputedQualityLink       | Returns the computed quality for links. |\n| getMSXComputedQualityNode       | Retrieves the concentration of a chemical species at a specific node of the network at the current simulation time step. |\n| getMSXComputedQualitySpecie     | Retrieves the quality values for specific specie (e.g getMSXComputedQualitySpecie('CL2')) |\n| getMSXComputedQualitySpecie     | Retrieves the quality values for specific specie (e.g getMSXComputedQualitySpecie(['CL2'])) |\n| getMSXConstantsCount            | Retrieves the number of constants |\n| getMSXConstantsIndex            | Retrieves the internal index number of constants (given its ID name) |\n| getMSXConstantsNameID           | Retrieves the ID name of constants (given its internal index number) |\n| getMSXConstantsValue            | Retrieves the constant's value. |\n| getMSXCoupling                  | Retrieves the coupling (FULL/NONE) |\n| getMSXEquationsPipes            | Retrieves the species dynamics in pipes |\n| getMSXEquationsTanks            | Retrieves the species dynamics in tanks |\n| getMSXEquationsTerms            | Retrieves the species dynamics in terms |\n| getMSXError                     | Returns the text for an error message given its error code |\n| getMSXLinkInitqualValue         | Retrieves the initial concentration of chemical species assigned to links of the pipe network |\n| getMSXNodeInitqualValue         | Retrieves the initial concentration of chemical species assigned to nodes |\n| getMSXOptions                   | Retrieves all the msx option parameters |\n| getMSXParametersCount           | Retrieves the number of parameters |\n| getMSXParametersIndex           | Retrieves the indices of parameters |\n| getMSXParametersNameID          | Retrieves the ID name of parameters |\n| getMSXParametersPipesValue      | Retrieves the value of reaction parameters for pipes |\n| getMSXParametersTanksValue      | Retrieves the value of reaction parameters for tanks |\n| getMSXPattern                   | Retrieves the multiplier factor for all patterns and all times |\n| getMSXPatternValue              | Retrieves the multiplier at a specific time period for a given source time pattern |\n| getMSXPatternsCount             | Retrieves the number of patterns |\n| getMSXPatternsIndex             | Retrieves the indices of patterns |\n| getMSXPatternsLengths           | Retrieves the number of time periods in all or some patterns |\n| getMSXPatternsNameID            | Retrieves the patterns IDs |\n| getMSXRateUnits                 | Retrieves the rate/time units (SEC/MIN/HR/DAY) |\n| getMSXRtol                      | Retrieves the relative concentration tolerance |\n| getMSXSolver                    | Retrieves the solver method. |\n| getMSXSourceLevel               | Retrieves the value of all nodes source level |\n| getMSXSourceNodeNameID          | Retrieves the ID label of all nodes |\n| getMSXSourcePatternIndex        | Retrieves the value of all node source pattern index |\n| getMSXSourceType                | Retrieves the value of all node source type |\n| getMSXSources                   | Retrieves Msx sources |\n| getMSXSpeciesATOL               | Retrieves the atol |\n| getMSXSpeciesConcentration      | Retrieves the concentration of chemical species for nodes and links |\n| getMSXSpeciesCount              | Retrieves the number of species |\n| getMSXSpeciesIndex              | Retrieves the indices of species |\n| getMSXSpeciesNameID             | Retrieves the species IDs |\n| getMSXSpeciesRTOL               | Retrieves the rtol |\n| getMSXSpeciesType               | Retrieves the type of all species (BULK/WALL) |\n| getMSXSpeciesUnits              | Retrieves the species mass units |\n| getMSXTimeStep                  | Retrieves the time step |\n| getMethods                      | Returns all methods of epanet |\n| loadMSXFile        \t\t\t  | Loads an msx file |\n| initializeMSXQualityAnalysis    | Initializes the MSX system before solving for water quality results in step-wise fashion |\n| plotMSXSpeciesLinkConcentration | Plots concentration of species for links over time. |\n| plotMSXSpeciesNodeConcentration | Plots concentration of species for nodes over time. |\n| saveMSXFile                     | Saves the data associated with the current MSX project into a new MSX input file |\n| saveMSXQualityFile              | Saves water quality results computed for each node, link and reporting time period to a named binary file |\n| setMSXAreaUnitsCM2              | Sets area units to CM2 |\n| setMSXAreaUnitsFT2              | Sets area units to FT2 |\n| setMSXAreaUnitsM2               | Sets area units to M2 |\n| setMSXAtol                      | Sets the value of Atol |\n| setMSXCompilerGC                | Sets compilet to GC |\n| setMSXCompilerNONE              | Sets compiler to None |\n| setMSXCompilerVC                | Sets compiler to VC |\n| setMSXConstantsValue            | Assigns a new value to a specific reaction constant |\n| setMSXCouplingFULL              | Sets coupling option to FULL |\n| setMSXCouplingNONE              | Sets coupling option to NONE |\n| setMSXLinkInitqualValue         | Assigns an initial concentration of chemical species to links |\n| setMSXNodeInitqualValue         | Assigns an initial concentration of chemical species to nodes |\n| setMSXParametersPipesValue      | Assigns a value to a particular reaction parameter for given pipes |\n| setMSXParametersTanksValue      | Assigns a value to a particular reaction parameter for given tanks |\n| setMSXPattern                   | Sets all of the multiplier factors for a specific time pattern |\n| setMSXPatternMatrix             | Sets the multiplier factors for all patterns |\n| setMSXPatternValue              | Assigns a new value to the multiplier for a specific time period in a given MSX source time pattern |\n| setMSXRateUnitsDAY              | Sets rate units to DAY |\n| setMSXRateUnitsHR               | Sets rate units to HR |\n| setMSXRateUnitsMIN              | Sets rate units to MIN |\n| setMSXRateUnitsSEC              | Sets rate units to SEC |\n| setMSXRtol                      | Sets the value of Rtol |\n| setMSXSolverEUL                 | Sets solver to EUL (standard Euler integrator) |\n| setMSXSolverRK5                 | Sets solver to RK5 (Runge-Kutta 5th order integrator) |\n| setMSXSolverROS2                | Sets solver to ROS2 (2nd order Rosenbrock integrator) |\n| setMSXSources                   | Sets the attributes of an external source of a particular chemical species to a specific node of the pipe network |\n| setMSXTimeStep                  | Sets time step |\n| solveMSXCompleteHydraulics      | Solves for system hydraulics over the entire simulation period saving results to an internal scratch file |\n| solveMSXCompleteQuality         | Solves for water quality over the entire simulation period and saves the results to an internal scratch file |\n| stepMSXQualityAnalysisTimeLeft  | Advances the water quality solution through a single water quality time step when performing a step-wise simulation |\n| useMSXHydraulicFile             | Uses a previously saved EPANET hydraulics file as the source of hydraulic information |\n| unloadMSX                       | Unloads MSX file |\n| writeMSXFile                    | Write a new MSX file |\n| writeMSXReport                  | Writes MSX report |\n\n## List of MSX Functions \n|Function|Description|\n|---------|----------|            \n| addMSXPattern                   | Adds a new, empty MSX source time pattern to the project |\n| getMSXAreaUnits                 | Retrieves the area units (FT2/M2/CM2) |\n| getMSXAtol                      | Retrieves the absolute concentration tolerance |\n| getMSXCompiler                  | Retrieves the compiler (NONE/VC/GC) |\n| getMSXComputedLinkQualitySpecie | Returns the link quality for specific specie |\n| getMSXComputedNodeQualitySpecie | Returns the node quality for specific specie |\n| getMSXComputedQualityLink       | Returns the computed quality for links. |\n| getMSXComputedQualityNode       | Retrieves the concentration of a chemical species at a specific node of the network at the current simulation time step. |\n| getMSXComputedQualitySpecie     | Retrieves the quality values for specific specie (e.g getMSXComputedQualitySpecie('CL2')) |\n| getMSXComputedQualitySpecie     | Retrieves the quality values for specific specie (e.g getMSXComputedQualitySpecie(['CL2'])) |\n| getMSXConstantsCount            | Retrieves the number of constants |\n| getMSXConstantsIndex            | Retrieves the internal index number of constants (given its ID name) |\n| getMSXConstantsNameID           | Retrieves the ID name of constants (given its internal index number) |\n| getMSXConstantsValue            | Retrieves the constant's value. |\n| getMSXCoupling                  | Retrieves the coupling (FULL/NONE) |\n| getMSXEquationsPipes            | Retrieves the species dynamics in pipes |\n| getMSXEquationsTanks            | Retrieves the species dynamics in tanks |\n| getMSXEquationsTerms            | Retrieves the species dynamics in terms |\n| getMSXError                     | Returns the text for an error message given its error code |\n| getMSXLinkInitqualValue         | Retrieves the initial concentration of chemical species assigned to links of the pipe network |\n| getMSXNodeInitqualValue         | Retrieves the initial concentration of chemical species assigned to nodes |\n| getMSXOptions                   | Retrieves all the msx option parameters |\n| getMSXParametersCount           | Retrieves the number of parameters |\n| getMSXParametersIndex           | Retrieves the indices of parameters |\n| getMSXParametersNameID          | Retrieves the ID name of parameters |\n| getMSXParametersPipesValue      | Retrieves the value of reaction parameters for pipes |\n| getMSXParametersTanksValue      | Retrieves the value of reaction parameters for tanks |\n| getMSXPattern                   | Retrieves the multiplier factor for all patterns and all times |\n| getMSXPatternValue              | Retrieves the multiplier at a specific time period for a given source time pattern |\n| getMSXPatternsCount             | Retrieves the number of patterns |\n| getMSXPatternsIndex             | Retrieves the indices of patterns |\n| getMSXPatternsLengths           | Retrieves the number of time periods in all or some patterns |\n| getMSXPatternsNameID            | Retrieves the patterns IDs |\n| getMSXRateUnits                 | Retrieves the rate/time units (SEC/MIN/HR/DAY) |\n| getMSXRtol                      | Retrieves the relative concentration tolerance |\n| getMSXSolver                    | Retrieves the solver method. |\n| getMSXSourceLevel               | Retrieves the value of all nodes source level |\n| getMSXSourceNodeNameID          | Retrieves the ID label of all nodes |\n| getMSXSourcePatternIndex        | Retrieves the value of all node source pattern index |\n| getMSXSourceType                | Retrieves the value of all node source type |\n| getMSXSources                   | Retrieves Msx sources |\n| getMSXSpeciesATOL               | Retrieves the atol |\n| getMSXSpeciesConcentration      | Retrieves the concentration of chemical species for nodes and links |\n| getMSXSpeciesCount              | Retrieves the number of species |\n| getMSXSpeciesIndex              | Retrieves the indices of species |\n| getMSXSpeciesNameID             | Retrieves the species IDs |\n| getMSXSpeciesRTOL               | Retrieves the rtol |\n| getMSXSpeciesType               | Retrieves the type of all species (BULK/WALL) |\n| getMSXSpeciesUnits              | Retrieves the species mass units |\n| getMSXTimeStep                  | Retrieves the time step |\n| getMethods                      | Returns all methods of epanet |\n| loadMSXFile        \t\t\t  | Loads an msx file |\n| initializeMSXQualityAnalysis    | Initializes the MSX system before solving for water quality results in step-wise fashion |\n| plotMSXSpeciesLinkConcentration | Plots concentration of species for links over time. |\n| plotMSXSpeciesNodeConcentration | Plots concentration of species for nodes over time. |\n| saveMSXFile                     | Saves the data associated with the current MSX project into a new MSX input file |\n| saveMSXQualityFile              | Saves water quality results computed for each node, link and reporting time period to a named binary file |\n| setMSXAreaUnitsCM2              | Sets area units to CM2 |\n| setMSXAreaUnitsFT2              | Sets area units to FT2 |\n| setMSXAreaUnitsM2               | Sets area units to M2 |\n| setMSXAtol                      | Sets the value of Atol |\n| setMSXCompilerGC                | Sets compilet to GC |\n| setMSXCompilerNONE              | Sets compiler to None |\n| setMSXCompilerVC                | Sets compiler to VC |\n| setMSXConstantsValue            | Assigns a new value to a specific reaction constant |\n| setMSXCouplingFULL              | Sets coupling option to FULL |\n| setMSXCouplingNONE              | Sets coupling option to NONE |\n| setMSXLinkInitqualValue         | Assigns an initial concentration of chemical species to links |\n| setMSXNodeInitqualValue         | Assigns an initial concentration of chemical species to nodes |\n| setMSXParametersPipesValue      | Assigns a value to a particular reaction parameter for given pipes |\n| setMSXParametersTanksValue      | Assigns a value to a particular reaction parameter for given tanks |\n| setMSXPattern                   | Sets all of the multiplier factors for a specific time pattern |\n| setMSXPatternMatrix             | Sets the multiplier factors for all patterns |\n| setMSXPatternValue              | Assigns a new value to the multiplier for a specific time period in a given MSX source time pattern |\n| setMSXRateUnitsDAY              | Sets rate units to DAY |\n| setMSXRateUnitsHR               | Sets rate units to HR |\n| setMSXRateUnitsMIN              | Sets rate units to MIN |\n| setMSXRateUnitsSEC              | Sets rate units to SEC |\n| setMSXRtol                      | Sets the value of Rtol |\n| setMSXSolverEUL                 | Sets solver to EUL (standard Euler integrator) |\n| setMSXSolverRK5                 | Sets solver to RK5 (Runge-Kutta 5th order integrator) |\n| setMSXSolverROS2                | Sets solver to ROS2 (2nd order Rosenbrock integrator) |\n| setMSXSources                   | Sets the attributes of an external source of a particular chemical species to a specific node of the pipe network |\n| setMSXTimeStep                  | Sets time step |\n| solveMSXCompleteHydraulics      | Solves for system hydraulics over the entire simulation period saving results to an internal scratch file |\n| solveMSXCompleteQuality         | Solves for water quality over the entire simulation period and saves the results to an internal scratch file |\n| stepMSXQualityAnalysisTimeLeft  | Advances the water quality solution through a single water quality time step when performing a step-wise simulation |\n| useMSXHydraulicFile             | Uses a previously saved EPANET hydraulics file as the source of hydraulic information |\n| unloadMSX                       | Unloads MSX file |\n| writeMSXFile                    | Write a new MSX file |\n| writeMSXReport                  | Writes MSX report |\n\n## List of EPANET 2.012 Functions Supported\n\n|Function|Description|\n|--------|-----------|\n|ENaddpattern|Adds a new time pattern to the network|\n|ENclose|Closes down the Toolkit system (including all files being processed)|\n|ENcloseH|Closes the hydraulic analysis system, freeing all allocated memory|\n|ENcloseQ|Closes the water quality analysis system, freeing all allocated memory|\n|ENepanet|Runs a complete EPANET simulation|\n|ENgetcount|Retrieves the number of network components of a specified type|\n|ENgetcontrol|Retrieves the parameters of a simple control statement|\n|ENgeterror|Retrieves the text of the message associated with a particular error or warning code|\n|ENgetflowunits|Retrieves a code number indicating the units used to express all flow rates|\n|ENgetlinkid|Retrieves the ID label of a link with a specified index|\n|ENgetlinkindex|Retrieves the index of a link with a specified ID|\n|ENgetlinknodes|Retrieves the indexes of the end nodes of a specified link|\n|ENgetlinktype|Retrieves the link-type code for a specific link|\n|ENgetlinkvalue|Retrieves the value of a specific link parameter|\n|ENgetnodeid|Retrieves the ID label of a node with a specified index|\n|ENgetnodeindex|Retrieves the index of a node with a specified ID|\n|ENgetnodetype|Retrieves the node-type code for a specific node|\n|ENgetnodevalue|Retrieves the value of a specific link parameter|\n|ENgetoption|Retrieves the value of a particular analysis option|\n|ENgetpatternid|Retrieves the ID label of a particular time pattern|\n|ENgetpatternindex|Retrieves the index of a particular time pattern|\n|ENgetpatternlen|Retrieves the number of time periods in a specific time pattern|\n|ENgetpatternvalue|Retrieves the multiplier factor for a specific time period in a time pattern|\n|ENgetqualtype|Retrieves the type of water quality analysis called for|\n|ENgettimeparam|Retrieves the value of a specific analysis time parameter|\n|ENgetversion|Retrieves the version number|\n|ENinitH|Initializes hydraulic analysis|\n|ENinitQ|Initializes water quality analysis|\n|ENnextH|Determine time (in seconds) until next hydraulic event|\n|ENnextQ|Advances WQ simulation to next hydraulic event|\n|ENopen|Opens EPANET input file \u0026 reads in network data|\n|ENopenH|Sets up data structures for hydraulic analysis|\n|ENopenQ|Sets up data structures for WQ analysis|\n|ENreport|Writes simulation report to the report file|\n|ENresetreport|Resets report options to default values|\n|ENrunH|Run a hydraulic solution period|\n|ENrunQ|Retrieves hydraulic \u0026 WQ results at time t|\n|ENsaveH|Saves hydraulic results to binary file|\n|ENsavehydfile|Copies binary hydraulics file to disk|\n|ENsaveinpfile|Saves current data to \"INP\" formatted text file|\n|ENsetcontrol|Specify parameters to define a simple control|\n|ENsetlinkvalue|Set a proprty value for a link|\n|ENsetnodevalue|Set a property value for a node|\n|ENsetoption|Set a value for an anlysis option|\n|ENsetpattern|Set multipliers for a specific pattern|\n|ENsetpatternvalue|Set the multiplier for a specific pattern at a specific period|\n|ENsetqualtype|Sets the type of water quality analysis called|\n|ENsetreport|Processes a reporting format command|\n|ENsetstatusreport|Sets the level of hydraulic status reporting|\n|ENsettimeparam|Set the value for a time parameter|\n|ENsolveH|Solves the network hydraulics for all time periods|\n|ENsolveQ|Solves for network water quality in all time periods|\n|ENstepQ|Advances WQ simulation by a single WQ time step|\n|ENusehydfile|Opens previously saved binary hydraulics file|\n|ENwriteline|Writes line of text to the report file|\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## List of EPANET 2.1 Functions Supported\n\n|Function|Description|\n|--------|-----------|\n|ENaddcurve|Adds a new curve appended to the end of the existing curves|\n|ENgetaveragepatternvalue|Retrieves the average value of a pattern|\n|ENgetbasedemand|Retrieves the nodes base demand for a category|\n|ENgetcoord|Retrieves coordinate x, y for a node|\n|ENgetcurve|Retrieves a curve's properties|\n|ENgetcurveid|Retrieves ID of a curve with specific index|\n|ENgetcurveindex|Retrieves index of curve with specific ID|\n|ENgetcurvelen|Retrieves number of points in a curve|\n|ENgetcurvevalue|Retrieves x,y point for a specific point number and curve|\n|ENgetdemandpattern|Retrieves the index of a demand pattern for a specific demand category of a node|\n|ENgetheadcurveindex|Retrieves index of a head curve for specific link index|\n|ENgetnumdemands|Retrieves the number of demand categories for a node|\n|ENgetpumptype|Retrieves the type of a pump for specific link index|\n|ENgetqualinfo|Retrieves quality analysis information (type, chemical name, units, trace node ID)|\n|ENgetstatistic|Retrieves hydraulic simulation statistic|\n|ENsetbasedemand|Sets the nodes base demand for a category|\n|ENsetcoord|Sets coordinate x, y for a node|\n|ENsetcurve|Sets x,y values for a specific curve|\n|ENsetcurvevalue|Sets x,y point for a specific point and curve|\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## List of EPANET 2.2 Functions Supported\n\n|Function|Description|\n|--------|-----------|\n|ENaddcontrol|Specify parameters to add a new simple control|\n|ENaddlink|Adds a new link|\n|ENaddnode|Adds a new node|\n|ENaddrule|Adds a new rule-based control to a project|\n|ENadddemand|Appends a new demand to a junction node demands list|\n|ENclearreport|Clears the contents of a project's report file|\n|ENcopyreport|Copies the current contents of a project's report file to another file|\n|ENdeletelink|Deletes a link|\n|ENdeletenode|Deletes a node|\n|ENdeletedemand|Deletes a demand from a junction node|\n|ENsetcurveid|Changes the ID name of a data curve given its index|\n|ENsetpatternid|Changes the ID name of a time pattern given its index|\n|ENsetdemandpattern|Sets the index of the demand pattern assigned to a node for a category index|\n|ENsetheadcurveindex|Sets the curve index for a specified pump index|\n|ENgetcurvetype|Retrieves the type of a curve|\n|ENgetdemandindex|Retrieves the index of a node's named demand category|\n|ENgetpremise|Gets the properties of a premise in a rule-based control|\n|ENgetelseaction|Gets the properties of an ELSE action in a rule-based control|\n|ENgetruleid|Gets the ID name of a rule-based control given its index|\n|ENgetrule|Retrieves summary information about a rule-based control|\n|ENgetthenaction|Gets the properties of a THEN action in a rule-based control|\n|ENsetflowunits|Sets the flow units|\n|ENgetdemandmodel|Retrieves the type of demand model in use and its parameters|\n|ENsetdemandmodel|Sets the type of demand model to use and its parameters|\n|ENsetelseaction|Sets the properties of an ELSE action in a rule-based control|\n|ENsetnodeid|Change the ID name for a node|\n|ENsetlinkid|Change the ID name for a link|\n|ENsetpipedata|Sets a group of properties for a pipe link|\n|ENsetpremise|Sets the properties of a premise in a rule-based control|\n|ENsetpremiseindex|Sets the index of an object in a premise of a rule-based control|\n|ENsetpremisestatus|Sets the status being compared to in a premise of a rule-based control|\n|ENsetpremisevalue|Sets the value in a premise of a rule-based control|\n|ENsetrulepriority|Sets the priority of a rule-based control|\n|ENsettankdata|Sets a group of properties for a tank node|\n|ENsetthenaction|Sets the properties of a THEN action in a rule-based control|\n|ENgettitle|Retrieves the title lines of the project|\n|ENsettitle|Sets the title lines of the project|\n|ENsetlinknodes|Sets the indexes of a link's start- and end-nodes|\n|ENsetlinktype|Changes the type of a particular link (e.g. pipe to pump)|\n|ENgetdemandname|Gets the name of a node's demand category|\n|ENsetdemandname|Assigns a name to a node's demand category|\n|ENgetcomment|Retrieves the comment string assigned to the object (NODE, LINK, TIMEPAT or CURVE)|\n|ENsetcomment|Sets the comment string assigned to the object (NODE, LINK, TIMEPAT or CURVE)|\n|ENdeletepattern|Deletes a time pattern from a project|\n|ENdeletecurve|Deletes a data curve from the project|\n|ENdeletecontrol|Deletes an existing simple control|\n|ENdeleterule|Deletes an existing rule-based control|\n|ENsetjuncdata|Sets a group of properties for a junction node|\n|ENgetvertex|Retrieves the coordinate's of a vertex point assigned to a link|\n|ENgetvertexcount|Retrieves the number of internal vertex points assigned to a link|\n|ENsetvertices|Assigns a set of internal vertex points to a link|\n|ENgetresultindex|Retrieves the order in which a node's or link's results were saved to an output file|\n|ENinit|Initializes an EPANET project that isn't opened with an input file|\n\n\u0026uparrow; [Back to top](#table-of-contents)\n\n## List of EPANET 2.3 Functions Supported\n\n|Function|Description|\n|--------|-----------|\n|ENgetcontrolenabled|Get enabled/disabled flag for a simple control by index (1 = enabled, 0 = disabled)|\n|ENgetlinkvalues|Bulk-retrieve property values for all links for a given link property code|\n|ENgetnodevalues|Bulk-retrieve property values for all nodes for a given node property code|\n|ENgetruleenabled|Get enabled/disabled flag for a rule-based control by rule index|\n|ENloadpatternfile|Load time patterns from an external file into the current project under a specific pattern ID|\n|ENopenX|Open an input file even if it has formatting errors (lenient parsing mode)|\n|ENsetcontrolenabled|Enable/disable a specific simple control by index|\n|ENsetcurvetype|Set the type of a curve object (volume, pump, efficiency, headloss, general, valve)|\n|ENsetruleenabled|Enable/disable a rule by rule index|\n|ENsetvertex|Set the coordinates of a link’s intermediate vertex (polyline point) by vertex index|\n|ENtimetonextevent|Return the type of event that terminates the current time step (hydraulic step, water quality step, tank level event, control event)|\n\n## List of EPANET MSX Functions API\n\n| Function           | Description                                                                                                                              |\n|--------------------|------------------------------------------------------------------------------------------------------------------------------------------|\n| MSXaddpattern      | Adds a new empty MSX source time pattern to an MSX project |\n| MSXclose           | Close .msx file |\n| MSXerror           | Retrieves the MSX erorr message for specific erorr code |\n| MSXgetID           | Retrieves the ID name of an object given its internal index number |\n| MSXgetIDlen        | Retrieves the number of characters in the ID name of an MSX object given its internal index number |\n| MSXgetconstant     | Retrieves the value of a particular rection constant |\n| MSXgetcount        | Retrieves the number of objects of a specific type |\n| MSXgeterror        | Returns the text for an error message given its error code |\n| MSXgetindex        | Retrieves the number of objects of a specific type |\n| MSXgetinitqual     | Retrieves the intial concetration of a particular chemical species assigned to a specific node or link of the pipe network |\n| MSXgetparameter    | Retrieves the value of a particular reaction parameter for a given pipe |\n| MSXgetpatternlen   | Retrieves the number of time periods within a source time pattern |\n| MSXgetpatternvalue | Retrieves the multiplier at a specific time period for a given source time pattern |\n| MSXgetqual         | Retrieves a chemical species concentration at a given node or the average concentration along a link at the current sumulation time step |\n| MSXgetsource       | Retrieves information on any external source of a particular chemical species assigned to a specific node or link of the pipe network |\n| MSXgetspecies      | Retrieves the attributes of a chemical species given its internal index number |\n| MSXinit            | Initialize the MSX system before solving for water quality results in the step-wise fashion |\n| MSXopen            | Opens .MSX file |\n| MSXreport          | Writes water quality simulations results as instructed by MSX input file to a text file |\n| MSXsavemsxfile     | Saves the data associated with the current MSX project into a new MSX input file |\n| MSXsaveoutfile     | Saves water quality results computed for each node, link and reporting time period to a named binary file |\n| MSXsetconstant     | Assigns a new value to a specific reaction constant |\n| MSXsetinitqual     | Assigns an initial concetration of a particular chemical species node or link of the pipe network |\n| MSXsetparameter    | Assigns a value to a particular reaction parameter for a given pipe or tank within the pipe network |\n| MSXsetpattern      | Assigns a new set of multipliers to a given MSX source time pattern |\n| MSXsetpatternvalue | Assigns a new value to the multiplier for a specific time period in a given MSX source time pattern |\n| MSXsetsource       | Sets the attributes of an external source of particular chemical species to specific node of the pipe network |\n| MSXsolveH          | Solves for system hydraulics over the entire simulation period saving results to an internal scratch file |\n| MSXsolveQ          | Solves for water quality over the entire simulation period and saves the results to an internal scratch file |\n| MSXstep            | Advances the water quality solution through a single water quality time step when performing a step-wise simulation |\n| MSXusehydfile      | Uses a previously saved EPANET hydraulics file as the source of hydraulic information |\n\n\u0026uparrow; [Back to top](#table-of-contents)\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.21105/joss.05947"],"works":{"https://doi.org/10.21105/joss.05947":{"id":"https://openalex.org/W4389312380","doi":"https://doi.org/10.21105/joss.05947","title":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations","display_name":"EPyT: An EPANET-Python Toolkit for Smart Water Network Simulations","publication_year":2023,"publication_date":"2023-12-04","ids":{"openalex":"https://openalex.org/W4389312380","doi":"https://doi.org/10.21105/joss.05947"},"language":"en","primary_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.21105/joss.05947","pdf_url":"https://joss.theoj.org/papers/10.21105/joss.05947.pdf","source":{"id":"https://openalex.org/S4210214273","display_name":"Journal of open source software","issn_l":"2475-9066","issn":["2475-9066"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310315853","host_organization_name":"Open Journals","host_organization_lineage":["https://openalex.org/P4310315853"],"host_organization_lineage_names":["Open Journals"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"type":"article","type_crossref":"journal-article","open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://joss.theoj.org/papers/10.21105/joss.05947.pdf","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5066454045","display_name":"Marios S. Kyriakou","orcid":"https://orcid.org/0000-0002-2324-8661"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Marios S. Kyriakou","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5053534593","display_name":"Marios Demetriades","orcid":"https://orcid.org/0000-0001-7775-4319"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Marios Demetriades","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5028957651","display_name":"Stelios G. Vrachimis","orcid":"https://orcid.org/0000-0001-8862-5205"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Stelios G. Vrachimis","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"middle","author":{"id":"https://openalex.org/A5015248267","display_name":"Δημήτριος Γ. Ηλιάδης","orcid":"https://orcid.org/0000-0001-6184-6366"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Demetrios G. Eliades","raw_affiliation_string":"","raw_affiliation_strings":[]},{"author_position":"last","author":{"id":"https://openalex.org/A5089297277","display_name":"Marios M. Polycarpou","orcid":"https://orcid.org/0000-0001-6495-9171"},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"Marios M. Polycarpou","raw_affiliation_string":"","raw_affiliation_strings":[]}],"countries_distinct_count":0,"institutions_distinct_count":0,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":{"value":0,"currency":"USD","value_usd":0,"provenance":"doaj"},"apc_paid":{"value":0,"currency":"USD","value_usd":0,"provenance":"doaj"},"has_fulltext":false,"cited_by_count":0,"cited_by_percentile_year":{"min":0,"max":87},"biblio":{"volume":"8","issue":"92","first_page":"5947","last_page":"5947"},"is_retracted":false,"is_paratext":false,"keywords":[],"concepts":[{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.9189458},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.62102073},{"id":"https://openalex.org/C121684516","wikidata":"https://www.wikidata.org/wiki/Q7600677","display_name":"Computer graphics (images)","level":1,"score":0.38262165},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.37543452}],"mesh":[],"locations_count":1,"locations":[{"is_oa":true,"landing_page_url":"https://doi.org/10.21105/joss.05947","pdf_url":"https://joss.theoj.org/papers/10.21105/joss.05947.pdf","source":{"id":"https://openalex.org/S4210214273","display_name":"Journal of open source software","issn_l":"2475-9066","issn":["2475-9066"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310315853","host_organization_name":"Open Journals","host_organization_lineage":["https://openalex.org/P4310315853"],"host_organization_lineage_names":["Open Journals"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true}],"best_oa_location":{"is_oa":true,"landing_page_url":"https://doi.org/10.21105/joss.05947","pdf_url":"https://joss.theoj.org/papers/10.21105/joss.05947.pdf","source":{"id":"https://openalex.org/S4210214273","display_name":"Journal of open source software","issn_l":"2475-9066","issn":["2475-9066"],"is_oa":true,"is_in_doaj":true,"host_organization":"https://openalex.org/P4310315853","host_organization_name":"Open Journals","host_organization_lineage":["https://openalex.org/P4310315853"],"host_organization_lineage_names":["Open Journals"],"type":"journal"},"license":"cc-by","version":"publishedVersion","is_accepted":true,"is_published":true},"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/6","display_name":"Clean water and sanitation","score":0.64},{"id":"https://metadata.un.org/sdg/9","display_name":"Industry, innovation and infrastructure","score":0.17},{"id":"https://metadata.un.org/sdg/12","display_name":"Responsible consumption and production","score":0.13}],"grants":[],"referenced_works_count":5,"referenced_works":["https://openalex.org/W1811699023","https://openalex.org/W2733712019","https://openalex.org/W2920335651","https://openalex.org/W4283155287","https://openalex.org/W4364361704"],"related_works":["https://openalex.org/W1906486629","https://openalex.org/W2899084033","https://openalex.org/W2748952813","https://openalex.org/W2341492732","https://openalex.org/W3187193180","https://openalex.org/W106542691","https://openalex.org/W4287027380","https://openalex.org/W1699080303","https://openalex.org/W4297799326","https://openalex.org/W3116064965"],"ngrams_url":"https://api.openalex.org/works/W4389312380/ngrams","abstract_inverted_index":null,"cited_by_api_url":"https://api.openalex.org/works?filter=cites:W4389312380","counts_by_year":[],"updated_date":"2023-12-16T17:28:12.114571","created_date":"2023-12-05"}},"citation_counts":{"https://doi.org/10.21105/joss.05947":0},"total_citations":0,"keywords_from_contributors":["hydraulics","environmental-engineering","water-distribution"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/24962","html_url":"https://ost.ecosyste.ms/projects/24962"}