Skip to content

Commit dddab96

Browse files
committed
Cleanup
1 parent 42f0ab6 commit dddab96

File tree

2 files changed

+12
-61
lines changed

2 files changed

+12
-61
lines changed

src/mdio/segy/_disaster_recovery_wrapper.py

Lines changed: 12 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,111 +2,66 @@
22

33
from __future__ import annotations
44

5-
import numpy as np
65
from typing import TYPE_CHECKING
7-
from segy.transforms import ByteSwapTransform
8-
from segy.transforms import IbmFloatTransform
96

107
if TYPE_CHECKING:
8+
import numpy as np
119
from segy.file import SegyFile
12-
from segy.indexing import HeaderIndexer
13-
from segy.transforms import Transform, TransformPipeline, ByteSwapTransform, IbmFloatTransform
10+
from segy.transforms import Transform, ByteSwapTransform, IbmFloatTransform
1411
from numpy.typing import NDArray
1512

1613
def _reverse_single_transform(data: NDArray, transform: Transform) -> NDArray:
17-
"""Reverse a single transform operation.
18-
19-
Args:
20-
data: The data to reverse transform
21-
transform: The transform to reverse
22-
23-
Returns:
24-
Data with the transform reversed
25-
"""
26-
# Import here to avoid circular imports
27-
from segy.transforms import get_endianness
14+
"""Reverse a single transform operation."""
2815
from segy.schema import Endianness
2916

3017
if isinstance(transform, ByteSwapTransform):
31-
# For byte swap, we need to reverse the endianness conversion
32-
# If the transform was converting to little-endian, we need to convert back to big-endian
33-
34-
# If transform was converting TO little-endian, we need to convert TO big-endian
18+
# Reverse the endianness conversion
3519
# TODO: I don't think this is correct
3620
if transform.target_order == Endianness.LITTLE:
3721
reverse_target = Endianness.BIG
3822
else:
3923
reverse_target = Endianness.LITTLE
4024

4125
reverse_transform = ByteSwapTransform(reverse_target)
42-
result = reverse_transform.apply(data)
43-
44-
return result
26+
return reverse_transform.apply(data)
4527

4628
elif isinstance(transform, IbmFloatTransform):
47-
# Reverse IBM float conversion by swapping direction
29+
# Reverse IBM float conversion
4830
reverse_direction = "to_ibm" if transform.direction == "to_ieee" else "to_ieee"
4931
reverse_transform = IbmFloatTransform(reverse_direction, transform.keys)
5032
return reverse_transform.apply(data)
5133

5234
else:
5335
# For unknown transforms, return data unchanged
54-
# This maintains compatibility if new transforms are added
5536
return data
5637

5738
def get_header_raw_and_transformed(
5839
segy_file: SegyFile,
59-
indices: int | list[int] | np.ndarray | slice
40+
indices: int | list[int] | NDArray | slice
6041
) -> tuple[NDArray, NDArray, NDArray]:
61-
"""Convenience function to get both raw and transformed header data.
62-
63-
This is a drop-in replacement that provides the functionality you requested
64-
without modifying the segy package.
42+
"""Get both raw and transformed header data.
6543
6644
Args:
6745
segy_file: The SegyFile instance
6846
indices: Which headers to retrieve
6947
7048
Returns:
71-
Tuple of (raw_headers, transformed_headers)
72-
73-
Example:
74-
from header_raw_transformed_accessor import get_header_raw_and_transformed
75-
76-
# Single header
77-
raw_hdr, transformed_hdr = get_header_raw_and_transformed(segy_file, 0)
78-
79-
# Multiple headers
80-
raw_hdrs, transformed_hdrs = get_header_raw_and_transformed(segy_file, [0, 1, 2])
81-
82-
# Slice of headers
83-
raw_hdrs, transformed_hdrs = get_header_raw_and_transformed(segy_file, slice(0, 10))
49+
Tuple of (raw_headers, transformed_headers, traces)
8450
"""
8551

8652
traces = segy_file.trace[indices]
87-
8853
transformed_headers = traces.header
8954

90-
# Reverse the transforms on the already-loaded transformed data
91-
# This eliminates the second disk read entirely!
55+
# Reverse transforms to get raw data
9256
raw_headers = _reverse_transforms(transformed_headers, segy_file.header.transform_pipeline)
9357

9458
return raw_headers, transformed_headers, traces
9559

9660
def _reverse_transforms(transformed_data: NDArray, transform_pipeline) -> NDArray:
97-
"""Reverse the transform pipeline to get raw data from transformed data.
98-
99-
Args:
100-
transformed_data: Data that has been processed through the transform pipeline
101-
transform_pipeline: The transform pipeline to reverse
102-
103-
Returns:
104-
Raw data equivalent to what was read directly from filesystem
105-
"""
106-
# Start with the transformed data
61+
"""Reverse the transform pipeline to get raw data."""
10762
raw_data = transformed_data.copy() if hasattr(transformed_data, 'copy') else transformed_data
10863

109-
# Apply transforms in reverse order with reversed operations
64+
# Apply transforms in reverse order
11065
for transform in reversed(transform_pipeline.transforms):
11166
raw_data = _reverse_single_transform(raw_data, transform)
11267

src/mdio/segy/_workers.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ def trace_worker( # noqa: PLR0913
121121
zarr_config.set({"threading.max_workers": 1})
122122

123123
live_trace_indexes = local_grid_map[not_null].tolist()
124-
# traces = segy_file.trace[live_trace_indexes]
125124
raw_headers, transformed_headers, traces = get_header_raw_and_transformed(segy_file, live_trace_indexes)
126125

127126
header_key = "headers"
@@ -136,14 +135,11 @@ def trace_worker( # noqa: PLR0913
136135
worker_variables.append(raw_header_key)
137136

138137
ds_to_write = dataset[worker_variables]
139-
# raw_headers, transformed_headers = get_header_raw_and_transformed(segy_file, live_trace_indexes)
140138

141139
if header_key in worker_variables:
142140
# Create temporary array for headers with the correct shape
143-
# TODO(BrianMichell): Implement this better so that we can enable fill values without changing the code. #noqa: TD003
144141
tmp_headers = np.zeros_like(dataset[header_key])
145142
tmp_headers[not_null] = transformed_headers
146-
# tmp_headers[not_null] = traces.header
147143
# Create a new Variable object to avoid copying the temporary array
148144
# The ideal solution is to use `ds_to_write[header_key][:] = tmp_headers`
149145
# but Xarray appears to be copying memory instead of doing direct assignment.

0 commit comments

Comments
 (0)