{"id":38695364,"url":"https://github.com/aloytag/electrical-grid-simulator","last_synced_at":"2026-01-17T10:39:35.910Z","repository":{"id":143506386,"uuid":"599785437","full_name":"aloytag/electrical-grid-simulator","owner":"aloytag","description":"Graphical user interface application for simulating electrical networks based on the pandapower library","archived":false,"fork":false,"pushed_at":"2025-09-18T20:05:33.000Z","size":8300,"stargazers_count":32,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-26T09:44:55.438Z","etag":null,"topics":["electrical-grid-simulator","electrical-networks","nodegraphqt","pandapower","power-systems"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aloytag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-02-09T21:52:53.000Z","updated_at":"2025-09-18T20:05:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"6ef6bed2-111d-4c0f-8479-bea7d843a0af","html_url":"https://github.com/aloytag/electrical-grid-simulator","commit_stats":{"total_commits":97,"total_committers":3,"mean_commits":"32.333333333333336","dds":"0.30927835051546393","last_synced_commit":"0e1b0f0b8fa38d87397fd87649353f4cda143d00"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/aloytag/electrical-grid-simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aloytag%2Felectrical-grid-simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aloytag%2Felectrical-grid-simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aloytag%2Felectrical-grid-simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aloytag%2Felectrical-grid-simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aloytag","download_url":"https://codeload.github.com/aloytag/electrical-grid-simulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aloytag%2Felectrical-grid-simulator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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"}},"keywords":["electrical-grid-simulator","electrical-networks","nodegraphqt","pandapower","power-systems"],"created_at":"2026-01-17T10:39:32.927Z","updated_at":"2026-01-17T10:39:35.893Z","avatar_url":"https://github.com/aloytag.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Electrical Grid Simulator (EGS)\nThe *Electrical Grid Simulator* (abbreviated as **EGS**) is a graphical user interface application for simulating electrical networks based on the [pandapower](https://www.pandapower.org/) library. The main objective is to allow the creation of mathematical models for steady-state electrical grids from a user-friendly interface. It adds an extensions system for including new calculation or simulation algorithms. Extensions are implemented as standard Python packages, so they can be distributed through the [PyPI repository](https://pypi.org/).\n\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"./img/app_icon.png\" alt=\"EGS logo\" width=\"200\"\u003e\n\u003c/p\u003e\n\nEGS is developed at the *National Technological University, Santa Fe Regional Faculty* ([UTN-FRSF](https://www.frsf.utn.edu.ar/)), at the *Center for Research and Development in Electrical Engineering and Energy Systems* ([CIESE](https://www.frsf.utn.edu.ar/investigacion-y-vinculacion/investigacion-y-vinculacion/centros-y-grupos/ciese)), Argentina.\n\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"./img/Logo_CIESE_2021 y UTN_Sta_Fe.png\" alt=\"\" width=\"450\"\u003e\n\u003c/p\u003e\n\n\n\u003e [!WARNING]  \n\u003e This application is in an early stage of development. So you can expect incomplete sections and some (or many) bugs. New changes may cause incompatibilities with older versions (old files that no longer work with newer versions of the program).\n\n## Goals\n- Providing a minimalistic, modern and good-looking interface.\n- Multiplatform: GNU/Linux, MS Windows and Apple MacOS (not tested on MacOS).\n- Providing an extensions system to expand its capabilities **(starting in version 0.0.6.9)**.\n\n## How it is built\nEGS is built in Python and entirely from open source and free software. The main core components are:\n\n* The [pandapower](https://www.pandapower.org/) modeling and calculation library for electrical power systems.\n* The [Qt](https://www.qt.io/) toolkit with [PySide6](https://wiki.qt.io/Qt_for_Python) bindings for the UI.\n* A `Qt6` port (fork) of the [NodeGraphQt](https://github.com/jchanvfx/NodeGraphQt) library for building the graph (schematic network graphic).\n* The [PyQtDarkTheme](https://github.com/5yutan5/PyQtDarkTheme) package for applying modern themes (light and dark themes).\n* The [QtAwesome](https://github.com/spyder-ide/qtawesome) package for modern flat monochromatic icons.\n* The [matplotlib](https://matplotlib.org/) package for plotting calculation results.\n* Other scientific Python packages, mainly [NumPy](https://numpy.org/) and [pandas](https://pandas.pydata.org/).\n\n\nEGS is implemented as a Python package uploaded to the [PyPI repository](https://pypi.org/). ```pandapower``` and other packages listed above are set as dependencies.\n\n\u003e [!NOTE]  \n\u003e Starting with version **0.0.8.0**, the EGS package includes a fork of `NodeGraphQt` ported to `Qt6` (using the `PySide6` library). This implementation is renamed to `NodeGraphQt6` in order to avoid conflicts. These changes allow the application to run on recent versions of Python.\n\n\n## How it works\nEvery time the user inserts and connects an element to the grid, the application replicates the addition in a ```pandapower``` network. Thus, the parameters of a component are updated in the ```pandapower``` network when they are modified from the graphical interface.\n\nThe network configured from the interface is designated as **Graph**, while the corresponding ```pandapower``` model is denoted as **Data model**. This synchronization works in the **Graph -\u003e Data model** direction, i.e. changes in the **Graph** are automatically registered into the **Data model**, and not the other way around. However, the contents of the **Data model** can be consulted at any time. \n\nAccording to the structure proposed by the ```pandapower``` library, the **Data model** consists of a set of tables ([pandas DataFrame type objects](https://en.wikipedia.org/wiki/Pandas_(software))). Each table (**DataFrame**) contains the parameters of a certain type of component. The types of components supported by ```pandapower``` are those indicated in [this documentation link](https://pandapower.readthedocs.io/en/latest/elements.html). At this moment, most of these components are also supported by EGS.\n\n![Main window: Graph view](img/1_Main_Window.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eMain window: Graph view\u003c/i\u003e\n\u003c/p\u003e\n\n\n![Main window: Data model view](img/15_Extension_manager.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eExtension manager: Select and execute extensions\u003c/i\u003e\n\u003c/p\u003e\n\n\n![Main window: Data model view](img/4_Pandapower_DataFrames.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eMain window: Data model view - Tables arranged in tabs\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\u003c/br\u003e\n\nThe EGS main window is organized as follows:\n\n*  The main work area can display either the **Graph** or the **Data model**. The **Data model** is shown as a set of tables arranged in tabs. For more information about this data (including the meaning of column names), see the [pandapower documentation](https://pandapower.readthedocs.io/).\n* The left side toolbar lists the supported components. An element is added to the **Graph** by clicking on the corresponding icon. In some cases, an icon may represent a category (e.g., loads).  In such cases, a dialog allows you to choose the required type within that category. For example, in the loads category, six different types are available.\nSwitches work in a different way. According to ```pandapower```, switches can be added between two buses or between a bus and a line (AC line) or transformer. Thus, if you want to do the first, just select two buses and then click the switch button. On the contrary, if you want to add a switch next to a line (or transformer), select only the corresponding element and then click the switch button. In this case, a new dialog will allow you to select the bus.\n* The upper toolbar is divided into three parts. The left part contains the file functions and the calculation options. Here it is possible to open/save files, export only the **Data model** (to JSON, pickle format or MS Excel), or simply delete the network and start a new one. The *\"play\"* button opens the dialog for a power flow calculation. Meanwhile, the right side gives access to the basic network configuration (name, base system power and rated frequency) and to the application settings dialog. The fuzzy search launcher and the extension manager are displayed at the center. In order to run an extension, just select one of them and click the run button.\n* The status bar at the bottom will notify when the grid has been modified and has not been saved. On the right, the status bar shows the file name.\n* The menu bar includes most of the options available in the toolbars.\n\n## Main features\n\n### Nodes and ports\nA **node** element is a component added to the **Graph**. A **node** should not be mistaken for a network **bus**. Any component of the grid is represented by a **node** in the **Graph**. For this reason, there is a *node type* for each type of component supported by EGS.\n\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"./img/3_Widgets.png\" alt=\"Symmetric load node\" width=\"300\"\u003e\n\u003c/p\u003e\n\u003cp align = \"center\"\u003e\n\u003ci\u003eNode element (example: symmetric load with an output port)\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\u003c/br\u003e\n\nSome nodes provide widgets that work as shortcuts for some of their main features. For example, a symmetric load node has three widgets (as shown above) to set the real and reactive power demands, and a scale factor. However, all the node parameters are accessed from a dialog after double clicking on the node, as shown below. Additionally, the node name can be modified after double clicking on it.\n\n![Node dialog](img/2_Dialogs.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eNode dialog (example for a symmetric load node)\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\u003c/br\u003e\n\nNode types (component types) are distinguished by color. For example, a line is represented by a different color than the one used for a transformer. Two- and three-winding transformers have nodes with the same color, but differs in the number of connections. Additionally, most of the nodes present a symbol (icon) identifying the type of component.\n\nNodes can have input and output ports. Connections are made by linking an output port on one node with an input port on another node. For example, to connect a generator to a bus, you can link the output port of the generator to the input port of the bus.\n\nWhen a node is displayed in horizontal layout, input ports are placed on the left and output ports on the right. In the vertical layout, input ports are placed at the top and output ports at the bottom. For convenience, nodes with a single port can be flipped, so that an input port becomes an output port, or vice versa. Additionally, buses are represented since version 0.0.8.4 with four-port nodes, which means that one output port is placed on the right and one at the bottom, and similar locations are available for two input ports (left and top).\n\nThe distinction between input and output ports has another use in certain components. For example, in a two-winding transformer, the input port represents the *high voltage side* (hv), while the output port corresponds to the *low voltage side* (lv). In this case, to make it easier to distinguish, these ports have different shapes. In an AC line, input and output ports refer to the *\"from bus\"* and *\"to bus\"* sides, respectively. On the contrary, there is no distinction between input and output ports in a bus, which correspond to the same point.\n\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"./img/6_Line_and_transformer_nodes.png\" alt=\"AC line and two-winding transformer nodes\" width=\"350\"\u003e\n\u003c/p\u003e\n\u003cp align = \"center\"\u003e\n\u003ci\u003eTwo-winding transformer and AC line nodes\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\u003c/br\u003e\n\nWhen a bus node is added to the **Graph**, it is immediately inserted also into the **Data model**. But this is not the case with other components, which are included in the **Data model** only when they are connected. This behavior is due to the fact that ```pandapower``` requires the connection points to insert a new element into the grid (with the only exception of the bus component). But this has an advantage: you can disconnect an element and connect it again in a different place, without losing the parameters configured in the node, which remain stored in the **Graph**. EGS will take care of maintaining the synchronization with the **Data model**.\n\n### Simulations and calculations\nWith EGS you can build and set up the model of an electrical grid in a graphical way. The application also allows you to perform a *balanced power flow* calculation (other calculations supported by ```pandapower``` may be added in the future), including a *Balanced Altern Current Power Flow (ACPF)* and a *Direct Current Power Flow (DCPF)*. For other types of simulations and calculations, you can proceed according to two alternatives:\n\n1. Export the **Data model** and the last power flow results to a JSON, MS Excel or binary file (using the `pickle` module) ready to be imported from a Python script through ```pandapower```. Then, any calculation or processing can be done from the script. The export is done from the graphical interface, while the subsequent import is done as indicated [in the pandapower documentation](https://pandapower.readthedocs.io/en/latest/file_io.html#save-and-load-networks), using one of the fuctions: `pandapower.from_json()`, `pandapower.from_excel()` or `pandapower.from_pickle()`.\n\n2. Incorporate the required calculation functionality from an extension developed in Python. This way, the calculation is executed from within EGS. Extensions are implemented as regular Python packages. An Optimal Power Flow (OPF) extension is available in the PyPI repository (package name: **electricalsim-opf-quadratic**). **Instructions and a template for creating extensions will be available soon.**\n\nModels generated by EGS can be saved in a file containing both the **Graph** and the **Data model** (**.egs** file extension). You can then reopen the file whenever you need it and retrieve even the results of the last power flow run.\n\n\n### Running a balanced power flow (ACPF or DCPF)\nIn order to run a power flow, click on the ***play*** button at the upper toolbar. A new dialog gets opened. The first tab allows you to configure the parameters of the numerical method (solver) and other model settings. Then, execute the calculation using the ***Run power flow*** button.\n\n![Power flow dialog - First tab (settings)](img/7_PF1.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003ePower flow dialog - First tab (settings)\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\nThe sencond tab shows the results in the ```pandapower``` way (tables), while the third tab includes some plots:\n\n* Voltage magnitudes.\n* Voltage box plot.\n* Voltage magnitudes at load buses.\n* AC line loading (percentage rate).\n* AC line voltages.\n* Two- and three-winding transformer loading.\n* Reactive power on PV buses (voltage controled generators).\n\nIn bar voltage charts, the magnitud level is distinguished with different colors to emphasize acceptable values, under-voltages and over-voltages. Line and transformer overloads are also highlighted in red. In addition, the head of the plot usually includes some statistical results.\n\n![Power flow dialog - Second tab (pandapower results)](img/8_PF2.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003ePower flow dialog - Second tab (pandapower results)\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n\n![Power flow dialog - Third tab (plot results) - Voltages](img/9_PF3.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003ePower flow dialog - Third tab (plot results) - Voltages\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n\n![Power flow dialog - Third tab (plot results) - AC line loading](img/10_PF4.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003ePower flow dialog - Third tab (plot results) - AC line loading\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\nAfter closing the power flow dialog and returning to the *graph view*, you can place the cursor on a particular node and get a tooltip with the main results (see the screenshot below). For example, an AC line shows the loading percentage, and the real and reactive power transmitted (at the *\"from bus\"* and *\"to bus\"*). Most of the nodes show this kind of information.\n\n![Tooltip - Power flow results](img/11_PF_tooltips.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eTooltip - Power flow results\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n### Application settings\n\nThe application settings are saved in a ```config.ini``` file outside the installation directory. This way, your settings are maintained after updating the program. However, you can change them from a dialog window.\n\nSettings are classified into four categories:\n\n* **General:** Includes the theme, the background grid visibility, the connection style and a default working directory.\n\n* **Network:** Defaults grid name, power system base and rated frequency.\n\n* **Balanced power flow**: Mainly the default settings for the power flow solver.\n\n* **Default component parameters:** The defaults settings for every node type.\n\n![Settings dialog](img/12_App_settings.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eSettings dialog\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n![EGS with dark theme](img/1_Main_Window_dark.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eEGS with dark theme\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"./img/5_Connections_angle_b.png\" alt=\"Connections in angle style\" width=\"350\"\u003e\n\u003cimg src=\"./img/5_Connections_curved_b.png\" alt=\"Connections in curved style\" width=\"350\"\u003e\n\u003cimg src=\"./img/5_Connections_straight_b.png\" alt=\"Connections in straight style\" width=\"350\"\u003e\n\u003c/p\u003e\n\u003cp align = \"center\"\u003e\n\u003ci\u003eConnection style: angle, curved and straight\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\u003c/br\u003e\n\n### Shortcuts\n\n| Shortcut | Description |\n| -------- | ----------- |\n| ```Ctrl+N``` | Create a new session |\n| ```Ctrl+O``` | Open session from a **.egs** file |\n| ```Ctrl+S``` | Save session to a **.egs** file |\n| ```Ctrl+Shift+S``` | Save session as... |\n| ```Ctrl+E``` | Export **Data model** to a JSON, MS Excel or pickle file |\n| ```Ctrl+Z``` | Undo |\n| ```Ctrl+Shift+Z``` | Redo |\n| ```Del``` | Delete selected components in the **Graph** |\n| ```Ctrl+A``` | Select all the nodes in the **Graph** |\n| ```Ctrl+Shift+A``` | Unselect what is selected |\n| ```D``` | Disable the selected nodes |\n| ```R``` | Flip the selected nodes (works only with nodes that have only one port) |\n| ```Ctrl+D``` | Duplicate the selected nodes (switches cannot be duplicated) |\n| ```Ctrl++``` | Zoom in |\n| ```Ctrl+-``` | Zoom out |\n| ```=``` | Reset zoom |\n| ```F``` | Adjust the zoom level according to the selection |\n| ```V``` | Change selected nodes to the vertical layout |\n| ```H``` | Change selected nodes to the horizontal layout |\n| ```B``` | Add a bus at the cursor position |\n| ```Ctrl+Left``` | Vertical alignment of selected nodes (to the leftmost one) |\n| ```Ctrl+Right``` | Vertical alignment of selected nodes (to the rightmost one) |\n| ```Ctrl+Shift+V``` | Vertical alignment of selected nodes (centering) |\n| ```Ctrl+Down``` | Horizontal alignment of selected nodes (to the bottom one) |\n| ```Ctrl+Up``` | Horizontal alignment of selected nodes (to the top one) |\n| ```Ctrl+Shift+H``` | Horizontal alignment of selected nodes (centering) |\n| ```Ctrl+Shift+C``` | Automatic centering alignment of selected nodes |\n| ```Ctrl+F``` | Find a node by fuzzy search |\n| ```F1``` | Open the EGS website |\n| ```Shift+F1``` | Open the Pandapower documentation (online) |\n\n\u003e __Note__ \u003cbr\u003e\n\u003e * ```Undo``` and ```Redo``` only work for simple actions.\n\u003e * Pressing ```F``` without selected nodes will adjust the zoom level to show all the grid.\n\u003e * Pressing ```D``` will change the bool value for the ```in_service``` parameter in the **Data model**. This works for every component, except for switches.\n\u003e * For selecting nodes in the **Graph** you can use the left mouse button (```LMB```). Just click with the ```LMB```, hold and drag to mark the selection area.\n\u003e * Clicking with the ```LMB``` on the background will unselect all.\n\u003e * You can use ```Shift+LMB``` on a node in order to add it to the selection.\n\u003e * ```Ctrl+LMB``` or ```Shift+LMB``` on a selected node will unselect it.\n\u003e * The mouse scroll wheel can be used to zoom in and out.\n\u003e * Use the medium mouse button (```MMB```) to scroll over the **Graph**. Just click with the ```MMB```, hold and move.\n\u003e * Hold ```Shift+Alt+LMB``` to slice several connections (see the picture below).\n\nIf you prefer to use the mouse instead of keyboard shortcuts, just right click on the **Graph** and access a context menu that complements the upper toolbar and the menu bar.\n\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"./img/13_Disabling_nodes.png\" alt=\"Disabling nodes\" width=\"450\"\u003e\n\u003cp align = \"center\"\u003e\n\u003ci\u003eDisabling nodes\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"./img/slice_connections.png\" alt=\"Slicing connections\" width=\"450\"\u003e\n\u003cp align = \"center\"\u003e\n\u003ci\u003eSlicing connections\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n![Fuzzy search](img/fuzzy_search2.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eFuzzy search\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\u003c/br\u003e\n\n![Context menu](img/14_Context_menu.png)\n\u003cp align = \"center\"\u003e\n\u003ci\u003eContext menu\u003c/i\u003e\n\u003c/p\u003e\n\u003c/br\u003e\n\n# Installation\nEGS is installed using ```pip```, the official Python package manager.\n\nOn GNU/Linux and MacOS execute the following order in a terminal:\n```bash\npip install electricalsim\n```\n\nOn MS Windows you may prefer:\n```bash\npython -m pip install electricalsim\n```\n\nIf you want to install the latest development version:\n```bash\npython -m pip install git+https://github.com/aloytag/electrical-grid-simulator.git -U\n```\n\n## Upgrading EGS\nIn order to upgrade EGS via ```pip```, execute the following in a terminal:\n\n```bash\npip install electricalsim -U\n```\nOn MS Windows you may prefer:\n```bash\npython -m pip install electricalsim -U\n```\n\n## Running EGS\nOnce installed, you can run it with the command:\n\n```bash\negs\n```\n\nIf you prefer to run the program in a more practical way, just execute this command only once:\n\n```bash\negs-create-shortcut\n```\n\nThis will add a shortcut launcher to your desktop and to your application menu. Note that this launcher will not work if you are installing the application into a Python virtual environment.\n\n\n## Uninstalling\nIf you want to remove the application, execute:\n\n```bash\npip uninstall electricalsim\n```\n\nOn MS Windows:\n```bash\npython -m pip uninstall electricalsim\n```\n\nNote that shortcuts added with the ```egs-create-shortcut``` command are not removed. So you must delete them manually.\n\n## Installing extensions\n\nExtensions available in the PyPI repository can be installed using ```pip```. For example, the [Optimal Power Flow extension](https://github.com/aloytag/electricalsim-opf-quadratic) is installed with:\n\n```bash\npip install electricalsim-opf-quadratic\n```\n\nOn MS Windows:\n```bash\npython -m pip install electricalsim-opf-quadratic\n```\n\n# License\n\nThis project uses the [MIT license](https://github.com/aloytag/electrical-grid-simulator/blob/main/LICENSE).\n\nThe background image on the splash screen is based on the work of [David Gunter](https://www.flickr.com/photos/23812004@N03/6637323071), marked with a [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faloytag%2Felectrical-grid-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faloytag%2Felectrical-grid-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faloytag%2Felectrical-grid-simulator/lists"}