как добавить заголовок кривой в вывод las.write () с lasio.py

Я использую библиотеку python lasio.py, и мне что-то не хватает в документации.

Есть ли собственный способ добавления столбцов заголовков в раздел ~ASCII (~A) выходного файла.

Мне нужно вывести что-то вроде

~A  DEPTH     DT    RHOB        NPHI   SFLU    SFLA      ILM      ILD
1670.000   123.450 2550.000    0.450  123.450  123.450  110.200  105.600
1669.875   123.450 2550.000    0.450  123.450  123.450  110.200  105.600
1669.750   123.450 2550.000    0.450  123.450  123.450  110.200  105.600

где я на самом деле получаю

~ASCII -----------------------------------------------------
   1670     123.45       2550       0.45     123.45     123.45      110.2      105.6
 1669.9     123.45       2550       0.45     123.45     123.45      110.2      105.6
 1669.8     123.45       2550       0.45     123.45     123.45      110.2      105.6

записано в мой выходной файл.

Я чувствую, что упускаю что-то действительно очевидное.

edit: вывод для файла довольно прост:

las.write(outfilename + '.las', fmt='%.3f', version=2)

ура

2 ответа

Для всех, кто сталкивается с этой проблемой, есть обходной путь. Вам необходимо изменить файл writer.py в пакете lasio. Создайте список с мнемоникой кривой, преобразуйте его в массив np, сложите указанный массив поверх data_arr с помощью np.vstack()

      data_arr = las.data    # original code

# adding curve names as headers - insert these 5 lines in writer.py
hdr_list = []
for hdr_item in las.curves:
    hdr_list.append(hdr_item.mnemonic)
hdrs = np.array(hdr_list).reshape(1, -1)
data_arr = np.vstack((hdrs, data_arr))

nrows, ncols = data_arr.shape   # original code

Текущая (июнь 2022 г.) версия Lasio: v0.30.

Заголовки Curve могут быть включены в ~ASCII data_header.

Вот пример основного синтаксиса:

las.write(s, mnemonics_header=True, data_section_header="~ASCII" )

Если кривые в документе/объекте las:

      ~Curve Information -----------------------------------------
DEPT.M                 : 1  DEPTH
DT  .US/M 60 520 32 00 : 2  SONIC TRANSIT TIME
RHOB.K/M3 45 350 01 00 : 3  BULK DENSITY
NPHI.V/V  42 890 00 00 : 4  NEUTRON POROSITY
SFLU.OHMM 07 220 04 00 : 5  SHALLOW RESISTIVITY
SFLA.OHMM 07 222 01 00 : 6  SHALLOW RESISTIVITY
ILM .OHMM 07 120 44 00 : 7  MEDIUM RESISTIVITY
ILD .OHMM 07 120 46 00 : 8  DEEP RESISTIVITY

Затем вызовlas.write(s, mnemonics_header=True, data_section_header="~ASCII")будет включать заголовки кривых в качестве заголовка ASCII: ~ASCII DEPTDT RHOBNPHISFLUSFLAILM ILD

Выход:

      ...
~ASCII  DEPT         DT       RHOB       NPHI       SFLU       SFLA        ILM        ILD
 1670.00000  123.45000 2550.00000    0.45000  123.45000  123.45000  110.20000  105.60000
 1669.87500  123.45000 2550.00000    0.45000  123.45000  123.45000  110.20000  105.60000
...
Другие вопросы по тегам