Skip to content

Commit 51ea0a9

Browse files
committed
Update pipeline application logic
1 parent 53fbae5 commit 51ea0a9

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

src/mdio/segy/_disaster_recovery_wrapper.py

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,25 @@
1010
from segy.transforms import Transform, ByteSwapTransform, IbmFloatTransform
1111
from numpy.typing import NDArray
1212

13-
def _reverse_single_transform(data: NDArray, transform: Transform) -> NDArray:
13+
def _reverse_single_transform(data: NDArray, transform: Transform, endianness: Endianness) -> NDArray:
1414
"""Reverse a single transform operation."""
1515
from segy.schema import Endianness
1616
from segy.transforms import ByteSwapTransform
1717
from segy.transforms import IbmFloatTransform
1818

1919
if isinstance(transform, ByteSwapTransform):
2020
# Reverse the endianness conversion
21-
# TODO: I don't think this is correct
22-
if transform.target_order == Endianness.BIG:
23-
reverse_target = Endianness.LITTLE
24-
reverse_transform = ByteSwapTransform(reverse_target)
25-
return reverse_transform.apply(data)
26-
return data
27-
28-
# if transform.target_order == Endianness.LITTLE:
29-
# reverse_target = Endianness.BIG
30-
# else:
31-
# reverse_target = Endianness.LITTLE
32-
33-
# reverse_transform = ByteSwapTransform(reverse_target)
34-
# return reverse_transform.apply(data)
21+
if endianness == Endianness.BIG:
22+
print("REVERSING TO BIG ENDIAN")
23+
reverse_target = Endianness.BIG
24+
else:
25+
print("No REVERSING TO LITTLE ENDIAN")
26+
return data
27+
28+
reverse_transform = ByteSwapTransform(reverse_target)
29+
return reverse_transform.apply(data)
3530

36-
elif isinstance(transform, IbmFloatTransform):
31+
elif isinstance(transform, IbmFloatTransform): # TODO: This seems incorrect...
3732
# Reverse IBM float conversion
3833
reverse_direction = "to_ibm" if transform.direction == "to_ieee" else "to_ieee"
3934
reverse_transform = IbmFloatTransform(reverse_direction, transform.keys)
@@ -57,24 +52,23 @@ def get_header_raw_and_transformed(
5752
Returns:
5853
Tuple of (raw_headers, transformed_headers, traces)
5954
"""
60-
6155
traces = segy_file.trace[indices]
6256
transformed_headers = traces.header
6357

6458
# Reverse transforms to get raw data
6559
if do_reverse_transforms:
66-
raw_headers = _reverse_transforms(transformed_headers, segy_file.header.transform_pipeline)
60+
raw_headers = _reverse_transforms(transformed_headers, segy_file.header.transform_pipeline, segy_file.spec.endianness)
6761
else:
6862
raw_headers = None
6963

7064
return raw_headers, transformed_headers, traces
7165

72-
def _reverse_transforms(transformed_data: NDArray, transform_pipeline) -> NDArray:
66+
def _reverse_transforms(transformed_data: NDArray, transform_pipeline, endianness: Endianness) -> NDArray:
7367
"""Reverse the transform pipeline to get raw data."""
7468
raw_data = transformed_data.copy() if hasattr(transformed_data, 'copy') else transformed_data
7569

7670
# Apply transforms in reverse order
7771
for transform in reversed(transform_pipeline.transforms):
78-
raw_data = _reverse_single_transform(raw_data, transform)
72+
raw_data = _reverse_single_transform(raw_data, transform, endianness)
7973

8074
return raw_data

0 commit comments

Comments
 (0)