Skip to content

Commit 164ade3

Browse files
authored
Fix cdp-x/y coordinate dimensionality on 2d/3d gathers by removing redundant offset dimension (#751)
* fix cdp x/y on gathers by removing redundant offset dimension * import minimal compressors --------- Co-authored-by: Altay Sansal <[email protected]>
1 parent 775f680 commit 164ade3

File tree

4 files changed

+91
-4
lines changed

4 files changed

+91
-4
lines changed

src/mdio/builder/templates/seismic_2d_cdp.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
from typing import Any
44

5+
from mdio.builder.schemas.compressors import Blosc
6+
from mdio.builder.schemas.compressors import BloscCname
7+
from mdio.builder.schemas.dtype import ScalarType
8+
from mdio.builder.schemas.v1.variable import CoordinateMetadata
59
from mdio.builder.templates.base import AbstractDatasetTemplate
610
from mdio.builder.templates.types import CdpGatherDomain
711
from mdio.builder.templates.types import SeismicDataDomain
@@ -30,3 +34,40 @@ def _name(self) -> str:
3034

3135
def _load_dataset_attributes(self) -> dict[str, Any]:
3236
return {"surveyType": "2D", "gatherType": "cdp"}
37+
38+
def _add_coordinates(self) -> None:
39+
# Add dimension coordinates
40+
self._builder.add_coordinate(
41+
"cdp",
42+
dimensions=("cdp",),
43+
data_type=ScalarType.INT32,
44+
)
45+
self._builder.add_coordinate(
46+
self._gather_domain,
47+
dimensions=(self._gather_domain,),
48+
data_type=ScalarType.INT32,
49+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key(self._gather_domain)),
50+
)
51+
self._builder.add_coordinate(
52+
self.trace_domain,
53+
dimensions=(self.trace_domain,),
54+
data_type=ScalarType.INT32,
55+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key(self.trace_domain)),
56+
)
57+
58+
# Add non-dimension coordinates
59+
compressor = Blosc(cname=BloscCname.zstd)
60+
self._builder.add_coordinate(
61+
"cdp_x",
62+
dimensions=("cdp",),
63+
data_type=ScalarType.FLOAT64,
64+
compressor=compressor,
65+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key("cdp_x")),
66+
)
67+
self._builder.add_coordinate(
68+
"cdp_y",
69+
dimensions=("cdp",),
70+
data_type=ScalarType.FLOAT64,
71+
compressor=compressor,
72+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key("cdp_y")),
73+
)

src/mdio/builder/templates/seismic_3d_cdp.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
from typing import Any
44

5+
from mdio.builder.schemas.compressors import Blosc
6+
from mdio.builder.schemas.compressors import BloscCname
7+
from mdio.builder.schemas.dtype import ScalarType
8+
from mdio.builder.schemas.v1.variable import CoordinateMetadata
59
from mdio.builder.templates.base import AbstractDatasetTemplate
610
from mdio.builder.templates.types import CdpGatherDomain
711
from mdio.builder.templates.types import SeismicDataDomain
@@ -30,3 +34,45 @@ def _name(self) -> str:
3034

3135
def _load_dataset_attributes(self) -> dict[str, Any]:
3236
return {"surveyType": "3D", "gatherType": "cdp"}
37+
38+
def _add_coordinates(self) -> None:
39+
# Add dimension coordinates
40+
self._builder.add_coordinate(
41+
"inline",
42+
dimensions=("inline",),
43+
data_type=ScalarType.INT32,
44+
)
45+
self._builder.add_coordinate(
46+
"crossline",
47+
dimensions=("crossline",),
48+
data_type=ScalarType.INT32,
49+
)
50+
self._builder.add_coordinate(
51+
self._gather_domain,
52+
dimensions=(self._gather_domain,),
53+
data_type=ScalarType.INT32,
54+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key(self._gather_domain)),
55+
)
56+
self._builder.add_coordinate(
57+
self.trace_domain,
58+
dimensions=(self.trace_domain,),
59+
data_type=ScalarType.INT32,
60+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key(self.trace_domain)),
61+
)
62+
63+
# Add non-dimension coordinates
64+
compressor = Blosc(cname=BloscCname.zstd)
65+
self._builder.add_coordinate(
66+
"cdp_x",
67+
dimensions=("inline", "crossline"),
68+
data_type=ScalarType.FLOAT64,
69+
compressor=compressor,
70+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key("cdp_x")),
71+
)
72+
self._builder.add_coordinate(
73+
"cdp_y",
74+
dimensions=("inline", "crossline"),
75+
data_type=ScalarType.FLOAT64,
76+
compressor=compressor,
77+
metadata=CoordinateMetadata(units_v1=self.get_unit_by_key("cdp_y")),
78+
)

tests/unit/v1/templates/test_seismic_2d_cdp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def validate_coordinates_headers_trace_mask(
8383
cdp_x = validate_variable(
8484
dataset,
8585
name="cdp_x",
86-
dims=[("cdp", 512), (gather_domain, 36)],
86+
dims=[("cdp", 512)],
8787
coords=["cdp_x"],
8888
dtype=ScalarType.FLOAT64,
8989
)
@@ -92,7 +92,7 @@ def validate_coordinates_headers_trace_mask(
9292
cdp_y = validate_variable(
9393
dataset,
9494
name="cdp_y",
95-
dims=[("cdp", 512), (gather_domain, 36)],
95+
dims=[("cdp", 512)],
9696
coords=["cdp_y"],
9797
dtype=ScalarType.FLOAT64,
9898
)

tests/unit/v1/templates/test_seismic_3d_cdp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def validate_coordinates_headers_trace_mask(
9191
cdp_x = validate_variable(
9292
dataset,
9393
name="cdp_x",
94-
dims=[("inline", 512), ("crossline", 768), (gather_domain, 36)],
94+
dims=[("inline", 512), ("crossline", 768)],
9595
coords=["cdp_x"],
9696
dtype=ScalarType.FLOAT64,
9797
)
@@ -100,7 +100,7 @@ def validate_coordinates_headers_trace_mask(
100100
cdp_y = validate_variable(
101101
dataset,
102102
name="cdp_y",
103-
dims=[("inline", 512), ("crossline", 768), (gather_domain, 36)],
103+
dims=[("inline", 512), ("crossline", 768)],
104104
coords=["cdp_y"],
105105
dtype=ScalarType.FLOAT64,
106106
)

0 commit comments

Comments
 (0)