summaryrefslogtreecommitdiff
path: root/controller/fw/tools/dsss_demod_test_waveform_gen.py
diff options
context:
space:
mode:
Diffstat (limited to 'controller/fw/tools/dsss_demod_test_waveform_gen.py')
-rw-r--r--controller/fw/tools/dsss_demod_test_waveform_gen.py21
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)
+