diff options
Diffstat (limited to 'controller/fw/tools/dsss_demod_test_waveform_gen.py')
-rw-r--r-- | controller/fw/tools/dsss_demod_test_waveform_gen.py | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/controller/fw/tools/dsss_demod_test_waveform_gen.py b/controller/fw/tools/dsss_demod_test_waveform_gen.py index 1749bd7..414c553 100644 --- a/controller/fw/tools/dsss_demod_test_waveform_gen.py +++ b/controller/fw/tools/dsss_demod_test_waveform_gen.py @@ -1,4 +1,6 @@ +from os import path +import json import functools import numpy as np @@ -53,9 +55,9 @@ def mains_noise_measured(seed, n, meas_data): def load_noise_synth_params(specfile): with open(specfile) as f: d = json.load(f) - return (np.linspace(*d['x_spec']), # spl_x - d['x_spec'][2], # spl_N - (d['t'], d['c'], d['k'])) # psd_spl + return {'spl_x': np.linspace(*d['x_spec']), + 'spl_N': d['x_spec'][2], + 'psd_spl': (d['t'], d['c'], d['k']) } def mains_noise_synthetic(seed, n, psd_spl, spl_N, spl_x): st = np.random.RandomState(seed) @@ -69,3 +71,16 @@ def mains_noise_synthetic(seed, n, psd_spl, spl_N, spl_x): renoise = scipy.fftpack.ifft(spec) return renoise[10000:][:n] + 50.00 +@functools.lru_cache() +def load_noise_gen(url): + schema, refpath = url.split('://') + if not path.isabs(refpath): + refpath = path.abspath(path.join(path.dirname(__file__), refpath)) + + if schema == 'meas': + return mains_noise_measured, load_noise_meas_params(refpath) + elif schema == 'synth': + return mains_noise_synthetic, load_noise_synth_params(refpath) + else: + raise ValueError('Invalid schema', schema) + |