DAOS-SEGY Mapping

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 to process data in place.


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

Object SEISROOT
# Root object storing global metadata and references to 2nd level objects (shot, offset, cmp, ...)
D-key "Gather keys"
A-key "nkeys" 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 "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 "Text 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 "Key_name_1", objid of first-gather object
...
    A-key "Key_name_n", objid of nth-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 "variation_1", first variation ex. fldr_sx
...
    A-key "variation_n", nth-variation supported ex. +fldr_-sx_+offset
------------------------------------------------------------------------------------------------------
Object Gather_1 (two level seismic object)
# Object storing all gathers under the first key_name
D-key "ngathers", total number of gathers saved under this gather object
D-key "Val(1)", first 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.
A-key "ntraces", total number of traces belonging to this gather object.
A-key "key_1", object id of first second level object.
...
A-key "key_n", nth second level 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(shot_id if it's shot object).
A-key "ntraces", total number of traces belonging to this gather object.
A-key "key_1", 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 gather.
A-key "Key_1", first second level object name.
...
A-key "Key_n", nth second level object name.
------------------------------------------------------------------------------------------------------
Object Gather_n (one level seismic object)
# Object storing all gathers under the second key_name
D-key "ngathers", total number of gathers saved under this gather object
D-key "Val(1)", first 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 "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.
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 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 "Val(1)", first 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 "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-Key "n"
A-key "oids[ntraces-500:ntraces]", array of traces_headers object ids from
trace 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
#array object storing trace data.
D-key "0"
A-key "data[0:199]", 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.