Completed
Pull Request — master (#118)
by Kent
04:21
created

tests.test_null_policy_numeric_None()   B

Complexity

Conditions 6

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 6
dl 0
loc 7
rs 8
1
import os, sys; sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
2
3
import fnmatch
4
5
import numpy as np
6
import pytest
7
8
from lasio import read
9
10
test_dir = os.path.dirname(__file__)
11
12
egfn = lambda fn: os.path.join(os.path.dirname(__file__), "examples", fn)
13
stegfn = lambda vers, fn: os.path.join(
14
    os.path.dirname(__file__), "examples", vers, fn)
15
16
NaN = np.nan
17
18
def test_read_v12_sample():
19
    l = read(stegfn("1.2", "sample.las"))
20
21
22
def test_read_v12_sample_big():
23
    l = read(stegfn("1.2", "sample_big.las"))
24
25
26
def test_read_v12_sample_curve_api():
27
    l = read(stegfn("1.2", "sample_curve_api.las"))
28
29
30
def test_read_v12_sample_minimal():
31
    l = read(stegfn("1.2", "sample_minimal.las"))
32
33
34
def test_read_v12_sample_wrapped():
35
    l = read(stegfn("1.2", "sample_wrapped.las"))
36
37
38
def test_read_v2_sample():
39
    l = read(stegfn("2.0", "sample_2.0.las"))
40
41
42
def test_read_v2_sample_based():
43
    l = read(stegfn("2.0", "sample_2.0_based.las"))
44
45
46
def test_read_v2_sample_minimal():
47
    l = read(stegfn("2.0", "sample_2.0_minimal.las"))
48
49
50
def test_read_v2_sample_wrapped():
51
    l = read(stegfn("2.0", "sample_2.0_wrapped.las"))
52
53
54
def test_dodgy_param_sect():
55
    l = read(egfn("dodgy_param_sect.las"))
56
57
58
def test_mnemonic_good():
59
    l = read(egfn("mnemonic_good.las"))
60
    assert [c.mnemonic for c in l.curves] == [
61
        "DEPT", "DT", "RHOB", "NPHI", "SFLU", "SFLA", "ILM", "ILD"]
62
63
64
def test_mnemonic_duplicate():
65
    l = read(egfn("mnemonic_duplicate.las"))
66
    assert [c.mnemonic for c in l.curves] == [
67
        "DEPT", "DT", "RHOB", "NPHI", "SFLU:1", "SFLU:2", "ILM", "ILD"]
68
69
70
def test_mnemonic_leading_period():
71
    l = read(egfn("mnemonic_leading_period.las"))
72
    assert [c.mnemonic for c in l.curves] == [
73
        "DEPT", "DT", "RHOB", "NPHI", "SFLU", "SFLA", "ILM", "ILD"]
74
75
def test_mnemonic_missing():
76
    l = read(egfn("mnemonic_missing.las"))
77
    assert [c.mnemonic for c in l.curves] == [
78
        "DEPT", "DT", "RHOB", "NPHI", "UNKNOWN", "SFLA", "ILM", "ILD"]
79
80
def test_mnemonic_missing_multiple():
81
    l = read(egfn("mnemonic_missing_multiple.las"))
82
    assert [c.mnemonic for c in l.curves] == [
83
        "DEPT", "DT", "RHOB", "NPHI", "UNKNOWN:1", "UNKNOWN:2", "ILM", "ILD"]
84
85
# ~A DEPTH     DT  RHOB    NPHI     SFLU   SFLA
86
# 1.000   -999.25 -9999    0.450  123.450  1
87
# 2.000   -999.25 -9999    0.460  123.460  2
88
# 3.000   1       -9999    0.47   123.45   3
89
# 4.000   2       3        0.48   123.46   4
90
# 5.000   3       4        231.2  123.45   5
91
# 6.000   4       5        231.2  1        6
92
# 7.000   5       6        231.2  1        7
93
# 8.000   6       7        231.2  1        8
94
# 9.000   6       32767    231.2  -999.25  9
95
96
def test_null_policy_numeric_None():
97
    l = read(egfn("null_policy_numeric.las"), null_policy=None)
98
    assert np.all(l['DT'] == [-999.25, -999.25, 1, 2, 3, 4, 5, 6, 6])
99
    assert np.all(l['RHOB'] == [-9999, -9999, -9999, 3, 4, 5, 6, 7, 32767])
100
    assert np.all(l['NPHI'] == [.45, .46, .47, .48, 231.2, 231.2, 231.2, 231.2, 231.2])
101
    assert np.all(l['SFLU'] == [123.45, 123.46, 123.45, 123.46, 123.45, 1, 1, 1, -999.25])
102
    assert np.all(l['SFLA'] == [1, 2, 3, 4, 5, 6, 7, 8, 9])
103
104
def test_null_policy_numeric_NULL():
105
    l = read(egfn("null_policy_numeric.las"), null_policy='NULL')
106
    assert np.all(np.isnan(l['DT']) == [True, True, False, False, False, False, False, False, False])
107
    assert np.isfinite(l['RHOB']).all()
108
    assert np.isfinite(l['NPHI']).all()
109
    assert np.all(np.isnan(l['SFLU']) == [False, False, False, False, False, False, False, False, True])
110
    assert np.isfinite(l['SFLA']).all()
111
112
def test_null_policy_numeric_common():
113
    l = read(egfn("null_policy_numeric.las"), null_policy='common')
114
    assert np.all(np.isnan(l['DT']) == [True, True, False, False, False, False, False, False, False])
115
    assert np.all(np.isnan(l['RHOB']) == [True, True, True, False, False, False, False, False, True])
116
    assert np.isfinite(l['NPHI']).all()
117
    assert np.all(np.isnan(l['SFLU']) == [False, False, False, False, False, False, False, False, True])
118
    assert np.isfinite(l['SFLA']).all()
119
120
def test_null_policy_numeric_aggressive():
121
    l = read(egfn("null_policy_numeric.las"), null_policy='aggressive')
122
    assert np.all(np.isnan(l['DT']) == [True, True, False, False, False, False, False, True, True])
123
    assert np.all(np.isnan(l['RHOB']) == [True, True, True, False, False, False, False, False, True])
124
    assert np.all(np.isnan(l['NPHI']) == [False, False, False, False, True, True, True, True, True])
125
    assert np.all(np.isnan(l['SFLU']) == [False, False, False, False, False, True, True, True, True])
126
    assert np.isfinite(l['SFLA']).all()
127
128
def test_multi_curve_mnemonics():
129
    l = read(egfn('sample_issue105_a.las'))
130
    assert l.keys() == [c.mnemonic for c in l.curves] == ['DEPT', 'RHO:1', 'RHO:2', 'RHO:3', 'PHI']
131
132
133
def test_multi_missing_curve_mnemonics():
134
    l = read(egfn('sample_issue105_b.las'))
135
    assert l.keys() == [c.mnemonic for c in l.curves] == ['DEPT', 'UNKNOWN:1', 'UNKNOWN:2', 'UNKNOWN:3', 'PHI']
136
137
138
def test_multi_curve_mnemonics_gr():
139
    l = read(egfn('sample_issue105_c.las'))
140
    assert l.keys() == [c.mnemonic for c in l.curves] == ['DEPT', 'GR:1', 'GR:2', 'GR[0]', 'GR[1]', 'GR[2]', 'GR[3]', 'GR[4]', 'GR[5]']
141
142
#  DEPT.M                      :  1  DEPTH
143
# GR.gAPI: mean gamma ray value
144
# GR.gAPI: corrected gamma ray value
145
# GR[0].gAPI: gamma ray image at angle 0 dega
146
# GR[1].gAPI: gamma ray image at angle 60 dega
147
# GR[2].gAPI: gamma ray image at angle 120 dega
148
# GR[3].gAPI: gamma ray image at angle 180 dega
149
# GR[4].gAPI: gamma ray image at angle 240 dega
150
# GR[5].gAPI: gamma ray image at angle 300 dega