Skip to content

Commit 5893677

Browse files
committed
Understand why last dimension has incorrect size
1 parent 8fc253c commit 5893677

File tree

3 files changed

+13
-21
lines changed

3 files changed

+13
-21
lines changed

src/mdio/builder/dataset_builder.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ def push_dimension(self, dimension: NamedDimension, position: int, new_dim_chunk
128128
# In-place insertion of the dimension to the existing list of dimensions
129129
self._dimensions.insert(position, dimension)
130130

131+
# TODO: HARDCODED FOR DEBUGGING
132+
self._dimensions[-1].size = 25
133+
131134
def propogate_dimension(variable: Variable, position: int, new_dim_chunk_size: int) -> Variable:
132135
"""Propogates the dimension to the variable or coordinate."""
133136
from mdio.builder.schemas.chunk_grid import RegularChunkGrid, RegularChunkShape

src/mdio/segy/geometry.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ def create_trace_index(
247247
return index_headers
248248

249249

250-
def analyze_non_indexed_headers(index_headers: HeaderArray, dtype: DTypeLike = np.int16) -> NDArray:
250+
def analyze_non_indexed_headers(index_headers: HeaderArray, dtype: DTypeLike = np.int16, index_names: Sequence[str] = None) -> NDArray:
251251
"""Check input headers for SEG-Y input to help determine geometry.
252252
253253
This function reads in trace_qc_count headers and finds the unique cable values. Then, it
@@ -266,7 +266,7 @@ def analyze_non_indexed_headers(index_headers: HeaderArray, dtype: DTypeLike = n
266266
total_depth = 0
267267
header_names = []
268268
for header_key in index_headers.dtype.names:
269-
if header_key != "trace":
269+
if header_key != "trace" and header_key in index_names:
270270
unique_headers[header_key] = np.sort(np.unique(index_headers[header_key]))
271271
header_names.append(header_key)
272272
total_depth += 1
@@ -302,6 +302,7 @@ def transform(
302302
self,
303303
index_headers: HeaderArray,
304304
grid_overrides: dict[str, bool | int],
305+
index_names: Sequence[str] = None,
305306
) -> NDArray:
306307
"""Perform the grid transform."""
307308

@@ -378,11 +379,12 @@ def transform(
378379
self,
379380
index_headers: HeaderArray,
380381
grid_overrides: dict[str, bool | int],
382+
index_names: Sequence[str],
381383
) -> NDArray:
382384
"""Perform the grid transform."""
383385
self.validate(index_headers, grid_overrides)
384386

385-
return analyze_non_indexed_headers(index_headers)
387+
return analyze_non_indexed_headers(index_headers, index_names=index_names)
386388

387389
def transform_index_names(self, index_names: Sequence[str]) -> Sequence[str]:
388390
"""Insert dimension "trace" to the sample-1 dimension."""
@@ -434,6 +436,7 @@ def transform(
434436
self,
435437
index_headers: HeaderArray,
436438
grid_overrides: dict[str, bool | int],
439+
index_names = None,
437440
) -> NDArray:
438441
"""Perform the grid transform."""
439442
self.validate(index_headers, grid_overrides)
@@ -471,6 +474,7 @@ def transform(
471474
self,
472475
index_headers: HeaderArray,
473476
grid_overrides: dict[str, bool | int],
477+
index_names = None,
474478
) -> NDArray:
475479
"""Perform the grid transform."""
476480
self.validate(index_headers, grid_overrides)
@@ -535,11 +539,6 @@ def run(
535539
) -> tuple[HeaderArray, tuple[str], tuple[int]]:
536540
"""Run grid overrides and return result."""
537541

538-
# print("="*100)
539-
# print(index_headers.to_dict().keys())
540-
# print(index_headers)
541-
# print("="*100)
542-
543542
for override in grid_overrides:
544543
if override in self.parameters:
545544
continue
@@ -548,7 +547,7 @@ def run(
548547
raise GridOverrideUnknownError(override)
549548

550549
function = self.commands[override].transform
551-
index_headers = function(index_headers, grid_overrides=grid_overrides)
550+
index_headers = function(index_headers, grid_overrides=grid_overrides, index_names=index_names)
552551

553552
function = self.commands[override].transform_index_names
554553
index_names = function(index_names)

src/mdio/segy/utilities.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,29 +58,19 @@ def get_grid_plan( # noqa: C901
5858
horizontal_dimensions = template.dimension_names[:-1]
5959
horizontal_coordinates = horizontal_dimensions + template.coordinate_names
6060
headers_subset = parse_headers(segy_file=segy_file, subset=horizontal_coordinates)
61-
from segy.arrays import HeaderArray
62-
63-
# reduced_headers_subset = HeaderArray(h for h in headers_subset.to_dict().keys() if h in horizontal_dimensions)
64-
# Get field names to keep
65-
fields_to_keep = [h for h in headers_subset.dtype.names if h in horizontal_dimensions]
66-
67-
# Create filtered copy using numpy's field selection
68-
reduced_headers_subset = HeaderArray(headers_subset[fields_to_keep])
6961

7062
# Handle grid overrides.
7163
override_handler = GridOverrider()
7264
headers_subset, horizontal_coordinates, chunksize = override_handler.run(
73-
# headers_subset,
74-
reduced_headers_subset,
75-
# horizontal_coordinates,
65+
headers_subset,
7666
horizontal_dimensions,
7767
chunksize=chunksize,
7868
grid_overrides=grid_overrides,
7969
)
8070

8171
if grid_overrides.get("HasDuplicates", False):
8272
pos = len(template.dimension_names) - 1 # TODO: Implement the negative position case...
83-
template._queue_transform(lambda builder: builder.push_dimension(NamedDimension(name="trace", size=headers_subset["trace"].size), position=pos, new_dim_chunk_size=1))
73+
template._queue_transform(lambda builder: builder.push_dimension(NamedDimension(name="trace", size=np.max(headers_subset["trace"])), position=pos, new_dim_chunk_size=1))
8474
horizontal_dimensions = (*horizontal_dimensions, "trace")
8575

8676
dimensions = []

0 commit comments

Comments
 (0)