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