Source code for quick_pp.lithology

import statistics

import numpy as np
from scipy.signal import detrend

from quick_pp import logger
from quick_pp.utils import minmax_scale


[docs] def shale_volume_larinov_tertiary(igr): """ Computes shale volume from gamma ray using Larinov's method for tertiary rocks. Parameters ---------- igr : float Interval gamma ray [API]. Returns ------- vshale : float Shale volume [fraction]. """ logger.debug("Calculating shale volume using Larinov's method for tertiary rocks") vshale = 0.083 * (2 ** (3.7 * igr) - 1) logger.debug( f"Tertiary shale volume range: {vshale.min():.3f} - {vshale.max():.3f}" ) return vshale
[docs] def shale_volume_larinov_older(igr): """ Computes shale volume from gamma ray using Larinov's method for older rocks. Parameters ---------- igr : float Interval gamma ray [API]. Returns ------- vshale : float Shale volume [fraction]. """ logger.debug("Calculating shale volume using Larinov's method for older rocks") vshale = 0.33 * (2 ** (2 * igr) - 1) logger.debug( f"Older rocks shale volume range: {vshale.min():.3f} - {vshale.max():.3f}" ) return vshale
[docs] def shale_volume_steiber(igr): """ Computes shale volume from gamma ray using Steiber's method. Parameters ---------- igr : float Interval gamma ray [API]. Returns ------- vshale : float Shale volume [fraction]. """ logger.debug("Calculating shale volume using Steiber's method") vshale = igr / (3 - 2 * igr) logger.debug(f"Steiber shale volume range: {vshale.min():.3f} - {vshale.max():.3f}") return vshale
[docs] def gr_index(gr): """ Computes gamma ray index from gamma ray. Parameters ---------- gr : float Gamma ray [API]. Returns ------- gr_index : float Gamma ray index [API]. """ logger.debug("Computing gamma ray index with detrending and normalization") gr = np.where(np.isnan(gr), np.min(gr), gr) dtr_gr = detrend(gr, axis=0) + statistics.mean(gr) igr = minmax_scale(dtr_gr.reshape(-1, 1)) logger.debug(f"Gamma ray index range: {igr.min():.3f} - {igr.max():.3f}") return igr