Skip to content

Commit f71ad96

Browse files
committed
added gh workflow
1 parent c535b1e commit f71ad96

6 files changed

Lines changed: 95 additions & 1 deletion

File tree

.github/workflows/ci.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,28 @@ jobs:
1414
- name: Install dependencies
1515
run: |
1616
pip install -e .
17+
- name: Test
18+
run: coverage run -m pytest tests
19+
20+
- name: Combine all coverage results
21+
run: coverage combine
22+
23+
- name: Generate coverage report
24+
run: coverage report
25+
26+
- name: Coveralls Services
27+
run: coveralls --service=github
28+
env:
29+
GITHUB_TOKEN: ${{ secrets.github_token }}
30+
COVERALLS_FLAG_NAME: python-${{ matrix.version }}
31+
COVERALLS_PARALLEL: true
32+
33+
finish:
34+
needs: build
35+
runs-on: ubuntu-latest
36+
steps:
37+
- name: Coveralls Finished
38+
uses: coverallsapp/github-action@master
39+
with:
40+
github-token: ${{ secrets.github_token }}
41+
parallel-finished: true

hadamard_random_forest/sample.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def get_samples(
7171
elif isinstance(sampler, Sampler):
7272
results = sampler.run([(qc, parameters) for qc in circuits]).result()[0].data.meas.get_counts()
7373
else:
74-
raise ValueError("Sampler must be of type qiskit_aer.primitives.Sampler or qiskit_ibm_runtime.SamplerV2")
74+
raise ValueError("Sampler must be of type qiskit_aer.primitives.Sampler or qiskit_ibm_runtime.SamplerV2.")
7575

7676
samples: List[np.ndarray] = []
7777
for res in results:

setup.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@
3333
'qiskit-experiments>=0.10.0',
3434
'mthree==3.0.0',
3535
],
36+
extras_require={
37+
'dev': [
38+
'pytest','pytest-runner', 'coverage', 'coveralls'
39+
],
40+
},
3641
python_requires='>=3.8, <4',
3742
classifiers=[
3843
'Programming Language :: Python :: 3',

tests/__init__.py

Whitespace-only changes.

tests/test_random_forest.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import unittest
2+
import numpy as np
3+
from hadamard_random_forest.random_forest import (generate_random_forest)
4+
5+
6+
class TestRandomForest(unittest.TestCase):
7+
8+
def test_generate_random_forest(self):
9+
"""
10+
Test that generate_random_forest returns a valid result.
11+
"""
12+
num_qubits = 3
13+
num_trees = 5
14+
samples = [np.random.rand(2**num_qubits) for _ in range(num_qubits+1)]
15+
result = generate_random_forest(num_qubits, num_trees, samples, save_tree=False)
16+
self.assertIsInstance(result, np.ndarray)
17+
self.assertEqual(result.shape, (2**num_qubits,))
18+
19+
20+
if __name__ == '__main__':
21+
unittest.main()
22+

tests/test_sample.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import unittest
2+
import numpy as np
3+
from qiskit.circuit.random import random_circuit
4+
from qiskit_aer.primitives import Sampler as Aer_Sampler
5+
from qiskit.circuit.library import real_amplitudes
6+
from hadamard_random_forest.sample import (
7+
get_statevector,
8+
get_circuits,
9+
get_samples
10+
)
11+
12+
class TestSample(unittest.TestCase):
13+
14+
def test_get_circuits(self):
15+
num_qubits = 3
16+
base_circuit = random_circuit(num_qubits,3, measure=False)
17+
circuits = get_circuits(num_qubits, base_circuit)
18+
self.assertEqual(len(circuits), 4)
19+
self.assertEqual(circuits[0].num_qubits, 3)
20+
self.assertEqual(circuits[1].num_qubits, 3)
21+
22+
def test_get_samples(self):
23+
num_qubits = 3
24+
sampler = Aer_Sampler()
25+
base_circuit = real_amplitudes(num_qubits)
26+
parameters = np.random.rand(12)
27+
circuits = get_circuits(num_qubits, base_circuit)
28+
_ = get_samples(num_qubits, sampler, circuits, parameters)
29+
30+
def test_get_statevector(self):
31+
"""
32+
Test that get_statevector returns a valid statevector.
33+
"""
34+
num_qubits = 3
35+
num_trees = 5
36+
samples = [np.random.rand(2**num_qubits) for _ in range(num_qubits+1)]
37+
statevector = get_statevector(num_qubits, num_trees, samples, save_tree=False)
38+
self.assertIsInstance(statevector, np.ndarray)
39+
self.assertEqual(statevector.shape, (2**num_qubits,))
40+
41+
if __name__ == '__main__':
42+
unittest.main()

0 commit comments

Comments
 (0)