как добавить заголовок кривой в вывод 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
...