29 lines
863 B
Python
29 lines
863 B
Python
#!/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()
|