Source code for pyValEIA.utils.math

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# DISTRIBUTION STATEMENT A: Approved for public release. Distribution is
# unlimited.
# ----------------------------------------------------------------------------
"""Functions that support mathematical calculations."""

import numpy as np


[docs] def get_exponent(number): """Calculate the exponent of number using base 10. Parameters ---------- number : double Number for which the base-10 exponent will be calculated Returns ------- exp_val : float Exponent of `number` as a whole value """ if number == 0: # This is the same result, but without the RuntimeWarning exp_val = -np.inf else: exp_val = np.floor(np.log10(abs(number))) return exp_val
[docs] def base_round(xvals, base=5): """Round values to the nearest base. Parameters ---------- xvals : array-like Values to be rounded base : int Base to be rounded to (default=5) Returns ------- round_vals : array-like Values rounded to nearest base """ round_vals = np.floor(base * np.round(np.asarray(xvals).astype(np.float64) / base)) return round_vals
[docs] def unique_threshold(xvals, thresh=0.01): """Round values to the desired threshold and return a unique array. Parameters ---------- xvals : array-like Values to be rounded thresh : float Threshold for uniqueness (default=0.01) Returns ------- uvals : array-like Unique values at the desired threshold level """ # Number of decimal places ndec = int(abs(np.log10(thresh))) # Threshold here is our base in rounding uvals = np.unique(np.round(xvals, ndec)) return uvals
[docs] def set_dif_thresh(lat_span, percent=0.05): """Set a difference threshold. Parameters ---------- lat_span: double span of latitude array e.g. max(latitude) - min(latitude) percent : kwarg double Percent as a decimal for difference threshold from 0-1 (default=0.05) Returns ------- float Percentage times the span Notes ----- Set the threshold for what is different, input scale (if lat_span) = 50, then our max tec/ne is 50 so set thresh to 5 for 10% can also use this for maximum difference between peak and trough, so can use smaller threshold """ return percent * lat_span