Как применить квантильное обрезание к сейсмическим данным?

#python-3.x #numpy #quantile

#python-3.x #numpy #квантиль

Вопрос:

В настоящее время я пытаюсь применить обрезку квантилей к сейсмическим данным, используя segyio для доступа к данным трассировки и Numpy для выполнения обработки данных. Я написал следующие функции:

 def clip(file,value):
traces = file.trace
for i,_ in enumerate(traces):
        traces[i] = np.where(traces[i]>value,value,traces[i])
        traces[i] = np.where(traces[i]<-value,-value,traces[i])
  

и

 def qclip(file,value):
    data = np.array([i for i in file.trace ])
    clipval = np.quantile(np.abs(data),value)
    clip(file,clipval)
  

qclip принимает открытый файл segyio и значение в [0,1], чтобы применить обрезку квантилей к трассам.
Это работает, но применяемое значение отсечения сильно отличается от значения, которое я получаю из сейсмического Unix, используя:

 sugain < infile qclip=value > outfile
  

вот реализация sugain qclip.

Ответ №1:

Попробуйте np.percentile вместо np.quantile