Professional Documents
Culture Documents
Logging While Drilling Analysis: PLT Style Use Project, Well
Logging While Drilling Analysis: PLT Style Use Project, Well
Logging While Drilling Analysis: PLT Style Use Project, Well
17 1/2" LWD Section 12 1/4" LWD Section 8 1/2" LWD Section Final Dataframe
In [4]: ls *.LAS
In [122]: f1 = Project.from_las("WL_RAW_BHPR-GR-MECH_MWD_1.LAS")
f2 = Project.from_las("WL_RAW_BHPR-GR-MECH_MWD_2.LAS")
f3 = Project.from_las("WL_RAW_BHPR-GR-MECH_MWD_3.LAS")
17 1/2" Section:
12 1/4" Section:
8 1/2" Section:
In [318]: sec_1.reset_index(inplace=True)
del sec_1["UWI"]
Depths
Initial : 1050.036 [m]
Final: 2281.5803999995414 [m]
In [137]: print("Logs:\n")
sec_1_las = r"WL_RAW_BHPR-GR-MECH_MWD_1.LAS"
sec1_plt = lasio.read(sec_1_las)
fig,axes = plt.subplots(1,len(sec1_plt.keys()), figsize=(20,20))
for i,log in enumerate(sec1_plt.keys()):
axes[i].plot(sec1_plt[log],sec1_plt['DEPT'])
axes[i].invert_yaxis()
axes[i].set_title(log,fontsize=8.5)
Logs:
Missing data:
Out[94]:
Total Percent
Depth 0 0.00
SWOB 0 0.00
TQA 0 0.00
RPM 0 0.00
SPPA 0 0.00
TFLO 0 0.00
ROP5 14 0.17
In [95]: sec_2
Out[95]:
ROP5 ARC_GR_RT SWOB TQA STICK_RT SPPA TRPM_RT TFL
UWI Depth
In [319]: sec_2.reset_index(inplace=True)
del sec_2["UWI"]
Depths
Initial : 2250.0336 [m]
Final: 2787.8531999998 [m]
In [143]: print("Logs:\n")
sec_2_las = r"WL_RAW_BHPR-GR-MECH_MWD_2.LAS"
sec2_plt = lasio.read(sec_2_las)
fig,axes = plt.subplots(1,len(sec2_plt.keys()), figsize=(20,20))
for i,log in enumerate(sec2_plt.keys()):
axes[i].plot(sec2_plt[log],sec2_plt['DEPT'])
axes[i].invert_yaxis()
axes[i].set_title(log,fontsize=8.5)
Logs:
Missing data:
Out[115]:
Total Percent
Depth 0 0.00
SPM1 4 0.11
SPM2 4 0.11
TFLO 4 0.11
SPPA 4 0.11
RPM 4 0.11
TQA 4 0.11
SWOB 4 0.11
SPM3 4 0.11
ROP5 10 0.28
In [320]: sec_3.reset_index(inplace=True)
del sec_3["UWI"]
Depths
Initial : 2778.0996 [m]
Final: 3749.954399999638 [m]
In [144]: print("Logs:\n")
sec_3_las = r"WL_RAW_BHPR-GR-MECH_MWD_3.LAS"
sec3_plt = lasio.read(sec_3_las)
fig,axes = plt.subplots(1,len(sec3_plt.keys()), figsize=(20,20))
for i,log in enumerate(sec3_plt.keys()):
axes[i].plot(sec3_plt[log],sec3_plt['DEPT'])
axes[i].invert_yaxis()
axes[i].set_title(log,fontsize=8.5)
Logs:
Missing data:
Out[146]:
Total Percent
Depth 0 0.00
SPM1 0 0.00
SPPA 0 0.00
TQA 0 0.00
TFLO 0 0.00
SPM2 0 0.00
RPM 0 0.00
SPM3 0 0.00
SWOB 0 0.00
ROP5 4 0.06
DHAT 65 1.02
DHAP 65 1.02
ECD 65 1.02
An stadistical description shall be done to check the possibility of concatenating values of Gamma
Ray,Equivalent Density, Annulus temperature and pressure between the tools
The shock tools also shall be analized for a complete construction of the final dataframe from section 17 1/2" to 8
1/2", while analyzing with boxplots, the outliers wont let analizing possible, so the python builtup description tool
is used
In [237]: print(sec_1["SHK2_RT"].describe())
print(sec_2["SHK2_RT"].describe())
print(sec_3["SHKPK_RT"].describe())
count 3226.000000
mean 0.000310
std 0.017606
min 0.000000
25% 0.000000
50% 0.000000
75% 0.000000
max 1.000000
Name: SHK2_RT, dtype: float64
count 1072.000000
mean 0.067164
std 0.307340
min 0.000000
25% 0.000000
50% 0.000000
75% 0.000000
max 3.000000
Name: SHK2_RT, dtype: float64
count 2379.000000
mean 0.860866
std 13.007292
min 0.000000
25% 0.000000
50% 0.000000
75% 0.000000
max 504.000000
Name: SHKPK_RT, dtype: float64
Depth ROP5 GammaRay SWOB TQA RPM TRPM CRPM Stick SPPA TFLO AnTemp AnPres TransShock
[ True True True True True True True True True True True True
True True True]
[ True True True True True True True True True True True True
True True True]
Pre_1
Depths
Initial : 1050.036 [m]
Final: 2281.5803999995414 [m]
Pre_2
Depths
Initial : 2250.0336 [m]
Final: 2787.8531999998 [m]
Pre_3
Depths
Initial : 2778.0996 [m]
Final: 3749.954399999638 [m]
Final depths:
Pre_1
Depths
Initial : 1050.036 [m]
Final: 2281.5803999995414 [m]
Pre_2
Depths
Initial : 2281.5803999999885 [m]
Final: 2787.8531999998 [m]
Pre_3
Depths
Initial : 2788.0055999999963 [m]
Final: 3749.954399999638 [m]
In [352]: LWD_F14.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 17718 entries, 0 to 17717
Data columns (total 15 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Depth 17718 non-null float64
1 ROP5 17694 non-null float64
2 GammaRay 10886 non-null float64
3 SWOB 17714 non-null float64
4 TQA 17714 non-null float64
5 RPM 17714 non-null float64
6 TRPM_RT 6386 non-null float64
7 CRPM_RT 6390 non-null float64
8 STICK_RT 6404 non-null float64
9 SPPA 17714 non-null float64
10 TFLO 17714 non-null float64
11 AnTemp 17217 non-null float64
12 AnPres 17217 non-null float64
13 SHKRSK_RT 6457 non-null float64
14 ECD 17217 non-null float64
dtypes: float64(15)
memory usage: 2.0 MB
In [261]: t1 = welly.Well.from_las("WL_RAW_BHPR-GR-MECH_TIME_MWD_1.LAS",index="existing"
)
---------------------------------------------------------------------------
UFuncTypeError Traceback (most recent call last)
<ipython-input-261-11b34f59b6e2> in <module>
----> 1 t1 = welly.Well.from_las("WL_RAW_BHPR-GR-MECH_TIME_MWD_1.LAS",index=
"existing")
C:\ProgramData\Anaconda3\lib\site-packages\welly\well.py in from_lasio(cls,
l, remap, funcs, data, req, alias, fname, index)
243 elif data and not req:
244 curves = {c.mnemonic: Curve.from_lasio_curve(c, **curve_p
arams)
--> 245 for c in l.curves
246 if (c.mnemonic[:4] not in depth_curves)}
247 elif (not data) and req:
C:\ProgramData\Anaconda3\lib\site-packages\welly\well.py in <dictcomp>(.0)
244 curves = {c.mnemonic: Curve.from_lasio_curve(c, **curve_p
arams)
245 for c in l.curves
--> 246 if (c.mnemonic[:4] not in depth_curves)}
247 elif (not data) and req:
248 curves = {c.mnemonic: True
C:\ProgramData\Anaconda3\lib\site-packages\welly\curve.py in from_lasio_curve
(cls, curve, depth, basis, start, stop, step, run, null, service_company, dat
e, basis_units)
209 # See if we have uneven sampling.
210 if depth is not None:
--> 211 d = np.diff(depth)
212 if not np.allclose(d - np.mean(d), np.zeros_like(d)):
213 # Sampling is uneven.
C:\ProgramData\Anaconda3\lib\site-packages\numpy\lib\function_base.py in diff
(a, n, axis, prepend, append)
1267 op = not_equal if a.dtype == np.bool_ else subtract
1268 for _ in range(n):
-> 1269 a = op(a[slice1], a[slice2])
1270
1271 return a
UFuncTypeError: ufunc 'subtract' did not contain a loop with signature matchi
ng types (dtype('<U9'), dtype('<U9')) -> dtype('<U9')
---------------------------------------------------------------------------
LASUnknownUnitError Traceback (most recent call last)
<ipython-input-267-5189a1a074e3> in <module>
1 from welly import Well
----> 2 w = Well.from_las('WL_RAW_BHPR-GR-MECH_TIME_MWD_1.LAS')
C:\ProgramData\Anaconda3\lib\site-packages\welly\well.py in from_lasio(cls,
l, remap, funcs, data, req, alias, fname, index)
209
210 # Select the relevant index from the lasio object.
--> 211 l_index = getattr(l, index_attr)
212
213 # Build a dict of curves.
C:\ProgramData\Anaconda3\lib\site-packages\lasio\las.py in depth_m(self)
809 return (self.index / 120) * 0.3048
810 else:
--> 811 raise exceptions.LASUnknownUnitError("Unit of depth index
not known")
812
813 @property