summaryrefslogtreecommitdiff
path: root/downsample_rigol_wfm.py
diff options
context:
space:
mode:
Diffstat (limited to 'downsample_rigol_wfm.py')
-rw-r--r--downsample_rigol_wfm.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/downsample_rigol_wfm.py b/downsample_rigol_wfm.py
new file mode 100644
index 0000000..d700c39
--- /dev/null
+++ b/downsample_rigol_wfm.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+
+import json
+from pathlib import Path
+import lzma
+
+import click
+import RigolWFM.wfm as rigol
+import scipy
+
+
+@click.command()
+@click.argument('infile', type=click.Path(dir_okay=False, exists=True))
+@click.argument('outfile', type=click.Path(dir_okay=False, path_type=Path), required=False)
+@click.option('-f', '--factor', type=int, default=500, help='Downsampling factor')
+def cli(infile, outfile, factor):
+ if outfile is None:
+ outfile = Path(infile).with_suffix('.lzjson')
+ wf = rigol.Wfm.from_file(infile, 'DS1054Z')
+ data = wf.channels[0].volts
+
+ data = scipy.signal.decimate(data, factor, ftype='fir')[::-1]
+ td = wf.channels[0].seconds_per_point * factor
+
+ outfile.write_bytes(lzma.compress(json.dumps({'sample_interval_s': td, 'samples': list(data)}).encode()))
+
+
+if __name__ == '__main__':
+ cli()