diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0a3111d33..1c3df23af 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,9 +2,9 @@ name: Tests on: # Run this workflow every time a new commit is pushed to or a pull request is created from one of these branches push: - branches: [main, "stable/*"] + branches: [main, 'stable/*'] pull_request: - branches: [main, "stable/*"] + branches: [main, 'stable/*'] jobs: # NOTE: The ubuntu-22.04 and macos-latest tests have been separated out because ubuntu # requires installing some additional libraries (libglu1-mesa) for Gmsh to run. Please @@ -17,7 +17,7 @@ jobs: # Set matrix for runs-on strategy: matrix: - python-version: ["3.9", "3.10"] + python-version: ['3.9', '3.10'] steps: - name: Checkout code uses: actions/checkout@v3 @@ -36,8 +36,9 @@ jobs: ubuntu-latest-${{ matrix.python-version }} - name: Install Deps run: | - python -m pip install -U tox==4.11.0 setuptools==67.3.1 virtualenv==20.24.3 wheel==0.38.4 - sudo apt install libglu1-mesa=9.0.2-1 libglu1-mesa-dev=9.0.2-1 + python -m pip install -U tox setuptools virtualenv wheel + sudo apt update + sudo apt install libglu1-mesa libglu1-mesa-dev libegl1-mesa - name: Install and Run Tests run: tox -e py macos-tests: @@ -48,7 +49,7 @@ jobs: # Set matrix for runs-on strategy: matrix: - python-version: ["3.9", "3.10"] + python-version: ['3.9', '3.10'] steps: - name: Chekout code uses: actions/checkout@v3 @@ -74,7 +75,7 @@ jobs: runs-on: windows-2022 strategy: matrix: - python-version: ["3.9", "3.10"] + python-version: ['3.9', '3.10'] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} @@ -146,7 +147,7 @@ jobs: sudo apt install -y graphviz=2.42.2-6 pandoc=2.9.2.1-3ubuntu2 qtbase5-dev=5.15.3+dfsg-2ubuntu0.2 qt5-qmake=5.15.3+dfsg-2ubuntu0.2 - name: Build Docs run: tox -edocs - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: html_docs path: docs/_build/html diff --git a/.gitignore b/.gitignore index ebd21023e..b89021976 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,7 @@ instance/ # User Folders: .scrapy _sandbox_/ +_debug/ qiskit_metal/qlibrary/user_components/* !qiskit_metal/qlibrary/user_components/__init__.py !qiskit_metal/qlibrary/user_components/my_qcomponent.py @@ -92,6 +93,7 @@ celerybeat-schedule # virtualenv .venv venv/ +venvz/ ENV/ # Spyder project settings diff --git a/.pylintrc b/.pylintrc index 395adc8bf..fc036d79e 100644 --- a/.pylintrc +++ b/.pylintrc @@ -6,7 +6,7 @@ # A comma-separated list of package or module names from where C extensions may # be loaded. Extensions are loading into the active Python interpreter and may # run arbitrary code. -extension-pkg-whitelist=PySide2 +extension-pkg-whitelist=PySide6,gdstk # Add files or directories to the blacklist. They should be base names, not # paths. @@ -91,7 +91,7 @@ disable=apply-builtin,         dict-values-not-iterating,         dict-view-method,         div-method, -        eq-without-hash, +;         eq-without-hash,         exception-escape,         exception-message-attribute,         execfile-builtin, @@ -108,21 +108,21 @@ disable=apply-builtin,         intern-builtin,         invalid-str-codec,         locally-disabled, -        logging-fstring-interpolation  # fstrings inside logging + logging-fstring-interpolation, # fstrings inside logging         long-builtin, -        long-suffix, +;         long-suffix,         map-builtin-not-iterating,         metaclass-assignment, missing-module-docstring,         next-method-called,         next-method-defined,         no-absolute-import, -        non-ascii-bytes-literal, +;         non-ascii-bytes-literal,         nonzero-method,         oct-method,         old-division, -        old-ne-operator, -        old-octal-literal, +;         old-ne-operator, +;         old-octal-literal,         old-raise-syntax,         parameter-unpacking,         print-statement, @@ -339,8 +339,8 @@ max-module-lines=1000 # separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}. # `trailing-comma` allows a space between comma and closing bracket: (a, ). # `empty-line` allows space-only lines. -no-space-check=trailing-comma, - dict-separator +; no-space-check=trailing-comma, +; dict-separator # Allow the body of a class to be on the same line as the declaration if body # contains single statement. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6b9aaf03c..b075bd494 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,15 +43,16 @@ https://google.github.io/styleguide/pyguide.html) for auto formatting. The custo #### VSCode Setup +Steps: +1. Install the following extensions: `python` and `yapf` if you have not yet. +2. Add the following workspace setting in the workspace `settings.json`. + If you are using VSCode for your code editor, you can add these settings to your `settings.json` to enforce your code to our style. Make sure to add PySide2 to the linter: -``` +```json { "python.linting.pylintEnabled": true, "python.linting.enabled": true, - "python.linting.pylintArgs": [ - "--extension-pkg-whitelist=PySide2" - ], "python.formatting.provider": "yapf", "editor.formatOnSave": true, "files.trimTrailingWhitespace": true, @@ -59,6 +60,21 @@ to your `settings.json` to enforce your code to our style. Make sure to add PySi } ``` + +In newer versions of VS Code: +```json +{ + "editor.formatOnSave": true, + "files.trimTrailingWhitespace": true, + "files.trimFinalNewlines": true, + "editor.defaultFormatter": "eeyore.yapf", + "notebook.defaultFormatter": "eeyore.yapf", + "[python]": { + "editor.defaultFormatter": "eeyore.yapf" + } +} +``` + ### Code Review Code review is done in the open and open to anyone. While only maintainers have access to merge commits, providing feedback on pull requests is very valuable and helpful. It is also a good mechanism to learn about the code base. You can view a list of all open pull requests to review any open pull requests and provide feedback on it. diff --git a/README.md b/README.md index 96bcff0a3..98425c480 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ We're excited to share that we're nearing the completion of porting Qiskit Metal from PySide2 to PySide6! This update enables native support for M* Macs (Apple Silicon) and includes several other enhancements for the upcoming release. Please take a moment to review and provide feedback on [Pull Request #1002](https://github.com/qiskit-community/qiskit-metal/pull/1002) before we proceed with merging and tagging. Your input is invaluable to ensure the release meets everyone's expectations. Thank you for your continued contributions! ## Installation -If you are interested in customizing your experience, or if you are unable to install qiskit-metal using the `pip install` instructions below, consider installing directly the source code, following the instructions in the [documentation](https://qiskit-community.github.io/qiskit-metal/installation.html) and/or the [installation instructions for developers](https://github.com/Qiskit/qiskit-metal/blob/main/README_developers.md). +If you are interested in customizing your experience, or if you are unable to install qiskit-metal using the `pip install` instructions below, consider installing directly the source code, following the instructions in the [documentation](https://qiskit-community.github.io/qiskit-metal/installation.html) and/or the [installation instructions for developers](https://github.com/Qiskit/qiskit-metal/blob/main/README_Developers.md). For normal use, please continue reading. @@ -106,11 +106,153 @@ We use [GitHub issues](https://github.com/Qiskit/qiskit-metal/issues) for tracki [join the Qiskit Slack community](https://qisk.it/join-slack) and use our [Qiskit Slack channel](https://qiskit.slack.com) for discussion and simple questions. For questions that are more suited for a forum we use the Qiskit tag in the [Stack Exchange](https://quantumcomputing.stackexchange.com/questions/tagged/qiskit). + ## Next Steps Now you're set up and ready to check out some of the other examples from our [Qiskit Metal Tutorials](https://github.com/Qiskit/qiskit-metal/blob/main/tutorials/) repository or [Qiskit Metal Documentation](https://qiskit-community.github.io/qiskit-metal/tut/). + + +--- + +# Big Picture Architecutre Overview + +### Diagram + +The **Qiskit Metal** codebase is organized into several key modules, each with a distinct role in enabling the design, analysis, and visualization of quantum circuits. Below is an overview of the primary components and their interactions, discussed deeper in the [Architecture Readme](README_Architecture.md) and the docs: + +```mermaid + %%{init: {"flowchart": {"htmlLabels": true}, 'theme':'forest'} }%% + graph TB + classDef core fill:#87cefa,stroke:#000000; + classDef gui fill:#FFDDC1,stroke:#000000; + classDef renderer fill:#DBB9FF,stroke:#000000; + classDef utility fill:#FFD700,stroke:#000000; + classDef design fill:#90EE90,stroke:#000000; + classDef analysis fill:#FFB6C1,stroke:#000000; + + subgraph Qiskit_Metal + subgraph Core + QLibraryComponents["QLibrary Components"] + QDesign["QDesign"] + QComponent["QComponent"] + QRoute["QRoute"] + BaseQubit["BaseQubit"] + end + + subgraph GUI + MetalGUI["MetalGUI"] + end + + subgraph Renderers + QRenderer["QRenderer"] + QRendererGui["QRendererGui"] + QGDSRenderer["QGDSRenderer"] + QAnsysRenderer["QAnsysRenderer"] + QHFSSRenderer["QHFSSRenderer"] + QQ3DRenderer["QQ3DRenderer"] + QPyaedt["QPyaedt"] + QGmshRenderer["QGmshRenderer"] + QElmerRenderer["QElmerRenderer"] + end + + subgraph Analyses + Hamiltonian["Hamiltonian"] + Sweep_Options["Sweep_Options"] + end + + subgraph Utilities + Parsing["Parsing"] + Exceptions["Exceptions"] + Logging["Logging"] + Toolbox["Toolbox"] + end + end + + QLibraryComponents --> QDesign + QRenderer --> QDesign + QRendererGui --> QRenderer + MetalGUI --> QRendererGui + MetalGUI --> QLibraryComponents + MetalGUI --> QDesign + QGDSRenderer --> QRenderer + QAnsysRenderer --> QRenderer + QHFSSRenderer --> QRenderer + QQ3DRenderer --> QRenderer + QPyaedt --> QRenderer + QGmshRenderer --> QRenderer + QElmerRenderer --> QRenderer + Parsing --> QDesign + Exceptions --> QDesign + Logging --> QDesign + Toolbox --> QDesign + QDesign --> QComponent + QDesign --> QRoute + QDesign --> BaseQubit + Hamiltonian --> QDesign + Sweep_Options --> QDesign + + class QLibraryComponents,QDesign,QComponent,QRoute,BaseQubit core; + class MetalGUI gui; + class QRenderer,QRendererGui,QGDSRenderer,QAnsysRenderer,QHFSSRenderer,QQ3DRenderer,QPyaedt,QGmshRenderer,QElmerRenderer renderer; + class Parsing,Exceptions,Logging,Toolbox utility; + class Hamiltonian,Sweep_Options analysis; +``` + + +### Core +The **Core** module serves as the backbone of Qiskit Metal, housing essential elements for design and component creation: +- **QLibrary Components**: Predefined library of quantum circuit elements, such as qubits and resonators, that can be used in designs. +- **QDesign**: The central design framework that integrates all components and handles design rules. +- **QComponent**: Base class for all components in the design. +- **QRoute**: Specialized class for managing connections between components. +- **BaseQubit**: Represents foundational qubit structures used in circuit designs. + +### Renderers +The **Renderers** module facilitates exporting designs to external tools for electromagnetic simulation and layout rendering: +- **QRenderer**: Base class for all renderers. +- **QRendererGui**: GUI interface for managing renderers. +- Specialized renderers like: + - **QGDSRenderer** + - **QAnsysRenderer** + - **QHFSSRenderer** + - **QQ3DRenderer** + - **QPyaedt** + - **QGmshRenderer** + - **QElmerRenderer** + +These renderers enable integration with industry-standard tools for detailed simulation and fabrication. + +### Analyses +The **Analyses** module includes tools for performing simulations and extracting insights from designs: +- **Hamiltonian**: Supports calculations of Hamiltonian parameters. +- **Sweep Options**: Provides tools for parametric sweeps and optimizations. + + +### GUI +The **GUI** module provides tools for user-friendly interaction with Qiskit Metal. The **MetalGUI** clas is the primary graphical interface for managing designs and visualizations. It is discussed in more depth in the [Architecture Readme](README_Architecture.md). + +### Utilities +The **Utilities** module supports the overall functionality of Qiskit Metal by offering supplementary tools. + + + +### Key Interactions +- The **Core** modules form the foundation and integrate tightly with the **Renderers**, **GUI**, and **Analyses** modules. +- The **GUI** depends on the **Core** and **Renderers** to provide visualization and interactivity. +- The **Renderers** serve as bridges between Qiskit Metal and external tools, interacting with the **Core** to export designs. +- The **Analyses** modules leverage the **Core** to extract meaningful data for optimization and validation. +- The **Utilities** modules provide essential supporting functionalities across the entire codebase. + +This modular structure ensures scalability, flexibility, and ease of use for designing, analyzing, and fabricating quantum circuits. + + +--- + +# Backmatter + ## Authors and Citation Qiskit Metal is the work of [many people](https://github.com/Qiskit/qiskit-metal/pulse/monthly) who contribute to the project at different levels. Metal was conceived and developed by [Zlatko Minev](https://www.zlatko-minev.com) at IBM; then co-led with Thomas McConkey. If you use Qiskit Metal, please cite as per the included [BibTeX file](https://github.com/Qiskit/qiskit-metal/blob/main/Qiskit_Metal.bib). For icon attributions, see [here](https://github.com/Qiskit/qiskit-metal/blob/main/qiskit_metal/_gui/_imgs/icon_attributions.txt). + ## Changelog and Release Notes The changelog provides a quick overview of notable changes for a given release. @@ -122,3 +264,5 @@ Additionally, as part of each release detailed release notes are written to docu ## License [Apache License 2.0](https://github.com/Qiskit/qiskit-metal/blob/main/LICENSE.txt) + + diff --git a/README_ARCH.md b/README_ARCH.md deleted file mode 100644 index fa66077ca..000000000 --- a/README_ARCH.md +++ /dev/null @@ -1,57 +0,0 @@ -# Qiskit Metal Architecture -The high level Metal architecture is diagramed in the overview below. The user workflow is diagramed in the workflow link below as well. - -* [Overview](/docs/overview.rst) -* [Workflow](/docs/workflow.rst) - -## Required Attributes - -### QLibrary Components -A base qlibrary component contains several attributes and a method that must be overridden by qlibrary components that extend the base. - -**Attributes** -| Attribute | Description | -| ------------------ | ------------------------------------------------------ | -| default_options | Default drawing options | -| component_metadata | Component metadata | -| options | A dictionary of the component-designer-defined options | - -**Methods** -| Method | Description | -| ------ | ----------- | -| make | The make function implements the logic that creates the geometry (poly, path, etc.) from the qcomponent.options dictionary of parameters, and the adds them to the design, using qcomponent.add_qgeometry(...), adding in extra needed information, such as layer, subtract, etc. | - -### QRenderer -A base qrenderer contains several attributes and several methods that must be overridden by qrenderers that extend the base. - -**Attributes** -| Attribute | Description | -| ------------------ | ----------------------------- | -| name | Renderer name | -| element_extensions | Element extensions dictionary | -| element_table_data | Element table data | - -**Methods** -| Method | Description | -| ------------------- | --------------------------------------------------------------------------------------- | -| render_chips | Render all chips of the design. Calls render_chip for each chip. | -| render_chip | Render the given chip. | -| render_components | Render all components of the design. If selection is none, then render all components. | -| render_component | Render the specified component. | -| render_element | Render the specified element. | -| render_element_path | Render an element path. | -| render_element_poly | Render an element poly. | - -### QRendererGui -In addition to the attributes and methods that must be overwritten by any QRenderer, a base qrenderergui has additional methods that must be overwritten by all qrendererguis that extend the base. - -| Method | Description | -| ----------------- | --------------------------- | -| setup_fig | Setup the given figure. | -| style_axis | Style the axis. | -| render_design | Render the design. | -| render_component | Render the given component. | -| render_shapely | Render shapely. | -| render_connectors | Render connectors. | -| clear_axis | Clear the axis. | -| clear_figure | Clear the figure. | diff --git a/README_Architecture.md b/README_Architecture.md new file mode 100644 index 000000000..7c4ae9e03 --- /dev/null +++ b/README_Architecture.md @@ -0,0 +1,213 @@ +# Qiskit Metal Architecture +The high level Metal architecture is diagramed in the overview below. The user workflow is diagramed in the workflow link below as well. + +* [Overview](/docs/overview.rst) +* [Workflow](/docs/workflow.rst) + + +## Big Picture Architecutre Overview + +### Diagram + +```mermaid + %%{init: {"flowchart": {"htmlLabels": true}, 'theme':'forest'} }%% + graph TB + classDef core fill:#87cefa,stroke:#000000; + classDef gui fill:#FFDDC1,stroke:#000000; + classDef renderer fill:#DBB9FF,stroke:#000000; + classDef utility fill:#FFD700,stroke:#000000; + classDef design fill:#90EE90,stroke:#000000; + classDef analysis fill:#FFB6C1,stroke:#000000; + + subgraph Qiskit_Metal + subgraph Core + QLibraryComponents["QLibrary Components"] + QDesign["QDesign"] + QComponent["QComponent"] + QRoute["QRoute"] + BaseQubit["BaseQubit"] + end + + subgraph GUI + MetalGUI["MetalGUI"] + ElementsWindow["ElementsWindow"] + NetListWindow["NetListWindow"] + ComponentWidget["ComponentWidget"] + QTableView_AllComponents["QTableView_AllComponents"] + QTreeView_Options["QTreeView_Options"] + QTextEditLogger["QTextEditLogger"] + end + + subgraph Renderers + QRenderer["QRenderer"] + QRendererGui["QRendererGui"] + QGDSRenderer["QGDSRenderer"] + QAnsysRenderer["QAnsysRenderer"] + QHFSSRenderer["QHFSSRenderer"] + QQ3DRenderer["QQ3DRenderer"] + QPyaedt["QPyaedt"] + QGmshRenderer["QGmshRenderer"] + QElmerRenderer["QElmerRenderer"] + end + + subgraph Analyses + Hamiltonian["Hamiltonian"] + Sweep_Options["Sweep_Options"] + end + + subgraph Utilities + Parsing["Parsing"] + Exceptions["Exceptions"] + Logging["Logging"] + Toolbox["Toolbox"] + end + end + + QLibraryComponents --> QDesign + QRenderer --> QDesign + QRendererGui --> QRenderer + MetalGUI --> QRendererGui + MetalGUI --> QLibraryComponents + MetalGUI --> QDesign + MetalGUI --> ElementsWindow + MetalGUI --> NetListWindow + MetalGUI --> ComponentWidget + MetalGUI --> QTableView_AllComponents + MetalGUI --> QTreeView_Options + MetalGUI --> QTextEditLogger + QGDSRenderer --> QRenderer + QAnsysRenderer --> QRenderer + QHFSSRenderer --> QRenderer + QQ3DRenderer --> QRenderer + QPyaedt --> QRenderer + QGmshRenderer --> QRenderer + QElmerRenderer --> QRenderer + Parsing --> QDesign + Exceptions --> QDesign + Logging --> QDesign + Toolbox --> QDesign + QDesign --> QComponent + QDesign --> QRoute + QDesign --> BaseQubit + Hamiltonian --> QDesign + Sweep_Options --> QDesign + + class QLibraryComponents,QDesign,QComponent,QRoute,BaseQubit core; + class MetalGUI,ElementsWindow,NetListWindow,ComponentWidget,QTableView_AllComponents,QTreeView_Options,QTextEditLogger gui; + class QRenderer,QRendererGui,QGDSRenderer,QAnsysRenderer,QHFSSRenderer,QQ3DRenderer,QPyaedt,QGmshRenderer,QElmerRenderer renderer; + class Parsing,Exceptions,Logging,Toolbox utility; + class Hamiltonian,Sweep_Options analysis; +``` + + + +The **Qiskit Metal** codebase is organized into several key modules, each with a distinct role in enabling the design, analysis, and visualization of quantum circuits. Below is an overview of the primary components and their interactions: + +### Core +The **Core** module serves as the backbone of Qiskit Metal, housing essential elements for design and component creation: +- **QLibrary Components**: Predefined library of quantum circuit elements, such as qubits and resonators, that can be used in designs. +- **QDesign**: The central design framework that integrates all components and handles design rules. +- **QComponent**: Base class for all components in the design. +- **QRoute**: Specialized class for managing connections between components. +- **BaseQubit**: Represents foundational qubit structures used in circuit designs. + +### GUI +The **GUI** module provides tools for user-friendly interaction with Qiskit Metal: +- **MetalGUI**: The primary graphical interface for managing designs and visualizations. +- **ElementsWindow**: Displays available circuit elements. +- **NetListWindow**: Shows the connections between components. +- **ComponentWidget**: Offers detailed views and controls for individual components. +- **QTableView_AllComponents**: Lists all components in the design. +- **QTreeView_Options**: Presents configuration options in a tree structure. +- **QTextEditLogger**: Logs activities and messages for troubleshooting and feedback. + +### Renderers +The **Renderers** module facilitates exporting designs to external tools for electromagnetic simulation and layout rendering: +- **QRenderer**: Base class for all renderers. +- **QRendererGui**: GUI interface for managing renderers. +- Specialized renderers like: + - **QGDSRenderer** + - **QAnsysRenderer** + - **QHFSSRenderer** + - **QQ3DRenderer** + - **QPyaedt** + - **QGmshRenderer** + - **QElmerRenderer** + +These renderers enable integration with industry-standard tools for detailed simulation and fabrication. + +### Analyses +The **Analyses** module includes tools for performing simulations and extracting insights from designs: +- **Hamiltonian**: Supports calculations of Hamiltonian parameters. +- **Sweep Options**: Provides tools for parametric sweeps and optimizations. + +### Utilities +The **Utilities** module supports the overall functionality of Qiskit Metal by offering supplementary tools: +- **Parsing**: Manages data parsing for design input and output. +- **Exceptions**: Handles error reporting and debugging. +- **Logging**: Tracks system activities and events. +- **Toolbox**: Provides miscellaneous helper functions. + +--- + +### Key Interactions +- The **Core** modules form the foundation and integrate tightly with the **Renderers**, **GUI**, and **Analyses** modules. +- The **GUI** depends on the **Core** and **Renderers** to provide visualization and interactivity. +- The **Renderers** serve as bridges between Qiskit Metal and external tools, interacting with the **Core** to export designs. +- The **Analyses** modules leverage the **Core** to extract meaningful data for optimization and validation. +- The **Utilities** modules provide essential supporting functionalities across the entire codebase. + +This modular structure ensures scalability, flexibility, and ease of use for designing, analyzing, and fabricating quantum circuits. + + +## Required Attributes for Custom Components + +### QLibrary Components +A base qlibrary component contains several attributes and a method that must be overridden by qlibrary components that extend the base. + +**Attributes** +| Attribute | Description | +| ------------------ | ------------------------------------------------------ | +| default_options | Default drawing options | +| component_metadata | Component metadata | +| options | A dictionary of the component-designer-defined options | + +**Methods** +| Method | Description | +| ------ | ----------- | +| make | The make function implements the logic that creates the geometry (poly, path, etc.) from the qcomponent.options dictionary of parameters, and the adds them to the design, using qcomponent.add_qgeometry(...), adding in extra needed information, such as layer, subtract, etc. | + +### QRenderer +A base qrenderer contains several attributes and several methods that must be overridden by qrenderers that extend the base. + +**Attributes** +| Attribute | Description | +| ------------------ | ----------------------------- | +| name | Renderer name | +| element_extensions | Element extensions dictionary | +| element_table_data | Element table data | + +**Methods** +| Method | Description | +| ------------------- | --------------------------------------------------------------------------------------- | +| render_chips | Render all chips of the design. Calls render_chip for each chip. | +| render_chip | Render the given chip. | +| render_components | Render all components of the design. If selection is none, then render all components. | +| render_component | Render the specified component. | +| render_element | Render the specified element. | +| render_element_path | Render an element path. | +| render_element_poly | Render an element poly. | + +### QRendererGui +In addition to the attributes and methods that must be overwritten by any QRenderer, a base qrenderergui has additional methods that must be overwritten by all qrendererguis that extend the base. + +| Method | Description | +| ----------------- | --------------------------- | +| setup_fig | Setup the given figure. | +| style_axis | Style the axis. | +| render_design | Render the design. | +| render_component | Render the given component. | +| render_shapely | Render shapely. | +| render_connectors | Render connectors. | +| clear_axis | Clear the axis. | +| clear_figure | Clear the figure. | diff --git a/README_Tutorials.md b/README_Tutorials.md index b32a45554..683a89cef 100644 --- a/README_Tutorials.md +++ b/README_Tutorials.md @@ -1,42 +1,42 @@ -# Tutorials - Access and Schedule +# 📚 Tutorials - Access and Schedule -Through June 2021 we are offering live tutorials and Q&A. +Recordings of live tutorials and Q&A sessions with researchers, developers, and the community. -[Sign up](https://airtable.com/shrxQEgKqZCf319F3) to receive updates and the invite to the upcoming sessions. +[VIDEOS: YouTube Playlist of tutorial recordings - click here](https://www.youtube.com/playlist?list=PLOFEBzvs-VvqHl5ZqVmhB_FcSqmLufsjb). -The streaming will also be recorded and made available [here](https://www.youtube.com/playlist?list=PLOFEBzvs-VvqHl5ZqVmhB_FcSqmLufsjb) for offline review. +Join the [Qiskit](https://qisk.it/join-slack) `#metal` Slack channel to request topics of interest, give feedback, and participate in all Qiskit Metal discussions. -Join the [Qiskit](https://qisk.it/join-slack) `#metal` slack channel to request topics of interest, to give us feedback and to participate to all qiskit metal discussions. +## 🗓️ Recording Log -## Current Schedule -| Date | Type | Topic | -| -------------------- | -------------------- | ------------------------------------ | -| April 1 | Tutorial | [Introduction to Qiskit Metal.](https://youtu.be/NCNv3YPvveM) | -| April 8 | Tutorial | Overview: Qubit chip design-flow. [Part 1](https://youtu.be/bsrsKZLTkTo) | -| April 15 | Tutorial | Overview: Qubit chip design-flow. [Part 2](https://youtu.be/fj1hpAqZfmg) | -| April 22 | Forum | First impressions - The Qiskit Metal team will take questions regarding what you learned, experienced and achieved so far. You can also share. | | -| April 29 | Tutorial | [QComponents](https://youtu.be/ljzWF3dNHEU): How to use, modify and extend the qiskit-metal library. | -| May 6 | Forum | Q&A - The Qiskit Metal team will take questions regarding customizing qiskit-metal design. You can also share your component work and ideas with us. | | -| May 6 | Offline Recordings | Tutorials on analysis methods: | | -| May 13 | Tutorial | [Quantum Analysis 101](https://youtu.be/QIr2Rlj1cpI) | -| May 20 | Tutorial | [Introduction to the transmon qubit](https://youtu.be/6KgOaU1BAxg) | -| May 27 | Tutorial | [Physics of the Cooper Pair Box Transmon](https://youtu.be/Ql8AS4Iay-Q) | -| June 3 | Tutorial |