MCPcopy Create free account
hub / github.com/ahalev/python-microgrid / sample

Method sample

src/pymgrid/utils/DataGenerator.py:409–503  ·  view source on GitHub ↗
(self,
               noise_types=('uniform', 'gaussian'),
               noise_params=({'lower': 0, 'upper': 1}, {'std_ratio': 0.05}),
               return_stacked_data = True,
               plot_noisy=False,
               days_to_plot=(0, 10),
               verbose=False,
               push_peak_val=False,
               push_peak_ratio=0.5,
               push_individual_vals=False,
               push_individual_ratio=0.5,
               **kwargs
               )

Source from the content-addressed store, hash-verified

407 return noisy_data, lower_distribution_bounds, upper_distribution_bounds
408
409 def sample(self,
410 noise_types=('uniform', 'gaussian'),
411 noise_params=({'lower': 0, 'upper': 1}, {'std_ratio': 0.05}),
412 return_stacked_data = True,
413 plot_noisy=False,
414 days_to_plot=(0, 10),
415 verbose=False,
416 push_peak_val=False,
417 push_peak_ratio=0.5,
418 push_individual_vals=False,
419 push_individual_ratio=0.5,
420 **kwargs
421 ):
422
423 # TODO add param to push peak toward actual peak
424
425 potential_noises = {0: (None, 'uniform', 'triangular'),
426 1: (None, 'gaussian')}
427
428 noise_parameters = ({'lower': 0, 'upper': 1, 'mode':0.5}, {'std_ratio': 0.05})
429
430 for j, noise in enumerate(noise_types):
431 if noise not in potential_noises[j]:
432 raise ValueError('Noise ({}) not recognized in position ({}), must be one of {}'.format(
433 noise, j, potential_noises[j]))
434
435 if not self.munged:
436 self.data_munge()
437
438 if not self.interpolated:
439 self.max_min_curve_interpolate()
440
441 if not self.interpolated:
442 raise RuntimeError('Must have an interpolating curve before adding noise. '
443 'Call max_min_curve_interpolate first.')
444 if len(noise_params) != 2:
445 raise TypeError('Unable to parse noise_params, must be array-like length 2')
446
447 for j, v in enumerate(noise_params):
448 if v is not None and not isinstance(v, dict):
449 raise TypeError('Element ({}) in noise_params must be None or dict, is {}'.format(j, type(v)))
450 elif v is not None:
451 for key in noise_parameters[j].keys():
452 if key in v.keys():
453 noise_parameters[j][key] = v[key]
454
455 if noise_types[0] is None:
456 if self.parabolic_baseline is None:
457 raise ValueError('noise_types[0] is None, but there is no stored baseline')
458 else:
459 noisy_data = self.parabolic_baseline.copy()
460 lower_distribution_bounds, upper_distribution_bounds = self.distribution_bounds
461 else:
462 noisy_data, lower_distribution_bounds, \
463 upper_distribution_bounds = self._sample_parabola(noise_types[0], noise_parameters[0], verbose,
464 push_peak_val=push_peak_val, push_peak_ratio=push_peak_ratio)
465
466 if noise_types[1] == 'gaussian':

Calls 5

data_mungeMethod · 0.95
_sample_parabolaMethod · 0.95
plotMethod · 0.95
_check_sampleMethod · 0.95