diff --git a/generated/nirfsg/nirfsg/_library_interpreter.py b/generated/nirfsg/nirfsg/_library_interpreter.py index 58a366dbb..47563dfd8 100644 --- a/generated/nirfsg/nirfsg/_library_interpreter.py +++ b/generated/nirfsg/nirfsg/_library_interpreter.py @@ -384,7 +384,11 @@ def get_attribute_vi_string(self, channel_name, attribute): # noqa: N802 errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) return value_ctype.value.decode(self._encoding) - def get_deembedding_sparameters(self, sparameters, sparameters_array_size): # noqa: N802 + def get_deembedding_sparameters(self): + import numpy as np + number_of_ports = self.get_deembedding_table_number_of_ports() + sparameters_array_size = number_of_ports ** 2 + sparameters = np.full((number_of_ports, number_of_ports), 0 + 0j, dtype=np.complex128) vi_ctype = _visatype.ViSession(self._vi) # case S110 sparameters_ctype = _get_ctypes_pointer_for_buffer(value=sparameters, library_type=_complextype.NIComplexNumber) # case B510 sparameters_array_size_ctype = _visatype.ViInt32(sparameters_array_size) # case S150 @@ -392,7 +396,8 @@ def get_deembedding_sparameters(self, sparameters, sparameters_array_size): # n number_of_ports_ctype = _visatype.ViInt32() # case S220 error_code = self._library.niRFSG_GetDeembeddingSparameters(vi_ctype, sparameters_ctype, sparameters_array_size_ctype, None if number_of_sparameters_ctype is None else (ctypes.pointer(number_of_sparameters_ctype)), None if number_of_ports_ctype is None else (ctypes.pointer(number_of_ports_ctype))) errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) - return int(number_of_sparameters_ctype.value), int(number_of_ports_ctype.value) + sparameters = sparameters.reshape((int(number_of_ports_ctype.value), int(number_of_ports_ctype.value))) + return sparameters def get_deembedding_table_number_of_ports(self): # noqa: N802 vi_ctype = _visatype.ViSession(self._vi) # case S110 diff --git a/generated/nirfsg/nirfsg/session.py b/generated/nirfsg/nirfsg/session.py index c6eaa90c8..77012abb2 100644 --- a/generated/nirfsg/nirfsg/session.py +++ b/generated/nirfsg/nirfsg/session.py @@ -6362,7 +6362,7 @@ def create_deembedding_sparameter_table_array(self, port, table_name, frequencie raise TypeError("Unsupported datatype. Expected numpy array.") def get_deembedding_sparameters(self): - '''get_deembedding_sparameters + r'''get_deembedding_sparameters Returns the S-parameters used for de-embedding a measurement on the selected port. @@ -6378,12 +6378,7 @@ def get_deembedding_sparameters(self): sparameters (numpy.array(dtype=numpy.complex128)): Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. ''' - import numpy as np - number_of_ports = self._get_deembedding_table_number_of_ports() - sparameter_array_size = number_of_ports ** 2 - sparameters = np.full((number_of_ports, number_of_ports), 0 + 0j, dtype=np.complex128) - _, number_of_ports = self._get_deembedding_sparameters(sparameters, sparameter_array_size) - sparameters = sparameters.reshape((number_of_ports, number_of_ports)) + sparameters = self._interpreter.get_deembedding_sparameters() return sparameters @ivi_synchronized @@ -6416,59 +6411,6 @@ def get_all_script_names(self): script_names = self._interpreter.get_all_script_names() return _converters.convert_comma_separated_string_to_list(script_names) - @ivi_synchronized - def _get_deembedding_sparameters(self, sparameters, sparameters_array_size): - r'''_get_deembedding_sparameters - - Returns the S-parameters used for de-embedding a measurement on the selected port. - - This includes interpolation of the parameters based on the configured carrier frequency. This method returns an empty array if no de-embedding is done. - - If you want to call this method just to get the required buffer size, you can pass 0 for **S-parameter Size** and VI_NULL for the **S-parameters** buffer. - - **Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860 - - Note: The port orientation for the returned S-parameters is normalized to SparameterOrientation.PORT1_TOWARDS_DUT. - - Args: - sparameters (numpy.array(dtype=numpy.complex128)): Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. - - sparameters_array_size (int): Specifies the size of the array that is returned by the SPARAMETERS output. - - Note: - One or more of the referenced properties are not in the Python API for this driver. - - - Returns: - number_of_sparameters (int): Returns the number of S-parameters. - - number_of_ports (int): Returns the number of S-parameter ports. The **sparameter** array is always *n* x *n*, where span *n* is the number of ports. - - ''' - import numpy - - if type(sparameters) is not numpy.ndarray: - raise TypeError('sparameters must be {0}, is {1}'.format(numpy.ndarray, type(sparameters))) - if numpy.isfortran(sparameters) is True: - raise TypeError('sparameters must be in C-order') - if sparameters.dtype is not numpy.dtype('complex128'): - raise TypeError('sparameters must be numpy.ndarray of dtype=complex128, is ' + str(sparameters.dtype)) - number_of_sparameters, number_of_ports = self._interpreter.get_deembedding_sparameters(sparameters, sparameters_array_size) - return number_of_sparameters, number_of_ports - - @ivi_synchronized - def _get_deembedding_table_number_of_ports(self): - r'''_get_deembedding_table_number_of_ports - - Returns the number of S-parameter ports. - - Returns: - number_of_ports (int): Returns the number of S-parameter ports. The **sparameter** array is always *n* x *n*, where span *n* is the number of ports. - - ''' - number_of_ports = self._interpreter.get_deembedding_table_number_of_ports() - return number_of_ports - @ivi_synchronized def _get_external_calibration_last_date_and_time(self): r'''_get_external_calibration_last_date_and_time diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 64416372f..b1a9f66c4 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -1513,7 +1513,7 @@ 'documentation_filename': 'default_method', 'library_interpreter_filename': 'none', 'method_python_name_suffix': '', - 'session_filename': 'get_deembedding_sparameter' + 'session_filename': 'default_method' } ], 'parameters': [ @@ -2054,9 +2054,9 @@ 'method_templates': [ { 'documentation_filename': 'numpy_method', - 'library_interpreter_filename': 'numpy_read_method', + 'library_interpreter_filename': 'get_deembedding_sparameter', 'method_python_name_suffix': '', - 'session_filename': 'numpy_read_method' + 'session_filename': 'none' } ], 'parameters': [ @@ -2121,6 +2121,14 @@ 'description': '\nReturns the number of S-parameter ports.' }, 'included_in_proto': True, + 'method_templates': [ + { + 'documentation_filename': 'default_method', + 'library_interpreter_filename': 'default_method', + 'method_python_name_suffix': '', + 'session_filename': 'none' + } + ], 'parameters': [ { 'direction': 'in', diff --git a/src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako b/src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako new file mode 100644 index 000000000..27c91dd4f --- /dev/null +++ b/src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako @@ -0,0 +1,15 @@ +<%page args="f, config, method_template"/>\ +<% + '''Retrieves S-parameters from the gRPC call response and converts them to a reshaped numpy array.''' + import build.helper as helper +%>\ + def ${f['interpreter_name']}(self): + import numpy as np + response = self._invoke( + self._client.GetDeembeddingSparameters, + grpc_types.GetDeembeddingSparametersRequest(vi=self._vi), + ) + number_of_ports = response.number_of_ports + sparameters = np.array([c.real + 1j * c.imaginary for c in response.sparameters], dtype=np.complex128) + sparameters = sparameters.reshape((number_of_ports, number_of_ports)) + return sparameters diff --git a/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako b/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako new file mode 100644 index 000000000..06ae7c8cc --- /dev/null +++ b/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako @@ -0,0 +1,20 @@ +<%page args="f, config, method_template"/>\ +<% + '''Gets S-parameters from the driver. Queries the number of ports, retrieves the S-parameter data into a pre-allocated buffer, and reshapes it.''' + import build.helper as helper +%>\ + + def ${f['interpreter_name']}(self): + import numpy as np + number_of_ports = self.get_deembedding_table_number_of_ports() + sparameters_array_size = number_of_ports ** 2 + sparameters = np.full((number_of_ports, number_of_ports), 0 + 0j, dtype=np.complex128) + vi_ctype = _visatype.ViSession(self._vi) # case S110 + sparameters_ctype = _get_ctypes_pointer_for_buffer(value=sparameters, library_type=_complextype.NIComplexNumber) # case B510 + sparameters_array_size_ctype = _visatype.ViInt32(sparameters_array_size) # case S150 + number_of_sparameters_ctype = _visatype.ViInt32() # case S220 + number_of_ports_ctype = _visatype.ViInt32() # case S220 + error_code = self._library.niRFSG_GetDeembeddingSparameters(vi_ctype, sparameters_ctype, sparameters_array_size_ctype, None if number_of_sparameters_ctype is None else (ctypes.pointer(number_of_sparameters_ctype)), None if number_of_ports_ctype is None else (ctypes.pointer(number_of_ports_ctype))) + errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False) + sparameters = sparameters.reshape((int(number_of_ports_ctype.value), int(number_of_ports_ctype.value))) + return sparameters diff --git a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako deleted file mode 100644 index 1b4d6aa46..000000000 --- a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako +++ /dev/null @@ -1,17 +0,0 @@ -<%page args="f, config, method_template"/>\ -<% - '''Creates a numpy array based on number of ports queried from driver and passes it to "get_deembedding_sparameters" method.''' - import build.helper as helper -%>\ - def ${f['python_name']}(${helper.get_params_snippet(f, helper.ParameterUsageOptions.SESSION_METHOD_DECLARATION)}): - '''${f['python_name']} - - ${helper.get_function_docstring(f, False, config, indent=8)} - ''' - import numpy as np - number_of_ports = self._get_deembedding_table_number_of_ports() - sparameter_array_size = number_of_ports ** 2 - sparameters = np.full((number_of_ports, number_of_ports), 0 + 0j, dtype=np.complex128) - _, number_of_ports = self._get_deembedding_sparameters(sparameters, sparameter_array_size) - sparameters = sparameters.reshape((number_of_ports, number_of_ports)) - return sparameters