Updating the documentation

This commit is contained in:
Petrônio Cândido 2019-02-21 11:10:11 -03:00
parent be84e6d430
commit 1211aa2be7
2 changed files with 58 additions and 40 deletions

Binary file not shown.

View File

@ -36,17 +36,18 @@ def generate_gaussian_linear(mu_ini, sigma_ini, mu_inc, sigma_inc, it=100, num=1
def generate_linear_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max, it=100, num=10, vmin=None, vmax=None): def generate_linear_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max, it=100, num=10, vmin=None, vmax=None):
""" """
Generates a periodic linear variation on mean and variance
:param period: :param period: the period of recurrence
:param mu_min: :param mu_min: initial (and minimum) mean of each period
:param sigma_min: :param sigma_min: initial (and minimum) variance of each period
:param mu_max: :param mu_max: final (and maximum) mean of each period
:param sigma_max: :param sigma_max: final (and maximum) variance of each period
:param it: :param it: Number of iterations
:param num: :param num: Number of samples generated on each iteration
:param vmin: :param vmin: Lower bound value of generated data
:param vmax: :param vmax: Upper bound value of generated data
:return: :return: A list of it*num float values
""" """
if period > it: if period > it:
@ -78,21 +79,21 @@ def generate_linear_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_m
return ret return ret
def generate_senoidal_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max, it=100, num=10, vmin=None, vmax=None): def generate_sinoidal_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max, it=100, num=10, vmin=None, vmax=None):
""" """
Generates a periodic sinoidal variation on mean and variance
:param period: :param period: the period of recurrence
:param mu_min: :param mu_min: initial (and minimum) mean of each period
:param sigma_min: :param sigma_min: initial (and minimum) variance of each period
:param mu_max: :param mu_max: final (and maximum) mean of each period
:param sigma_max: :param sigma_max: final (and maximum) variance of each period
:param it: :param it: Number of iterations
:param num: :param num: Number of samples generated on each iteration
:param vmin: :param vmin: Lower bound value of generated data
:param vmax: :param vmax: Upper bound value of generated data
:return: :return: A list of it*num float values
""" """
mu_range = mu_max - mu_min mu_range = mu_max - mu_min
sigma_range = sigma_max - sigma_min sigma_range = sigma_max - sigma_min
mu = mu_min mu = mu_min
@ -145,10 +146,21 @@ def generate_uniform_linear(min_ini, max_ini, min_inc, max_inc, it=100, num=10,
def white_noise(n=500): def white_noise(n=500):
"""
Simple Gaussian noise signal
:param n: number of samples
:return:
"""
return np.random.normal(0, 1, n) return np.random.normal(0, 1, n)
def random_walk(n=500, type='gaussian'): def random_walk(n=500, type='gaussian'):
"""
Simple random walk
:param n: number of samples
:param type: 'gaussian' or 'uniform'
:return:
"""
if type == 'gaussian': if type == 'gaussian':
tmp = generate_gaussian_linear(0, 1, 0, 0, it=1, num=n) tmp = generate_gaussian_linear(0, 1, 0, 0, it=1, num=n)
else: else:
@ -185,6 +197,9 @@ def _append(additive, start, before, new):
class SignalEmulator(object): class SignalEmulator(object):
"""
Emulate a complex signal built from several additive and non-additive components
"""
def __init__(self, **kwargs): def __init__(self, **kwargs):
super(SignalEmulator, self).__init__() super(SignalEmulator, self).__init__()
@ -196,14 +211,14 @@ class SignalEmulator(object):
Creates a continuous Gaussian signal with mean mu and variance sigma. Creates a continuous Gaussian signal with mean mu and variance sigma.
:param mu: mean :param mu: mean
:param sigma: variance :param sigma: variance
:keyword cummulative: If False it cancels the previous signal and start this one, if True :keyword additive: If False it cancels the previous signal and start this one, if True
this signal is added to the previous one this signal is added to the previous one
:keyword start: lag index to start this signal, the default value is 0 :keyword start: lag index to start this signal, the default value is 0
:keyword it: Number of iterations, the default value is 1 :keyword it: Number of iterations, the default value is 1
:keyword length: Number of samples generated on each iteration, the default value is 100 :keyword length: Number of samples generated on each iteration, the default value is 100
:keyword vmin: Lower bound value of generated data, the default value is None :keyword vmin: Lower bound value of generated data, the default value is None
:keyword vmax: Upper bound value of generated data, the default value is None :keyword vmax: Upper bound value of generated data, the default value is None
:return: A list of it*num float values :return: the current SignalEmulator instance, for method chaining
""" """
parameters = {'mu': mu, 'sigma': sigma} parameters = {'mu': mu, 'sigma': sigma}
self.components.append({'dist': 'gaussian', 'type': 'constant', self.components.append({'dist': 'gaussian', 'type': 'constant',
@ -213,16 +228,14 @@ class SignalEmulator(object):
def incremental_gaussian(self, mu, sigma, **kwargs): def incremental_gaussian(self, mu, sigma, **kwargs):
""" """
Creates an additive gaussian interference on a previous signal Creates an additive gaussian interference on a previous signal
:param mu: :param mu: increment on mean
:param sigma: :param sigma: increment on variance
:keyword cummulative: If False it cancels the previous signal and start this one, if True
this signal is added to the previous one
:keyword start: lag index to start this signal, the default value is 0 :keyword start: lag index to start this signal, the default value is 0
:keyword it: Number of iterations, the default value is 1 :keyword it: Number of iterations, the default value is 1
:keyword length: Number of samples generated on each iteration, the default value is 100 :keyword length: Number of samples generated on each iteration, the default value is 100
:keyword vmin: Lower bound value of generated data, the default value is None :keyword vmin: Lower bound value of generated data, the default value is None
:keyword vmax: Upper bound value of generated data, the default value is None :keyword vmax: Upper bound value of generated data, the default value is None
:return: A list of it*num float values :return: the current SignalEmulator instance, for method chaining
""" """
parameters = {'mu': mu, 'sigma': sigma} parameters = {'mu': mu, 'sigma': sigma}
self.components.append({'dist': 'gaussian', 'type': 'incremental', self.components.append({'dist': 'gaussian', 'type': 'incremental',
@ -232,16 +245,16 @@ class SignalEmulator(object):
def periodic_gaussian(self, type, period, mu_min, sigma_min, mu_max, sigma_max, **kwargs): def periodic_gaussian(self, type, period, mu_min, sigma_min, mu_max, sigma_max, **kwargs):
""" """
Creates an additive periodic gaussian interference on a previous signal Creates an additive periodic gaussian interference on a previous signal
:param mu: :param type: 'linear' or 'sinoidal'
:param sigma: :param period: the period of recurrence
:keyword additive: If False it cancels the previous signal and start this one, if True :param mu: increment on mean
this signal is added to the previous one :param sigma: increment on variance
:keyword start: lag index to start this signal, the default value is 0 :keyword start: lag index to start this signal, the default value is 0
:keyword it: Number of iterations, the default value is 1 :keyword it: Number of iterations, the default value is 1
:keyword length: Number of samples generated on each iteration, the default value is 100 :keyword length: Number of samples generated on each iteration, the default value is 100
:keyword vmin: Lower bound value of generated data, the default value is None :keyword vmin: Lower bound value of generated data, the default value is None
:keyword vmax: Upper bound value of generated data, the default value is None :keyword vmax: Upper bound value of generated data, the default value is None
:return: A list of it*num float values :return: the current SignalEmulator instance, for method chaining
""" """
parameters = {'type':type, 'period':period, parameters = {'type':type, 'period':period,
'mu_min': mu_min, 'sigma_min': sigma_min, 'mu_max': mu_max, 'sigma_max': sigma_max} 'mu_min': mu_min, 'sigma_min': sigma_min, 'mu_max': mu_max, 'sigma_max': sigma_max}
@ -251,10 +264,10 @@ class SignalEmulator(object):
def blip(self, **kwargs): def blip(self, **kwargs):
""" """
Creates an outlier greater than the maximum or lower then the minimum previous values of the signal,
and insert it on a random location of the signal.
:param intensity: :return: the current SignalEmulator instance, for method chaining
:param kwargs:
:return:
""" """
parameters = {} parameters = {}
self.components.append({'dist': 'blip', 'type': 'blip', self.components.append({'dist': 'blip', 'type': 'blip',
@ -262,6 +275,11 @@ class SignalEmulator(object):
return self return self
def run(self): def run(self):
"""
Render the signal
:return: a list of float values
"""
signal = [] signal = []
last_it = 10 last_it = 10
last_num = 10 last_num = 10
@ -286,8 +304,8 @@ class SignalEmulator(object):
mu_max, sigma_max = parameters['mu_max'],parameters['sigma_max'] mu_max, sigma_max = parameters['mu_max'],parameters['sigma_max']
if parameters['type'] == 'sinoidal': if parameters['type'] == 'sinoidal':
tmp = generate_senoidal_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max, tmp = generate_sinoidal_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max,
it=num, num=1, vmin=vmin, vmax=vmax) it=num, num=1, vmin=vmin, vmax=vmax)
else: else:
tmp = generate_linear_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max, tmp = generate_linear_periodic_gaussian(period, mu_min, sigma_min, mu_max, sigma_max,
it=num, num=1, vmin=vmin, vmax=vmax) it=num, num=1, vmin=vmin, vmax=vmax)