sample_low_pass - bruno-beloff/scs_analysis GitHub Wiki

docs > software repositories > scs_analysis > commands > filtering and aggregating data


DESCRIPTION

The sample_low_pass utility provides a rolling exponential average or low pass filter. The user must specify the sampling interval in seconds, together with the cut-off frequency.

Input data is typically in the form of a JSON document. A command parameter specifies the path to the node within the document that is to be filtered. The node is typically a leaf node integer or float. The output of the sample_low_pass utility includes the source value, and the smoothed value.

SYNOPSIS

sample_low_pass.py -d DELTA_T -c CUT_OFF [-p PRECISION] [-v] [PATH]

Options
--version show program's version number and exit
-h, --help show this help message and exit
-d DELTA, --delta=DELTA sampling time interval
-c CUT_OFF, --cut-off=CUT_OFF cut-off frequency
-p PRECISION, --prec=PRECISION precision (default 0 decimal places)
-v, --verbose report narrative to stderr

EXAMPLES

aws_topic_history.py -m60 /orgs/south-coast-science-demo/brighton/loc/1/gases | ./sample_low_pass.py -d 10.0 -c 0.02 -p 1 val.CO.cnc

DOCUMENT EXAMPLE - INPUT

{"tag": "scs-bgx-401", "rec": "2018-03-27T09:54:41.042+00:00", "val": {"NO2": {"weV": 0.29563, "aeV": 0.280879, "weC": 0.009569, "cnc": 61.0}, "Ox": {"weV": 0.406819, "aeV": 0.387443, "weC": -0.010706, "cnc": 34.7}, "NO": {"weV": 0.319692, "aeV": 0.292129, "weC": 0.028952, "cnc": 165.5}, "CO": {"weV": 0.395819, "aeV": 0.289317, "weC": 0.113108, "cnc": 311.3}, "sht": {"hmd": 82.4, "tmp": 12.6}}}

DOCUMENT EXAMPLE - OUTPUT

{"rec": "2018-03-27T10:55:11.033+00:00", "val": {"CO": {"cnc": {"src": 121.3, "lpf": 131.3}}}}

RESOURCES

Ten Little Algorithms, Part 2: The Single-Pole Low-Pass Filter