def test_gate_parameters(self): """Test that gate_parameters outputs the correctly parsed parameters""" true_params = { "squeezing_amplitude_0": Ranges([0], [1], variable_name="squeezing_amplitude_0"), "phase_0": Ranges([0], [0, 6.3], variable_name="phase_0"), "phase_1": Ranges([0.5, 1.4], variable_name="phase_1"), } spec_params = Device(spec=device_spec).gate_parameters assert true_params == spec_params
def test_get_device_spec(self, prog, connection, monkeypatch): """Tests a successful device spec request.""" target = "abc" layout = "" modes = 42 compiler = [] gate_parameters = {"param": Ranges([0, 1], variable_name="param")} monkeypatch.setattr( requests, "request", mock_return(MockResponse( 200, {"layout": "", "modes": 42, "compiler": [], "gate_parameters": {"param": [[0, 1]]}} )), ) device_spec = connection.get_device_spec(target) assert device_spec.target == target assert device_spec.layout == layout assert device_spec.modes == modes assert device_spec.compiler == compiler spec_params = device_spec.gate_parameters assert gate_parameters == spec_params
def gate_parameters(self): """dict[str, strawberryfields.compilers.Ranges]: A dictionary of gate parameters and allowed ranges. The parameter names correspond to those present in the Blackbird circuit layout. **Example** >>> spec.gate_parameters {'squeezing_amplitude_0': x=0, x=1, 'phase_0': x=0, 0≤x≤6.283185307179586} """ gate_parameters = dict() for gate_name, param_ranges in self._spec["gate_parameters"].items(): # convert gate parameter allowed ranges to Range objects range_list = [[i] if not isinstance(i, Sequence) else i for i in param_ranges] gate_parameters[gate_name] = Ranges(*range_list) return gate_parameters