Files
segpy/examples/check_equal.py
T

47 lines
1.5 KiB
Python

#!/usr/bin/env python3
from segpy.reader import create_reader
from segpy.trace_header import TraceHeaderRev1
from segpy.types import Int16
from segpy.writer import write_segy
from segpy.header import are_equal, field
class CustomTraceHeader(TraceHeaderRev1):
unassigned_1 = field(
Int16, offset=233, default=0, documentation="Unassigned 1")
unassigned_2 = field(
Int16, offset=235, default=0, documentation="Unassigned 2")
unassigned_3 = field(
Int16, offset=237, default=0, documentation="Unassigned 3")
unassigned_4 = field(
Int16, offset=239, default=0, documentation="Unassigned 4")
in_filename = "data/rth.segy"
out_filename = "data/rth_out2.segy"
in_file = open(in_filename, 'rb')
with open(out_filename, 'wb') as out_file:
segy_reader_in = create_reader(in_file, trace_header_format=CustomTraceHeader)
write_segy(out_file, segy_reader_in, trace_header_format=CustomTraceHeader)
out_file = open(out_filename, 'rb')
segy_reader_out = create_reader(in_file, trace_header_format=CustomTraceHeader)
for trace_index in segy_reader_in.trace_indexes():
trace_offset = segy_reader_in._trace_offset_catalog[trace_index]
print(trace_index, hex(trace_offset))
head0 = segy_reader_in.trace_header(trace_index)
head1 = segy_reader_out.trace_header(trace_index)
assert are_equal(head0, head1), "Error {}".format(trace_index)
data0 = segy_reader_in.trace_samples(trace_index)
data1 = segy_reader_out.trace_samples(trace_index)
assert data0==data1