Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SEGY is a data format developed by the Society of Exploration Geophysicists (SEG) for storing geophysical data. DAOS-SEGY aims at implementing the SEGY data format natively on top of the DAOS storage model in order to accelerate data access and to provide in-storage computing capabilities computing capabilities to process data in place.

Image Removed

DAOS changes to be considered:

  • sorting based on dkey
  • range query support

Image Added


The project is still in its early days and the following mapping is under consideration:

Object SEGROOTSEISROOT
# Root object storing global metadata and references to 2nd level objects (shot, offset, & cmpcmp, ...)
D-key "FileGather Headerskeys"
A-key "sort-key" sorting type CMP, CDP, etcnkeys" number of keys that will be used to create gather objects.
A-key "key_1" first key name that will be used to create a gather object.
...
A-key "grd-orgn" Grid origin (Latitude, Longitude)key_n" nth key name that will be used to create a gather object.
D-key "File Headers"
A-key "ntraces" total number of traces under seismic root object.
    A-key "Binary File Header", binary file header.
    A-key "TextualText File Header", textual file header.
    A-key "n_EXTH", number of extended textual file headers.
    A-key "EXTH_1", 1st extended textual file header.
    ...
    A-key "EXTH_n", nth extended textual file header.
D-key "Sorting Types"
    A-key "shotKey_name_oid1", objid of shotfirst-gather object
...
    A-key "cmpKey_name_oidn", objid of cmpnth-gather object
..D-key "Sorting Variations", what sorting combinations are supported, complex variations are the ones
supporting arbitrary sortings, otherwise variations can be used
in any direction(ascending/descending).
A-key "nvariations", number of sorting variations supported.
    A-key "offsetvariation_oid1", objidfirst of offset-gather object
---variation ex. fldr_sx
...
    A-key "variation_n", nth-variation supported ex. +fldr_-sx_+offset
----------------------------------------------------------------------------------------------------------------------
Object shotGather
Object Gather_1 (two level seismic object)
# Object storing all shotsgathers under the first key_name
D-key "ngathers", total number of gathers saved under this gather object
D-key "shot_id_1Val(1)", first shotgather
A-key "Trace_hdr_oids", shot metadata objid of the array object holding oids of all traces_headers objects
belonging to this gather.
A-key "oidUnique_val", array of trace oids[trace_oid1, trace_oid2,...] gather unique value.
A-key "ntraces", total number of traces belonging to this shotgather object.
D A-key "shotkey_id_21", object id of first second shotlevel object.
...
A-key "hdrkey_n", nth second level object.
...
D-key "Val(n)", shotnth metadatagather
A-key "oidTrace_hdr_oids", objid of the array object holding oids of traceall oids[trace_oid1, trace_oid2,...]traces_headers objects
belonging to this shotgather.
...
D A-key "Unique_val", gather unique value(shot_id_k", kth shot if it's shot object).
A-key "hdrntraces", shot metadata total number of traces belonging to this gather object.
A-key "oidkey_1", array of trace oids[trace_oid1, trace_oid2,...]object id of first second level object.
...
Akey "key_n", nth second level object.
D-key "dkeys_list", list of gather unique values sorted in ascending order.
D-key "nkeys", Number of keys used while creating the gather object.
D-key "2nd level keys", key storing all second level related info.
A-key "nkeys", number of second level objects belonging to this shotgather.
A-key "Key_1", first second level object name.
...
A-key "Key_n", nth second level object name.
-----------------------------------------------------------------------------------------------------------------------
Object cmpGatherGather_n (inlineone level vsseismic crossline?object)
# Additional index object providing ability to lookup trace in CMP order Object storing all gathers under the second key_name
D-key "ngathers", total number of gathers saved under this gather object
D-key "cmp_Val(1)", first cmpgather
value
A-key "cmpTrace_hdr_oids", CMPobjid value
of the array A-key "ntraces", numberobject holding oids of all traces having same CMP value.
/* cmp value for these traces is equal to cmp value of this akey */
_headers objects
belonging to this gather.
A-key "Unique_val", gather unique value(cmp_value if it's cmp object).
A-key "oidntraces", total arraynumber of trace oids[trace_oid1, trace_oid2, traces belonging to this gather object.
...]
D-key "cmp_2Val(n)", secondnth cmpgather
value
A-key "cmp", CMP valueTrace_hdr_oids", objid of the array object holding oids of all traces_headers objects
belonging to this gather.
A-key "ntracesUnique_val", numbergather of traces having same CMP value.
/* cmp value for these traces is equal to cmp value of this akey */
A-key "oid", array of trace oids[trace_oid1, trace_oid2,...]
...
D-key "cmp_k", kth cmp value
A-key "cmp", CMP value
A-key "ntraces", number of traces having same CMP value.
/* cmp value for these traces is equal to cmp value of this akey */
A-key "oid", array of trace oids[trace_oid1, trace_oid2,...]unique value(cmp_value if it's cmp object).
A-key "ntraces", total number of traces belonging to this gather object.
D-key "dkeys_list", list of gather unique values sorted in ascending order.
D-key "nkeys", Number of keys used while creating the gather object.
D-key "2nd level keys", key storing all second level related info.
A-key "nkeys", number of second level objects belonging to this gather
(Zero in the case one level seismic object).
-------------------------------------------------------------------------------------------------------------------------
Object offsetGather
# Additional index object providing ability to lookup trace in offset order
Object Gather_n (Complex seismic object, traces are indexed in an arbitrary sorting)
# Object storing all gathers under the second key_name
D-key "ngathers", total number of gathers saved under this gather object
D-key "offset_Val(1)", first offset value
gather
A-key "Trace_hdr_oids", objid of the array object holding oids of all traces_headers objects
belonging to this gather.
A-key "offsetUnique_val", offsetgather unique value
(cmp_value if it's cmp object).
A-key "ntraces", total number of traces havingbelonging to samethis OFFSET value.
/* offset value for these traces is equal to offset value of this akey */
A-key "oid", array of trace oids[trace_oid1, trace_oid2,...]
D-key "offset_2", second offset value
A-key "offset", offset value
A-key "ntraces", number of traces having same OFFSET value.
/* offset value for these traces is equal to offset value of this akey */
A-key "oid", array of trace oids[trace_oid1, trace_oid2,...]gather object.
...
D-key "Val(n)", nth gather
A-key "Trace_hdr_oids", objid of the array object holding oids of all traces_headers objects
belonging to this gather.
A-key "Unique_val", gather unique value(cmp_value if it's cmp object).
A-key "ntraces", total number of traces belonging to this gather object.
D-key "dkeys_list", list of gather unique values sorted in ascending order.
D-key "nkeys", Number of keys used while creating the gather object.
------------------------------------------------------------------------------------------------------
Object Trace_Hdr_oids
#array object storing all traces header oids belonging to one gather under specific gather object.
D-key "0"
A-key "oids[0:499]", array of traces_headers object ids from trace header 0 to trace header 499.
...
D-keyKey "offset_kn",
kth offset value
A-key "offsetoids[ntraces-500:ntraces]", offset value
array of traces_headers object ids from
A-key "ntraces", number of traces having same OFFSET value.
/* offset value for these traces is equal to offset value of this akey */
A-key "oid", array of trace oids[trace_oid1, trace_oid2,...] header (ntraces-500) to the last trace.
------------------------------------------------------------------------------------------------------
Object Trace_Header
#object storing all trace headers.
#each trace is splitted into two objects, header object to hold trace header and data object
to hold trace data.
D-key "hdr", trace metadata
A-key "hdr", array storing all trace headers(240 byte).
------------------------------------------------------------------------------------------------------
Object Trace_Data
#object#array object storing all trace related infodata.
D-key "hdr0",
trace metadata
DA-key "data[0:199]"
A-key "data", array storing data of first 200 sample in the trace.
...
D-key "data[tmax-200:tmax]"
A-key "data", array storing data of last 200 sample in the trace.