las

Python reader for Canadian Well Logging Society LAS (Log ASCII Standard) files.

https://github.com/warrenweckesser/las

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.4%) to scientific vocabulary

Keywords

io python well-logs
Last synced: 6 months ago · JSON representation

Repository

Python reader for Canadian Well Logging Society LAS (Log ASCII Standard) files.

Basic Info
  • Host: GitHub
  • Owner: WarrenWeckesser
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 112 KB
Statistics
  • Stars: 38
  • Watchers: 8
  • Forks: 17
  • Open Issues: 0
  • Releases: 2
Topics
io python well-logs
Created about 11 years ago · Last pushed 6 months ago
Metadata Files
Readme

README.rst

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', '>> 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()

.. image:: https://raw.githubusercontent.com/WarrenWeckesser/las/main/examples/example2.png
   :alt: Example 2 plot
   :align: center

Owner

  • Name: Warren Weckesser
  • Login: WarrenWeckesser
  • Kind: user

GitHub Events

Total
  • Watch event: 1
  • Push event: 5
  • Fork event: 2
Last Year
  • Watch event: 1
  • Push event: 5
  • Fork event: 2

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 69
  • Total Committers: 1
  • Avg Commits per committer: 69.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 8
  • Committers: 1
  • Avg Commits per committer: 8.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Warren Weckesser w****r@g****m 69

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 3
  • Total pull requests: 1
  • Average time to close issues: 4 days
  • Average time to close pull requests: over 4 years
  • Total issue authors: 2
  • Total pull request authors: 1
  • Average comments per issue: 2.67
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • raquelsilva (2)
  • qudiransari (1)
Pull Request Authors
  • alicarlos (2)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 453 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 5
  • Total versions: 4
  • Total maintainers: 1
pypi.org: las

A reader for Canadian Well Logging Society LAS (Log ASCII Standard) files.

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 5
  • Downloads: 453 Last month
Rankings
Dependent repos count: 6.6%
Average: 9.5%
Forks count: 9.6%
Dependent packages count: 10.1%
Downloads: 10.5%
Stargazers count: 10.7%
Maintainers (1)
Last synced: 6 months ago

Dependencies

setup.py pypi
  • numpy *
.github/workflows/python-publish.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/tests.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v4 composite