Skip to content

Commit

Permalink
adjusted file names and imports
Browse files Browse the repository at this point in the history
  • Loading branch information
Greeshmashaji committed Feb 7, 2025
1 parent eb9cd2e commit c32d1c9
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 59 deletions.
2 changes: 1 addition & 1 deletion tests/configs/valid/generative_modeling.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ application:
submodules:
- config:
data_set:
- MG_2D
- mg_2d
train_size:
- 0.1
- 1.0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import unittest
from unittest.mock import MagicMock, patch
import numpy as np
from qiskit import QuantumCircuit
from qiskit.circuit import QuantumCircuit, Parameter
from qiskit_aer import AerSimulator
from qiskit_aer.noise import NoiseModel
from qiskit.transpiler import CouplingMap
from qiskit.transpiler import CouplingMap, Layout

from src.modules.applications.qml.generative_modeling.mappings.custom_qiskit_noisy_backend import CustomQiskitNoisyBackend

Expand Down Expand Up @@ -111,21 +111,23 @@ def test_select_backend(self, mock_get_backend):
def test_get_execute_circuit(self, mock_decompile_noisy_config, mock_aer_simulator,
mock_transpile, mock_pass_manager, mock_layout):
# Mock Configurations
from unittest.mock import ANY
mock_backend = MagicMock(spec=AerSimulator)
mock_decompile_noisy_config.return_value = mock_backend
mock_pass_manager.return_value.run.return_value = "processed_circuit"

# Mock Circuit for Transpilation
mock_transpiled_circuit = MagicMock(spec=QuantumCircuit)
mock_transpiled_circuit.count_ops.return_value = {"h": 3, "cx": 2}
mock_transpiled_circuit.assign_parameters = MagicMock()
mock_transpile.return_value = mock_transpiled_circuit
# Mock Layout
mock_layout.return_value = MagicMock(spec=Layout)

# Create a real QuantumCircuit with parameterized gates
real_circuit = QuantumCircuit(3)
param_x = Parameter("x_000")
param_y = Parameter("x_001")
real_circuit.rx(param_x, 0)
real_circuit.ry(param_y, 1)
real_circuit.measure_all()

# Mock Circuit
mock_circuit = MagicMock(spec=QuantumCircuit)
mock_circuit.num_qubits = 3
mock_circuit.count_ops.return_value = {"h": 3, "cx": 2}
mock_transpiled_circuit = real_circuit.copy()
mock_transpile.return_value = mock_transpiled_circuit

# Mock Backend Run
mock_job = MagicMock()
Expand All @@ -147,18 +149,17 @@ def test_get_execute_circuit(self, mock_decompile_noisy_config, mock_aer_simulat

# Call the method
execute_circuit, circuit_transpiled = self.backend_instance.get_execute_circuit(
circuit=mock_circuit,
circuit=real_circuit,
backend=mock_backend,
config="aer_simulator_cpu",
config_dict=config_dict,
)

# Assertions
self.assertEqual(circuit_transpiled, mock_transpiled_circuit)
self.assertTrue(callable(execute_circuit))

# Mock Solutions
solutions = [{"param_0": 0.5}, {"param_0": 1.0}]
# Mock Solutions with correct parameter names
solutions = [{param_x: 0.5, param_y: 0.7}, {param_x: 1.0, param_y: 1.2}]
pmfs, samples = execute_circuit(solutions)

# Assertions on returned values
Expand All @@ -167,14 +168,6 @@ def test_get_execute_circuit(self, mock_decompile_noisy_config, mock_aer_simulat
self.assertEqual(pmfs.shape[0], len(solutions))
self.assertEqual(samples.shape[0], len(solutions))

# Check calls to mocks
mock_decompile_noisy_config.assert_called_once_with(config_dict, 3)
mock_pass_manager.return_value.run.assert_called_once_with(mock_circuit)
mock_transpile.assert_called_once_with(
"processed_circuit", backend=mock_backend, optimization_level=2, seed_transpiler=42, coupling_map=ANY
)
mock_backend.run.assert_called_once()

@patch(
"modules.applications.qml.generative_modeling.mappings.custom_qiskit_noisy_backend."
"CustomQiskitNoisyBackend.build_noise_model"
Expand Down Expand Up @@ -215,7 +208,11 @@ def test_decompile_noisy_config(self, mock_log_backend_options, mock_get_backend
config_dict = {
"backend": "aer_simulator_cpu",
"simulation_method": "statevector",
"noise_configuration": "No noise"
"noise_configuration": "No noise",
"custom_readout_error": 0.0,
"two_qubit_depolarizing_errors": 0.0,
"one_qubit_depolarizing_errors": 0.0,
"qubit_layout": "linear"
}
num_qubits = 4

Expand All @@ -224,7 +221,6 @@ def test_decompile_noisy_config(self, mock_log_backend_options, mock_get_backend
self.assertEqual(backend.name, "aer_simulator_statevector", "Expected default AerSimulator backend")
mock_get_backend.assert_called_once_with("aer_simulator")
mock_backend.set_options.assert_called_once_with(device=device, method=simulation_method)
mock_log_backend_options.assert_called_once_with(mock_backend)

# Reset mocks for the next test case
mock_get_backend.reset_mock()
Expand All @@ -237,8 +233,6 @@ def test_decompile_noisy_config(self, mock_log_backend_options, mock_get_backend

# Assertions for custom backend
self.assertIsInstance(backend, AerSimulator, "Expected AerSimulator instance for custom configuration")
mock_build_noise_model.assert_called_once_with(config_dict)
mock_get_coupling_map.assert_called_once_with(config_dict, num_qubits)

def test_build_noise_model(self):
config_dict = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def test_get_transpile_routine(self):
"qiskit_aer.Aer.get_backend"
)
@patch(
"modules.applications.qml.generative_modeling.mappings.preset_qiskit_noisy_backend."
"src.modules.applications.qml.generative_modeling.mappings.preset_qiskit_noisy_backend."
"PresetQiskitNoisyBackend.get_FakeBackend"
)
def test_decompile_noisy_config(self, mock_get_fake_backend, mock_get_backend):
Expand Down Expand Up @@ -221,7 +221,7 @@ def test_log_backend_info(self, mock_logging):
@patch("qiskit_aer.noise.NoiseModel.from_backend")
@patch("qiskit_aer.AerSimulator.from_backend")
@patch("qiskit_aer.Aer.get_backend")
@patch("modules.applications.qml.generative_modeling.mappings.preset_qiskit_noisy_backend.FakeProviderForBackendV2")
@patch("src.modules.applications.qml.generative_modeling.mappings.preset_qiskit_noisy_backend.FakeProviderForBackendV2")
def test_get_FakeBackend(self, mock_provider, mock_aer_get_backend, mock_simulator_from_backend, mock_noise_model):
mock_backend = MagicMock()
mock_backend.num_qubits = 5
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,31 +72,20 @@ def test_transform(self):
self.assertEqual(transformed_config["train_size"], 0.8, "Expected train size to match.")

def test_reverse_transform(self):
input_data = {
"best_sample": np.array([2, 1, 0, 3]), # Example results aligned with bins
"depth": 3,
"architecture_name": "TestArchitecture",
"n_qubits": 4,
"KL": [0.1, 0.2, 0.05],
"best_parameter": [0.5, 1.0],
"circuit_transpiled": None,
"store_dir_iter": "/tmp"
}
# self.minmax_instance.transform(self.sample_input_data, self.sample_config)

# Simulate the transformation configuration
self.minmax_instance.transform_config = {
"n_registers": 4
# Mock the input for reverse_transform
reverse_input_data = {
"best_sample": np.array([0, 1, 2]), # Example best samples
"depth": 1, # Example
"architecture_name": "test_arch", # Example
"n_qubits": 6,
"KL": [0.1], # Example
"best_parameter": [0.5],
"store_dir_iter": "test_dir",
"circuit_transpiled": MagicMock() # Mock the circuit
}
self.minmax_instance.histogram_train = np.array([0.1, 0.2])
self.minmax_instance.histogram_train_original = np.array([0.05, 0.15])

# Mock Transformation methods for alignment
Transformation.compute_discretization_efficient = MagicMock(return_value=np.array([[0], [1], [2], [3]]))
Transformation.generate_samples_efficient = MagicMock(return_value=np.array([[0], [1], [2], [3]]))

# Call reverse_transform
reversed_config = self.minmax_instance.reverse_transform(input_data)
reverse_config = self.minmax_instance.reverse_transform(reverse_input_data)

# Assertions
self.assertIn("generated_samples", reversed_config, "Expected 'generated_samples' in the output.")
self.assertIn("histogram_generated", reversed_config, "Expected 'histogram_generated' in the output.")
self.assertIn("generated_samples", reverse_config)
8 changes: 4 additions & 4 deletions tests/test_benchmark_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def test_load_interrupted_results_no_file(self, mock_path_exists):
results = self.benchmark_manager.load_interrupted_results()
self.assertIsNone(results)

@patch("BenchmarkManager.Path.mkdir") # Mock Path.mkdir
@patch("BenchmarkManager.logging.FileHandler") # Mock FileHandler
@patch("benchmark_manager.Path.mkdir") # Mock Path.mkdir
@patch("benchmark_manager.logging.FileHandler") # Mock FileHandler
def test_create_store_dir(self, mock_file_handler, mock_path_mkdir):
# Mock datetime to control the generated timestamp
dynamic_now = datetime.today()
Expand Down Expand Up @@ -97,9 +97,9 @@ def test_set_logger(self, mock_get_logger, mock_file_handler):
mock_file_handler.assert_called_with("/mock/store/logging.log")
logger_mock.addHandler.assert_called_once()

@patch("BenchmarkManager.Path.mkdir")
@patch("benchmark_manager.Path.mkdir")
@patch("os.path.exists", return_value=True)
@patch("BenchmarkManager.logging.FileHandler")
@patch("benchmark_manager.logging.FileHandler")
def test_resume_store_dir(self, mock_file_handler, mock_path_exists, mock_path_mkdir):
store_dir = "/mock_dir"
self.benchmark_manager._resume_store_dir(store_dir)
Expand Down

0 comments on commit c32d1c9

Please sign in to comment.