Fix mpl conditional drawing (#3032)

* fix conditional drawing in mpl

* changelog

* add ref image

* lint
This commit is contained in:
Ali Javadi-Abhari 2019-08-27 12:02:33 -04:00 committed by GitHub
parent 7bc44b83aa
commit 7457aa9fad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 1 deletions

View File

@ -15,6 +15,9 @@ The format is based on [Keep a Changelog].
## [UNRELEASED]
### Fixed
- Fixed a bug in drawing conditional gates with matplotlib circuit drawer.
### Removed
- Removed `DeviceSpecification` in favor of `PulseChannelSpec`. (\#3033)

View File

@ -727,7 +727,7 @@ class MatplotlibDrawer:
ii in self._creg_dict]
mask = 0
for index, cbit in enumerate(self._creg):
if cbit.reg == op.condition[0]:
if cbit.register == op.condition[0]:
mask |= (1 << index)
val = op.condition[1]
# cbit list to consider

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -144,3 +144,29 @@ class TestMatplotlibDrawer(QiskitVisualizationTestCase):
'visualization/references/matplotlib_long_name_ref.png')
self.assertImagesAreEqual(ref_filename, long_name_filename)
@unittest.skipIf(not visualization.HAS_MATPLOTLIB,
'matplotlib not available.')
@unittest.skip('Test is unreliable on some platforms')
@unittest.skipIf(os.name == 'nt', 'Rendered image differs on windows')
def test_conditional(self):
"""Test that circuits with conditionals draw correctly
"""
qr = QuantumRegister(2, 'q')
cr = ClassicalRegister(2, 'c')
circuit = QuantumCircuit(qr, cr)
# check gates are shifted over accordingly
circuit.h(qr)
circuit.measure(qr, cr)
circuit.h(qr[0]).c_if(cr, 2)
conditional_filename = self._get_resource_path('current_conditional_matplotlib_ref.png')
visualization.circuit_drawer(circuit, output='mpl',
filename=conditional_filename)
self.addCleanup(os.remove, conditional_filename)
ref_filename = self._get_resource_path(
'visualization/references/matplotlib_conditional_ref.png')
self.assertImagesAreEqual(ref_filename, conditional_filename)