def test_parameter_setter_from_automatic_repetition(self, params): """Test getting and setting of the nlocal parameters.""" circuit = QuantumCircuit(2) circuit.ry(Parameter('a'), 0) circuit.crx(Parameter('b'), 0, 1) # repeat circuit and check that parameters are duplicated reps = 3 nlocal = NLocal(2, entanglement_blocks=circuit, reps=reps) nlocal.assign_parameters(params, inplace=True) param_set = set(p for p in params if isinstance(p, ParameterExpression)) with self.subTest(msg='Test the parameters of the non-transpiled circuit'): # check the parameters of the final circuit self.assertEqual(nlocal.parameters, param_set) with self.subTest(msg='Test the parameters of the transpiled circuit'): basis_gates = ['id', 'u1', 'u2', 'u3', 'cx'] transpiled_circuit = transpile(nlocal, basis_gates=basis_gates) self.assertEqual(transpiled_circuit.parameters, param_set)
def test_repetetive_parameter_setting(self): """Test alternate setting of parameters and circuit construction.""" x = Parameter('x') circuit = QuantumCircuit(1) circuit.rx(x, 0) nlocal = NLocal(1, entanglement_blocks=circuit, reps=3, insert_barriers=True) with self.subTest(msg='immediately after initialization'): self.assertEqual(len(nlocal.parameters), 3) with self.subTest(msg='after circuit construction'): self.assertEqual(len(nlocal.parameters), 3) q = Parameter('q') nlocal.assign_parameters([x, q, q], inplace=True) with self.subTest(msg='setting parameter to Parameter objects'): self.assertEqual(nlocal.parameters, set({x, q})) nlocal.assign_parameters([0, -1], inplace=True) with self.subTest(msg='setting parameter to numbers'): self.assertEqual(nlocal.parameters, set())
def test_parameters_setter(self, params): """Test setting the parameters via list.""" # construct circuit with some parameters initial_params = ParameterVector('p', length=6) circuit = QuantumCircuit(1) for i, initial_param in enumerate(initial_params): circuit.ry(i * initial_param, 0) # create an NLocal from the circuit and set the new parameters nlocal = NLocal(1, entanglement_blocks=circuit, reps=1) nlocal.assign_parameters(params, inplace=True) param_set = set(p for p in params if isinstance(p, ParameterExpression)) with self.subTest(msg='Test the parameters of the non-transpiled circuit'): # check the parameters of the final circuit self.assertEqual(nlocal.parameters, param_set) with self.subTest(msg='Test the parameters of the transpiled circuit'): basis_gates = ['id', 'u1', 'u2', 'u3', 'cx'] transpiled_circuit = transpile(nlocal, basis_gates=basis_gates) self.assertEqual(transpiled_circuit.parameters, param_set)