|
9 | 9 | try: |
10 | 10 | import netCDF4 |
11 | 11 | import numpy as np |
| 12 | + import json |
12 | 13 |
|
13 | 14 | _has_deps = True |
14 | 15 | except ImportError as ie: |
@@ -230,9 +231,6 @@ def __init__(self): |
230 | 231 | self._DataFileName = None |
231 | 232 | self._ConnFileName = None |
232 | 233 | self._dirty = False |
233 | | - self._surface_update = True |
234 | | - self._midpoint_update = True |
235 | | - self._interface_update = True |
236 | 234 |
|
237 | 235 | # Variables for dimension sliders |
238 | 236 | self._time = 0 |
@@ -396,23 +394,18 @@ def _get_cached_area(self, vardata): |
396 | 394 | self._cached_area[mask] = np.nan |
397 | 395 | return self._cached_area |
398 | 396 |
|
399 | | - def _load_variable(self, vardata, varmeta, timeInd): |
| 397 | + def _load_variable(self, vardata, varmeta): |
400 | 398 | """Load variable data with dimension-based slicing.""" |
401 | 399 | try: |
402 | 400 | # Build slice tuple based on variable's dimensions and user-selected slices |
403 | 401 | slice_tuple = [] |
404 | 402 | for dim in varmeta.dimensions: |
405 | 403 | if dim == self._data_horizontal_dim: |
406 | | - continue |
407 | | - # elif dim == "time": |
408 | | - # # Use timeInd for time dimension |
409 | | - # slice_tuple.append(timeInd) |
410 | | - elif hasattr(self, "_slices") and dim in self._slices: |
411 | | - # Use user-specified slice for this dimension |
412 | | - slice_tuple.append(self._slices[dim]) |
| 404 | + slice_tuple.append(slice(None)) |
413 | 405 | else: |
414 | 406 | # Use all data for unspecified dimensions |
415 | | - slice_tuple.append(slice(None)) |
| 407 | + slice_tuple.append(self._slices.get(dim, 0)) |
| 408 | + |
416 | 409 | # Get data with proper slicing |
417 | 410 | data = vardata[varmeta.name][tuple(slice_tuple)].data.flatten() |
418 | 411 | data = np.where(data == varmeta.fillval, np.nan, data) |
@@ -511,7 +504,7 @@ def _populate_variable_metadata(self): |
511 | 504 | if self._data_horizontal_dim not in dims: |
512 | 505 | continue |
513 | 506 | varmeta = VarMeta(name, info, self._data_horizontal_dim) |
514 | | - if len(dims) == 1 and "area" in name: |
| 507 | + if len(dims) == 1 and "area" in name.lower(): |
515 | 508 | self._areavar = varmeta |
516 | 509 | if len(dims) > 1: |
517 | 510 | all_dimensions.update(dims) |
@@ -588,20 +581,10 @@ def SetConnFileName(self, fname): |
588 | 581 |
|
589 | 582 | def SetSlicing(self, slice_str): |
590 | 583 | # Parse JSON string containing dimension slices and update self._slices |
591 | | - # Initialize _slices if not already done |
592 | | - if not hasattr(self, "_slices"): |
593 | | - self._slices = {} |
594 | | - |
595 | | - # Initialize dimensions if not already done |
596 | | - if not hasattr(self, "_dimensions"): |
597 | | - self._dimensions = {} |
598 | 584 |
|
599 | 585 | if slice_str and slice_str.strip(): # Check for non-empty string |
600 | 586 | try: |
601 | | - import json |
602 | | - |
603 | 587 | slice_dict = json.loads(slice_str) |
604 | | - |
605 | 588 | # Validate and update slices for provided dimensions |
606 | 589 | invalid_slices = [] |
607 | 590 | for dim, slice_val in slice_dict.items(): |
@@ -713,16 +696,6 @@ def RequestData(self, request, inInfo, outInfo): |
713 | 696 | print_error("Required Python module 'netCDF4' or 'numpy' missing!") |
714 | 697 | return 0 |
715 | 698 |
|
716 | | - # Getting the correct time index |
717 | | - executive = self.GetExecutive() |
718 | | - from_port = request.Get(executive.FROM_OUTPUT_PORT()) |
719 | | - timeInd = self.get_time_index(outInfo, executive, from_port) |
720 | | - if self._time != timeInd: |
721 | | - self._time = timeInd |
722 | | - self._surface_update = True |
723 | | - self._midpoint_update = True |
724 | | - self._interface_update = True |
725 | | - |
726 | 699 | meshdata = self._get_mesh_dataset() |
727 | 700 | vardata = self._get_var_dataset() |
728 | 701 |
|
@@ -766,9 +739,8 @@ def RequestData(self, request, inInfo, outInfo): |
766 | 739 | if self._variable_selection.ArrayIsEnabled(name): |
767 | 740 | if output_mesh.CellData.HasArray(name): |
768 | 741 | to_remove.remove(name) |
769 | | - if not output_mesh.CellData.HasArray(name) or self._surface_update: |
770 | | - data = self._load_variable(vardata, varmeta, timeInd) |
771 | | - output_mesh.CellData.append(data, name) |
| 742 | + data = self._load_variable(vardata, varmeta) |
| 743 | + output_mesh.CellData.append(data, name) |
772 | 744 |
|
773 | 745 | area_var_name = "area" |
774 | 746 | if self._areavar and not output_mesh.CellData.HasArray(area_var_name): |
|
0 commit comments