Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adds the main transformer to do routing in Cirq (quantumlib#5838)
* added abstract initial mapper and identity initial mapper * added __str__ and __repr__ for MappingManager * minor bug * made MappingManager not serializable * removed unused import * pushed AbstractInitialMapping and IdentityInitialMapping name to 'cirq' namespace; made both classes not serializable * minor lint fix * addressed comments * addressed comments * fixed bug with edges not being sorted for graph equality testing * fixed bug with digraphs repr method in MappingManager and added test for it * addressed some comments * added grid testing device * added grid routing testing device * formatting * added line_initial_mapper and some tests; needs more testing * formatting * formatting * changed interface for LineInitialMapper and added better tests; test for directed graph value equality remaining * addressed comments and added ring device * added test for supportin directed graphs * changed interface for AbstractInitialMapper * formatting * changed RoutingTestingDevice interface; need to change is_isomorphic tests * added hard-coded isomorphism tests * fixed type issue * removed redundant imports * merged with routing testing device PR quantumlib#5830 * simplified _value_equalit_values_ * addressed comments * removed unused import * pasted routing files * fixed nits * cleaned up circuit transformer class; needs tests * addressed comments * formatting * small fixes * removed unused import * modified test file * debugging * removed print statements * debugging statement * debugging statement * fix * fix * print statement * edges sorting * addressed comments; ready for review * fixed type bug * cleanup * wrote some tests * ready for review * type and lint fixes * working for basic tests * slightly modified _make_circuit_graph() * added some tests * added test for testing valid circuits and fixed bug in _make_circuit_graph() * debugging currently * made dict of dict storing pqubit distances into numpy integer numpy array * made dict of dict storing pqubit distances into numpy integer numpy array * used better cost function that sped up algorithm by a lot * cleaned up a little and added coverage tests * removed unitary testing code; will add it in next PR * fixed lint and type issues * small lint fix * added unitary testing for routed circuits * changed api to accept only a final mapping of a set of qubits to itself * fixed typos * fixed some docstrings, changed __call__ and route_circuit() order, and move a class function to free function * added tests * refactored _get_timesteps() as per suggestion * more fixes * changed construction of two and single qubit ops lists * fixed bug from _get_two_qubit_ops and added unitary testing * addressed comments and refactored _route() function * minor cleanup * addressed comments * made helper functions class variable and passed mapping manager as function argument everywhere * docstring and nomenclature changes Co-authored-by: Tanuj Khattar <tanujkhattar@google.com>
- Loading branch information