pycsamt.interp.lithology#
Lithology — resistivity-to-geology classification for EM methods.
The built-in RockDatabase covers the resistivity ranges
encountered in MT, AMT, CSAMT, and CSEM surveys, drawing on:
Palacky (1988) — resistivity of geological formations
Slichter & Telkes (1942) — electrical properties of minerals
Updated ranges for fracture zones, aquifers, and economic targets
StratigraphicLog packages a per-station depth profile with
lithology assignments and can be exported to CSV, LAS 2.0, or Oasis
Montaj XYZ format via pycsamt.interp.export.
Example
>>> db = RockDatabase.default()
>>> db.classify(250.0)
RockEntry(name='Sandstone', rho_min=50, rho_max=5000, ...)
>>> log = StratigraphicLog.from_column(
... "S17", x=1050.0,
... z_centers=z, rho_log10=col, db=db
... )
Classes
|
One geological unit in a pseudo-stratigraphic log. |
|
Extensible rock physics database for EM resistivity interpretation. |
|
A single entry in the rock physics database. |
|
Per-station pseudo-stratigraphic depth profile. |
- class pycsamt.interp.lithology.RockEntry(name, rho_min, rho_max, color='#AAAAAA', description='', code=0)[source]#
Bases:
objectA single entry in the rock physics database.
- Parameters:
name (str) – Geological unit / lithology name.
rho_min (float) – Resistivity range in Ω·m (linear scale).
rho_max (float) – Resistivity range in Ω·m (linear scale).
color (str) – Hex colour code for plotting (e.g.
'#28B463').description (str) – Optional free-text note.
code (int) – Integer code used in LAS exports.
- class pycsamt.interp.lithology.RockDatabase(entries)[source]#
Bases:
objectExtensible rock physics database for EM resistivity interpretation.
Example
>>> db = RockDatabase.default() >>> db.classify(180.0).name 'Fractured zone'
- classmethod default()[source]#
Return a database pre-loaded with 25 built-in rock entries.
- Return type:
- classmethod from_csv(path)[source]#
Load from a CSV file.
Required columns:
name, rho_min, rho_maxOptional columns:color, description, code- Parameters:
- Return type:
- class pycsamt.interp.lithology.Layer(top, bottom, rho_log10, lithology, color='#AAAAAA', confidence=1.0)[source]#
Bases:
objectOne geological unit in a pseudo-stratigraphic log.
- Parameters:
top (float) – Depth in metres (positive downward).
bottom (float) – Depth in metres (positive downward).
rho_log10 (float) – Representative \(\log_{10}(\rho)\) of the layer.
lithology (str) – Rock name from
RockDatabase.color (str) – Hex colour for plotting.
confidence (float) – Fraction of depth cells whose DB classification matches the reported lithology (0 – 1).
- class pycsamt.interp.lithology.StratigraphicLog(station_name, station_x, z_centers, rho_log10, layers)[source]#
Bases:
objectPer-station pseudo-stratigraphic depth profile.
Constructed from a 1-D log10-rho column and a
RockDatabase, it merges adjacent cells that share the same lithology into discreteLayerobjects.- Parameters:
- classmethod from_column(station_name, x, z_centers, rho_log10, db=None, *, merge_tolerance=0.2)[source]#
Build a log from a 1-D resistivity column.
- Parameters:
station_name (str)
x (float) – Station position, metres.
z_centers (ndarray (n_z,))
rho_log10 (ndarray (n_z,))
db (RockDatabase, optional) – Defaults to
RockDatabase.default().merge_tolerance (float) – Log10-rho difference threshold for merging adjacent cells into one layer (default 0.2 decade).
- Return type:
- to_dataframe()[source]#
Return layers as a
pandas.DataFrame.