Open DanCocking opened 1 year ago
Branch 227-Compatibility_with_other_tools_using_OpenQASM created!
First step is to create a wrapper around Pytket circuits so they can be represented as protocols within QuanGuru and contribute to simulations within QuanGuru. It should access properties of the Circuit and provide an interface that QuanGuru can understand.
Due to Pytekt Circuits not being from QuanGuru they do not have any Param Bounds — this means that if a pytket circuit is changed we cannot automatically inform the wrapper object. This is an issue since this means that the unitary and systems will not update when the circuit changes and so you will be working with an outdated version of the circuit.
What feature should we add?
Cross-compatibility with other libraries such as Qiskit, cirq etc. More specifically the ability to "import" and "export" circuits to and from QuanGuru or use the abilities of QuanGuru on circuits built elsewhere and vice versa. This functionality can be quickly achieved by interfacing with Pytket a package that provides access to many different backends from Qiskit to hardware. It can also build its circuits from other packages circuits as well as OpenQasm so it can provide the ability to transform other packages circuit design API into QuanGuru's circuit desgin API.
Proposed Solution
To users this should appear as a simple
quantumSystem.createPytketCircuit(self)
call that returns a new pytket Circuit that has the same state as QuanGurus quantum system (plus subsystems). It could also be implemented in an entirely new class that acts as a wrapper to pytkets circuits.Why/Motivation
There are specific types of simulation that QuanGuru is significantly better at (such as exact simulation for >2 qubit gates), similarly, QuanGuru is lacking features compared to some of the larger projects such as ability to graph and less optimised simulation in many cases.