import os
import numpy as np
import pytest
import las_rs
test_dir = os.path.dirname(__file__)
def fixture(*parts):
return os.path.join(test_dir, "fixtures", *parts)
def _make_las(strt_unit, curve_unit, strt_val=200.0, stop_val=202.0, step_val=1.0):
return """\
~VERSION INFORMATION
VERS. 2.0 : LAS VERSION 2.0
WRAP. NO : ONE LINE PER DEPTH STEP
~WELL INFORMATION
STRT.{su} {strt} : START DEPTH
STOP.{su} {stop} : STOP DEPTH
STEP.{su} {step} : STEP VALUE
NULL. -999.25 : NULL VALUE
COMP. DEEPROCK PETROLEUM : COMPANY
WELL. TUNGSTEN-6 #3 : WELL NAME
~CURVE INFORMATION
DEPT.{cu} : MEASURED DEPTH
RES .OHM : RESISTIVITY
~ASCII LOG DATA
{strt} 12.50
{mid} 14.30
{stop} 11.80
""".format(
su=strt_unit,
cu=curve_unit,
strt=strt_val,
mid=strt_val + step_val,
stop=stop_val,
step=step_val,
)
_LAS_POINT_ONE_INCH = """\
~VERSION INFORMATION
VERS. 2.0 : LAS VERSION 2.0
WRAP. NO : ONE LINE PER DEPTH STEP
~WELL INFORMATION
STRT..1IN 1200 : START DEPTH
STOP..1IN 1202 : STOP DEPTH
STEP..1IN 1 : STEP VALUE
NULL. -999.25 : NULL VALUE
COMP. CORETEK SURVEYS INC : COMPANY
WELL. PINPOINT-2 #1 : WELL NAME
~CURVE INFORMATION
DEPT..1IN : MEASURED DEPTH
PORO.V/V : POROSITY
~ASCII LOG DATA
1200 0.321
1201 0.305
1202 0.287
"""
_M_PER_FT = 0.3048
@pytest.mark.xfail(reason="not yet implemented")
def test_depth_unit_feet_spelled_out():
las = las_rs.read(_make_las("FEET", "FEET", strt_val=1000.0, stop_val=1002.0))
assert las.index_unit == "FT"
@pytest.mark.xfail(reason="not yet implemented")
def test_depth_unit_f():
las = las_rs.read(_make_las("F", "F", strt_val=500.0, stop_val=502.0))
assert las.index_unit == "FT"
@pytest.mark.xfail(reason="not yet implemented")
def test_depth_unit_lowercase_m():
las = las_rs.read(_make_las("m", "m", strt_val=300.0, stop_val=302.0))
assert las.index_unit == "M"
@pytest.mark.xfail(reason="not yet implemented")
def test_depth_unit_point_one_inch():
las = las_rs.read(_LAS_POINT_ONE_INCH)
assert las.index_unit is not None
index_values = las.curves["DEPT"].data expected_ft = index_values / 120.0
np.testing.assert_array_almost_equal(las.depth_ft, expected_ft, decimal=5)
@pytest.mark.xfail(reason="not yet implemented")
def test_depth_unit_inconsistent_none():
las = las_rs.read(_make_las("M", "FT", strt_val=400.0, stop_val=402.0))
assert las.index_unit is None
@pytest.mark.xfail(reason="not yet implemented")
def test_depth_m_from_point_one_inch():
las = las_rs.read(_LAS_POINT_ONE_INCH)
index_values = las.curves["DEPT"].data expected_m = (index_values / 120.0) * _M_PER_FT
np.testing.assert_array_almost_equal(las.depth_m, expected_m, decimal=5)