Giter VIP home page Giter VIP logo

las's Introduction

las

The las module implements a reader for LAS (Log ASCII Standard) well log files (LAS 2.0). For more information about this format, see the Canadian Well Logging Society web page (https://www.cwls.org/products/).

Example 1

The following file, "example1.las", is from "LAS Version 2.0: A Digital Standard for Logs; Updated January 2014":

~VERSION INFORMATION
VERS.                          2.0 :   CWLS LOG ASCII STANDARD -VERSION 2.0
WRAP.                          NO  :   ONE LINE PER DEPTH STEP
~WELL INFORMATION
#MNEM.UNIT              DATA                       DESCRIPTION
#----- -----            ----------               -------------------------
STRT    .M              1670.0000                :START DEPTH
STOP    .M              1669.7500                :STOP DEPTH
STEP    .M              -0.1250                  :STEP
NULL    .               -999.25                  :NULL VALUE
COMP    .       ANY OIL COMPANY INC.             :COMPANY
WELL    .       ANY ET AL 12-34-12-34            :WELL
FLD     .       WILDCAT                          :FIELD
LOC     .       12-34-12-34W5M                   :LOCATION
PROV    .       ALBERTA                          :PROVINCE
SRVC    .       ANY LOGGING COMPANY INC.         :SERVICE COMPANY
DATE    .       13-DEC-86                        :LOG DATE
UWI     .       100123401234W500                 :UNIQUE WELL ID
~CURVE INFORMATION
#MNEM.UNIT              API CODES                   CURVE DESCRIPTION
#------------------     ------------              -------------------------
 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
~PARAMETER INFORMATION
#MNEM.UNIT              VALUE             DESCRIPTION
#--------------     ----------------      -----------------------------------------------
 MUD    .               GEL CHEM        :   MUD TYPE
 BHT    .DEGC           35.5000         :   BOTTOM HOLE TEMPERATURE
 BS     .MM             200.0000        :   BIT SIZE
 FD     .K/M3           1000.0000       :   FLUID DENSITY
 MATR   .               SAND            :   NEUTRON MATRIX
 MDEN   .               2710.0000       :   LOGGING MATRIX DENSITY
 RMF    .OHMM           0.2160          :   MUD FILTRATE RESISTIVITY
 DFD    .K/M3           1525.0000       :   DRILL FLUID DENSITY
~OTHER
     Note: The logging tools became stuck at 625 metres causing the data
     between 625 metres and 615 metres to be invalid.
~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

Sample python session:

>>> import las
>>> log = las.LASReader('example1.las')
>>> log.start
1670.0
>>> log.stop
1669.75
>>> log.step
-0.125
>>> log.null
-999.25
>>> log.well.COMP
LASItem(name='COMP', units='', data='ANY OIL COMPANY INC.', descr='COMPANY')
>>> log.well.COMP.value
'ANY OIL COMPANY INC.'
>>> log.well.FLD.value
'WILDCAT'
>>> print(log.other)
     Note: The logging tools became stuck at 625 metres causing the data
     between 625 metres and 615 metres to be invalid.

The log data is stored as a numpy structured array in log.data:

>>> log.data
array([(1670.0, 123.45, 2550.0, 0.45, 123.45, 123.45, 110.2, 105.6),
       (1669.875, 123.45, 2550.0, 0.45, 123.45, 123.45, 110.2, 105.6),
       (1669.75, 123.45, 2550.0, 0.45, 123.45, 123.45, 110.2, 105.6)],
      dtype=[('DEPT', '<f8'), ('DT', '<f8'), ('RHOB', '<f8'), ('NPHI', '<f8'), ('SFLU', '<f8'), ('SFLA', '<f8'), ('ILM', '<f8'), ('ILD', '<f8')])
>>> log.data['RHOB']
array([ 2550.,  2550.,  2550.])
>>> log.data[0]
(1670.0, 123.45, 2550.0, 0.45, 123.45, 123.45, 110.2, 105.6)

The data is also available as a two-dimensional numpy array. First we'll adjust numpy's output format. This is not necessary, but it makes the values easier to read:

>>> import numpy as np
>>> np.set_printoptions(precision=4)

The two-dimensional view of the data is called data2d:

>>> log.data2d
array([[  1.6700e+03,   1.2345e+02,   2.5500e+03,   4.5000e-01,
          1.2345e+02,   1.2345e+02,   1.1020e+02,   1.0560e+02],
       [  1.6699e+03,   1.2345e+02,   2.5500e+03,   4.5000e-01,
          1.2345e+02,   1.2345e+02,   1.1020e+02,   1.0560e+02],
       [  1.6698e+03,   1.2345e+02,   2.5500e+03,   4.5000e-01,
          1.2345e+02,   1.2345e+02,   1.1020e+02,   1.0560e+02]])
>>> log.data2d.shape
(3, 8)

Example 2

The next example reads a file from the Kansas Geological Survey and makes a plot of the gamma ray data versus depth using matplotlib.

First, the imports:

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> import las
>>> import io
>>> try:
...     from urllib.request import urlopen
... except ImportError:
...     from urllib import urlopen
...

Next, read the file:

>>> url = "http://www.kgs.ku.edu/software/DEWL/HELP/pc_read/Shamar-1.las"
>>> f = io.StringIO(urlopen(url).read().decode('iso-8859-1'))
>>> log = las.LASReader(f, null_subs=np.nan)

Finally, make the plot using matplotlib:

>>> plt.figure(figsize=(9, 5))
>>> plt.plot(log.data['DEPT'], log.data['GR'])
>>> plt.xlabel(log.curves.DEPT.descr + " (%s)" % log.curves.DEPT.units)
>>> plt.ylabel(log.curves.GR.descr + " (%s)" % log.curves.GR.units)
>>> plt.title(log.well.WELL.data + ', ' + log.well.DATE.data)
>>> plt.grid()
>>> plt.show()

Example 2 plot

las's People

Contributors

warrenweckesser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

las's Issues

reading files form azure storage causing exception

Hi Team,

I am using below code for reading .LAS files from local path which is working fine:
from LAS import Converter
c = Converter() # create converter object
log = c.set_file("<filename.LAS>")

However when i tried to read from azure storage blob path i am getting below error:
log = c.set_file("https://.blob.core.windows.net/well-logs/<filename.LAS>?")

Error:
File format no supported!
File "C:\Jupiter Notebook Projects\Python Projects\LAS file POC\lasPOC.py", line 16, in
log = c.set_file("https://.blob.core.windows.net/well-logs/<filename.LAS>?")

Print the header

Hello!

I need to print only the header of a .las file. How could I do it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.