Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Python library for reading and writing well data using Log ASCII Standard (LAS) files

License

NotificationsYou must be signed in to change notification settings

kinverarity1/lasio

Repository files navigation

Documentation (stable)Documentation (main branch)

Run testsPyPI versionCode StyleLicense

Read and write Log ASCII Standard files with Python.

This is a Python 3.7+ package to read and write Log ASCII Standard(LAS) files, used for borehole data such as geophysical, geological, orpetrophysical logs. It's compatible with versions 1.2 and 2.0 of the LAS filespecification, published by theCanadian Well LoggingSociety. Support for LAS 3 isbeing worked on.

lasio is primarily for reading and writing data and metadata to and fromLAS files. It is designed to read as many LAS files as possible, includingthose containing common errors and non-compliant formatting. It can be useddirectly, but you may want to consider using some other packages, dependingon your priorities:

  • welly is a Python package thatuses lasio for I/O but provides alot more functionality aimed at workingwith curves, wells, and projects. I would recommend starting there in mostcases, to avoid re-inventing the wheel!
  • lascheck is focused onchecking whether your LAS file meets the specifications.
  • lasr is an R package whichis designed to read large amounts of data quickly from LAS files; this isa great thing to check out if speed is a priority for you, as lasio is notparticularly fast.
  • LiDAR surveys are also called "LAS files", but they are quite different andlasio will not help you -- check outlaspyinstead.

lasiostoppedsupporting Python 2.7 in August 2020. The final version of lasio with Python 2.7 supportis version 0.26.

Code of conduct

See ourcode of conduct.

Quick start

For the minimum working requirements, you'll need numpy installed. Installlasio with:

$ pip install lasio

To make sure you have everything, use this to ensure pandas, chardet, andopenpyxl are also installed:

$ pip install lasio[all]

Example session:

>>>importlasio

You can read the file using a filename, file-like object, or URL:

>>>las=lasio.read("sample_rev.las")

Data is accessible both directly as numpy arrays

>>>las.keys()['DEPT','DT','RHOB','NPHI','SFLU','SFLA','ILM','ILD']>>>las['SFLU']array([123.45,123.45,123.45, ...,123.45,123.45,123.45])>>>las['DEPT']array([1670.   ,1669.875,1669.75 , ...,1669.75 ,1670.   ,1669.875])

and asCurveItem objects with associated metadata:

>>>las.curves[CurveItem(mnemonic=DEPT,unit=M,value=,descr=1DEPTH,original_mnemonic=DEPT,data.shape=(29897,)),CurveItem(mnemonic=DT,unit=US/M,value=,descr=2SONICTRANSITTIME,original_mnemonic=DT,data.shape=(29897,)),CurveItem(mnemonic=RHOB,unit=K/M3,value=,descr=3BULKDENSITY,original_mnemonic=RHOB,data.shape=(29897,)),CurveItem(mnemonic=NPHI,unit=V/V,value=,descr=4NEUTRONPOROSITY,original_mnemonic=NPHI,data.shape=(29897,)),CurveItem(mnemonic=SFLU,unit=OHMM,value=,descr=5RXORESISTIVITY,original_mnemonic=SFLU,data.shape=(29897,)),CurveItem(mnemonic=SFLA,unit=OHMM,value=,descr=6SHALLOWRESISTIVITY,original_mnemonic=SFLA,data.shape=(29897,)),CurveItem(mnemonic=ILM,unit=OHMM,value=,descr=7MEDIUMRESISTIVITY,original_mnemonic=ILM,data.shape=(29897,)),CurveItem(mnemonic=ILD,unit=OHMM,value=,descr=8DEEPRESISTIVITY,original_mnemonic=ILD,data.shape=(29897,))]

Header information is parsed into simple HeaderItem objects, and stored in adictionary for each section of the header:

>>>las.version[HeaderItem(mnemonic=VERS,unit=,value=1.2,descr=CWLSLOGASCIISTANDARD-VERSION1.2,original_mnemonic=VERS),HeaderItem(mnemonic=WRAP,unit=,value=NO,descr=ONELINEPERDEPTHSTEP,original_mnemonic=WRAP)]>>>las.well[HeaderItem(mnemonic=STRT,unit=M,value=1670.0,descr=,original_mnemonic=STRT),HeaderItem(mnemonic=STOP,unit=M,value=1660.0,descr=,original_mnemonic=STOP),HeaderItem(mnemonic=STEP,unit=M,value=-0.125,descr=,original_mnemonic=STEP),HeaderItem(mnemonic=NULL,unit=,value=-999.25,descr=,original_mnemonic=NULL),HeaderItem(mnemonic=COMP,unit=,value=ANYOILCOMPANYLTD.,descr=COMPANY,original_mnemonic=COMP),HeaderItem(mnemonic=WELL,unit=,value=ANYETALOILWELL#12, descr=WELL, original_mnemonic=WELL),HeaderItem(mnemonic=FLD,unit=,value=EDAM,descr=FIELD,original_mnemonic=FLD),HeaderItem(mnemonic=LOC,unit=,value=A9-16-49,descr=LOCATION,original_mnemonic=LOC),HeaderItem(mnemonic=PROV,unit=,value=SASKATCHEWAN,descr=PROVINCE,original_mnemonic=PROV),HeaderItem(mnemonic=SRVC,unit=,value=ANYLOGGINGCOMPANYLTD.,descr=SERVICECOMPANY,original_mnemonic=SRVC),HeaderItem(mnemonic=DATE,unit=,value=25-DEC-1988,descr=LOGDATE,original_mnemonic=DATE),HeaderItem(mnemonic=UWI,unit=,value=100091604920,descr=UNIQUEWELLID,original_mnemonic=UWI)]>>>las.params[HeaderItem(mnemonic=BHT,unit=DEGC,value=35.5,descr=BOTTOMHOLETEMPERATURE,original_mnemonic=BHT),HeaderItem(mnemonic=BS,unit=MM,value=200.0,descr=BITSIZE,original_mnemonic=BS),HeaderItem(mnemonic=FD,unit=K/M3,value=1000.0,descr=FLUIDDENSITY,original_mnemonic=FD),HeaderItem(mnemonic=MATR,unit=,value=0.0,descr=NEUTRONMATRIX(0=LIME,1=SAND,2=DOLO),original_mnemonic=MATR),HeaderItem(mnemonic=MDEN,unit=,value=2710.0,descr=LOGGINGMATRIXDENSITY,original_mnemonic=MDEN),HeaderItem(mnemonic=RMF,unit=OHMM,value=0.216,descr=MUDFILTRATERESISTIVITY,original_mnemonic=RMF),HeaderItem(mnemonic=DFD,unit=K/M3,value=1525.0,descr=DRILLFLUIDDENSITY,original_mnemonic=DFD)]

The data is stored as a 2D numpy array:

>>>las.dataarray([[1670.   ,123.45 ,2550.   , ...,123.45 ,110.2  ,105.6  ],       [1669.875,123.45 ,2550.   , ...,123.45 ,110.2  ,105.6  ],       [1669.75 ,123.45 ,2550.   , ...,123.45 ,110.2  ,105.6  ],       ...,       [1669.75 ,123.45 ,2550.   , ...,123.45 ,110.2  ,105.6  ],       [1670.   ,123.45 ,2550.   , ...,123.45 ,110.2  ,105.6  ],       [1669.875,123.45 ,2550.   , ...,123.45 ,110.2  ,105.6  ]])

You can also retrieve and load data as apandas DataFrame, build LAS filesfrom scratch, write them back to disc, and export to Excel, amongst otherthings.

See thepackage documentation formore details.

Contributing

Contributions are invited and welcome.

SeeContributing for how to get started.

License

MIT


[8]ページ先頭

©2009-2025 Movatter.jp