From 6a11ce30ccfdc3036053e0a76360505cdcd6a19d Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 3 Mar 2026 07:23:15 +0000 Subject: [PATCH 01/14] initial version --- docs/nirfsg/class.rst | 27 +++++++- generated/nirfsg/nirfsg/_library.py | 6 +- .../nirfsg/nirfsg/_library_interpreter.py | 16 ++++- generated/nirfsg/nirfsg/session.py | 62 +------------------ .../nirfsg/nirfsg/unit_tests/_mock_helper.py | 2 +- src/nirfsg/metadata/functions.py | 23 ++++--- .../get_deembedding_sparameter.py.mako | 27 ++++++++ .../get_deembedding_sparameter.py.mako | 11 +--- 8 files changed, 85 insertions(+), 89 deletions(-) create mode 100644 src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako diff --git a/docs/nirfsg/class.rst b/docs/nirfsg/class.rst index ccbe8656f..7a246495a 100644 --- a/docs/nirfsg/class.rst +++ b/docs/nirfsg/class.rst @@ -1232,11 +1232,32 @@ get_deembedding_sparameters - :rtype: numpy.array(dtype=numpy.complex128) - :return: + :param sparameters: + + + Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. + + + + + :type sparameters: numpy.array(dtype=numpy.complex128) + + :rtype: tuple (number_of_sparameters, number_of_ports) + + WHERE + + number_of_sparameters (int): + + + Returns the number of S-parameters. + + + + + number_of_ports (int): - Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. + Returns the number of S-parameter ports. The **sparameter** array is always *n* x *n*, where span *n* is the number of ports. diff --git a/generated/nirfsg/nirfsg/_library.py b/generated/nirfsg/nirfsg/_library.py index b808c7f40..ad49fbe80 100644 --- a/generated/nirfsg/nirfsg/_library.py +++ b/generated/nirfsg/nirfsg/_library.py @@ -389,13 +389,13 @@ def niRFSG_GetAttributeViString(self, vi, channel_name, attribute, buf_size, val self.niRFSG_GetAttributeViString_cfunc.restype = ViStatus # noqa: F405 return self.niRFSG_GetAttributeViString_cfunc(vi, channel_name, attribute, buf_size, value) - def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports): # noqa: N802 + def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, number_of_sparameters, number_of_ports): # noqa: N802 with self._func_lock: if self.niRFSG_GetDeembeddingSparameters_cfunc is None: self.niRFSG_GetDeembeddingSparameters_cfunc = self._get_library_function('niRFSG_GetDeembeddingSparameters') - self.niRFSG_GetDeembeddingSparameters_cfunc.argtypes = [ViSession, ctypes.POINTER(NIComplexNumber), ViInt32, ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSG_GetDeembeddingSparameters_cfunc.argtypes = [ViSession, ctypes.POINTER(NIComplexNumber), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32)] # noqa: F405 self.niRFSG_GetDeembeddingSparameters_cfunc.restype = ViStatus # noqa: F405 - return self.niRFSG_GetDeembeddingSparameters_cfunc(vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports) + return self.niRFSG_GetDeembeddingSparameters_cfunc(vi, sparameters, number_of_sparameters, number_of_ports) def niRFSG_GetDeembeddingTableNumberOfPorts(self, vi, number_of_ports): # noqa: N802 with self._func_lock: diff --git a/generated/nirfsg/nirfsg/_library_interpreter.py b/generated/nirfsg/nirfsg/_library_interpreter.py index 58a366dbb..f865dbebb 100644 --- a/generated/nirfsg/nirfsg/_library_interpreter.py +++ b/generated/nirfsg/nirfsg/_library_interpreter.py @@ -384,7 +384,17 @@ 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) + if type(sparameters) is not np.ndarray: + raise TypeError('sparameters must be {0}, is {1}'.format(np.ndarray, type(sparameters))) + if np.isfortran(sparameters) is True: + raise TypeError('sparameters must be in C-order') + if sparameters.dtype is not np.dtype('complex128'): + raise TypeError('sparameters must be np.ndarray of dtype=complex128, is ' + str(sparameters.dtype)) 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 +402,9 @@ 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) + number_of_ports = int(number_of_ports_ctype.value) + sparameters = sparameters.reshape((number_of_ports, number_of_ports)) + 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..5c85cc3dd 100644 --- a/generated/nirfsg/nirfsg/session.py +++ b/generated/nirfsg/nirfsg/session.py @@ -6374,16 +6374,11 @@ def get_deembedding_sparameters(self): Note: The port orientation for the returned S-parameters is normalized to SparameterOrientation.PORT1_TOWARDS_DUT. - Returns: + 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. ''' - 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/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py b/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py index ccd4d9dd7..dcaa084d8 100644 --- a/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py +++ b/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py @@ -477,7 +477,7 @@ def niRFSG_GetAttributeViString(self, vi, channel_name, attribute, buf_size, val value.value = self._defaults['GetAttributeViString']['value'].encode('ascii') return self._defaults['GetAttributeViString']['return'] - def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports): # noqa: N802 + def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, number_of_sparameters, number_of_ports): # noqa: N802 if self._defaults['GetDeembeddingSparameters']['return'] != 0: return self._defaults['GetDeembeddingSparameters']['return'] # sparameters diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 64416372f..f7ebaf07c 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -2045,7 +2045,7 @@ 'returns': 'ViStatus' }, 'GetDeembeddingSparameters': { - 'codegen_method': 'private', + 'codegen_method': 'public', 'documentation': { 'description': '\nReturns the S-parameters used for de-embedding a measurement on the selected port.\n\nThis includes interpolation of the parameters based on the configured carrier frequency. This function returns an empty array if no de-embedding is done.\n\nIf you want to call this function just to get the required buffer size, you can pass 0 for **S-parameter Size** and VI_NULL for the **S-parameters** buffer.\n\n**Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860', 'note': 'The port orientation for the returned S-parameters is normalized to NIRFSG_VAL_PORT1_TOWARDS_DUT.' @@ -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': [ @@ -2083,15 +2083,6 @@ 'use_array': False, 'use_in_python_api': True }, - { - 'direction': 'in', - 'documentation': { - 'description': 'Specifies the size of the array that is returned by the NIRFSG_ATTR_SPARAMETERS output.' - }, - 'name': 'sparametersArraySize', - 'type': 'ViInt32', - 'use_array': False - }, { 'direction': 'out', 'documentation': { @@ -2121,6 +2112,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/_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..5e8e602d2 --- /dev/null +++ b/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako @@ -0,0 +1,27 @@ +<%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']}(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) + if type(sparameters) is not np.ndarray: + raise TypeError('sparameters must be {0}, is {1}'.format(np.ndarray, type(sparameters))) + if np.isfortran(sparameters) is True: + raise TypeError('sparameters must be in C-order') + if sparameters.dtype is not np.dtype('complex128'): + raise TypeError('sparameters must be np.ndarray of dtype=complex128, is ' + str(sparameters.dtype)) + 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) + number_of_ports = int(number_of_ports_ctype.value) + sparameters = sparameters.reshape((number_of_ports, number_of_ports)) + 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 index 1b4d6aa46..91d6e4d5d 100644 --- a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako +++ b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako @@ -3,15 +3,10 @@ '''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)}): + def ${f['python_name']}(self): '''${f['python_name']} - ${helper.get_function_docstring(f, False, config, indent=8)} + ${helper.get_function_docstring(f, True, 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)) + sparameters = self._interpreter.get_deembedding_sparameters() return sparameters From 018ac04daadd12f6cbc99115a1dad13d2d47422f Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 3 Mar 2026 10:39:17 +0000 Subject: [PATCH 02/14] Resolving System tests --- docs/nirfsg/class.rst | 13 ++++++++++++- generated/nirfsg/nirfsg/_library.py | 6 +++--- generated/nirfsg/nirfsg/unit_tests/_mock_helper.py | 2 +- src/nirfsg/metadata/functions.py | 9 +++++++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/docs/nirfsg/class.rst b/docs/nirfsg/class.rst index 7a246495a..98a6a4088 100644 --- a/docs/nirfsg/class.rst +++ b/docs/nirfsg/class.rst @@ -1216,7 +1216,7 @@ get_deembedding_sparameters .. py:currentmodule:: nirfsg.Session - .. py:method:: get_deembedding_sparameters() + .. py:method:: get_deembedding_sparameters(sparameters_array_size) Returns the S-parameters used for de-embedding a measurement on the selected port. @@ -1241,6 +1241,17 @@ get_deembedding_sparameters :type sparameters: numpy.array(dtype=numpy.complex128) + :param sparameters_array_size: + + + Specifies the size of the array that is returned by the :py:attr:`nirfsg.Session.SPARAMETERS` output. + + + + .. note:: One or more of the referenced properties are not in the Python API for this driver. + + + :type sparameters_array_size: int :rtype: tuple (number_of_sparameters, number_of_ports) diff --git a/generated/nirfsg/nirfsg/_library.py b/generated/nirfsg/nirfsg/_library.py index ad49fbe80..b808c7f40 100644 --- a/generated/nirfsg/nirfsg/_library.py +++ b/generated/nirfsg/nirfsg/_library.py @@ -389,13 +389,13 @@ def niRFSG_GetAttributeViString(self, vi, channel_name, attribute, buf_size, val self.niRFSG_GetAttributeViString_cfunc.restype = ViStatus # noqa: F405 return self.niRFSG_GetAttributeViString_cfunc(vi, channel_name, attribute, buf_size, value) - def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, number_of_sparameters, number_of_ports): # noqa: N802 + def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports): # noqa: N802 with self._func_lock: if self.niRFSG_GetDeembeddingSparameters_cfunc is None: self.niRFSG_GetDeembeddingSparameters_cfunc = self._get_library_function('niRFSG_GetDeembeddingSparameters') - self.niRFSG_GetDeembeddingSparameters_cfunc.argtypes = [ViSession, ctypes.POINTER(NIComplexNumber), ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32)] # noqa: F405 + self.niRFSG_GetDeembeddingSparameters_cfunc.argtypes = [ViSession, ctypes.POINTER(NIComplexNumber), ViInt32, ctypes.POINTER(ViInt32), ctypes.POINTER(ViInt32)] # noqa: F405 self.niRFSG_GetDeembeddingSparameters_cfunc.restype = ViStatus # noqa: F405 - return self.niRFSG_GetDeembeddingSparameters_cfunc(vi, sparameters, number_of_sparameters, number_of_ports) + return self.niRFSG_GetDeembeddingSparameters_cfunc(vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports) def niRFSG_GetDeembeddingTableNumberOfPorts(self, vi, number_of_ports): # noqa: N802 with self._func_lock: diff --git a/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py b/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py index dcaa084d8..ccd4d9dd7 100644 --- a/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py +++ b/generated/nirfsg/nirfsg/unit_tests/_mock_helper.py @@ -477,7 +477,7 @@ def niRFSG_GetAttributeViString(self, vi, channel_name, attribute, buf_size, val value.value = self._defaults['GetAttributeViString']['value'].encode('ascii') return self._defaults['GetAttributeViString']['return'] - def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, number_of_sparameters, number_of_ports): # noqa: N802 + def niRFSG_GetDeembeddingSparameters(self, vi, sparameters, sparameters_array_size, number_of_sparameters, number_of_ports): # noqa: N802 if self._defaults['GetDeembeddingSparameters']['return'] != 0: return self._defaults['GetDeembeddingSparameters']['return'] # sparameters diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index f7ebaf07c..0c4d44c1c 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -2083,6 +2083,15 @@ 'use_array': False, 'use_in_python_api': True }, + { + 'direction': 'in', + 'documentation': { + 'description': 'Specifies the size of the array that is returned by the NIRFSG_ATTR_SPARAMETERS output.' + }, + 'name': 'sparametersArraySize', + 'type': 'ViInt32', + 'use_array': False + }, { 'direction': 'out', 'documentation': { From e4e13c32548902a979cce438e51b22775af2cfb1 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 3 Mar 2026 15:42:08 +0000 Subject: [PATCH 03/14] Need to update doc changes --- docs/nirfsg/class.rst | 11 ----------- src/nirfsg/metadata/functions.py | 3 ++- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/docs/nirfsg/class.rst b/docs/nirfsg/class.rst index 98a6a4088..62a04ad94 100644 --- a/docs/nirfsg/class.rst +++ b/docs/nirfsg/class.rst @@ -1241,17 +1241,6 @@ get_deembedding_sparameters :type sparameters: numpy.array(dtype=numpy.complex128) - :param sparameters_array_size: - - - Specifies the size of the array that is returned by the :py:attr:`nirfsg.Session.SPARAMETERS` output. - - - - .. note:: One or more of the referenced properties are not in the Python API for this driver. - - - :type sparameters_array_size: int :rtype: tuple (number_of_sparameters, number_of_ports) diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 0c4d44c1c..7ea4a73cb 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -2090,7 +2090,8 @@ }, 'name': 'sparametersArraySize', 'type': 'ViInt32', - 'use_array': False + 'use_array': False, + 'use_in_python_api': False }, { 'direction': 'out', From d1f7ef13b5bd9db3d9389ee238b456e1c1b73aab Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 3 Mar 2026 22:44:39 +0000 Subject: [PATCH 04/14] Updated with private function --- docs/nirfsg/class.rst | 29 +++---------------- .../nirfsg/nirfsg/_library_interpreter.py | 2 +- generated/nirfsg/nirfsg/session.py | 2 +- src/nirfsg/metadata/functions.py | 4 +-- .../get_deembedding_sparameter.rst.mako | 15 ++++++++++ .../get_deembedding_sparameter.py.mako | 2 +- 6 files changed, 24 insertions(+), 30 deletions(-) create mode 100644 src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako diff --git a/docs/nirfsg/class.rst b/docs/nirfsg/class.rst index 62a04ad94..ccbe8656f 100644 --- a/docs/nirfsg/class.rst +++ b/docs/nirfsg/class.rst @@ -1216,7 +1216,7 @@ get_deembedding_sparameters .. py:currentmodule:: nirfsg.Session - .. py:method:: get_deembedding_sparameters(sparameters_array_size) + .. py:method:: get_deembedding_sparameters() Returns the S-parameters used for de-embedding a measurement on the selected port. @@ -1232,32 +1232,11 @@ get_deembedding_sparameters - :param sparameters: - - - Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. - - - - - :type sparameters: numpy.array(dtype=numpy.complex128) - - :rtype: tuple (number_of_sparameters, number_of_ports) - - WHERE - - number_of_sparameters (int): - - - Returns the number of S-parameters. - - - - - number_of_ports (int): + :rtype: numpy.array(dtype=numpy.complex128) + :return: - Returns the number of S-parameter ports. The **sparameter** array is always *n* x *n*, where span *n* is the number of ports. + Returns an array of S-parameters. The S-parameters are returned in the following order: s11, s12, s21, s22. diff --git a/generated/nirfsg/nirfsg/_library_interpreter.py b/generated/nirfsg/nirfsg/_library_interpreter.py index f865dbebb..01c02f2cc 100644 --- a/generated/nirfsg/nirfsg/_library_interpreter.py +++ b/generated/nirfsg/nirfsg/_library_interpreter.py @@ -384,7 +384,7 @@ 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): + 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 diff --git a/generated/nirfsg/nirfsg/session.py b/generated/nirfsg/nirfsg/session.py index 5c85cc3dd..03eb2b1e5 100644 --- a/generated/nirfsg/nirfsg/session.py +++ b/generated/nirfsg/nirfsg/session.py @@ -6378,7 +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. ''' - sparameters = self._interpreter.get_deembedding_sparameters() + sparameters = self._interpreter._get_deembedding_sparameters() return sparameters @ivi_synchronized diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 7ea4a73cb..5396fc2a5 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -2045,7 +2045,7 @@ 'returns': 'ViStatus' }, 'GetDeembeddingSparameters': { - 'codegen_method': 'public', + 'codegen_method': 'private', 'documentation': { 'description': '\nReturns the S-parameters used for de-embedding a measurement on the selected port.\n\nThis includes interpolation of the parameters based on the configured carrier frequency. This function returns an empty array if no de-embedding is done.\n\nIf you want to call this function just to get the required buffer size, you can pass 0 for **S-parameter Size** and VI_NULL for the **S-parameters** buffer.\n\n**Supported Devices** : PXIe-5830/5831/5832/5840/5841/5842/5860', 'note': 'The port orientation for the returned S-parameters is normalized to NIRFSG_VAL_PORT1_TOWARDS_DUT.' @@ -2053,7 +2053,7 @@ 'included_in_proto': True, 'method_templates': [ { - 'documentation_filename': 'numpy_method', + 'documentation_filename': 'get_deembedding_sparameter', 'library_interpreter_filename': 'get_deembedding_sparameter', 'method_python_name_suffix': '', 'session_filename': 'none' diff --git a/src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako b/src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako new file mode 100644 index 000000000..bbeb6e61d --- /dev/null +++ b/src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako @@ -0,0 +1,15 @@ +<%page args="function, config, method_template, indent"/>\ +<% + import build.helper as helper + sparameters_param = [p for p in function['parameters'] if p['python_name'] == 'sparameters'][0] + function_doc = helper.get_documentation_for_node_rst(function, config, indent).strip('\n') + return_doc = helper.get_documentation_for_node_rst(sparameters_param, config, indent + 8).strip('\n') +%>\ + .. py:method:: ${function['python_name']}() + +${function_doc} + + :rtype: numpy.array(dtype=numpy.complex128) + :return: + +${return_doc} \ No newline at end of file diff --git a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako index 91d6e4d5d..f0352a1fa 100644 --- a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako +++ b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako @@ -8,5 +8,5 @@ ${helper.get_function_docstring(f, True, config, indent=8)} ''' - sparameters = self._interpreter.get_deembedding_sparameters() + sparameters = self._interpreter._get_deembedding_sparameters() return sparameters From 5079c887fbc65897239748fff757ab626b1c0efd Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 3 Mar 2026 22:50:26 +0000 Subject: [PATCH 05/14] Removing the doc template. --- .../get_deembedding_sparameter.rst.mako | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako diff --git a/src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako b/src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako deleted file mode 100644 index bbeb6e61d..000000000 --- a/src/nirfsg/templates/functions.rst/get_deembedding_sparameter.rst.mako +++ /dev/null @@ -1,15 +0,0 @@ -<%page args="function, config, method_template, indent"/>\ -<% - import build.helper as helper - sparameters_param = [p for p in function['parameters'] if p['python_name'] == 'sparameters'][0] - function_doc = helper.get_documentation_for_node_rst(function, config, indent).strip('\n') - return_doc = helper.get_documentation_for_node_rst(sparameters_param, config, indent + 8).strip('\n') -%>\ - .. py:method:: ${function['python_name']}() - -${function_doc} - - :rtype: numpy.array(dtype=numpy.complex128) - :return: - -${return_doc} \ No newline at end of file From 8ed649eb0736a21ce393e30fb4ef389297aeac69 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 3 Mar 2026 23:30:09 +0000 Subject: [PATCH 06/14] Updated functions.py to remove non mandate changes --- src/nirfsg/metadata/functions.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 5396fc2a5..689cac927 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -2053,7 +2053,7 @@ 'included_in_proto': True, 'method_templates': [ { - 'documentation_filename': 'get_deembedding_sparameter', + 'documentation_filename': 'numpy_method', 'library_interpreter_filename': 'get_deembedding_sparameter', 'method_python_name_suffix': '', 'session_filename': 'none' @@ -2090,8 +2090,7 @@ }, 'name': 'sparametersArraySize', 'type': 'ViInt32', - 'use_array': False, - 'use_in_python_api': False + 'use_array': False }, { 'direction': 'out', From 0b80b510c212c3377d9f87a781f31258cbdcc1b1 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Tue, 3 Mar 2026 23:37:03 +0000 Subject: [PATCH 07/14] Updating session.py template for get_deembedding_sparameters function --- generated/nirfsg/nirfsg/session.py | 2 +- .../templates/session.py/get_deembedding_sparameter.py.mako | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/generated/nirfsg/nirfsg/session.py b/generated/nirfsg/nirfsg/session.py index 03eb2b1e5..ba6c673ab 100644 --- a/generated/nirfsg/nirfsg/session.py +++ b/generated/nirfsg/nirfsg/session.py @@ -6374,7 +6374,7 @@ def get_deembedding_sparameters(self): Note: The port orientation for the returned S-parameters is normalized to SparameterOrientation.PORT1_TOWARDS_DUT. - Args: + Returns: 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. ''' diff --git a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako index f0352a1fa..c414dd09b 100644 --- a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako +++ b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako @@ -3,10 +3,10 @@ '''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']}(self): + def ${f['python_name']}(${helper.get_params_snippet(f, helper.ParameterUsageOptions.SESSION_METHOD_DECLARATION)}): '''${f['python_name']} - ${helper.get_function_docstring(f, True, config, indent=8)} + ${helper.get_function_docstring(f, False, config, indent=8)} ''' sparameters = self._interpreter._get_deembedding_sparameters() return sparameters From e03f722be2adeff9e1f051d8f72a66b9b23c81eb Mon Sep 17 00:00:00 2001 From: Rahul R Date: Thu, 5 Mar 2026 06:57:31 +0000 Subject: [PATCH 08/14] Updated test case as needed for gRPC system tests --- src/nirfsg/system_tests/test_system_nirfsg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nirfsg/system_tests/test_system_nirfsg.py b/src/nirfsg/system_tests/test_system_nirfsg.py index 8bd3b7a78..5f432c34a 100644 --- a/src/nirfsg/system_tests/test_system_nirfsg.py +++ b/src/nirfsg/system_tests/test_system_nirfsg.py @@ -555,7 +555,7 @@ def test_set_get_deembedding_sparameters(self, rfsg_device_session): sparameter_tables = np.array([[[1 + 1j, 2 + 2j], [3 + 3j, 4 + 4j]], [[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], [[9 + 9j, 10 + 10j], [11 + 11j, 12 + 12j]]], dtype=np.complex128) expected_sparameter_table = np.array([[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], dtype=np.complex128) rfsg_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsg.SparameterOrientation.PORT2_TOWARDS_DUT) - rfsg_device_session.frequency = 2e9 + rfsg_device_session.configure_rf(2e9, -5.0) returned_sparameter_table = rfsg_device_session.get_deembedding_sparameters() assert returned_sparameter_table.all() == expected_sparameter_table.all() From f643b293676a752c003f08e2de5e16f5c1cd6c58 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Thu, 5 Mar 2026 09:17:42 +0000 Subject: [PATCH 09/14] Updated gRPC enum to resolve 'TypeError: 'float' object cannot be interpreted as an integer' in 'SetAttributeVi' methods --- src/nirfsg/metadata/functions.py | 4 ++++ src/nirfsg/system_tests/test_system_nirfsg.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 689cac927..0890aca28 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -4095,6 +4095,7 @@ 'description': 'Specifies the value to which you want to set the attribute.', 'note': 'Some values may not be valid. The allowed values depend on the current settings of the instrument session.' }, + 'grpc_enum': 'NiRFSGInt32AttributeValues', 'name': 'value', 'type': 'ViInt32', 'use_array': False, @@ -4214,6 +4215,8 @@ 'description': 'Pass the value to which you want to set the attribute.', 'note': 'Some values may not be valid. The allowed values depend on the current settings of the instrument session.' }, + 'grpc_enum': 'NiRFSGReal64AttributeValues', + 'grpc_name': 'value_raw', 'name': 'value', 'type': 'ViReal64', 'use_array': False, @@ -4334,6 +4337,7 @@ 'description': 'Pass the value to which you want to set the attribute.', 'note': 'Some values may not be valid. The allowed values depend on the current settings of the instrument session.' }, + 'grpc_mapped_enum': 'NiRFSGStringAttributeValuesMapped', 'name': 'value', 'type': 'ViConstString', 'use_array': False, diff --git a/src/nirfsg/system_tests/test_system_nirfsg.py b/src/nirfsg/system_tests/test_system_nirfsg.py index 5f432c34a..8bd3b7a78 100644 --- a/src/nirfsg/system_tests/test_system_nirfsg.py +++ b/src/nirfsg/system_tests/test_system_nirfsg.py @@ -555,7 +555,7 @@ def test_set_get_deembedding_sparameters(self, rfsg_device_session): sparameter_tables = np.array([[[1 + 1j, 2 + 2j], [3 + 3j, 4 + 4j]], [[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], [[9 + 9j, 10 + 10j], [11 + 11j, 12 + 12j]]], dtype=np.complex128) expected_sparameter_table = np.array([[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], dtype=np.complex128) rfsg_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsg.SparameterOrientation.PORT2_TOWARDS_DUT) - rfsg_device_session.configure_rf(2e9, -5.0) + rfsg_device_session.frequency = 2e9 returned_sparameter_table = rfsg_device_session.get_deembedding_sparameters() assert returned_sparameter_table.all() == expected_sparameter_table.all() From f31521c816903d8a94ee891b0c7e20f695cb5725 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Thu, 5 Mar 2026 09:48:43 +0000 Subject: [PATCH 10/14] Removed SetAttributeVi to include in a new PR --- src/nirfsg/metadata/functions.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 0890aca28..689cac927 100644 --- a/src/nirfsg/metadata/functions.py +++ b/src/nirfsg/metadata/functions.py @@ -4095,7 +4095,6 @@ 'description': 'Specifies the value to which you want to set the attribute.', 'note': 'Some values may not be valid. The allowed values depend on the current settings of the instrument session.' }, - 'grpc_enum': 'NiRFSGInt32AttributeValues', 'name': 'value', 'type': 'ViInt32', 'use_array': False, @@ -4215,8 +4214,6 @@ 'description': 'Pass the value to which you want to set the attribute.', 'note': 'Some values may not be valid. The allowed values depend on the current settings of the instrument session.' }, - 'grpc_enum': 'NiRFSGReal64AttributeValues', - 'grpc_name': 'value_raw', 'name': 'value', 'type': 'ViReal64', 'use_array': False, @@ -4337,7 +4334,6 @@ 'description': 'Pass the value to which you want to set the attribute.', 'note': 'Some values may not be valid. The allowed values depend on the current settings of the instrument session.' }, - 'grpc_mapped_enum': 'NiRFSGStringAttributeValuesMapped', 'name': 'value', 'type': 'ViConstString', 'use_array': False, From 64fd4a36a4a123a1e61c42ffbe1450d4cbeff6fa Mon Sep 17 00:00:00 2001 From: Rahul R Date: Thu, 5 Mar 2026 10:44:28 +0000 Subject: [PATCH 11/14] Matching get_deembedding_sparameters to the gRPCs interpreter --- generated/nirfsg/nirfsg/_library_interpreter.py | 3 ++- generated/nirfsg/nirfsg/session.py | 4 ++-- src/nirfsg/system_tests/test_system_nirfsg.py | 4 +++- .../get_deembedding_sparameter.py.mako | 3 ++- .../templates/session.py/get_deembedding_sparameter.py.mako | 4 ++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/generated/nirfsg/nirfsg/_library_interpreter.py b/generated/nirfsg/nirfsg/_library_interpreter.py index 01c02f2cc..713ee8f95 100644 --- a/generated/nirfsg/nirfsg/_library_interpreter.py +++ b/generated/nirfsg/nirfsg/_library_interpreter.py @@ -402,9 +402,10 @@ def _get_deembedding_sparameters(self): 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) + number_of_sparameters = int(number_of_sparameters_ctype.value) number_of_ports = int(number_of_ports_ctype.value) sparameters = sparameters.reshape((number_of_ports, number_of_ports)) - return sparameters + return sparameters, number_of_sparameters, number_of_ports 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 ba6c673ab..b871bb6d1 100644 --- a/generated/nirfsg/nirfsg/session.py +++ b/generated/nirfsg/nirfsg/session.py @@ -6378,8 +6378,8 @@ 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. ''' - sparameters = self._interpreter._get_deembedding_sparameters() - return sparameters + sparameters, number_of_sparameters, number_of_ports = self._interpreter._get_deembedding_sparameters() + return sparameters, number_of_sparameters, number_of_ports @ivi_synchronized def get_all_named_waveform_names(self): diff --git a/src/nirfsg/system_tests/test_system_nirfsg.py b/src/nirfsg/system_tests/test_system_nirfsg.py index 8bd3b7a78..dc4245042 100644 --- a/src/nirfsg/system_tests/test_system_nirfsg.py +++ b/src/nirfsg/system_tests/test_system_nirfsg.py @@ -556,8 +556,10 @@ def test_set_get_deembedding_sparameters(self, rfsg_device_session): expected_sparameter_table = np.array([[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], dtype=np.complex128) rfsg_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsg.SparameterOrientation.PORT2_TOWARDS_DUT) rfsg_device_session.frequency = 2e9 - returned_sparameter_table = rfsg_device_session.get_deembedding_sparameters() + returned_sparameter_table, number_of_sparameters, number_of_ports = rfsg_device_session.get_deembedding_sparameters() assert returned_sparameter_table.all() == expected_sparameter_table.all() + assert number_of_sparameters == 4 + assert number_of_ports == 2 def test_create_deembedding_sparameter_table_array_error_cases(self, rfsg_device_session): frequencies = np.array([1e9, 2e9, 3e9], dtype=np.float64) 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 index 5e8e602d2..38c240115 100644 --- a/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako +++ b/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako @@ -22,6 +22,7 @@ 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) + number_of_sparameters = int(number_of_sparameters_ctype.value) number_of_ports = int(number_of_ports_ctype.value) sparameters = sparameters.reshape((number_of_ports, number_of_ports)) - return sparameters + return sparameters, number_of_sparameters, number_of_ports diff --git a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako index c414dd09b..0d1c3cddd 100644 --- a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako +++ b/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako @@ -8,5 +8,5 @@ ${helper.get_function_docstring(f, False, config, indent=8)} ''' - sparameters = self._interpreter._get_deembedding_sparameters() - return sparameters + sparameters, number_of_sparameters, number_of_ports = self._interpreter._get_deembedding_sparameters() + return sparameters, number_of_sparameters, number_of_ports From 265b3a1955dc19a36b59efd08d3576b8e74dc445 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Fri, 6 Mar 2026 07:29:09 +0000 Subject: [PATCH 12/14] Updated as the code review comments --- generated/nirfsg/nirfsg/_library_interpreter.py | 14 +++----------- generated/nirfsg/nirfsg/session.py | 6 +++--- src/nirfsg/metadata/functions.py | 2 +- src/nirfsg/system_tests/test_system_nirfsg.py | 4 +--- .../get_deembedding_sparameter.py.mako | 15 +++++++++++++++ ...eembedding_sparameter.py.mako:Zone.Identifier | Bin 0 -> 25 bytes .../get_deembedding_sparameter.py.mako | 14 +++----------- .../get_deembedding_sparameter.py.mako | 12 ------------ 8 files changed, 26 insertions(+), 41 deletions(-) create mode 100644 src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako create mode 100644 src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako:Zone.Identifier delete mode 100644 src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako diff --git a/generated/nirfsg/nirfsg/_library_interpreter.py b/generated/nirfsg/nirfsg/_library_interpreter.py index 713ee8f95..47563dfd8 100644 --- a/generated/nirfsg/nirfsg/_library_interpreter.py +++ b/generated/nirfsg/nirfsg/_library_interpreter.py @@ -384,17 +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): + 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) - if type(sparameters) is not np.ndarray: - raise TypeError('sparameters must be {0}, is {1}'.format(np.ndarray, type(sparameters))) - if np.isfortran(sparameters) is True: - raise TypeError('sparameters must be in C-order') - if sparameters.dtype is not np.dtype('complex128'): - raise TypeError('sparameters must be np.ndarray of dtype=complex128, is ' + str(sparameters.dtype)) 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 @@ -402,10 +396,8 @@ def _get_deembedding_sparameters(self): 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) - number_of_sparameters = int(number_of_sparameters_ctype.value) - number_of_ports = int(number_of_ports_ctype.value) - sparameters = sparameters.reshape((number_of_ports, number_of_ports)) - return sparameters, number_of_sparameters, number_of_ports + 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 b871bb6d1..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,8 +6378,8 @@ 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. ''' - sparameters, number_of_sparameters, number_of_ports = self._interpreter._get_deembedding_sparameters() - return sparameters, number_of_sparameters, number_of_ports + sparameters = self._interpreter.get_deembedding_sparameters() + return sparameters @ivi_synchronized def get_all_named_waveform_names(self): diff --git a/src/nirfsg/metadata/functions.py b/src/nirfsg/metadata/functions.py index 689cac927..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': [ diff --git a/src/nirfsg/system_tests/test_system_nirfsg.py b/src/nirfsg/system_tests/test_system_nirfsg.py index dc4245042..8bd3b7a78 100644 --- a/src/nirfsg/system_tests/test_system_nirfsg.py +++ b/src/nirfsg/system_tests/test_system_nirfsg.py @@ -556,10 +556,8 @@ def test_set_get_deembedding_sparameters(self, rfsg_device_session): expected_sparameter_table = np.array([[5 + 5j, 6 + 6j], [7 + 7j, 8 + 8j]], dtype=np.complex128) rfsg_device_session.create_deembedding_sparameter_table_array('', 'myTable1', frequencies, sparameter_tables, nirfsg.SparameterOrientation.PORT2_TOWARDS_DUT) rfsg_device_session.frequency = 2e9 - returned_sparameter_table, number_of_sparameters, number_of_ports = rfsg_device_session.get_deembedding_sparameters() + returned_sparameter_table = rfsg_device_session.get_deembedding_sparameters() assert returned_sparameter_table.all() == expected_sparameter_table.all() - assert number_of_sparameters == 4 - assert number_of_ports == 2 def test_create_deembedding_sparameter_table_array_error_cases(self, rfsg_device_session): frequencies = np.array([1e9, 2e9, 3e9], dtype=np.float64) 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..5a7621e49 --- /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"/>\ +<% + '''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['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/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako:Zone.Identifier b/src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..d6c1ec682968c796b9f5e9e080cc6f674b57c766 GIT binary patch literal 25 dcma!!%Fjy;DN4*MPD?F{<>dl#JyUFr831@K2x\ - def ${f['python_name']}(self): + 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) - if type(sparameters) is not np.ndarray: - raise TypeError('sparameters must be {0}, is {1}'.format(np.ndarray, type(sparameters))) - if np.isfortran(sparameters) is True: - raise TypeError('sparameters must be in C-order') - if sparameters.dtype is not np.dtype('complex128'): - raise TypeError('sparameters must be np.ndarray of dtype=complex128, is ' + str(sparameters.dtype)) 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 @@ -22,7 +16,5 @@ 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) - number_of_sparameters = int(number_of_sparameters_ctype.value) - number_of_ports = int(number_of_ports_ctype.value) - sparameters = sparameters.reshape((number_of_ports, number_of_ports)) - return sparameters, number_of_sparameters, number_of_ports + 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 0d1c3cddd..000000000 --- a/src/nirfsg/templates/session.py/get_deembedding_sparameter.py.mako +++ /dev/null @@ -1,12 +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)} - ''' - sparameters, number_of_sparameters, number_of_ports = self._interpreter._get_deembedding_sparameters() - return sparameters, number_of_sparameters, number_of_ports From f898cc04de857a8b347962022fb195372be21b70 Mon Sep 17 00:00:00 2001 From: Rahul R Date: Fri, 6 Mar 2026 07:34:49 +0000 Subject: [PATCH 13/14] Remvoing unwanted files --- ..._deembedding_sparameter.py.mako:Zone.Identifier | Bin 25 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako:Zone.Identifier diff --git a/src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako:Zone.Identifier b/src/nirfsg/templates/_grpc_stub_interpreter.py/get_deembedding_sparameter.py.mako:Zone.Identifier deleted file mode 100644 index d6c1ec682968c796b9f5e9e080cc6f674b57c766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25 dcma!!%Fjy;DN4*MPD?F{<>dl#JyUFr831@K2x Date: Fri, 6 Mar 2026 12:51:57 +0000 Subject: [PATCH 14/14] Updated code review comments --- .../get_deembedding_sparameter.py.mako | 2 +- .../_library_interpreter.py/get_deembedding_sparameter.py.mako | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 index 5a7621e49..27c91dd4f 100644 --- 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 @@ -1,6 +1,6 @@ <%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.''' + '''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): 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 index 6c40d7d22..06ae7c8cc 100644 --- a/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako +++ b/src/nirfsg/templates/_library_interpreter.py/get_deembedding_sparameter.py.mako @@ -1,6 +1,6 @@ <%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.''' + '''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 %>\