Source code for pygypsy.site_index

"""Functions for calculating site indices

"""
from pygypsy.asaCompileAgeGivenSpSiHt import (
    ComputeGypsySiteIndex,
)


[docs]def get_site_indices_from_dominant_species(dominant_species=None, dominant_species_site_index=None): """Calculate site indices for non-dominant species Keyword Arguments: dominant_species -- (default None) dominant_species_site_index -- (default None) """ functs = { 'aw': _get_all_site_indices_from_dominant_aw, 'sw': _get_all_site_indices_from_dominant_sw, 'fb': _get_all_site_indices_from_dominant_fb, 'fd': _get_all_site_indices_from_dominant_fd, 'pl': _get_all_site_indices_from_dominant_pl, 'pb': _get_all_site_indices_from_dominant_pb, } dominant_species = dominant_species.lower() try: all_site_indices = functs[dominant_species](dominant_species_site_index) except KeyError: raise ValueError('No function is available to calculate site index from ' 'species %s' %dominant_species) species_subset = ('Aw', 'Pl', 'Sw', 'Sb') site_indices_subset = { species: all_site_indices[species.lower()] for species in species_subset } return site_indices_subset
def _get_all_site_indices_from_dominant_aw(site_index_aw): """Keyword Arguments: site_index_aw -- site index for aw Returns: dict: species as keys and site indices as corresponding values """ site_index_pl = 0.85 * site_index_aw + 3.4 site_index_sw = 1.31 * site_index_aw - 2.64 site_index_fb = 0.92 * site_index_sw + 1.68 site_index_fd = 0.94 * site_index_pl + 0.71 site_index_sb = 0.64 * site_index_pl + 2.76 site_index_pb = site_index_aw site_indices_dict = {'aw': site_index_aw, 'pl': site_index_pl, 'sw': site_index_sw, 'fb': site_index_fb, 'fd': site_index_fd, 'sb': site_index_sb, 'pb': site_index_pb} return site_indices_dict def _get_all_site_indices_from_dominant_sw(site_index_sw): """Keyword Arguments: site_index_sw -- site index for sw Returns: dict: species as keys and site indices as corresponding values """ site_index_pl = 0.86 * site_index_sw + 2.13 site_index_aw = 0.76 * site_index_sw + 2.01 site_index_fb = 0.92 * site_index_sw + 1.68 site_index_fd = 0.74 * site_index_sw + 4.75 site_index_sb = 0.64 * site_index_pl + 2.76 site_index_pb = site_index_aw site_indices_dict = {'aw': site_index_aw, 'pl': site_index_pl, 'sw': site_index_sw, 'fb': site_index_fb, 'fd': site_index_fd, 'sb': site_index_sb, 'pb': site_index_pb} return site_indices_dict def _get_all_site_indices_from_dominant_fb(site_index_fb): """Keyword Arguments: site_index_fb -- site index for fb Returns: dict: species as keys and site indices as corresponding values """ site_index_sw = 1.09 * site_index_fb - 1.83 site_index_pl = 0.86 * site_index_sw + 2.13 site_index_aw = 0.76 * site_index_sw + 2.01 site_index_fd = 0.74 * site_index_sw + 4.75 site_index_sb = 0.64 * site_index_pl + 2.76 site_index_pb = site_index_aw site_indices_dict = {'aw': site_index_aw, 'pl': site_index_pl, 'sw': site_index_sw, 'fb': site_index_fb, 'fd': site_index_fd, 'sb': site_index_sb, 'pb': site_index_pb} return site_indices_dict def _get_all_site_indices_from_dominant_fd(site_index_fd): """Keyword Arguments: site_index_fd -- site index for fd Returns: dict: species as keys and site indices as corresponding values """ site_index_pl = 1.07 * site_index_fd - 0.76 site_index_aw = 1.18 * site_index_pl - 4.02 site_index_sw = 1.36 * site_index_fd - 6.45 site_index_pb = site_index_aw site_index_fb = 0.92 * site_index_sw + 1.68 site_index_sb = 0.64 * site_index_pl + 2.76 site_indices_dict = {'aw': site_index_aw, 'pl': site_index_pl, 'sw': site_index_sw, 'fb': site_index_fb, 'fd': site_index_fd, 'sb': site_index_sb, 'pb': site_index_pb} return site_indices_dict def _get_all_site_indices_from_dominant_pl(site_index_pl): """Keyword Arguments: site_index_pl -- site index for pl Returns: dict: species as keys and site indices as corresponding values """ site_index_aw = 1.18 * site_index_pl - 4.02 site_index_sw = 1.16 * site_index_pl - 2.47 site_index_fd = 0.94* site_index_pl + 0.71 site_index_pb = site_index_aw site_index_fb = 0.92 * site_index_sw + 1.68 site_index_sb = 0.64 * site_index_pl + 2.76 site_indices_dict = {'aw': site_index_aw, 'pl': site_index_pl, 'sw': site_index_sw, 'fb': site_index_fb, 'fd': site_index_fd, 'sb': site_index_sb, 'pb': site_index_pb} return site_indices_dict def _get_all_site_indices_from_dominant_pb(site_index_pb): """Keyword Arguments: site_index_pb -- site index for pb Returns: dict: species as keys and site indices as corresponding values """ site_index_aw = site_index_pb site_index_pl = 0.85 * site_index_aw + 3.4 site_index_sw = 1.31 * site_index_aw - 2.64 site_index_fd = 0.92 * site_index_pl + 1.68 site_index_fb = 0.92 * site_index_sw + 1.68 site_index_sb = 0.64 * site_index_pl + 2.76 site_indices_dict = {'aw': site_index_aw, 'pl': site_index_pl, 'sw': site_index_sw, 'fb': site_index_fb, 'fd': site_index_fd, 'sb': site_index_sb, 'pb': site_index_pb} return site_indices_dict def _get_temporary_dominant_species(actual_dominant_species): """Swap an actual dominant species for a temporary one Keyword Arguments: actual_dominant_species -- str Returns: str: a temporary dominant species """ if actual_dominant_species == 'Pb': temp_dominant_species= 'Aw' elif actual_dominant_species == 'Fd' or actual_dominant_species == 'Fb': temp_dominant_species= 'Sw' else: raise ValueError('There is no temporary dominant species for species %s' \ % actual_dominant_species) return temp_dominant_species def _estimate_site_index(species, age, height): """Estimate site index of dominant species This is a wrapper around ComputeGypsySiteIndex for readability Keyword Arguments: species -- str, abbreviation of dominant species age -- float, age of dominant species height -- float, height of dominant species Return: float - site index """ dominant_site_index_list = ComputeGypsySiteIndex(species, height, 0, age) dominant_site_index = dominant_site_index_list[2] return dominant_site_index