Data Types

Three basic Data types in pyGeoPressure are Well for well, Log for well log and SeiSEGY for seismic data.

Well

class pygeopressure.basic.well.Well(json_file, hdf_path=None)[source]

A class representing a well with information and log curve data.

Initializer:

Well.__init__(json_file, hdf_path=None)[source]
Parameters
  • json_file (str) – path to parameter file

  • hdf_path (str, optional) – path to hdf5 file used to override the one written in json_file

Properties

Well.depth()

depth values of the well

Returns

Return type

numpy.ndarray

Well.logs()

logs stored in this well

Returns

Return type

list

Well.unit_dict()

properties and their units

Well.hydrostatic()

Hydrostatic Pressure

Returns

Return type

numpy.ndarray

Well.lithostatic()

Overburden Pressure (Lithostatic)

Returns

Return type

numpy.ndarray

Well.hydro_log()[source]
Returns

Hydrostatic Pressure

Return type

Log

Well.normal_velocity()

Normal Velocity calculated using NCT stored in well

Returns

Return type

numpy.ndarray

log curve data manipulation

Well.get_log(logs, ref=None)[source]

Retreive one or several logs in well

Parameters
  • logs (str or list str) – names of logs to be retrieved

  • ref ({‘sea’, ‘kb’}) – depth reference, ‘sea’ references to sea level, ‘kb’ references to Kelly Bushing

Returns

one or a list of Log objects

Return type

Log

Well.add_log(log, name=None, unit=None)[source]

Add new Log to current well

Parameters
  • log (Log) – log to be added

  • name (str, optional) – name for the newly added log, None, use log.name

  • unit (str, optional) – unit for the newly added log, None, use log.unit

Well.drop_log(log_name)[source]

delete a Log in current Well

Parameters

log_name (str) – name of the log to be deleted

Well.rename_log(log_name, new_log_name)[source]
Parameters
  • log_name (str) – log name to be replaced

  • new_log_name (str)

Well.update_log(log_name, log)[source]

Update well log already in current well with a new Log

Parameters
  • log_name (str) – name of the log to be replaced in current well

  • log (Log) – Log to replace

Well.to_las(file_path, logs_to_export=None, full_las=False, null_value=1e+30)[source]

Export logs to LAS or pseudo-LAS file

Parameters
  • file_path (str) – output file path

  • logs_to_export (list of str) – Log names to be exported, None export all logs

  • full_las (bool) – True, export LAS header; False export only data hence psuedo-LAS

  • null_value (scalar) – Null Value representation in output file.

Well.save_well_logs()[source]

Save current well logs to file

Get Meassured pyGeoPressure

Well.get_pressure(pres_key, ref=None, hydrodynamic=0, coef=False)[source]

Get Pressure Values or Pressure Coefficients

Parameters
  • pres_key (str) – Pressure data name

  • ref ({‘sea’, ‘kb’}) – depth reference, ‘sea’ references to sea level, ‘kb’ references to Kelly Bushing

  • hydrodynamic (float) – return Pressure at depth deeper than this value

  • coef (bool) – True - get pressure coefficient else get pressure value

Returns

Log object containing Pressure or Pressure coefficients

Return type

Log

Well.get_pressure_normal()[source]

return pressure points within normally pressured zone.

Returns

Log object containing normally pressured measurements

Return type

Log

Pressure Prediction

Well.eaton(vel_log, obp_log=None, n=None, a=None, b=None)[source]

Predict pore pressure using Eaton method

Parameters
  • vel_log (Log) – velocity log

  • obp_log (Log) – overburden pressure log

  • n (scalar) – Eaton exponent

Returns

a Log object containing calculated pressure.

Return type

Log

Well.bowers(vel_log, obp_log=None, a=None, b=None, u=1, vmax=4600, start_depth=None, buf=20, end_depth=None, end_buffer=10)[source]

Predict pore pressure using Eaton method

Parameters
  • vel_log (Log) – velocity log

  • obp_log (Log) – overburden pressure log

  • a, b, u (float) – bowers model coefficients

Returns

a Log object containing calculated pressure.

Return type

Log

Well.multivariate(vel_log, por_log, vsh_log, obp_log=None, a0=None, a1=None, a2=None, a3=None, b=None)[source]

Other

Well.plot_horizons(ax, color_dict=None)[source]

Plot horizons stored in well

Well.save_params()[source]

Save edited parameters to well information file


Log

class pygeopressure.basic.well_log.Log(file_name=None, log_name='unk')[source]

class for well log data

Initializer:

Log.__init__(file_name=None, log_name='unk')[source]
Parameters
  • file_name (str) – pseudo las file path

  • log_name (str) – log name to create

Alternative initializer:

classmethod Log.from_scratch(depth, data, name=None, units=None, descr=None, prop_type=None)[source]

Data interfaces:

Log.depth()

depth data of the log

Log.data()

property data of the log

Log.start()

start depth of available property data

Log.stop()

end depth of available property data

Log.start_idx()

start index of available property data

Log.stop_idx()

end index of available property data

Log.top()

top depth of this log

Log.bottom()

bottom depth of this log

Plot:

Log.plot(ax=None, color='gray', linewidth=0.5, linestyle='-', label=None, zorder=1)[source]

Plot log curve

Parameters

ax (matplotlib.axes._subplots.AxesSubplot) – axis object to plot on, a new axis will be created if not provided

Returns

Return type

matplotlib.axes._subplots.AxesSubplot

Others:

Log.to_las(file_name)[source]

Save as pseudo-las file

Log.get_data(depth)[source]

get data at certain depth

Log.get_depth_idx(d)[source]

return index of depth

Log.get_resampled(rate)[source]

return resampled log


SeiSEGY

class pygeopressure.basic.seisegy.SeiSEGY(segy_file, like=None)[source]

Initializers:

The default initializer takes a segy file path:

SeiSEGY.__init__(segy_file, like=None)[source]
Parameters
  • segy_file (str) – segy file path

  • like (str, optional) – created segy file has the same dimesions as like.

The alternative initilizer from_json takes a info file in json.

classmethod SeiSEGY.from_json(json_file, segy_file=None)[source]

Initialize SeiSEGY from an json file containing information

Parameters
  • json_file (str) – json file path

  • segy_file (str) – segy file path for overriding information in json file.

Iterators:

SeiSEGY.inlines()[source]

Iterator for inline numbers

Yields

int – inline number

SeiSEGY.crlines()[source]

Iterator for crline numbers

Yields

int – cross-line number

SeiSEGY.inline_crlines()[source]

Iterator for both inline and crline numbers

Yields

tuple of int – (inline number, crossline number)

SeiSEGY.depths()[source]

Iterator for z coordinate

Yields

float – depth value

Data interface:

SeiSEGY.data(indexes)[source]

Retrieve Data according to the index provided.

Parameters

indexes ({InlineIndex, CrlineIndex, DepthIndex, CdpIndex}) – index of data to retrieve

Returns

Return type

numpy.ndarray

Plots Data Sections:

SeiSEGY.plot(index, ax, kind='vawt', cm='seismic', ptype='seis')[source]

Plot seismic section according to index provided.

Parameters
  • index ({InlineIndex, CrlineIndex, DepthIndex, CdpIndex}) – index of data to plot

  • ax (matplotlib.axes._subplots.AxesSubplot) – axis to plot on

  • kind ({‘vawt’, ‘img’}) – ‘vawt’ for variable area wiggle trace plot ‘img’ for variable density plot

  • cm (str) – colormap for plotting

  • ptype (str, optional) – property type

Returns

Return type

matplotlib.image.AxesImage

Others:

SeiSEGY.valid_cdp(cdp_num)[source]

Return valid CDP numbers nearest to cdp_num

Note

Internally, pyGeoPressrue interacts with SEGY file utlizing segyio.