Giter VIP home page Giter VIP logo

qiskit-community / qiskit-metal Goto Github PK

View Code? Open in Web Editor NEW
275.0 30.0 202.0 96.04 MB

Quantum Hardware Design. Open-source project for engineers and scientists to design superconducting quantum devices with ease.

Home Page: https://qiskit-community.github.io/qiskit-metal/

License: Apache License 2.0

Python 65.70% Batchfile 0.01% Shell 0.03% SCSS 2.80% Jupyter Notebook 31.45% TeX 0.01%
quantum device hamiltonian quantum-computing superconducting qubits eda gds simulation-modeling

qiskit-metal's Introduction

Qiskit Metal

LicenseReleasejoin slackDOI

Welcome to Qiskit Metal! Qiskit Metal is an open-source framework for engineers and scientists to design superconducting quantum devices with ease.

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 and/or the installation instructions for developers.

For normal use, please continue reading.

The Qiskit Metal deployed package

You can install Qiskit Metal via the pip tool (a python package manager).

pip install qiskit-metal

PIP will handle most of the dependencies automatically and you will always install the latest (and well-tested) version of the package.

Some of the dependencies, namely pyside2 and geopandas, might require manual installation, depending on your specific system compatibility. If you encounter installation or execution errors, please refer first to the FAQ.

We recommend to install qiskit-metal in a conda environment or venv, to prevent version conflicts with pre-existing package versions.

Jupyter Notebook

At this time, we recommend using Jupyter notebook/lab to be able to access all the Qiskit Metal features. Jupyter is not installed with the default dependencies, to accommodate those users intending to utilize a centralized or customized installation.

If you require a fresh installation, please refer to either anaconda.org or jupyter.org.

Unless you installed the entire jupyter package in your current environment, do not forget to create the appropriate kernel to make the environment (thus qiskit-metal) available to jupyter (instructions in the FAQ)

Creating Your First Quantum Component in Qiskit Metal:

Now that Qiskit Metal is installed, it's time to begin working with it. We are ready to try out a quantum chip example, which is simulated locally using the Qiskit MetalGUI element. This is a simple example that makes a qubit.

$ python
>>> from qiskit_metal import designs, draw, MetalGUI, Dict, open_docs
>>> design = designs.DesignPlanar()
>>> design.overwrite_enabled = True
>>> design.chips.main
>>> design.chips.main.size.size_x = '11mm'
>>> design.chips.main.size.size_y = '9mm'
>>> gui = MetalGUI(design)

Launch the Qiskit Metal GUI to interactively view, edit, and simulate a QDesign:

>>> gui = MetalGUI(design)

Let's create a new qubit (a transmon) by creating an object of this class.

>>> from qiskit_metal.qlibrary.qubits.transmon_pocket import TransmonPocket
>>> q1 = TransmonPocket(design, 'Q1', options=dict(connection_pads=dict(a=dict())))
>>> gui.rebuild()
>>> gui.edit_component('Q1')
>>> gui.autoscale()

Change options.

>>> q1.options.pos_x = '0.5 mm'
>>> q1.options.pos_y = '0.25 mm'
>>> q1.options.pad_height = '90um'
>>> q1.options.pad_width  = '455um'
>>> q1.options.pad_gap    = '30 um'

Update the component geometry after changing the options.

>>> gui.rebuild()

Example_Image!

Get a list of all the qcomponents in QDesign and then zoom on them.

>>> all_component_names = design.components.keys()
>>> gui.zoom_on_components(all_component_names)

Closing the Qiskit Metal GUI.

>>> gui.main_window.close()

A script is available here, where we also show the overview of Qiskit Metal.

Community and Support

Watch the recorded tutorials

Video Tutorials

The streaming will also be recorded and made available here for offline review.

Take part in the live tutorials and discussion

Through June 2021 we are offering live tutorials and Q&A. Sign up to receive an invite to the upcoming sessions. The streaming will also be recorded and made available for offline review. Find here more details on schedule and use the Slack channel to give us feedback and to request the most relevant content to you.

Get help: Slack

join slack

Use the slack channel. Join qiskit slack and then join the #metal channel to communicate with the developers and other participants. You may also use this channel to inquire about collaborations.

Contribution Guidelines

If you'd like to contribute to Qiskit Metal, please take a look at our contribution guidelines. This project adheres to Qiskit's code of conduct. By participating, you are expected to uphold this code. We use GitHub issues for tracking requests and bugs. Please join the Qiskit Slack community and use our Qiskit Slack channel for discussion and simple questions. For questions that are more suited for a forum we use the Qiskit tag in the Stack Exchange.

Next Steps

Now you're set up and ready to check out some of the other examples from our Qiskit Metal Tutorials repository or Qiskit Metal Documentation.

Authors and Citation

Qiskit Metal is the work of many people who contribute to the project at different levels. Metal was conceived and developed by Zlatko Minev at IBM; then co-led with Thomas McConkey. If you use Qiskit Metal, please cite as per the included BibTeX file. For icon attributions, see here.

Changelog and Release Notes

The changelog provides a quick overview of notable changes for a given release.

The changelog for a particular release can be found in the correspondent Github release page. For example, you can find the changelog for the 0.0.4 release here

The changelog for all releases can be found in the release page: Releases

Additionally, as part of each release detailed release notes are written to document in detail what has changed as part of a release. This includes any documentation on potential breaking changes on upgrade and new features.

License

Apache License 2.0

qiskit-metal's People

Contributors

abeervaishnav13 avatar andersenqubitlab avatar arnaucasau avatar blair-john avatar cdelnano avatar clarkmiyamoto avatar coruscating avatar dwang429 avatar eric-arellano avatar fgnyilmaz avatar ismirlia avatar jagandecapri avatar jeremydrysdale-ibm avatar judi-pn avatar marcolincs avatar mtreinish avatar nalanzil avatar nikosavola avatar nonhermitian avatar obrienpja avatar patricksjacobs avatar priti-ashvin-shah-ibm avatar quantum-quant avatar samarthh avatar shark-y avatar smukesh25 avatar thomasgm4 avatar warrench avatar wshanks avatar zlatko-minev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qiskit-metal's Issues

Add linting and formatting check to CI pipeline

From @coruscating

What is the feature being requested?

As per group meeting discussion, we should add pylint and yapf google style checks to our current CI pipeline.

What are use cases for this feature?

Code will be checked for lint and format violations by CI automatically

Space design for edit component widget and button icons

From @marcolincs

Informations

  • Qiskit Metal version: all
  • Python version: all
  • Operating system: Windows

What is the current behavior?

In my windows laptop, the resolution is 1920x1080, but the result is a pretty congested GUI. in the image i aded my notepad++ gui to offer a compare.
image

You can see that the main gui icons are gigantic compared to that of notepad++. you can also see that the text in the source code edit is much larger than notepad++ and that the help screen on the right is even larger.

Is there a way to minimize all this real estate? (smaller icons, smaller text, buttons to zoom in-out text size, etc)

Here is another image, you can see how small the realestate for the layout gets, even the numbers in the matplotlib are huge. The size of the basic text in the menu on the left is fine though, and the text size in the log box at the bottom is smaller but still perfectly readable.
image

Last but not least. Do you know of a way to make night mode consistent? having only part of the screen dark, makes the white parts pop out much more, so at the end of the day it might end up tiring the eye more than the original all white theme

Steps to reproduce the problem

Run on windows, load the edit component dialog

What is the expected behavior?

Normal sized icons and scaling

Suggested solutions

n/a

Metal Crashes when clicking Reload File on internal IDE (Owner: Grace) (Due Nov 30)

Information

From @grace-harper-ibm

  • Qiskit Metal version: 0.0.1
  • Python version: 3.7.8
  • Operating system: Mac

What is the current behavior?

It will crash with:

12:16PM 55s CRITICAL [_pyqt_message_handler]: line: 0, func: None(), file: None FATAL: Traceback (most recent call last):
File "~/qiskit-metal-codebase/qiskit_metal/_gui/widgets/edit_component/source_editor.py", line 213, in reload_file
self.file.reload()
TypeError: reload() missing 1 required positional argument: 'encoding'

Steps to reproduce the problem

Run Metal

        from qiskit_metal import designs, draw
        from qiskit_metal import MetalGUI, Dict, Headings
        design = designs.DesignPlanar()
        gui = MetalGUI(design)
        gui.qApp.exec()
  1. Click make new QComponent
  2. Keep clicking "save" and "ok" until you get to the IDE with code for your new component
  3. Try clicking "Reload File"

What is the expected behavior?

Not to crash and for the file to reload

Suggested solutions

unsure

Occasional segmentation fault on exit

Informations

  • Qiskit Metal version: all
  • Python version: all
  • Operating system: Mac

What is the current behavior?

Sometimes when the metal gui exits a segmentation fault is thrown. This appears to occur on Mac, but has not (to my knowledge) been seen on WinX or Linux.

Note: The failure does not occur when running the code in VS Code in debug mode.

Steps to reproduce the problem

Repeatable by rapidly starting and closing the GUI - you can do that by executing test_gui_basic.py over and over.

What is the expected behavior?

No segmentation fault

Suggested solutions

n/a

Automate jupyter notebook testing

What is the feature being requested?

Automate jupyter notebook testing
Manual testing of several folders of jupyter notebooks is time consuming and should be automated

What are use cases for this feature?

Easier testing

Element dropdown bug - large first row

From @zlatko-minev

Informations

  • Qiskit Metal version: all
  • Python version: all
  • Operating system: Mac

What is the current behavior?

In the elements table on mac, the first row seems huge for some reason
image

Steps to reproduce the problem

Click the elements table on a mac

What is the expected behavior?

Normal sized first row

Suggested solutions

n/a

Improve docs graphics

What is the documentation modification?

Add/improve graphics to visually show what stuff (i.e. components) look like in the tool, including pictures in the docs library.

Rename metal.components to metal.qlibrary (Owner: Sagarika) (Due: Jan 30)

From @zlatko-minev

What is the feature being requested?

Rename metal.components to metal.qlibrary so instead of doing:

# Select a QComponent to create (The QComponent is a python class)
TransmonPocket = components.qubits.transmon_pocket.TransmonPocket

Maybe have a more easy to understanding naming for the role:

# Select a QComponent to create (The QComponent is a python class)
TransmonPocket = qlibrary.qubits.transmon_pocket.TransmonPocket

or atleast rename to qcomponents over components?

What are use cases for this feature?

Adherence to naming convention

Ansys renderer: errors with circles (Owner: Helena) (Due: Dec 30)

From @zlatko-minev

Information

  • Qiskit Metal version: all
  • Python version: all
  • Operating system: all

What is the current behavior?

Long standing bug that occurs on replotting, sometimes the bounding box rectangle does not restore correctly

Steps to reproduce the problem

If you hit autoscale and then you hit replot, the bug happens and zooms to this strange region. It seems that autoscale is messing it up

What is the expected behavior?

The bounding box rectangle should restore correctly

Suggested solutions

n/a

QComponent from GDS import

From @zlatko-minev

What is the feature being requested?

QComponent from GDS import

  • Import GDS shapes
  • try to convert to shapely intelligently
  • add properties, assign layers, pos/neg etc.
  • add default options for position, rotation, scaling for the whole thing

What are use cases for this feature?

More functionality related to GDS

Toolbar item for help docs

From @zlatko-minev

What is the feature being requested?

Add action toolbar items / menu to help html build docs in a browser as an alternative to the open_docs() command

What are use cases for this feature?

Users can load the docs without typing a command

QLibrary Tree Widget

What is the feature being requested?

Allow creation of new qcomponents via a drop-down tree menu with all available components for the user to pick from (transmon pocket, CPW, etc.), preferably with images of the component itself.

What are use cases for this feature?

User can create components by selecting them through a dropdown rather than typing python code

HFSS Renderer (Owner: Dennis) (Due: Jan 30)

What is the feature being requested?

  1. Determine exactly how to scale chip area to render in Ansys (9 X 6 vs. bounding box)
  2. Add AssignThinConductor functionality to pyEPR so that it can be used by Metal; Q3D cannot operate on purely 2-D shapes, so this distinguishes it from HFSS
  3. Move Q3D code into a subclass of the Ansys renderer
  4. Create 1 GUI window for component selection for Ansys renderer
  5. Create 1 GUI window for component selection for Q3D renderer, then another to determine which unconnected pins require endcaps and which don't

As per my discussion with Thomas last week, the most immediate goal is to obtain the capacitance matrix from all components included in the export.

What are use cases for this feature?

Users will be able to render in HFSS

Pins/Connectors Widget

What is the feature being requested?

Implement a connector view tab
This will display the netlist - show the names of all the nets, connectors in the design and their properties (e.g. which component they belong to and what position they are at).

What are use cases for this feature?

Users will be able to easily see pins/connectors

Matplotlib renderer implementation

What is the feature being requested?

Complete implementation of the matplotlib renderer including interfaces and backend

What are use cases for this feature?

Users can use the matplotlib renderer

design.overwrite_enabled not working when self._name is not provided

From @marcolincs

What is the current behavior?

design.overwrite_enabled = True
cpw = RouteMeander(design,options=options)

run twice gives error: Pin a of component Q1 is already in use. None has not been built. Please check your pin_input values.

Reason: the BaseComponent algorithm is assigning a new name at every call. Therefore, the second time around it does not know what to delete before re-drawing.

Steps to reproduce the problem

design.overwrite_enabled = True
cpw = RouteMeander(design,options=options)
cpw = RouteMeander(design,options=options)

What is the expected behavior?

No crash

Suggested solutions

should the "overwrite_enabled" be generalized to get rid of anything attached to said pins (rather then by name)?

Save / Load design

From @zlatko-minev

What is the feature being requested?

Need to implement metal save / load functionality.

Some pickle code was written as a placeholder but not everything is pickling.

What are use cases for this feature?

Users can save / load metal designs

Switch from travis to github actions

With travis's recent billing changes that went into effect this month: https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing we're rapidly approach the qiskit project quota for the free trial accounts. This is problematic as both retworkx (for non-x86 jobs) and ibmq provider (for networking reasons) both rely on travis for their CI. We don't want to hit that quota and block development/testing on those projects. So we should try to remove our travis usage for things that dwe can run elsewhere to prioritize access to projects that really need it.

Github actions provides a good alternative that has all the necessary capabilities and native integration with github so we should migrate our CI jobs to use that instead. It also offers a much larger quota and enables things like storing artifacts from jobs (useful for saving docs build output etc). You can look at projects like ignis and aqua on how to configure it

C related errors when instantiating GUI in non-interactive Python

Informations

  • Qiskit Metal version: 0.0.1
  • Python version: 3.8.3
  • Operating system: Mac

From @coruscating

What is the current behavior?

I get errors when starting metal in python scripts on the command line. Here's a barebones script that works fine in Jupyter, but causes either Illegal Instruction: 4, Segmentation fault: 11, or just crashes when run:

import qiskit_metal as metal
from qiskit_metal import designs, draw
from qiskit_metal import MetalGUI, Dict, Headings

design = designs.DesignPlanar()
gui = MetalGUI(design)
gui.rebuild()
gui.autoscale()

When the code is run, the GUI sometimes appears with this annoying prompt (doesn't matter which option you choose, it crashes either way):
image

Steps to reproduce the problem

import qiskit_metal as metal
from qiskit_metal import designs, draw
from qiskit_metal import MetalGUI, Dict, Headings

design = designs.DesignPlanar()
gui = MetalGUI(design)
gui.rebuild()
gui.autoscale()

What is the expected behavior?

No crash, or graceful handling of teh error

Suggested solutions

n/a

Component building: Notify user a rebuild is needed

From @zlatko-minev

What is the feature being requested?

Users get confused when to rebuild. Should add a flag to the design that says need to rebuild, then have the gui update with a red bar at the top to indicate that a rebuild is needed.

  • flag for design rebuild
  • catch places to need rebuild
  • 1. add new component
  • 2. change options for component (only need to rebuild it and dependency
  • 3. change variable (rebuild all components that use this variable)
  • GUI update bar

What are use cases for this feature?

Clearer indication to the user that a rebuild is needed

Cleanup MetalGUI - classes or function (Owner: Helena) (Due: Feb 26)

From @marcolincs

What is the feature being requested?

Currently there is two "MetalGUI", one is a function, the other is a class, but they do roughly the same thing. Objective: decide which way to go and cleanup the code

From Zlatko: Oh, so now I see what you mean. The function was defined as a front end to call the class initially.

The reason was that the user might not have PyQt5 or the gui packages / they may not have run the %gui qt loop.

Maybe this is no longer needed. It seems that the gui is a pretty important part of the package and the requriemetns are in the requirements.txt.

The kicking up of the QApplicaiton instance could be handled in the gui class i suppose.

What are use cases for this feature?

remove unnecessary complexity

Add icons to components dropdown

What is the feature being requested?

Add icons to component dropdown
Icon that represents the component and can be saved as a png in the sam efile directory or in the metal
Related to #25

What are use cases for this feature?

Visual representation of components in the menu

Deduct the fillet to the routing length (Owner: Marco) (Due: Jan 30)

From @marcolincs

What is the feature being requested?

Currently the QRoute.length() property method does not take the fillet into consideration, thus causing the length utilized in the rest of the code is underestimated. need to update this method (and maybe other things related or that brake as a consequence) so that the fillet is taken into consideration.
.....problem is that it has been said we might want to have a different fillet for each corner. That will make this implementation much more complex and pervasive then just changing the one method

What are use cases for this feature?

Improved fillet

Documenting code style choices (Owner: Jeremy) (Due: Feb 26)

From @marcolincs

What is the documentation modification?

need a README_STYLE.md file to write stylistic choices to obey. For example:

  • use of "del" after functions. Why? When?
  • camel naming convention or other?
  • when to use functions versus classes

need a README_ARCH.md file to write architectural choices to obey. For example: What are the methods necessary for a generic component? How do they flow through the various library files? (stack) What are the key behaviors for the GUI?

GUI ruler for measuring distances

From @zlatko-minev

What is the feature being requested?

Add a ruler for measuring distances and a Box (add like kalyout?). Button already exists, but it doesn't do anything yet.

What are use cases for this feature?

Allow for easy measuring

GUI bug QGeometry - switching between path and poly (Owner: Grace) (Due: Dec 30)

From @priti-ashvin-shah-ibm

Information

  • Qiskit Metal version: all
  • Python version: all
  • Operating system: all

What is the current behavior?

After looking at "path" elements in GUI, then user want to switch back to poly. User needs to click exactly where the letters are shown for poly. If user presses in the greyed out box connected to poly, the view will not change.

image

Steps to reproduce the problem

Click in the field but not exactly on a letter

What is the expected behavior?

User can navigate to poly

Suggested solutions

n/a

Route: make the CPW work in non-Manhattan

From @marcolincs

What is the feature being requested?

Currently only part of the code supports the non-Manhattan. majority of it assumes Manhattan. This is a non desirable limitation. We need to make at least the simple meander work in non-Manhattan

  • snap to: currently only 90 degrees. need 45 degrees snapping
  • snap false: for free flow

What are use cases for this feature?

Component build: Handling building and failing (Owner: Grace) (Due: Jan 15)

From @zlatko-minev

What is the feature being requested?

If a component fails to build because the user specified an incorrect name in the options or had a python error in their build function, the component just fails partially and while there can be a log error message when you do design.rebuild() in general the error message isn't handled well.

We should maybe add a hook to capture the logger messages and errors when we rebuild, this way each component that fails to build will have a record attached to it as to why it failed to build. We can then Have a gui tab display that record when needed.

What are use cases for this feature?

Clearer reporting of build failures to the user.

Check Ansys Compatibility 2016 and 2019/2020 (Owner: Dennis) (Due: Dec 15)

What is the feature being requested?

Ensure renderer is compatible with Ansys 2016 and 2019/2020. Within ansys_renderer.py, this includes:

  1. Checking pyEPR.ansys.parse_units works with design UNITS (line 32).
  2. Addressing warning with self.chip_subtract_dict = defaultdict(set) (line 169).
  3. Addressing warning with render_tables (line 179).
  4. Addressing warning with render_components (line 190).

Check load_ansys_project in pyEPR.ansys.py for fixes.

What are use cases for this feature?

Ansys 2019/2020 can also be used

End cap issue for QGeometry path (Owner: Dennis) (Due: Dec 15)

From @zlatko-minev

What is the feature being requested?

image

image

From Thomas: So one potential 'built in' method is the pins. Pins can include 'gap' values (and by default it has the value be 0.6 that of the width of the pin). For the case of an 'open' termination when simulating sub-sections of the chip, the net_list / pin dictionary of the components could be used for determining the extra subtraction.

This would be perhaps the best way to approach it as we would likely want to be using pins for any internal ports for Z-analysis simulations, which would be practically the same approach (with the addition of an impedance value for said port).

From Zlatko:
image

image

image

@ThomasGM4 and @dwang429 what did we decide to do about this?

From Dennis: @zlatko-minev Notes from my last discussion with Thomas:

The user decides exactly how the design ought to look when the chip is manufactured and draws it that way the Metal GUI; this should look identical to the GDS rendering of the design. For simulation purposes, maybe only a subset of components need to be tested, in which case some connected pins in the design are actually open. This will be reflected in the Net ID list, whereby a pin is in use if and only if it's in the list.

The renderer needs to know how each pin is terminated during the simulation, and that info can be obtained via:

  1. Providing an impedance value (0 for short, float('inf') for open) for each pin within its parent component's pin dictionary -> The user modifies this immediately before exporting to HFSS.

  2. Having a table of 2 columns (pin name and pin impedance) in the HFSS renderer window -> The user fills out the 2nd column prior to each simulation.

Personally I'm more inclined towards the second option.

From Thomas: We can also have defaults depending on the analysis, and the user just has the option to change that if they really want to.

What are use cases for this feature?

Prevent shorts

Add a Layer ID number

From @ThomasGM4

What is the feature being requested?

Add a Layer ID# to the qgeometry table that is paired against Layer #.

  • Possibly have Layer # be a tuple (layer # / ID #)?
  • Have Layer ID# be a separate value? Could be modified via options, or restrict as hardcoded value for the component designer? A way for component designer to indicate something specific about a qgeometry of their component.

What are use cases for this feature?

Enable the layer ID#

Ansys Renderer: errors with circles

From @ThomasGM4

Informations

  • Qiskit Metal version: all
  • Python version: all
  • Operating system: all

What is the current behavior?

It seems the renderer currently can't handle circles

Steps to reproduce the problem

The error manifests itself when trying to draw transmon_concentric

What is the expected behavior?

Correct rendering

Suggested solutions

n/a

QComponents Widget Sort & Filter

From @zlatko-minev

What is the feature being requested?

With many more components need way to quickly find sort, find, edit components
Expand QTable model to QFilterSortProxy model to handle filter and sort
image

What are use cases for this feature?

Better user experience

Edit source widget

From @zlatko-minev

What is the feature being requested?

Edit source widget help and autocompletion and autohelp

  • Add CalltipsMode
  • Add help for functions on the right handside when user type a fuinction such as as draw.rectangle
  • Add a menu of available functions in draw

What are use cases for this feature?

Better user experience

Route: add "design precision" to the code that generate points

From @marcolincs

What is the feature being requested?

Current code uses math precision for operation but it does not use design precision to determine the points. Will need to "round" points to the design grid. If there are meanders on the route, the left-over length (if any) should be attached to one of the meanders.

What are use cases for this feature?

Consistent precision

Highlight element in QGeomTable

From @zlatko-minev

What is the feature being requested?

Double click a element in the QGeomTable should highlight the QGeom and zoom to it in the MPL window
image

What are use cases for this feature?

easily find the selected element in the QGeomTable

yapf setup instructions (Owner: Jeremy) (Due: Nov 30)

What is the documentation modification?

Add instructions to setup yapf

We are using pylint and yapf (with google style)

  1. First, pylint and yapf should be installed for your setup. Either do pip install pylint yapf or install through vscode.
  2. To run automatically in vscode every time you save, put these settings in your settings.json:
        "python.linting.pylintEnabled": true,
        "python.linting.enabled": true,
        "editor.formatOnSave": true,
        "python.formatting.provider": "yapf",
  3. Since the style file is already in the metal directory, yapf should automatically format to those rules when you save.
  4. To run manually on a file, do yapf -i <file>. To run recursively in a directory, do yapf -ir <directory>. Note that you shouldn't have to do this if your IDE is set up correctly.

Allow user to give a list of junctions for a qubit, vs, just one junction

From @priti-ashvin-shah-ibm

What is the feature being requested?

As the component developer can't influence which junction they want, since that is from the front end user. The component developer merely has that there are multiple junctions via add_qgeometry, but they aren't able to specify which junction_cell goes to which add_qgeometry since that is a value they don't have access to

Thinking something using a list and some further tweaking for add_qgeometry would handle it though.

A possible solution is to have add_qgeometry within a QComponent process the list, and make individual add_qgeometry entries to QGeometry "junction" table.

What are use cases for this feature?

Users can provide a list rather than a single junction

Rename element to qgeometry tables (Owner: Priti) (Due: Jan 15)

From @priti-ashvin-shah-ibm

What is the feature being requested?

There are things left to do.

  1. The tab for GUI still says "element", not "qgeometry" for the tables.
  2. The element handler should be named qgeometry handler.
  3. Any notebook or renderer that uses the element handler, would also have to be updated.

What are use cases for this feature?

Adherence to standard naming convention

QComponent actions toolbar - delete, rename, zoom to

From @priti-ashvin-shah-ibm

What is the feature being requested?

The following action buttons don't do anything yet.

They should allow the user to act on the selected components. Some of this is already done in the right click mouse button, but the action need to be added.

Actions:

  • Delete
  • Zoom to / Highlight
  • Rename
    image

What are use cases for this feature?

Complete the GUI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.