import numpy as np
from libpyhat.IO.cube_to_df import df_parameter_to_2d
from libpyhat.derived.utils import reflectance, continuum_reflectance
[docs]
def warn_m3(param_name):
    print(
        "Parameters involving some of the visible wavelengths ( < 600 nm) "
        "are not recommended for use. "
        "Parameters modeled after Clementine data are also not recommended. "
        "Original parameter estimates"
        " for OH and H2O should NOT be included."
    )
    print(
        "This parameter (" + str(param_name) + ") has been disabled. "
        "If you must use it, "
        "you will need to edit the "
        "PyHAT code."
    )
    return 
[docs]
def warn_m3_noisy(param_name):
    print("Warning: This parameter (" + str(param_name) + ") may be noisy!")
    return 
[docs]
def warn_m3_slow(param_name):
    print(
        "Warning: This parameter ("
        + str(param_name)
        + ") is not well optimized and may take a long time to "
        "run!"
    )
    return 
# Generic Function for all BDXXX formulas
[docs]
def bd_func(data, wvls):
    r_low = reflectance(data, wvls[0], kernel=1)
    r_mid = reflectance(data, wvls[1], kernel=1)
    r_high = reflectance(data, wvls[2], kernel=1)
    denominator = ((r_high - r_low) / (wvls[2] - wvls[0])) * (wvls[1] - wvls[0]) + r_low
    return 1 - r_mid / denominator 
[docs]
def oneum_continuum(data, x):  # Gets the 1 um continuum reflectance value (rc) at
    # a specified wvl (x)
    rc = continuum_reflectance(data, x, 699, 1579)
    return rc 
[docs]
def twoum_continuum(data, x):  # Gets the 2 um continuum reflectance value (rc) at
    # a specified wvl (x)
    rc = continuum_reflectance(data, x, 1578, 2538)
    return rc 
[docs]
def mustard(data):
    from libpyhat.derived.m3.m3_algs import bdi1000, bdi2000, r2780
    """
    Name: Visualization from Mustard et al. 2011
    Parameter:1.58um reflectance, 1um integrated band depth, 2um integrated band depth
    Formulation: Red: 1um band depth, Blue: 2um Band Depth, Green: 1.58um reflectance
    Rationale:
    Bands:
    From: JGR Mustard et al. 2011
    Why: Visualization of surface compositional units.
    Parameters
    ----------
    data : PyHAT SpectralData object
    Returns
    -------
     : ndarray
       the processed ndarray
    """
    data = bdi1000(data)
    data = bdi2000(data)
    data = r2780(data)
    r = df_parameter_to_2d(data, "BDI1000")
    g = df_parameter_to_2d(data, "BDI2000")
    b = df_parameter_to_2d(data, "R2780")
    out = np.empty((r.shape[0], r.shape[1], 3))
    out[:, :, 0] = r
    out[:, :, 1] = g
    out[:, :, 2] = b
    return out