Building a LAS file from scratch
When you create a lasio.LASFile from scratch, it comes with some
default metadata:
>>> import lasio
>>> las = lasio.LASFile()
>>> las.header
{'Version': [HeaderItem(mnemonic="VERS", unit="", value="2.0", descr="CWLS log ASCII Standa"),
HeaderItem(mnemonic="WRAP", unit="", value="NO", descr="One line per depth ste"),
HeaderItem(mnemonic="DLM", unit="", value="SPACE", descr="Column Data Section ")],
'Well': [HeaderItem(mnemonic="STRT", unit="m", value="nan", descr="START DEPTH"),
HeaderItem(mnemonic="STOP", unit="m", value="nan", descr="STOP DEPTH"),
HeaderItem(mnemonic="STEP", unit="m", value="nan", descr="STEP"),
HeaderItem(mnemonic="NULL", unit="", value="-9999.25", descr="NULL VALUE"),
HeaderItem(mnemonic="COMP", unit="", value="", descr="COMPANY"),
HeaderItem(mnemonic="WELL", unit="", value="", descr="WELL"),
HeaderItem(mnemonic="FLD", unit="", value="", descr="FIELD"),
HeaderItem(mnemonic="LOC", unit="", value="", descr="LOCATION"),
HeaderItem(mnemonic="PROV", unit="", value="", descr="PROVINCE"),
HeaderItem(mnemonic="CNTY", unit="", value="", descr="COUNTY"),
HeaderItem(mnemonic="STAT", unit="", value="", descr="STATE"),
HeaderItem(mnemonic="CTRY", unit="", value="", descr="COUNTRY"),
HeaderItem(mnemonic="SRVC", unit="", value="", descr="SERVICE COMPANY"),
HeaderItem(mnemonic="DATE", unit="", value="", descr="DATE"),
HeaderItem(mnemonic="UWI", unit="", value="", descr="UNIQUE WELL ID"),
HeaderItem(mnemonic="API", unit="", value="", descr="API NUMBER")],
'Curves': [],
'Parameter': [],
'Other': ''}
In our case, let’s set the correct date:
>>> from datetime import datetime
>>> las.well.DATE = datetime.today().strftime('%Y-%m-%d %H:%M:%S')
And add some new header fields:
>>> las.params['ENG'] = lasio.HeaderItem('ENG', value='Kent Inverarity')
>>> las.params['LMF'] = lasio.HeaderItem('LMF', value='GL')
>>> las.other = 'Example of how to create a LAS file from scratch using lasio'
We will invent some data for a curve:
>>> import numpy as np
>>> depths = np.arange(10, 50, 0.5)
>>> synth = np.log10(depths)*5+np.random.random(len(depths))
>>> synth[:8] = np.nan
...add these to the LASFile object:
>>> las.append_curve('DEPT', depths, unit='m')
>>> las.append_curve('SYNTH', synth, descr='fake data')
And write the result to files:
>>> las.write('scratch_v1.2.las', version=1.2)
>>> las.write('scratch_v2.las', version=2)
Here is the resulting scratch_v1.2.las:
1~Version ---------------------------------------------------
2VERS. 1.2 : CWLS LOG ASCII STANDARD - VERSION 1.2
3WRAP. NO : One line per depth step
4DLM . SPACE : Column Data Section Delimiter
5~Well ------------------------------------------------------
6STRT.m 10.00000 : START DEPTH
7STOP.m 49.50000 : STOP DEPTH
8STEP.m 0.50000 : STEP
9NULL. -9999.25 : NULL VALUE
10COMP. COMPANY :
11WELL. WELL :
12FLD . FIELD :
13LOC . LOCATION :
14PROV. PROVINCE :
15CNTY. COUNTY :
16STAT. STATE :
17CTRY. COUNTRY :
18SRVC. SERVICE COMPANY :
19DATE. DATE : 2023-01-26 14:58:21
20UWI . UNIQUE WELL ID :
21API . API NUMBER :
22~Curve Information -----------------------------------------
23DEPT .m :
24SYNTH. : fake data
25~Params ----------------------------------------------------
26ENG. Kent Inverarity :
27LMF. GL :
28~Other -----------------------------------------------------
29Example of how to create a LAS file from scratch using lasio
30~ASCII -----------------------------------------------------
31 10.00000 -9999.25
32 10.50000 -9999.25
33 11.00000 -9999.25
34 11.50000 -9999.25
35 12.00000 -9999.25
36 12.50000 -9999.25
37 13.00000 -9999.25
38 13.50000 -9999.25
39 14.00000 6.32656
40 14.50000 6.32279
41 15.00000 6.24716
42 15.50000 6.07168
43 16.00000 6.40693
44 16.50000 6.74994
45 17.00000 6.16163
46 17.50000 7.08836
47 18.00000 6.31721
48 18.50000 7.19034
49 19.00000 6.72278
50 19.50000 7.01719
51 20.00000 7.49475
52 20.50000 6.92995
53 21.00000 7.44739
54 21.50000 7.55360
55 22.00000 6.94753
56 22.50000 7.64236
57 23.00000 7.74817
58 23.50000 7.23852
59 24.00000 7.88034
60 24.50000 7.07664
61 25.00000 7.19182
62 25.50000 7.62403
63 26.00000 7.80678
64 26.50000 7.93082
65 27.00000 8.08903
66 27.50000 7.81581
67 28.00000 8.08901
68 28.50000 7.60532
69 29.00000 7.86530
70 29.50000 7.72080
71 30.00000 7.74472
72 30.50000 7.68292
73 31.00000 8.00722
74 31.50000 8.12406
75 32.00000 7.60265
76 32.50000 7.73699
77 33.00000 7.72325
78 33.50000 8.02248
79 34.00000 8.04029
80 34.50000 8.65056
81 35.00000 8.30488
82 35.50000 8.59884
83 36.00000 7.83725
84 36.50000 8.72173
85 37.00000 7.95948
86 37.50000 8.12969
87 38.00000 8.75692
88 38.50000 8.73753
89 39.00000 8.22793
90 39.50000 8.86533
91 40.00000 8.56819
92 40.50000 9.00213
93 41.00000 8.51844
94 41.50000 8.81121
95 42.00000 8.51106
96 42.50000 8.28359
97 43.00000 8.65719
98 43.50000 8.33235
99 44.00000 8.52983
100 44.50000 9.04601
101 45.00000 8.53333
102 45.50000 9.20433
103 46.00000 8.60132
104 46.50000 8.94629
105 47.00000 8.60415
106 47.50000 8.56460
107 48.00000 9.35277
108 48.50000 8.65887
109 49.00000 9.33907
110 49.50000 9.30430
and scratch_v2.las:
1~Version ---------------------------------------------------
2VERS. 2.0 : CWLS log ASCII Standard -VERSION 2.0
3WRAP. NO : One line per depth step
4DLM . SPACE : Column Data Section Delimiter
5~Well ------------------------------------------------------
6STRT.m 10.00000 : START DEPTH
7STOP.m 49.50000 : STOP DEPTH
8STEP.m 0.50000 : STEP
9NULL. -9999.25 : NULL VALUE
10COMP. : COMPANY
11WELL. : WELL
12FLD . : FIELD
13LOC . : LOCATION
14PROV. : PROVINCE
15CNTY. : COUNTY
16STAT. : STATE
17CTRY. : COUNTRY
18SRVC. : SERVICE COMPANY
19DATE. 2023-01-26 14:58:21 : DATE
20UWI . : UNIQUE WELL ID
21API . : API NUMBER
22~Curve Information -----------------------------------------
23DEPT .m :
24SYNTH. : fake data
25~Params ----------------------------------------------------
26ENG. Kent Inverarity :
27LMF. GL :
28~Other -----------------------------------------------------
29Example of how to create a LAS file from scratch using lasio
30~ASCII -----------------------------------------------------
31 10.00000 -9999.25
32 10.50000 -9999.25
33 11.00000 -9999.25
34 11.50000 -9999.25
35 12.00000 -9999.25
36 12.50000 -9999.25
37 13.00000 -9999.25
38 13.50000 -9999.25
39 14.00000 6.32656
40 14.50000 6.32279
41 15.00000 6.24716
42 15.50000 6.07168
43 16.00000 6.40693
44 16.50000 6.74994
45 17.00000 6.16163
46 17.50000 7.08836
47 18.00000 6.31721
48 18.50000 7.19034
49 19.00000 6.72278
50 19.50000 7.01719
51 20.00000 7.49475
52 20.50000 6.92995
53 21.00000 7.44739
54 21.50000 7.55360
55 22.00000 6.94753
56 22.50000 7.64236
57 23.00000 7.74817
58 23.50000 7.23852
59 24.00000 7.88034
60 24.50000 7.07664
61 25.00000 7.19182
62 25.50000 7.62403
63 26.00000 7.80678
64 26.50000 7.93082
65 27.00000 8.08903
66 27.50000 7.81581
67 28.00000 8.08901
68 28.50000 7.60532
69 29.00000 7.86530
70 29.50000 7.72080
71 30.00000 7.74472
72 30.50000 7.68292
73 31.00000 8.00722
74 31.50000 8.12406
75 32.00000 7.60265
76 32.50000 7.73699
77 33.00000 7.72325
78 33.50000 8.02248
79 34.00000 8.04029
80 34.50000 8.65056
81 35.00000 8.30488
82 35.50000 8.59884
83 36.00000 7.83725
84 36.50000 8.72173
85 37.00000 7.95948
86 37.50000 8.12969
87 38.00000 8.75692
88 38.50000 8.73753
89 39.00000 8.22793
90 39.50000 8.86533
91 40.00000 8.56819
92 40.50000 9.00213
93 41.00000 8.51844
94 41.50000 8.81121
95 42.00000 8.51106
96 42.50000 8.28359
97 43.00000 8.65719
98 43.50000 8.33235
99 44.00000 8.52983
100 44.50000 9.04601
101 45.00000 8.53333
102 45.50000 9.20433
103 46.00000 8.60132
104 46.50000 8.94629
105 47.00000 8.60415
106 47.50000 8.56460
107 48.00000 9.35277
108 48.50000 8.65887
109 49.00000 9.33907
110 49.50000 9.30430