las
Python reader for Canadian Well Logging Society LAS (Log ASCII Standard) files.
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
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
- Repositories: 22
- Profile: https://github.com/WarrenWeckesser
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
Top Committers
| Name | 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.
- Homepage: https://github.com/WarrenWeckesser/las
- Documentation: https://las.readthedocs.io/
- License: BSD
-
Latest release: 0.0.5
published over 1 year ago
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