TNO Intern

Commit 689b7ab2 authored by Hen Brett's avatar Hen Brett 🐔
Browse files

removing redundant transmissivity generation

parent b17f96ca
Loading
Loading
Loading
Loading
+1 −39
Original line number Diff line number Diff line
@@ -2,44 +2,6 @@ import numpy as np
from scipy import stats
import xarray as xr

def generate_thickness_permeability_transmissivity_for_pvalue(thickness_mean: float, thickness_sd: float, ln_permeability_mean: float, ln_permeability_sd: float, p_values: float, nSamples: int = 10000) -> float:
    """
    Given thickness provided as a normal distribution and ln(permeability) provided as a normal distribution, and a specific p-value, then generate the values for that p-value of the
    -thickness
    -permeability
    -transmissivity

    Note: Transmissivity is a function of ln(permeability) * thickness, and so no analytical solution exists to combine these two probability distributions and so the transmissivity distribution has to be sampled.

    :param thickness_mean:
    :param thickness_sd:
    :param ln_permeability_mean:
    :param ln_permeability_sd:
    :param Pvalue:
    :param nSamples:
    :return:
    thickness, permeability, transmissivity
    """
    if np.isnan(thickness_mean) | np.isnan(thickness_sd) | np.isnan(ln_permeability_mean) | np.isnan(ln_permeability_sd):
        return np.nan, np.nan, np.nan

    p_value_fractions = p_values / 100

    thickness_dist = stats.norm(loc=thickness_mean, scale=thickness_sd)
    thickness_pvalues = thickness_dist.ppf(1 - p_value_fractions)

    ln_permeability_dist = stats.norm(loc=ln_permeability_mean, scale=ln_permeability_sd)
    permeability_pvalues = np.exp(ln_permeability_dist.ppf(1 - p_value_fractions))

    # Sampling method for transmissivity
    thickness_samples = thickness_dist.rvs(nSamples)
    thickness_samples = np.clip(thickness_samples, a_min=0.01, a_max=None)

    transmissivity_samples = np.sort(np.exp(ln_permeability_dist.rvs(nSamples) + np.log(thickness_samples)))
    transmissivity_pvalues_sampled = transmissivity_samples[int((1 - p_value_fractions) * nSamples)]

    return thickness_pvalues, permeability_pvalues, transmissivity_pvalues_sampled

def generate_thickness_permeability_transmissivity_for_pvalues(thickness_mean: float, thickness_sd: float, ln_permeability_mean: float, ln_permeability_sd: float, p_values: xr.DataArray, nSamples: int = 10000) -> float:
    """
    Given thickness provided as a normal distribution and ln(permeability) provided as a normal distribution, and a specific p-value, then generate the values for that p-value of the
@@ -74,7 +36,7 @@ def generate_thickness_permeability_transmissivity_for_pvalues(thickness_mean: f
    thickness_samples = np.clip(thickness_samples, a_min=0.01, a_max=None)
    transmissivity_samples = np.sort(np.exp(ln_permeability_dist.rvs(nSamples) + np.log(thickness_samples)))

    sample_indexes = p_value_fractions * nSamples
    sample_indexes = np.array(p_value_fractions * nSamples)
    transmissivity_pvalues_sampled = transmissivity_samples[sample_indexes.astype(int)]

    return thickness_pvalues, permeability_pvalues, transmissivity_pvalues_sampled
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ import numpy as np
import xarray as xr
from jpype.types import *

from pythermogis.statistics.calculate_thick_perm_trans import generate_thickness_permeability_transmissivity_for_pvalue
from pythermogis.statistics.calculate_thick_perm_trans import generate_thickness_permeability_transmissivity_for_pvalues
from pythermogis.thermogis_classes.jvm_start import start_jvm


@@ -41,7 +41,7 @@ class PyThermoGIS(TestCase):
            ))

        # Calculate Thickness, Permeability and Transmissivity for each P-value using the Python implementation
        thickness, permeability, transmissivity = xr.apply_ufunc(generate_thickness_permeability_transmissivity_for_pvalue,
        thickness, permeability, transmissivity = xr.apply_ufunc(generate_thickness_permeability_transmissivity_for_pvalues,
                                                                 thickness_mean,
                                                                 thickness_sd,
                                                                 ln_perm_mean,