Skip to content

Commit

Permalink
Merge pull request kinverarity1#292 from kinverarity1/data-not-2d
Browse files Browse the repository at this point in the history
Improve error message and test for when ~A array is not 2D
  • Loading branch information
kinverarity1 authored Oct 20, 2019
2 parents a2120bd + 1c38c25 commit c0abaff
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 4 deletions.
22 changes: 18 additions & 4 deletions lasio/las.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import logging
import os
import re
import sys
import textwrap
import traceback

Expand Down Expand Up @@ -263,8 +264,21 @@ def add_section(pattern, name, **sect_kws):
if wrap == "NO":
if s["ncols"] > n_curves:
n_arr_cols = s["ncols"]
data = np.reshape(arr, (-1, n_arr_cols))

try:
data = np.reshape(arr, (-1, n_arr_cols))
except ValueError as e:
err_msg = (
"cannot reshape ~A array of "
"size {arr_shape} into "
"{n_arr_cols} columns".format(
arr_shape=arr.shape, n_arr_cols=n_arr_cols
)
)
if sys.version_info.major < 3:
e.message = err_msg
raise e
else:
raise ValueError(err_msg).with_traceback(e.__traceback__)
self.set_data(data, truncate=False)
drop.append(s["title"])
for key in drop:
Expand Down Expand Up @@ -597,12 +611,12 @@ def header(self):
return self.sections

def df(self):
'''Return data as a :class:`pandas.DataFrame` structure.
"""Return data as a :class:`pandas.DataFrame` structure.
The first Curve of the LASFile object is used as the pandas
DataFrame's index.
'''
"""
import pandas as pd
from pandas.api.types import is_object_dtype

Expand Down
46 changes: 46 additions & 0 deletions tests/examples/sample_lastcolblanked.las
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
~VERSION INFORMATION
VERS. 1.2: CWLS LOG ASCII STANDARD -VERSION 1.2
WRAP. NO: ONE LINE PER DEPTH STEP
~WELL INFORMATION BLOCK
#MNEM.UNIT DATA TYPE INFORMATION
#--------- ------------- ------------------------------
STRT.M 1670.000000:
STOP.M 1660.000000:
STEP.M -0.1250:
NULL. -999.2500:
COMP. COMPANY: # ANY OIL COMPANY LTD.
WELL. WELL: ANY ET AL OIL WELL #12
FLD . FIELD: EDAM
LOC . LOCATION: A9-16-49-20W3M
PROV. PROVINCE: SASKATCHEWAN
SRVC. SERVICE COMPANY: ANY LOGGING COMPANY LTD.
DATE. LOG DATE: 25-DEC-1988
UWI . UNIQUE WELL ID: 100091604920W300
~CURVE INFORMATION
#MNEM.UNIT API CODE CURVE DESCRIPTION
#--------- ------------- ------------------------------
DEPT.M : 1 DEPTH
DT .US/M : 2 SONIC TRANSIT TIME
RHOB.K/M3 : 3 BULK DENSITY
NPHI.V/V : 4 NEUTRON POROSITY
SFLU.OHMM : 5 RXO RESISTIVITY
SFLA.OHMM : 6 SHALLOW RESISTIVITY
ILM .OHMM : 7 MEDIUM RESISTIVITY
ILD .OHMM : 8 DEEP RESISTIVITY
~PARAMETER INFORMATION
#MNEM.UNIT VALUE DESCRIPTION
#--------- ------------- ------------------------------
BHT .DEGC 35.5000: BOTTOM HOLE TEMPERATURE
BS .MM 200.0000: BIT SIZE
FD .K/M3 1000.0000: FLUID DENSITY
MATR. 0.0000: NEUTRON MATRIX(0=LIME,1=SAND,2=DOLO)
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 meters causing the data
between 625 meters and 615 meters 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 ****************
1669.750 123.450 2550.000 0.450 123.450 123.450 110.200 105.600
5 changes: 5 additions & 0 deletions tests/test_read.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,3 +372,8 @@ def test_index_unit_equals_f():
def test_index_unit_equals_m():
las = lasio.read(egfn("autodepthindex_M.las"), index_unit="m")
assert (las.depth_ft[1:] != las.index[1:]).all()


def test_read_incorrect_shape():
with pytest.raises(ValueError):
lasio.read(egfn("sample_lastcolblanked.las"))

0 comments on commit c0abaff

Please sign in to comment.