Skip to content

Commit ef29660

Browse files
committed
Understand why last dimension has incorrect size
1 parent d69459d commit ef29660

File tree

3 files changed

+15
-22
lines changed

3 files changed

+15
-22
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: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ def create_trace_index(
248248
return index_headers
249249

250250

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

@@ -385,11 +386,12 @@ def transform(
385386
self,
386387
index_headers: HeaderArray,
387388
grid_overrides: dict[str, bool | int],
389+
index_names: Sequence[str],
388390
) -> NDArray:
389391
"""Perform the grid transform."""
390392
self.validate(index_headers, grid_overrides)
391393

392-
return analyze_non_indexed_headers(index_headers)
394+
return analyze_non_indexed_headers(index_headers, index_names=index_names)
393395

394396
def transform_index_names(self, index_names: Sequence[str]) -> Sequence[str]:
395397
"""Insert dimension "trace" to the sample-1 dimension."""
@@ -447,6 +449,7 @@ def transform(
447449
self,
448450
index_headers: HeaderArray,
449451
grid_overrides: dict[str, bool | int],
452+
index_names = None,
450453
) -> NDArray:
451454
"""Perform the grid transform."""
452455
self.validate(index_headers, grid_overrides)
@@ -483,7 +486,7 @@ def validate(self, index_headers: HeaderArray, grid_overrides: dict[str, bool |
483486
self.check_required_keys(index_headers)
484487
self.check_required_params(grid_overrides)
485488

486-
def transform(self, index_headers: HeaderArray, grid_overrides: dict[str, bool | int]) -> NDArray:
489+
def transform(self, index_headers: HeaderArray, grid_overrides: dict[str, bool | int], index_names = None) -> NDArray:
487490
"""Perform the grid transform."""
488491
self.validate(index_headers, grid_overrides)
489492

@@ -511,6 +514,7 @@ def transform(
511514
self,
512515
index_headers: HeaderArray,
513516
grid_overrides: dict[str, bool | int],
517+
index_names = None,
514518
) -> NDArray:
515519
"""Perform the grid transform."""
516520
self.validate(index_headers, grid_overrides)
@@ -536,6 +540,7 @@ def transform(
536540
self,
537541
index_headers: HeaderArray,
538542
grid_overrides: dict[str, bool | int],
543+
index_names = None,
539544
) -> NDArray:
540545
"""Perform the grid transform."""
541546
self.validate(index_headers, grid_overrides)
@@ -602,11 +607,6 @@ def run(
602607
) -> tuple[HeaderArray, tuple[str], tuple[int]]:
603608
"""Run grid overrides and return result."""
604609

605-
# print("="*100)
606-
# print(index_headers.to_dict().keys())
607-
# print(index_headers)
608-
# print("="*100)
609-
610610
for override in grid_overrides:
611611
if override in self.parameters:
612612
continue
@@ -615,7 +615,7 @@ def run(
615615
raise GridOverrideUnknownError(override)
616616

617617
function = self.commands[override].transform
618-
index_headers = function(index_headers, grid_overrides=grid_overrides)
618+
index_headers = function(index_headers, grid_overrides=grid_overrides, index_names=index_names)
619619

620620
function = self.commands[override].transform_index_names
621621
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)