示例#1
0
def test_annotation_position_and_content(ax, format_string):
    row_col_list = ((0, 5), (8, 1), (7, 0), (13, 5), (1, 6), (3, 2), (2, 8))
    qubits = [grid_qubit.GridQubit(row, col) for (row, col) in row_col_list]
    values = np.random.random(len(qubits))
    test_value_map = {(qubit, ): value for qubit, value in zip(qubits, values)}
    test_row_col_map = {rc: value for rc, value in zip(row_col_list, values)}
    random_heatmap = heatmap.Heatmap(test_value_map,
                                     annotation_format=format_string)
    random_heatmap.plot(ax)
    actual_texts = set()
    for artist in ax.get_children():
        if isinstance(artist, mpl.text.Text):
            col, row = artist.get_position()
            text = artist.get_text()
            actual_texts.add(((row, col), text))
    expected_texts = set((qubit, format(value, format_string))
                         for qubit, value in test_row_col_map.items())
    assert expected_texts.issubset(actual_texts)
示例#2
0
def test_default_annotation(ax):
    """Tests that the default annotation is '.2g' format on float(value)."""
    row_col_list = ((0, 5), (8, 1), (7, 0), (13, 5), (1, 6), (3, 2), (2, 8))
    qubits = [grid_qubit.GridQubit(row, col) for (row, col) in row_col_list]
    values = ['3.752', '42', '-5.27e8', '-7.34e-9', 732, 0.432, 3.9753e28]
    test_value_map = {(qubit, ): value for qubit, value in zip(qubits, values)}
    test_row_col_map = {rc: value for rc, value in zip(row_col_list, values)}
    random_heatmap = heatmap.Heatmap(test_value_map)
    random_heatmap.plot(ax)
    actual_texts = set()
    for artist in ax.get_children():
        if isinstance(artist, mpl.text.Text):
            col, row = artist.get_position()
            text = artist.get_text()
            actual_texts.add(((row, col), text))
    expected_texts = set((qubit, format(float(value), '.2g'))
                         for qubit, value in test_row_col_map.items())
    assert expected_texts.issubset(actual_texts)
示例#3
0
def test_cells_positions(ax, test_GridQubit):
    row_col_list = ((0, 5), (8, 1), (7, 0), (13, 5), (1, 6), (3, 2), (2, 8))
    if test_GridQubit:
        qubits = [
            grid_qubit.GridQubit(row, col) for (row, col) in row_col_list
        ]
    else:
        qubits = row_col_list
    values = np.random.random(len(qubits))
    test_value_map = {qubit: value for qubit, value in zip(qubits, values)}
    _, mesh, _ = heatmap.Heatmap(test_value_map).plot(ax)

    found_qubits = set()
    for path in mesh.get_paths():
        vertices = path.vertices[0:4]
        row = int(round(np.mean([v[1] for v in vertices])))
        col = int(round(np.mean([v[0] for v in vertices])))
        found_qubits.add((row, col))
    assert found_qubits == set(row_col_list)
示例#4
0
def test_cell_colors(axes, colormap_name):
    qubits = ((0, 5), (8, 1), (7, 0), (13, 5), (1, 6), (3, 2), (2, 8))
    values = 1.0 + 2.0 * np.random.random(len(qubits))  # [1, 3)
    test_value_map = {qubit: value for qubit, value in zip(qubits, values)}
    vmin, vmax = 1.5, 2.5
    random_heatmap = (heatmap.Heatmap(test_value_map).set_colormap(
        colormap_name, vmin=vmin, vmax=vmax))
    mesh, _ = random_heatmap.plot(axes)

    colormap = mpl.cm.get_cmap(colormap_name)
    for path, facecolor in zip(mesh.get_paths(), mesh.get_facecolors()):
        vertices = path.vertices[0:4]
        row = int(round(np.mean([v[1] for v in vertices])))
        col = int(round(np.mean([v[0] for v in vertices])))
        value = test_value_map[(row, col)]
        color_scale = (value - vmin) / (vmax - vmin)
        if color_scale < 0.0:
            color_scale = 0.0
        if color_scale > 1.0:
            color_scale = 1.0
        expected_color = np.array(colormap(color_scale))
        assert np.all(np.isclose(facecolor, expected_color))
示例#5
0
def test_plot_updates_local_config():
    value_map_2d = {
        (grid_qubit.GridQubit(3, 2), grid_qubit.GridQubit(4, 2)):
        0.004619111460557768,
        (grid_qubit.GridQubit(4, 1), grid_qubit.GridQubit(4, 2)):
        0.0076079162393482835,
    }
    value_map_1d = {
        (grid_qubit.GridQubit(3, 2), ): 0.004619111460557768,
        (grid_qubit.GridQubit(4, 2), ): 0.0076079162393482835,
    }
    original_title = "Two Qubit Interaction Heatmap"
    new_title = "Temporary title for the plot"
    for random_heatmap in [
            heatmap.TwoQubitInteractionHeatmap(value_map_2d,
                                               title=original_title),
            heatmap.Heatmap(value_map_1d, title=original_title),
    ]:
        _, ax = plt.subplots()
        random_heatmap.plot(ax, title=new_title)
        assert ax.get_title() == new_title
        _, ax = plt.subplots()
        random_heatmap.plot(ax)
        assert ax.get_title() == original_title
示例#6
0
def test_annotation_map(ax):
    row_col_list = [(0, 5), (8, 1), (7, 0), (13, 5), (1, 6), (3, 2), (2, 8)]
    qubits = [grid_qubit.GridQubit(*row_col) for row_col in row_col_list]
    values = np.random.random(len(qubits))
    annos = np.random.choice([c for c in string.ascii_letters], len(qubits))
    test_value_map = {(qubit, ): value for qubit, value in zip(qubits, values)}
    test_anno_map = {
        (qubit, ): anno
        for qubit, row_col, anno in zip(qubits, row_col_list, annos)
        if row_col != (1, 6)
    }
    random_heatmap = heatmap.Heatmap(test_value_map,
                                     annotation_map=test_anno_map)
    random_heatmap.plot(ax)
    actual_texts = set()
    for artist in ax.get_children():
        if isinstance(artist, mpl.text.Text):
            col, row = artist.get_position()
            assert (row, col) != (1, 6)
            actual_texts.add(((row, col), artist.get_text()))
    expected_texts = set((row_col, anno)
                         for row_col, anno in zip(row_col_list, annos)
                         if row_col != (1, 6))
    assert expected_texts.issubset(actual_texts)
示例#7
0
def test_urls(ax, test_GridQubit):
    row_col_list = ((0, 5), (8, 1), (7, 0), (13, 5), (1, 6), (3, 2), (2, 8))
    if test_GridQubit:
        qubits = [grid_qubit.GridQubit(*row_col) for row_col in row_col_list]
    else:
        qubits = row_col_list
    values = np.random.random(len(qubits))
    test_value_map = {qubit: value for qubit, value in zip(qubits, values)}
    test_url_map = {
        qubit: 'http://google.com/{}+{}'.format(*row_col)
        for qubit, row_col in zip(qubits, row_col_list) if row_col != (1, 6)
    }
    # Add an extra entry that should not show up in results because the
    # qubit is not in the value map.
    extra_qubit = grid_qubit.GridQubit(10, 7) if test_GridQubit else (10, 7)
    test_url_map[extra_qubit] = 'http://google.com/10+7'

    my_heatmap = heatmap.Heatmap(test_value_map).set_url_map(test_url_map)
    _, mesh, _ = my_heatmap.plot(ax)
    expected_urls = [
        test_url_map.get(qubit, '')
        for row_col, qubit in sorted(zip(row_col_list, qubits))
    ]
    assert mesh.get_urls() == expected_urls