Skip to content

Commit 0c835a1

Browse files
committed
Improve performance of nc2ids by bypassing IDSPrimitive.value.setter logic
1 parent 1b4189d commit 0c835a1

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

imas/backends/netcdf/nc2ids.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -184,20 +184,25 @@ def run(self) -> None:
184184
for index, node in tree_iter(self.ids, target_metadata):
185185
shape = shapes[index]
186186
if shape.all():
187-
node.value = data[index + tuple(map(slice, shapes[index]))]
187+
# NOTE: bypassing IDSPrimitive.value.setter logic
188+
node._IDSPrimitive__value = data[
189+
index + tuple(map(slice, shape))
190+
]
188191
else:
189192
for index, node in tree_iter(self.ids, target_metadata):
190193
value = data[index]
191194
if value != getattr(var, "_FillValue", None):
192-
node.value = data[index]
195+
# NOTE: bypassing IDSPrimitive.value.setter logic
196+
node._IDSPrimitive__value = value
193197

194198
elif metadata.path_string not in self.ncmeta.aos:
195199
# Shortcut for assigning untensorized data
196-
self.ids[target_metadata.path] = data
200+
self.ids[target_metadata.path]._IDSPrimitive__value = data
197201

198202
else:
199203
for index, node in tree_iter(self.ids, target_metadata):
200-
node.value = data[index]
204+
# NOTE: bypassing IDSPrimitive.value.setter logic
205+
node._IDSPrimitive__value = data[index]
201206

202207
def validate_variables(self) -> None:
203208
"""Validate that all variables in the netCDF Group exist and match the DD."""

0 commit comments

Comments
 (0)