Source code for vak.common.timebins

"""module for functions that deal with vector of times from a spectrogram,
i.e. where elements are the times at bin centers"""

import numpy as np


[docs] def timebin_dur_from_vec(time_bins, n_decimals_trunc=5): """compute duration of a time bin, given the vector of time bin centers associated with a spectrogram Parameters ---------- time_bins : numpy.ndarray vector of times in spectrogram, where each value is a bin center. n_decimals_trunc : int number of decimal places to keep when truncating the timebin duration calculated from the spectrogram arrays. Default is 5. Returns ------- timebin_dur : float duration of a timebin, estimated from vector of times Notes ----- takes mean of pairwise difference between neighboring time bins, to deal with floating point error, then rounds and truncates to specified decimal place """ # first we round to the given number of decimals timebin_dur = np.around( np.mean(np.diff(time_bins)), decimals=n_decimals_trunc ) # only after rounding do we truncate any decimal place past decade decade = 10**n_decimals_trunc timebin_dur = np.trunc(timebin_dur * decade) / decade return timebin_dur