def read_all_trace_headers(f, reel_header): trace_headers = { 'filename': reel_header["filename"] } logger.debug('read_all_trace_headers : trying to get all segy trace headers') for key in STH_def.keys(): trace_header = read_trace_header(f, reel_header, key) trace_headers[key] = trace_header logger.info("read_all_trace_headers : " + key) return trace_headers
def read_all_trace_headers(f, reel_header): trace_headers = {'filename': reel_header["filename"]} logger.debug( 'read_all_trace_headers : trying to get all segy trace headers') for key in STH_def.keys(): trace_header = read_trace_header(f, reel_header, key) trace_headers[key] = trace_header logger.info("read_all_trace_headers : " + key) return trace_headers
def getDefaultSegyTraceHeaders(ntraces=100, ns=100, dt=1000): """ SH = getDefaultSegyTraceHeader() """ # INITIALIZE DICTIONARY STH = {"TraceSequenceLine": {"pos": 0, "type": "int32"}} for key in STH_def.keys(): tmpkey = STH_def[key] STH[key] = zeros(ntraces) for a in range(ntraces): STH["TraceSequenceLine"][a] = a + 1 STH["TraceSequenceFile"][a] = a + 1 STH["FieldRecord"][a] = 1000 STH["TraceNumber"][a] = a + 1 STH["ns"][a] = ns STH["dt"][a] = dt return STH
def writeSegyStructure(filename, Data, SH, STH, endian='>'): # modified by A Squelch """ writeSegyStructure(filename, Data, SegyHeader, SegyTraceHeaders) Write SEGY file using SegyPy data structures See also readSegy (c) 2005, Thomas Mejer Hansen """ logger.debug("writeSegyStructure : Trying to write " + filename) f = open(filename, 'wb') # VERBOSE INF revision = SH["SegyFormatRevisionNumber"] dsf = SH["DataSampleFormat"] try: # block added by A Squelch DataDescr = SH_def["DataSampleFormat"]["descr"][revision][dsf] except KeyError: logging.critical(" An error has ocurred interpreting a SEGY binary header key") logging.critical(" Please check the Endian setting for this file: {0}".format(SH["filename"])) sys.exit() logger.debug("writeSegyStructure : SEG-Y revision = " + str(revision)) logger.debug("writeSegyStructure : DataSampleFormat = " + str(dsf) + "(" + DataDescr + ")") # WRITE SEGY HEADER for key in SH_def.keys(): pos = SH_def[key]["pos"] format = SH_def[key]["type"] value = SH[key] putValue(value, f, pos, format, endian) # SEGY TRACES ctype = SH_def['DataSampleFormat']['datatype'][revision][dsf] bps = SH_def['DataSampleFormat']['bps'][revision][dsf] sizeT = TRACE_HEADER_NUM_BYTES + SH['ns'] * bps for itrace in range(SH['ntraces']): index = REEL_HEADER_NUM_BYTES + itrace * sizeT logger.debug('Writing Trace #' + str(itrace + 1) + '/' + str(SH['ntraces'])) # WRITE SEGY TRACE HEADER for key in STH_def.keys(): pos = index + STH_def[key]["pos"] format = STH_def[key]["type"] value = STH[key][itrace] logger.debug(str(pos) + " " + str(format) + " Writing " + key + "=" + str(value)) putValue(value, f, pos, format, endian) # Write Data cformat = endian + ctype for s in range(SH['ns']): strVal = struct.pack(cformat, Data[s, itrace]) f.seek(index + TRACE_HEADER_NUM_BYTES + s * struct.calcsize(cformat)) f.write(strVal) f.close()
def writeSegyStructure(filename, Data, SH, STH, endian='>'): # modified by A Squelch """ writeSegyStructure(filename, Data, SegyHeader, SegyTraceHeaders) Write SEGY file using SegyPy data structures See also readSegy (c) 2005, Thomas Mejer Hansen """ logger.debug("writeSegyStructure : Trying to write " + filename) f = open(filename, 'wb') # VERBOSE INF revision = SH["SegyFormatRevisionNumber"] dsf = SH["DataSampleFormat"] try: # block added by A Squelch DataDescr = SH_def["DataSampleFormat"]["descr"][revision][dsf] except KeyError: logging.critical( " An error has ocurred interpreting a SEGY binary header key") logging.critical( " Please check the Endian setting for this file: {0}".format( SH["filename"])) sys.exit() logger.debug("writeSegyStructure : SEG-Y revision = " + str(revision)) logger.debug("writeSegyStructure : DataSampleFormat = " + str(dsf) + "(" + DataDescr + ")") # WRITE SEGY HEADER for key in SH_def.keys(): pos = SH_def[key]["pos"] format = SH_def[key]["type"] value = SH[key] putValue(value, f, pos, format, endian) # SEGY TRACES ctype = SH_def['DataSampleFormat']['datatype'][revision][dsf] bps = SH_def['DataSampleFormat']['bps'][revision][dsf] sizeT = TRACE_HEADER_NUM_BYTES + SH['ns'] * bps for itrace in range(SH['ntraces']): index = REEL_HEADER_NUM_BYTES + itrace * sizeT logger.debug('Writing Trace #' + str(itrace + 1) + '/' + str(SH['ntraces'])) # WRITE SEGY TRACE HEADER for key in STH_def.keys(): pos = index + STH_def[key]["pos"] format = STH_def[key]["type"] value = STH[key][itrace] logger.debug( str(pos) + " " + str(format) + " Writing " + key + "=" + str(value)) putValue(value, f, pos, format, endian) # Write Data cformat = endian + ctype for s in range(SH['ns']): strVal = struct.pack(cformat, Data[s, itrace]) f.seek(index + TRACE_HEADER_NUM_BYTES + s * struct.calcsize(cformat)) f.write(strVal) f.close()