Exemplo n.º 1
0
def test_qpu_result_to_cirq_result():
    result = ionq.QPUResult({
        0b00: 1,
        0b01: 2
    },
                            num_qubits=2,
                            measurement_dict={'x': [0, 1]})
    assert result.to_cirq_result() == cirq.Result(
        params=cirq.ParamResolver({}),
        measurements={'x': [[0, 0], [0, 1], [0, 1]]})
    params = cirq.ParamResolver({'a': 0.1})
    assert result.to_cirq_result(params) == cirq.Result(
        params=params, measurements={'x': [[0, 0], [0, 1], [0, 1]]})
    result = ionq.QPUResult({
        0b00: 1,
        0b01: 2
    },
                            num_qubits=2,
                            measurement_dict={'x': [0]})
    assert result.to_cirq_result() == cirq.Result(
        params=cirq.ParamResolver({}), measurements={'x': [[0], [0], [0]]})
    result = ionq.QPUResult({
        0b00: 1,
        0b01: 2
    },
                            num_qubits=2,
                            measurement_dict={'x': [1]})
    assert result.to_cirq_result() == cirq.Result(
        params=cirq.ParamResolver({}), measurements={'x': [[0], [1], [1]]})
Exemplo n.º 2
0
def test_qpu_result_measurement_multiple_key():
    result = ionq.QPUResult(
        {0b00: 10, 0b01: 20}, num_qubits=2, measurement_dict={'a': [0], 'b': [1]}
    )
    assert result.counts('a') == {0b0: 30}
    assert result.counts('b') == {0b0: 10, 0b1: 20}
    result = ionq.QPUResult(
        {0b00: 10, 0b01: 20}, num_qubits=2, measurement_dict={'a': [1], 'b': [0]}
    )
    assert result.counts('a') == {0b0: 10, 0b1: 20}
    assert result.counts('b') == {0b0: 30}
Exemplo n.º 3
0
def test_qpu_result_eq():
    equals_tester = cirq.testing.EqualsTester()
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 10
        },
                       num_qubits=1,
                       measurement_dict={'a': [0]}),
        ionq.QPUResult({
            0: 10,
            1: 10
        },
                       num_qubits=1,
                       measurement_dict={'a': [0]}),
    )
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 20
        },
                       num_qubits=1,
                       measurement_dict={'a': [0]}))
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 15,
            1: 15
        },
                       num_qubits=1,
                       measurement_dict={'a': [0]}))
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 10
        },
                       num_qubits=2,
                       measurement_dict={'a': [0]}))
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 10
        },
                       num_qubits=1,
                       measurement_dict={'b': [0]}))
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 10
        },
                       num_qubits=1,
                       measurement_dict={'a': [1]}))
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 10
        },
                       num_qubits=1,
                       measurement_dict={'a': [0, 1]}))
Exemplo n.º 4
0
def test_job_results_poll(mock_sleep):
    ready_job = {
        'id': 'my_id',
        'status': 'ready',
    }
    completed_job = {
        'id': 'my_id',
        'status': 'completed',
        'qubits': '1',
        'target': 'qpu',
        'metadata': {
            'shots': 1000
        },
        'data': {
            'histogram': {
                '0': '0.6',
                '1': '0.4'
            }
        }
    }
    mock_client = mock.MagicMock()
    mock_client.get_job.side_effect = [ready_job, completed_job]
    job = ionq.Job(mock_client, ready_job)
    results = job.results(polling_seconds=0)
    assert results == ionq.QPUResult({0: 600, 1: 400}, 1)
    mock_sleep.assert_called_once()
Exemplo n.º 5
0
def test_qpu_result_to_cirq_result_no_keys():
    result = ionq.QPUResult({
        0b00: 1,
        0b01: 2
    },
                            num_qubits=2,
                            measurement_dict={})
    with pytest.raises(ValueError, match='cirq results'):
        _ = result.to_cirq_result()
Exemplo n.º 6
0
def test_qpu_result_eq():
    equals_tester = cirq.testing.EqualsTester()
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 10
        }, num_qubits=1), ionq.QPUResult({
            0: 10,
            1: 10
        }, num_qubits=1))
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 20
        }, num_qubits=1))
    equals_tester.add_equality_group(
        ionq.QPUResult({
            0: 10,
            1: 20
        }, num_qubits=2))
Exemplo n.º 7
0
def test_qpu_result_fields():
    result = ionq.QPUResult({
        0: 10,
        1: 10
    },
                            num_qubits=1,
                            measurement_dict={'a': [0]})
    assert result.counts() == {0: 10, 1: 10}
    assert result.repetitions() == 20
    assert result.num_qubits() == 1
    assert result.measurement_dict() == {'a': [0]}
Exemplo n.º 8
0
def test_qpu_result_to_cirq_result():
    result = ionq.QPUResult({0b00: 1, 0b01: 2}, num_qubits=2, measurement_dict={'x': [0, 1]})
    assert result.to_cirq_result() == cirq.Result(
        params=cirq.ParamResolver({}), measurements={'x': [[0, 0], [0, 1], [0, 1]]}
    )
    params = cirq.ParamResolver({'a': 0.1})
    assert result.to_cirq_result(params) == cirq.Result(
        params=params, measurements={'x': [[0, 0], [0, 1], [0, 1]]}
    )
    result = ionq.QPUResult({0b00: 1, 0b01: 2}, num_qubits=2, measurement_dict={'x': [0]})
    assert result.to_cirq_result() == cirq.Result(
        params=cirq.ParamResolver({}), measurements={'x': [[0], [0], [0]]}
    )
    result = ionq.QPUResult({0b00: 1, 0b01: 2}, num_qubits=2, measurement_dict={'x': [1]})
    assert result.to_cirq_result() == cirq.Result(
        params=cirq.ParamResolver({}), measurements={'x': [[0], [1], [1]]}
    )
    # cirq.Result only compares pandas data frame, so possible to have supplied an list of
    # list instead of a numpy multidimensional array. Check this here.
    assert type(result.to_cirq_result().measurements['x']) == np.ndarray
Exemplo n.º 9
0
def test_qpu_result_to_cirq_result_multiple_keys():
    result = ionq.QPUResult(
        {0b000: 2, 0b101: 3}, num_qubits=3, measurement_dict={'x': [1], 'y': [2, 0]}
    )
    assert result.to_cirq_result() == cirq.Result(
        params=cirq.ParamResolver({}),
        measurements={
            'x': [[0], [0], [0], [0], [0]],
            'y': [[0, 0], [0, 0], [1, 1], [1, 1], [1, 1]],
        },
    )
Exemplo n.º 10
0
def test_qpu_result_bad_measurement_key():
    result = ionq.QPUResult({
        0b00: 10,
        0b01: 20
    },
                            num_qubits=2,
                            measurement_dict={
                                'a': [0],
                                'b': [1]
                            })
    with pytest.raises(ValueError, match='bad'):
        result.counts('bad')
Exemplo n.º 11
0
def test_job_results_qpu_endianness():
    job_dict = {
        'id': 'my_id',
        'status': 'completed',
        'qubits': '2',
        'target': 'qpu',
        'metadata': {'shots': 1000},
        'data': {'histogram': {'0': '0.6', '1': '0.4'}},
    }
    job = ionq.Job(None, job_dict)
    results = job.results()
    assert results == ionq.QPUResult({0: 600, 2: 400}, 2)
Exemplo n.º 12
0
def test_qpu_result_measurement_key():
    result = ionq.QPUResult({
        0b00: 10,
        0b01: 20
    },
                            num_qubits=2,
                            measurement_dict={'a': [0]})
    assert result.counts() == {0b00: 10, 0b01: 20}
    result = ionq.QPUResult({
        0b00: 10,
        0b01: 20
    },
                            num_qubits=2,
                            measurement_dict={'a': [0]})
    assert result.counts('a') == {0b0: 30}
    result = ionq.QPUResult({
        0b00: 10,
        0b01: 20
    },
                            num_qubits=2,
                            measurement_dict={'a': [1]})
    assert result.counts('a') == {0b0: 10, 0b1: 20}
    result = ionq.QPUResult({
        0b00: 10,
        0b01: 20
    },
                            num_qubits=2,
                            measurement_dict={'a': [0, 1]})
    assert result.counts('a') == {0b00: 10, 0b01: 20}
    result = ionq.QPUResult({
        0b00: 10,
        0b01: 20
    },
                            num_qubits=2,
                            measurement_dict={'a': [1, 0]})
    assert result.counts('a') == {0b00: 10, 0b10: 20}
    result = ionq.QPUResult({
        0b000: 10,
        0b111: 20
    },
                            num_qubits=3,
                            measurement_dict={'a': [2]})
    assert result.counts('a') == {0b0: 10, 0b1: 20}
    result = ionq.QPUResult({
        0b000: 10,
        0b100: 20
    },
                            num_qubits=3,
                            measurement_dict={'a': [1, 2]})
    assert result.counts('a') == {0b00: 30}
Exemplo n.º 13
0
def test_job_results_qpu():
    job_dict = {
        'id': 'my_id',
        'status': 'completed',
        'qubits': '2',
        'target': 'qpu',
        'metadata': {
            'shots': 1000,
            'measurement0': f'a{chr(31)}0,1'
        },
        'data': {
            'histogram': {
                '0': '0.6',
                '2': '0.4'
            }
        },
    }
    job = ionq.Job(None, job_dict)
    results = job.results()
    expected = ionq.QPUResult({0: 600, 1: 400}, 2, {'a': [0, 1]})
    assert results == expected
Exemplo n.º 14
0
def test_qpu_result_str():
    result = ionq.QPUResult({0: 10, 1: 10}, num_qubits=2)
    assert str(result) == '00: 10\n01: 10'
Exemplo n.º 15
0
def test_qpu_result_fields():
    result = ionq.QPUResult({0: 10, 1: 10}, num_qubits=1)
    assert result.counts() == {0: 10, 1: 10}
    assert result.repetitions() == 20
    assert result.num_qubits() == 1
Exemplo n.º 16
0
def test_qpu_result_str():
    result = ionq.QPUResult({0: 10, 1: 10}, num_qubits=2, measurement_dict={})
    assert str(result) == '00: 10\n01: 10'