-
Notifications
You must be signed in to change notification settings - Fork 238
Qiskit Metal v0.5: PySide6, Removing GDSPY to GDSTK, PYAEDT v1.0, and many more changes #1002
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
For ubuntu unit tests
Hoping this will resolve an issue with running tests and doc building
|
Thank you, @shanto268! The tests are running. This is a giant PR, so it would be good to have more eyes on it than just you and me. Has anyone else from your lab tried this? I think after merging this, we could bump the Qiskit Metal version from 0.1.5 to 0.2. I just want to make sure it runs. |
Nope, not shelved, just now it’s community driven. We have been a little slow to get all the maintenance I’ve been running, but I think that’s the intention of community. So it would be nice to get this merged when you feel it’s ready.On Sep 8, 2025, at 11:07 PM, PositroniumJS ***@***.***> wrote:PositroniumJS left a comment (qiskit-community/qiskit-metal#1002)
Amazing work! Are there any blockers left?
The GDS creation is working now. The remaining issues are:
the second GUI window that stays open all the time
update of dependencies (pyaedt, pandas, geopandas, numpy, ...)
But perhaps it would be better to address these points in a new PR, this one is already quite heavy.
However, Zlatko has left IBM so it looks like the project has been shelved
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
From my humble point of view, this PR can be merged (94 files modified it is already quite a lot). In a new PR, it would then be easier to finish to set the correct requirements. Regarding the second window that is staying open, I have tried to fix it but I could not manage it as I have never used PySide before. I would be very grateful if you @zlatko-minev could check this out. |
pyaedt is performing a refactor of its files, and the renaming of some functions' arguments
Update of pyaedt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a very exciting and extremely massive change at this point. Perhaps it’s better to just merge it with whatever issues there may be at this point and then have a more clean up version of fixes in smaller patches on top of that to fix whatever little issues may remain.
The only issue right now is that the docs and linting are failing along with a few tests |
Maybe we can try to resolve this in a couple days and then merge it to Maine, we wouldn’t yet publish to any of the pip etc. Until it’s a little more cleaned up and tested bugs, which I feel are present in some key functionality |
|
Hi folks, my PR shanto268#6 to @shanto268's fork moves to Tox tasks have been moved into
For me, pylint stalls on one of the source files in Regarding PyPI release, I think it would help to push to PyPI as a pre-release (with granular alpha/beta/dev version tags) so that uses can try a |
|
||
if "fillet" in qgeometry_element: | ||
if (math.isnan(qgeometry_element.fillet) or | ||
qgeometry_element.fillet <= 0 or | ||
qgeometry_element.fillet < qgeometry_element.width): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not want to create a PR only to delete one line so I make my suggestion here: I think the condition
qgeometry_element.fillet < qgeometry_element.width
when creating the GDS is invalid. Currently, the matplotlib output is right but the GDS output gives something squarred instead of bended
qgeometry_element.fillet < qgeometry_element.width): | |
if "fillet" in qgeometry_element: | |
if (math.isnan(qgeometry_element.fillet) or | |
qgeometry_element.fillet <= 0): | |
to_return = gdstk.FlexPath( |
While these are great changes, it feels like it should be a separate PR. Please correct me if I'm mistaken, but this doesn't seem directly relevant to migrating away from PySide2. |
@SamWolski I agree. This would build upon the changes corresponding to this part of the update (quoting from Zlatko's comment above):
I'm more than happy to open a new PR once the existing set of changes are merged. |
I don't know if I'm doing something wrong, but bumping pyaedt to any version beyond 0.17.5 seems to knock out Macs from being able to import aedt at all, and thereby being unable to run metal in any substantial capacity: Obviously I don't expect to actually run any Ansys simulations on macOS, but currently I can't even instantiate a Design object due to metal trying to import the renderer and failing. We could restrict importing to only happen when you want to actually render to Ansys, maybe even going as far as making it an optional dependency. |
Currently, a lot of things (analysis backends, rendering backends, etc.) are imported with the module. Decoupling this would take some refactoring, but a more modular package structure would benefit us in the long term. |
My point is that this fork/PR doesn't run at all on any Mac. The module imports, but if I can't instantiate a On the main branch, the pyaedt version is much older, and although metal can't be installed "natively" due to some pyside2 futzing (one of the central motivations for this PR in the first place), there are workarounds using for example the |
|
Python version 3.10.18 or 3.11.13 Attempted code execution:
Error message:
The problem is that pyaedt pre-0.17.5 tested for any |
Since this is an upstream issue with |
@SamWolski, unfortunately I don't have a Mac and cannot test this. Does setting |
For me it sounds like an issue from their side then. Opening an issue or a PR replacing all the In the meantime, you can fix it by setting an environment variable
|
There's a somewhat strange situation where the core Ansys computing platform explicitly indicates support exclusively for Windows and Linux, but the PyAnsys project has references to macOS in the guidelines. I can bring it up as an issue in the PyAedt repo to get some clarification, but it is what it is right now. In any case, I don't think it's a good idea to release a large and long-awaited update to Qiskit Metal, which might I remind everyone is explicitly advertised as "enables native support for M* Macs (Apple Silicon)", as requiring non-trivial user intervention post-install to enable the fundamental functionality of the package itself. |
I bypassed it locally by editing the pyaedt files directly in an editable install. The imports are fine otherwise. The design generation seems fine, but I've got an error coming up on a I can try look into it in a bit more detail when I have time. It may also be an edge case with my design, but I don't think I'm doing anything particularly crazy in terms of the actual design elements. |
I did not mean to ask, in the next release of qiskit-metal, the Mac user to setup this env variable. I meant that I do not see why PyAedt would not agree to replace the occurences of "Linux" by "posix" since it does not change anything from their side, while enabling Mac users to use some depending libraries on the other side. Thus, setting this variable is a short fix in the meantime (I guess they will release a new version of it before qiskit-metal).
It has to be a list, on the next line, the |
Not quite. The * is unrolling a pandas Series, which should contain the geometry objects directly, but one of the Series entries is itself a list. I figured it out though: the handling of geometry with interior holes was not ported to gdstk entirely correctly in The easiest fix I could think of is to return the first (and only) element of this list, ie The return statement in question is here (line 2339): If this works for everyone, someone with write access can make the change directly (@shanto268 ?). 3 characters doesn't seem worth it for a PR. |
I asked for clarification on the pyaedt side here: ansys/pyaedt#6704 |
What are the issues this pull addresses (issue numbers / links)?
Porting Qiskit Metal from PySide2 to PySide6 so that it can work natively on M* Macs (Apple Silicon).
Issues addressed:
Did you add tests to cover your changes (yes/no)?
No. N/A
Did you update the documentation accordingly (yes/no)?
Yes
Did you read the CONTRIBUTING document (yes/no)?
Yes
Summary
Fixed changes from PR #908 to pass automated CI workflows and tests, ensuring compatibility with updated dependencies, environment configurations, and the latest (11/17/2024)
main
branch.Details and comments
Built on top of changes made by @obrienpja in PR #908.
Changes to
QWidget_PlaceholderText
andQTableView_AllComponents
:QWidget_PlaceholderText
class to ensure proper initialization and compatibility withPySide6
.PySide6
standards.QTableView_AllComponents
to correctly inherit and integrate withQWidget_PlaceholderText
, ensuring both functionality and visual styling work seamlessly.Requirements and environment updates:
environment.yml
file to use stable, OS-agnostic dependencies for Python 3.10.pyaedt
, to ensure a consistent build across different operating systems.Testing and validation:
main
branch workflows to confirm identical behavior.