Module quantum_inferno.scales_dyadic
This module contains constants and functions that help with physical to cyber conversion with preferred quasi-dyadic orders.
Global variables
var M_OVER_N-
Standardized scales
Functions
def band_frequency_low_high(frequency_order_input: float, frequency_base_input: float, frequency_ref_input: float, frequency_low_input: float, frequency_high_input: float, frequency_sample_rate_input: float) ‑> Tuple[float, float, numpy.ndarray, float, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray]-
Evaluate Standard Logarithmic Interval Time Parameters: ALWAYS USE HZ
:param frequency_order_input: Nth order :param frequency_base_input: G2 or G3 :param frequency_ref_input: reference frequency :param frequency_low_input: the lowest frequency of interest :param frequency_high_input: highest frequency of interest :param frequency_sample_rate_input: sample rate :return: scale_order, scale_base, scale_band_number, reference frequency value, Algebraic center of frequencies, Geometric center of frequencies, frequency_start, frequency_end
def band_intervals_periods(scale_order_input: float, scale_base_input: float, scale_ref_input: float, scale_low_input: float, scale_high_input: float, show_warnings: bool = True) ‑> Tuple[float, float, numpy.ndarray, float, numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray]-
Evaluate Standard Logarithmic Interval Scale Parameters using time scales in seconds If scales are provided as frequency, previous computations convert to time. Designed to take bappsband to just below Nyquist, within a band edge. ALWAYS CONVERT TO SECONDS Last updated: 20200905
:param scale_order_input: Band order N, for ISO3 use N = 1.0 or 3.0 or 6.0 or 12.0 or 24.0 :param scale_base_input: reference base G; i.e. G3 = 10.**0.3 or G2 = 2.0 :param scale_ref_input: time reference: in seconds :param scale_low_input: Lowest scale. If Nyquist scale, 2 * sample interval in seconds. :param scale_high_input: Highest scale of interest in seconds :param show_warnings: if True, show any warnings encountered. Default True :return: scale_order, scale_base, scale_band_number, scale_ref, scale_center_algebraic, scale_center_geometric, scale_start, scale_end
def base_multiplier(scale_order: float = 3.0, scale_base: float = 1.9952623149688795) ‑> float-
:param scale_order: Band order, preferably one of: 1, 3, 6, 12, 24. Must be > 0.75 or reverts to N=0.75 :param scale_base: scale base :return: Dyadic (log2) foundation for arbitrary base
def cycles_from_order(scale_order: float) ‑> float-
Compute the number of cycles M for a specified band order N. N is the quantization parameter for the constant Q wavelet filters
:param scale_order: Band order, preferably one of: 1, 3, 6, 12, 24. Must be > 0.75 or reverts to N=0.75 :return: number of cycled per normalized angular frequency
def get_epsilon() ‑> float-
Return epsilon for float64, float32, float16 by detecting current interpreter's max size
def log_frequency_hz_from_fft_points(frequency_sample_hz: float, fft_points: int, scale_order: float = 1.9952623149688795, scale_ref_hz: float = 1.0, scale_base: float = 1.9952623149688795) ‑> numpy.ndarray-
:param frequency_sample_hz: sample rate of frequency in Hz :param fft_points: number of fft points :param scale_order: Band order, preferably one of: 1, 3, 6, 12, 24. Must be > 0.75 or reverts to N=0.75 :param scale_ref_hz: reference frequency in Hz :param scale_base: scale base :return: array of scaled values
def order_from_cycles(cycles_per_scale: float) ‑> float-
Compute the number of cycles M for a specified band order N where N is the quantization parameter for the constant Q wavelet filters
:param cycles_per_scale: Should be greater than or equal than one :return: number of cycled per normalized angular frequency
def scale_from_frequency_hz(scale_order: float, scale_frequency_center_hz: Union[numpy.ndarray, float], frequency_sample_rate_hz: float) ‑> Tuple[Union[numpy.ndarray, float], Union[numpy.ndarray, float]]-
Non-dimensional scale and angular frequency for canonical Gabor/Morlet wavelet
:param scale_order: Band order, preferably one of: 1, 3, 6, 12, 24. Must be > 0.75 or reverts to N=0.75 :param scale_frequency_center_hz: scale frequency in hz :param frequency_sample_rate_hz: sample rate in hz :return: scale_atom, scaled angular frequency
def scale_multiplier(scale_order: float = 3.0) ‑> float-
:param scale_order: Band order, preferably one of: 1, 3, 6, 12, 24. Must be > 0.75 or reverts to N=0.75 :return: Scale multiplier for scale bands of order N > 0.75
def scale_order_check(scale_order: float = 3.0, show_warning: bool = True) ‑> float-
Ensure no negative, complex, or unreasonably small orders are passed; override to 1/3 octave band Standard orders are one of: 1, 3, 6, 12, 24. If order < 0.75 it reverts to order = 3
:param scale_order: Band order, preferably one of: 1, 3, 6, 12, 24. Must be > 0.75 or reverts to N=0.75 :param show_warning: if True, prints warning of invalid scale_order. Default True :return: sanitized scale order
Classes
class Slice-
Constants for slice calculations, supersedes inferno/slice
Expand source code
class Slice: """ Constants for slice calculations, supersedes inferno/slice """ # Preferred Orders ORD1 = 1.0 # Octaves; repeats nearly every three decades (1mHz, 1Hz, 1kHz) ORD3 = 3.0 # 1/3 octaves; reduced temporal uncertainty for sharp transients and good for decade cycles ORD6 = 6.0 # 1/6 octaves, good compromise for time-frequency resolution ORD12 = 12.0 # Musical tones, continuous waves, long duration sweeps ORD24 = 24.0 # High resolution; long duration window, 24 bands per octave ORD48 = 48.0 # Ultra-high spectral resolution for blowing minds and interstellar communications # Constant Q Base G2 = 2.0 # Base two for perfect octaves and fractional octaves G3 = 10.0 ** 0.3 # Reconciles base2 and base10 # Time T_PLANCK = 5.4e-44 # 2.**(-144) Planck time in seconds T0S = 1e-42 # Universal Scale in S T1S = 1.0 # 1 second T100S = 100.0 # 1 hectosecond, IMS low band edge T1000S = 1000.0 # 1 kiloseconds = 1 mHz T1M = 60.0 # 1 minute in seconds T1H = T1M * 60.0 # 1 hour in seconds T1D = T1H * 24.0 # 1 day in seconds TU = 2.0 ** 58 # Estimated age of the known universe in seconds # Frequency F1HZ = 1.0 # 1 Hz F1KHZ = 1_000.0 # 1 kHz F0HZ = 1.0e42 # 1/Universal Scale FU = 2.0 ** -58 # 1/Estimated age of the known universe in s # NOMINAL SAMPLE RATES (REDVOX API M, 2022) FS1HZ = 1.0 # SOH FS10HZ = 10.0 # iOS Barometer FS30HZ = 30.0 # Android barometer FS80HZ = 80.0 # Infrasound FS200HZ = 200.0 # Android Magnetometer, Fast FS400HZ = 400.0 # Android Accelerometer and Gyroscope, Fast FS800HZ = 800.0 # Infrasound and Low Audio FS8KHZ = 8_000.0 # Speech Audio FS16KHZ = 16_000.0 # ML Audio FS48KHZ = 48_000.0 # Audio to UltrasoundClass variables
var F0HZvar F1HZvar F1KHZvar FS10HZvar FS16KHZvar FS1HZvar FS200HZvar FS30HZvar FS400HZvar FS48KHZvar FS800HZvar FS80HZvar FS8KHZvar FUvar G2var G3var ORD1var ORD12var ORD24var ORD3var ORD48var ORD6var T0Svar T1000Svar T100Svar T1Dvar T1Hvar T1Mvar T1Svar TUvar T_PLANCK