Comments (11)
Hello : ) I am here from UnitaryHack and have been trying to prototype an algorithm for this the past couple days! I have made some fair progress, but still have some issues.
Excuse me if this is not the best place to ask, but I am hoping to get in touch with any others interested in working on this together or just share some insights.
@isolatedinformation @JLenssen I couldn't find you in the UnitaryFund discord. No obligation of course, but feel free to find me on discord @smtsjhr or elsewhere.
from flamingpy.
Hi, I would be interested in working on this. Would require some time though to study the linked papers in more detail.
from flamingpy.
What would be the expected call signature?
@staticmethod
def is_lc_equivalent(graph1: "EGraph", graph2:"EGraph"):
pass # relevant implementation of the algorithm
# or
def is_lc_equivalent(self, graph2:"EGraph"):
pass # relevant implementation of the algorithm
from flamingpy.
Hi @isolatedinformation, thanks for your question! :)
The static method signature might be better
@staticmethod
def is_lc_equivalent(graph1: "EGraph", graph2:"EGraph"):
pass # relevant implementation of the algorithm
from flamingpy.
Is there some doc available behind the concept of
macronodes
andEGraph
? I'm also assuming LC equivalence should also work whenmacronodes=True
Hey @isolatedinformation ! Technically LC equivalence (where the 'C' stands for complementation) is a property of the graph that underlies an EGraph. Therefore, it should work with any EGraph, including one that corresponds to a macronized lattice.
But what does it mean in practice? If you interpret an EGraph as a qubit graph state, equivalence via local complementation on the underlying graph implies equivalence under Clifford gates on the graph state. This is one of the benefits of having such a method.
In FlamingPy, graph states corresponding to QEC codes are represented by (non-macronized) EGraphs, so the above interpretation goes through. Macronized graphs, however, are an intermediate object used to model specific architectures and apply CV-level noise to the QEC code. Therefore, while they can also be interpreted as qubit graph states in a limited sense, there is not as much utility in the LC check method. (More concretely, a macronode EGraph will just be a collection of 'dumbbells' o-o that are completely disconnected from one another. Therefore the only LC equivalent graphs will just be those with local permutations of the nodes).
tl;dr The LC equivalence check should work for any EGraph, including a macronode graph (and I don't think the implementation will change), but it will have limited utility in this case.
For a little more on macronodes, have a look at this ref from our README: DOI:10.1103/prxquantum.2.040353.
from flamingpy.
Hi @isolatedinformation! If you are interested, the concept of macronodes was introduced in this paper (arXiv) by the architecture team from Xanadu. However, you don't have to worry about it in this PR/issue because the equivalence under local complementation should be a property of the EGraph
(and what macronozing essentially does is creating a different EGraph
). To understand what the EGraph
is, you can have a look at our tutorial on graph states. Essentially, we represent our graph (and cluster) states as "enhanced" NetworkX graphs where the nodes are placed in a 3-dimensional space.
EDIT: also have a look at @ilan-tz's reply which is a bit more elaborate ๐
from flamingpy.
Thanks guys! This is useful. It clears what the domain of the inputs will be.
from flamingpy.
Hi @JLenssen, great! :)
from flamingpy.
Is there some doc available behind the concept of macronodes
and EGraph
? I'm also assuming LC equivalence should also work when macronodes=True
from flamingpy.
This issue simply requests the function to return a boolean True
or False
for the LC equivalence. However, the algorithm referenced in the literature is constructive and can also specify the Local Clifford operation (in binary symplectic form), whenever the equivalence is satisfied.
I would like to inquire if there is any interest or utility in enhancing this functions design requirements to also return the relevant Local Clifford?
If so, we can go even further and express this Local Clifford in various relevant ways. For instance, the Local Clifford can be given as a single global operator acting on all qubits, or a list of single qubit Local Cliffords -- the tensor product of which yields the global operator.
Whether or not this additional functionality is desired in the public method, the info provided by the Local Clifford when it exists could still be useful for testing purposes.
from flamingpy.
@smtsjhr Yes, that would be great! Since the algorithm is constructive, it's not too much work and can have a host of benefits (like testing as you mentioned). Thanks for sharing the idea ๐ก
For the others in this thread (@isolatedinformation, @JLenssen): to keep it fair, this is not a must for the completion of this challenge. However, it is definitely nice to have it in your implementation.
from flamingpy.
Related Issues (20)
- `getting_started.rst` is outdated ๐ด๐ผ HOT 1
- Macronize support non-integer nodes HOT 2
- Change naming convention simulation data files ๐ HOT 1
- Removing Cythonization example when no longer needed
- Documentation not up-to-date with latest PyPI version HOT 1
- Draw method of EGraph does not function without passing `dims` parameter HOT 3
- Class inheritance diagram displayed incorrectly in the docs HOT 1
- Add transparency option to plots HOT 1
- Add more natural choice of periodic boundaries
- Change scope of `docformatter` and `black` ๐๏ธ HOT 2
- Make `EGraph` visualizations more interactive using Plotly ๐จ HOT 12
- Include `add_qubit` and `remove_qubit` method within `EGraph` ๐ชโ๏ธ HOT 3
- Add tests to improve code coverage of `viz` module ๐งช HOT 1
- [Discussion] Add tests to improve FlamingPy's test suite coverage to >99% HOT 1
- Make sure non-Xanadu links open in a new page HOT 3
- Add warning message when plotting large codes
- Tutorial on classical error correction HOT 1
- Improving linting coverage and reporting HOT 1
- Add links to forum and slack to README and website HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flamingpy.