@@ -64,19 +64,13 @@ def __init__(self, path, endian='big', strict=False, ignore_geometry=True):
6464 self .n_traces = self .file_handler .trace .length
6565 self .dtype = self .file_handler .dtype
6666
67- # Sample interval, rate and delay
68- self .sample_interval = self ._infer_sample_interval () # ms
69- self .sample_rate = 1000 / self .sample_interval # Hz
70- self .samples = np .arange (self .n_samples ) * self .sample_interval
71- self .delay = self .file_handler .header [0 ].get (segyio .TraceField .DelayRecordingTime )
72-
7367 # Misc
7468 self .metrics = self .file_handler .xfd .metrics ()
7569 self .text = [self .file_handler .text [i ] for i in range (1 + self .file_handler .ext_headers )]
7670
77-
78- def _infer_sample_interval (self ):
79- """ Get sample interval from file headers . """
71+ @ property
72+ def sample_interval (self ):
73+ """ Sample interval of seismic traces . """
8074 bin_sample_interval = self .file_handler .bin [segyio .BinField .Interval ]
8175 trace_sample_interval = self .file_handler .header [0 ][segyio .TraceField .TRACE_SAMPLE_INTERVAL ]
8276 # 0 means undefined sample interval, so it is removed from the set
@@ -87,7 +81,12 @@ def _infer_sample_interval(self):
8781 "either both `Interval` (bytes 3217-3218 in the binary header) "
8882 "and `TRACE_SAMPLE_INTERVAL` (bytes 117-118 in the header of the first trace) "
8983 "are undefined or they have different values." )
90- return union_sample_interval .pop () / 1000 # convert from microseconds to milliseconds
84+ return union_sample_interval .pop ()
85+
86+ @property
87+ def delay (self ):
88+ """ Delay recording time of seismic traces. """
89+ return self .file_handler .header [0 ].get (segyio .TraceField .DelayRecordingTime )
9190
9291
9392 # Headers
@@ -160,7 +159,7 @@ def make_tsf_header(self):
160159
161160
162161 # Data loading: traces
163- def load_traces (self , indices , limits = None , buffer = None , return_samples = False ):
162+ def load_traces (self , indices , limits = None , buffer = None ):
164163 """ Load traces by their indices.
165164 By pre-allocating memory for all of the requested traces, we significantly speed up the process.
166165
@@ -172,19 +171,16 @@ def load_traces(self, indices, limits=None, buffer=None, return_samples=False):
172171 Slice of the data along the depth axis.
173172 buffer : np.ndarray, optional
174173 Buffer to read the data into. If possible, avoids copies.
175- return_samples : bool
176- Whether to return samples of loaded traces in accordance to `limits`.
177174 """
178175 limits = self .process_limits (limits )
179- samples = self .samples [limits ]
180- n_samples = len (samples )
176+ n_samples = len (range (* limits .indices (self .n_samples )))
181177
182178 if buffer is None :
183179 buffer = np .empty ((len (indices ), n_samples ), dtype = self .dtype )
184180
185181 for i , index in enumerate (indices ):
186182 self .load_trace (index = index , buffer = buffer [i ], limits = limits )
187- return buffer if return_samples is False else ( buffer , samples )
183+ return buffer
188184
189185 def process_limits (self , limits ):
190186 """ Convert given `limits` to a `slice`. """
@@ -209,6 +205,7 @@ def load_trace(self, index, buffer, limits):
209205 limits .start , limits .stop , limits .step ,
210206 buffer .size )
211207
208+
212209 # Data loading: depth slices
213210 def load_depth_slices (self , indices , buffer = None ):
214211 """ Load horizontal (depth) slices of the data.
0 commit comments