Skip to content

Commit 8e5ef5a

Browse files
committed
Added Write numpy to NIComplex over gRPC
1 parent dfe5ff0 commit 8e5ef5a

3 files changed

Lines changed: 64 additions & 9 deletions

File tree

build/templates/_grpc_stub_interpreter.py/numpy_read_method.py.mako

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
%>\
1717

1818
def ${full_func_name}(${param_names_method}): # noqa: N802
19+
% if numpy_complex_params:
1920
import numpy
21+
% endif
2022
% if included_in_proto:
2123
${capture_response}self._invoke(
2224
self._client.${grpc_name},
Lines changed: 58 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,59 @@
11
<%page args="f, config, method_template"/>\
2-
## numpy_read and numpy_write are identical for gRPC -- both return a NotImplementedError
3-
<%include file="/_grpc_stub_interpreter.py/numpy_read_method.py.mako" args="f=f, config=config, method_template=method_template" />\
2+
<%
3+
'''Renders a GrpcStubInterpreter method corresponding to the passed-in function metadata.'''
4+
import build.helper as helper
5+
parameters = f['parameters']
6+
full_func_name = f['interpreter_name'] + method_template['method_python_name_suffix']
7+
method_decl_params = helper.get_params_snippet(f, helper.ParameterUsageOptions.INTERPRETER_METHOD_DECLARATION)
8+
grpc_name = f.get('grpc_name', f['name'])
9+
grpc_request_args = helper.get_params_snippet(f, helper.ParameterUsageOptions.GRPC_REQUEST_PARAMETERS)
10+
return_statement = helper.get_grpc_interpreter_method_return_snippet(f['parameters'], config)
11+
if return_statement == 'return':
12+
return_statement = None
13+
capture_response = 'response = ' if return_statement else ''
14+
included_in_proto = f.get('included_in_proto', True)
15+
numpy_complex_params = [
16+
p for p in helper.filter_parameters(parameters, helper.ParameterUsageOptions.NUMPY_PARAMETERS)
17+
if p['complex_type'] is not None and p.get('original_type') in ('NIComplexNumber[]', 'NIComplexNumberF32[]', 'NIComplexI16[]')
18+
]
19+
20+
# For numpy complex inputs, create NIComplex message lists and map them in the request args
21+
for p in numpy_complex_params:
22+
# Replace occurrences like "field=python_name" with "field=python_name_list"
23+
grpc_request_args = grpc_request_args.replace(
24+
p['grpc_name'] + '=' + p['python_name'],
25+
p['grpc_name'] + '=' + p['python_name'] + '_list'
26+
)
27+
28+
%>\
29+
30+
def ${full_func_name}(${method_decl_params}): # noqa: N802
31+
% if included_in_proto:
32+
% for p in numpy_complex_params:
33+
% if p['original_type'] == 'NIComplexNumber[]':
34+
${p['python_name']}_list = [
35+
grpc_types.NIComplexNumber(real=val.real, imaginary=val.imag)
36+
for val in ${p['python_name']}.ravel()
37+
]
38+
% elif p['original_type'] == 'NIComplexNumberF32[]':
39+
${p['python_name']}_list = [
40+
grpc_types.NIComplexNumberF32(real=val.real, imaginary=val.imag)
41+
for val in ${p['python_name']}.ravel()
42+
]
43+
% elif p['original_type'] == 'NIComplexI16[]':
44+
${p['python_name']}_list = [
45+
grpc_types.NIComplexI16(real=int(val['real']), imaginary=int(val['imag']))
46+
for val in ${p['python_name']}.ravel()
47+
]
48+
% endif
49+
% endfor
50+
${capture_response}self._invoke(
51+
self._client.${grpc_name},
52+
grpc_types.${grpc_name}Request(${grpc_request_args}),
53+
)
54+
% if return_statement:
55+
${return_statement}
56+
% endif
57+
% else:
58+
raise NotImplementedError('${full_func_name} is not supported over gRPC')
59+
% endif

src/nirfsg/metadata/nirfsg.proto

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,13 +1274,11 @@ message CreateDeembeddingSparameterTableArrayRequest {
12741274
string port = 2;
12751275
string table_name = 3;
12761276
repeated double frequencies = 4;
1277-
sint32 frequencies_size = 5;
1278-
repeated nidevice_grpc.NIComplexNumber sparameter_table = 6;
1279-
sint32 sparameter_table_size = 7;
1280-
sint32 number_of_ports = 8;
1277+
repeated nidevice_grpc.NIComplexNumber sparameter_table = 5;
1278+
sint32 number_of_ports = 6;
12811279
oneof sparameter_orientation_enum {
1282-
SParameterOrientation sparameter_orientation = 9;
1283-
sint32 sparameter_orientation_raw = 10;
1280+
SParameterOrientation sparameter_orientation = 7;
1281+
sint32 sparameter_orientation_raw = 8;
12841282
}
12851283
}
12861284

@@ -1532,7 +1530,6 @@ message GetChannelNameResponse {
15321530

15331531
message GetDeembeddingSparametersRequest {
15341532
nidevice_grpc.Session vi = 1;
1535-
sint32 sparameters_array_size = 2;
15361533
}
15371534

15381535
message GetDeembeddingSparametersResponse {

0 commit comments

Comments
 (0)