From a152672bf5ef8224bb02c7225ffcd9c01fee5453 Mon Sep 17 00:00:00 2001 From: Robert Smallshire Date: Fri, 30 Jan 2015 20:53:07 +0100 Subject: [PATCH] Example program to print a report of important SEG Y file characteristics. --- examples/report.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 examples/report.py diff --git a/examples/report.py b/examples/report.py new file mode 100644 index 0000000..bd827ab --- /dev/null +++ b/examples/report.py @@ -0,0 +1,81 @@ +"""Displays a simple report of a SEG Y file. + +Usage: + + report.py + +""" +from __future__ import print_function + +import os + +import sys +import traceback + +from segpy.reader import create_reader + + +def report_segy(in_filename): + with open(in_filename, 'rb') as in_file: + + segy_reader = create_reader(in_file) + print() + print("Filename: ", segy_reader.filename) + print("SEG Y revision: ", segy_reader.revision) + print("Number of traces: ", segy_reader.num_traces()) + print("Data format: ", + segy_reader.data_sample_format_description) + print("Dimensionality: ", segy_reader.dimensionality) + + try: + print("Number of CDPs: ", segy_reader.num_cdps()) + except AttributeError: + pass + + try: + print("Number of inlines: ", segy_reader.num_inlines()) + print("Number of crosslines: ", segy_reader.num_xlines()) + except AttributeError: + pass + + print("=== BEGIN TEXTUAL REEL HEADER ===") + for line in segy_reader.textual_reel_header: + print(line[3:]) + print("=== END TEXTUAL REEL HEADER ===") + print() + print("=== BEGIN EXTENDED TEXTUAL HEADER ===") + print(segy_reader.extended_textual_header) + print("=== END EXTENDED TEXTUAL_HEADER ===") + + for trace_index in segy_reader.trace_indexes(): + trace_header = segy_reader.trace_header(trace_index) + print("Inline {}, Crossline {}, Shotpoint {}".format(trace_header.Inline3D, trace_header.Crossline3D, + trace_header.ShotPoint)) + + +def main(argv=None): + if argv is None: + argv = sys.argv[1:] + + try: + in_filename = argv[0] + except IndexError: + print(globals()['__doc__'], file=sys.stderr) + return os.EX_USAGE + + try: + report_segy(in_filename) + except (FileNotFoundError, IsADirectoryError) as e: + print(e, file=sys.stderr) + return os.EX_NOINPUT + except PermissionError as e: + print(e, file=sys.stderr) + return os.EX_NOPERM + except Exception as e: + traceback.print_exception(type(e), e, e.__traceback__, file=sys.stderr) + return os.EX_SOFTWARE + return os.EX_OK + + +if __name__ == '__main__': + sys.exit(main()) \ No newline at end of file