{"id":13736707,"url":"https://github.com/siepic/opics","last_synced_at":"2026-01-12T02:39:07.635Z","repository":{"id":43153911,"uuid":"285683246","full_name":"SiEPIC/opics","owner":"SiEPIC","description":"Photonic circuit simulator","archived":false,"fork":false,"pushed_at":"2023-03-02T06:35:34.000Z","size":31557,"stargazers_count":43,"open_issues_count":6,"forks_count":9,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-11-15T04:32:33.529Z","etag":null,"topics":["circuit","circuit-solver","photonics","python","python-package","siepic","siepic-photonics","silicon","silicon-photonics","simulator","solver","ubc-photonics-group"],"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/SiEPIC.png","metadata":{"files":{"readme":"README.rst","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}},"created_at":"2020-08-06T22:24:49.000Z","updated_at":"2024-09-30T20:14:13.000Z","dependencies_parsed_at":"2024-01-24T22:03:48.661Z","dependency_job_id":"b0863913-361b-4851-aa44-b62425f7b163","html_url":"https://github.com/SiEPIC/opics","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SiEPIC%2Fopics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SiEPIC%2Fopics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SiEPIC%2Fopics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SiEPIC%2Fopics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SiEPIC","download_url":"https://codeload.github.com/SiEPIC/opics/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253077111,"owners_count":21850272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["circuit","circuit-solver","photonics","python","python-package","siepic","siepic-photonics","silicon","silicon-photonics","simulator","solver","ubc-photonics-group"],"created_at":"2024-08-03T03:01:26.966Z","updated_at":"2026-01-12T02:39:07.623Z","avatar_url":"https://github.com/SiEPIC.png","language":"Python","funding_links":[],"categories":["simulation"],"sub_categories":[],"readme":"|build_badge| |license| |pypi|\n==============================================\n\n|opics_logo|\n\nOpen Photonic Integrated Circuit Simulator (OPICS)\n==================================================\n\n**OPICS** is an S-parameter based photonic integrated circuit simulator. For more information, refer to OPICS  `Documentation \u003chttps://jaspreetj.github.io/opics/html/index.html\u003e`__\n\n\nOPICS Quickstart\n================\n\nInstalling OPICS\n----------------\n\nInstalling from pypi\n~~~~~~~~~~~~~~~~~~~~\n\nThe easiest way to install OPICS is using pip pypi:\n\n.. code:: console\n\n\n   pip install opics\n\nInstalling from source\n~~~~~~~~~~~~~~~~~~~~~~\n\nDownload the OPICS source code.\n\n.. code:: console\n\n\n   git clone https://github.com/jaspreetj/opics\n\nInstall the OPICS package using ``pip``.\n\n.. code:: console\n\n\n   pip install -e ./opics\n\nand upgrade using\n\n.. code:: console\n\n\n   pip install opics --upgrade\n\nOnce the package is installed, it can be imported using:\n\n.. code:: ipython3\n\n    import opics\n\n\n.. parsed-literal::\n\n\n       ____  ____  _______________\n      / __ \\/ __ \\/  _/ ____/ ___/\n     / / / / /_/ // // /    \\__ \\\n    / /_/ / ____// // /___ ___/ /\n    \\____/_/   /___/\\____//____/\n\n    OPICS version 0.3.1\n\n\nOPICS Libraries\n---------------\n\nListing available libraries\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe package does not come with any component libraries pre-installed.\nYou can select and download available libraries from the library\ncatalogue.\n\n.. code:: ipython3\n\n    library_catalogue = opics.libraries.library_catalogue\n\n    print(f\"Available Libraries: {[_ for _ in library_catalogue.keys()]} \")\n\n\n.. parsed-literal::\n\n    Available Libraries: ['ebeam', 'shuksan']\n\n\nDownloading libraries\n~~~~~~~~~~~~~~~~~~~~~\n\nThe OPICS libraries are downloaded by passing in ``library_name``,\n``library_url``, and ``library_path`` to the\n``libraries.download_library`` module. The module returns ``True`` if\nthe library is downloaded successfully.\n\n.. code:: ipython3\n\n    library = library_catalogue[\"ebeam\"]\n\n\n    import os\n    installation_path = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop\\\\delete')\n\n    opics.libraries.download_library(\n        library_name=library[\"name\"],\n        library_url=library[\"dl_link\"],\n        library_path=installation_path,\n    )\n\n    # reload libraries\n    import importlib\n    importlib.reload(opics.libraries)\n\n\n\n\n.. parsed-literal::\n\n    \u003cmodule 'opics.libraries' from 'c:\\\\users\\\\jeida\\\\documents\\\\github\\\\dev-jaspreetj\\\\opics\\\\opics\\\\libraries\\\\__init__.py'\u003e\n\n\n\nList installed libraries\n~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: ipython3\n\n    opics.libraries.installed_libraries\n\n\n\n\n.. parsed-literal::\n\n    ['ebeam']\n\n\n\nList library components\n~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: ipython3\n\n    opics.libraries.ebeam.components_list\n\n\n\n\n.. parsed-literal::\n\n    ['BDC',\n     'DC_halfring',\n     'GC',\n     'Switch',\n     'TunableWG',\n     'Waveguide',\n     'Y',\n     'ebeam_y_1550',\n     'ebeam_gc_te1550',\n     'ebeam_wg_integral_1550']\n\n\n\nRemove libraries\n~~~~~~~~~~~~~~~~\n\nAny of the installed libraries can be removed using the\n``libraries.remove_library`` module.\n\n.. code:: ipython3\n\n    opics.libraries.remove_library(\"ebeam\")\n\n    importlib.reload(opics.libraries)\n\n    print(opics.libraries.installed_libraries)\n\n\n.. parsed-literal::\n\n    []\n\n\n.. code:: ipython3\n\n    #reinstall ebeam library\n    opics.libraries.download_library(\n        library_name=library[\"name\"],\n        library_url=library[\"dl_link\"],\n        library_path=installation_path,\n    )\n\n    importlib.reload(opics.libraries)\n\n    print(opics.libraries.installed_libraries)\n\n\n.. parsed-literal::\n\n    Download start\n    Download finished.\n    ['ebeam']\n\n\nLibrary components\n~~~~~~~~~~~~~~~~~~\n\nLet’s take a look at the library components.\n\n.. code:: ipython3\n\n    ebeam_lib = opics.libraries.ebeam\n\nListing library components\n\n.. code:: ipython3\n\n    ebeam_lib.components_list\n\n\n\n\n.. parsed-literal::\n\n    ['BDC',\n     'DC_halfring',\n     'GC',\n     'Switch',\n     'TunableWG',\n     'Waveguide',\n     'Y',\n     'ebeam_y_1550',\n     'ebeam_gc_te1550',\n     'ebeam_wg_integral_1550']\n\n\n\nLet’s take a look inside a component for more information on its\nparameters and layout, such as port locations.\n\n.. code:: ipython3\n\n    ebeam_lib.Y?\n\nSetting up a simulation\n-----------------------\n\nThe network module is used to define a circuit, add and connect\ncomponents. The network module takes ``network_id`` and ``f`` as inputs.\nIf no ``f`` or frequency data points specified, the network module uses\nthe default value specified in ``opics.globals.F``.\n\n.. code:: ipython3\n\n    from opics import Network\n    from opics.globals import C\n    import numpy as np\n\n    freq = np.linspace(C * 1e6 / 1.5, C * 1e6 / 1.6, 2000)\n    circuit = Network(network_id=\"circuit_name\", f=freq)\n\nOnce an empty network is defined. We can start by adding components.\n\n.. code:: ipython3\n\n    input_gc = circuit.add_component(ebeam_lib.GC)\n    y = circuit.add_component(ebeam_lib.Y)\n    wg2 = circuit.add_component(ebeam_lib.Waveguide, params=dict(length=0e-6))\n    wg1 = circuit.add_component(ebeam_lib.Waveguide, params={\"length\":15e-6})\n    y2 = circuit.add_component(ebeam_lib.Y)\n    output_gc = circuit.add_component(ebeam_lib.GC)\n\nWe can also define custom port names for components for easy reference.\n\n.. code:: ipython3\n\n    input_gc.set_port_reference(0, \"input_port\")\n    output_gc.set_port_reference(0, \"output_port\")\n\nConnect components using the ``Network.connect`` module.\n\n.. code:: ipython3\n\n    circuit.connect(input_gc, 1, y, 0)\n    circuit.connect(y, 1, wg1, 0)\n    circuit.connect(y, 2, wg2, 0)\n    circuit.connect(y2, 0, output_gc, 1)\n    circuit.connect(wg1, 1, y2, 1)\n    circuit.connect(wg2, 1, y2, 2)\n\nSimulate the network/circuit\n\n.. code:: ipython3\n\n    circuit.simulate_network()\n\n\n\n\n.. parsed-literal::\n\n    \u003copics.components.componentModel at 0x2334a11daf0\u003e\n\n\n\nPlot the simulated response\n\n.. code:: ipython3\n\n    circuit.sim_result.plot_sparameters(show_freq=False)\n\n\n\n.. image:: /notebooks/_static/00-Quickstart_files/00-Quickstart_30_0.png\n\n\nAn interactive plot can be spawned by enabling the interactive option.\n\n.. code:: ipython3\n\n    circuit.sim_result.plot_sparameters(show_freq=False, interactive=True)\n\n\n\n\n\n\n\n.. raw:: html\n\n\n    \u003cdiv class=\"logo-block\"\u003e\n    \u003cimg src='data:image/png;base64,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\n    roTBs2RqAAAAAElFTkSuQmCC'\n         style='height:25px; border-radius:12px; display: inline-block; float: left; vertical-align: middle'\u003e\u003c/img\u003e\n\n\n      \u003cimg src='data:image/png;base64,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'\n           style='height:15px; border-radius:12px; display: inline-block; float: left'\u003e\u003c/img\u003e\n\n\n\n\n\n    \u003c/div\u003e\n\n\n\n\n.. raw:: html\n\n\n\n\n\n\n\n    \u003cdiv class=\"bk-root\" id=\"adec95e7-a32f-409f-b9d3-8b619f0fb385\" data-root-id=\"1258\"\u003e\u003c/div\u003e\n    \nCiting\n~~~~~~\n\n``OPICS`` is written by Jaspreet Jhoja. You can cite the package as\n\n::\n\n   @misc{jhoja-2020-opics,\n     author = {Jaspreet Jhoja},\n     title = {OPICS: An Open Photonic Integrated Circuit Solver},\n     year = {2020},\n     publisher = {GitHub},\n     journal = {GitHub repository},\n     howpublished = {\\url{https://github.com/SiEPIC-Kits/OPICS}}\n   }\n\nLicense\n~~~~~~~\n\nCopyright © 2022, Jaspreet Jhoja, `MIT License \u003chttps://github.com/jaspreetj/opics/blob/master/LICENSE\u003e`__\n\n\n\n.. |opics_logo| image:: /docs/source/_static/_images/opics_logo.png\n\n.. |pypi| image:: https://img.shields.io/pypi/v/opics?color=blue\n          :target: https://pypi.python.org/pypi/opics\n.. |license| image:: https://img.shields.io/badge/License-MIT-yellow.svg\n            :target: https://github.com/jaspreetj/opics/blob/master/LICENSE\n.. |build_badge| image:: https://github.com/jaspreetj/opics/actions/workflows/CI.yml/badge.svg?branch=master\n                 :target: https://github.com/jaspreetj/opics/actions/workflows/CI.yml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiepic%2Fopics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsiepic%2Fopics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsiepic%2Fopics/lists"}