With a few hours of work last weekend, I finished putting together a Jupyter notebook tutorial, started at the Geophysics Python sprint 2018, demonstrating how to:
-
- Use Agile Scientific’s
Welly
to load two wells with several geophysical logs - Use
Pandas
,Welly
, andNumPy
to: remove all logs except for compressional wave velocity (Vp), shear wave velocity (Vs), and density (RHOB); store the wells in individual DataFrames; make the sampling rate common to both wells; check for null values; convert units from imperial to metric; convert slowness to velocity; add a well name column - Split the DataFrame by well using
unique
values in the well name column - For each group/well use Agile Scientific’s
Bruges
‘sBackus
average to upscale all curves individually - Add the upscaled curves back to the DataFrame
- Use Agile Scientific’s
Matt Hall, (organizer), told me during a breakfast chat on the first day of the sprint that this tutorial would be a very good to have since it is one of the most requested examples by neophyte users of the Bruges
library; I was happy to oblige.
The code for the most important bit, the last two items in the above list, is included below:
# Define parameters for the Backus filter lb = 40 # Backus length in meters dz = 1.0 # Log sampling interval in meters # Do the upscaling work wells_bk = pd.DataFrame() grouped = wells['well'].unique() for well in grouped: new_df = pd.DataFrame() Vp = np.array(wells.loc[wells['well'] == well, 'Vp']) Vs = np.array(wells.loc[wells['well'] == well, 'Vs']) rhob = np.array(wells.loc[wells['well'] == well, 'RHOB']) Vp_bks, Vs_bks, rhob_bks = br.rockphysics.backus(Vp, Vs, rhob, lb, dz) new_df['Vp_bk'] = Vp_bks new_df['Vs_bk'] = Vs_bks new_df['rhob_bk'] = rhob_bks wells_bk = pd.concat([wells_bk, new_df]) # Add to the input DataFrame wells_final = (np.concatenate((wells.values, wells_bk.values), axis=1)) cols = list(wells) + list(wells_bk) wells_final_df = pd.DataFrame(wells_final, columns=cols)
And here is a plot comparing the raw and upscaled Vp and Vs logs for one of the wells:
Please check the notebook if you want to try the full example.