[StdCalibrate]¶
The StdCalibrate
service offers an opportunity to correct for any
calibration errors in your instruments. It is very general and flexible.
Because this service is normally run after StdConvert
, the units to be used
should be the same as the target unit system chosen in
StdConvert
. It is also important that this service be run
before the archiving service StdArchive
, so that it is the corrected data
that are stored.
In a default configuration, calibrations are applied to all LOOP packets. They are applied to archive records only if the records were not software generated (because, presumably, the correction was already applied in the LOOP packets).
Because StdCalibrate
runs before StdWXCalculate
, correction are also not
applied to derived calculations.
[[Corrections]]¶
In this section you list all correction expressions. The section looks like this:
[StdCalibrate]
[[Corrections]]
obs_type = expression[, loop][, archive]
Where:
expression
is a valid Python expression involving any observation types
in the same record, or functions in the math
module. More below.
loop
is a directive that tells StdCalibrate
to always apply the
correction to LOOP packets.
archive
is a directive that tells StdCalibrate
to always apply the
correction to archive records.
Details below.
Expressions¶
For example, say that you know your outside thermometer reads high by 0.2°F. You could use the expression:
outTemp = outTemp - 0.2
Perhaps you need a linear correction around a reference temperature of 68°F:
outTemp = outTemp + (outTemp-68) * 0.02
or perhaps a non-linear correction, using the math function math.pow()
:
radiation = math.pow(radiation, 1.02)
It is also possible to do corrections involving more than one variable. Suppose you have a temperature sensitive barometer:
barometer = barometer + (outTemp-32) * 0.0091
All correction expressions are run in the order given.
Directives¶
Directives are separated by a comma from the expression, and tell StdCalibrate
whether to apply the correction to LOOP packets, archive records, or both.
If not supplied, the correction will be applied to all LOOP packets. They will also be applied to archive records, but only if they came from hardware1. This is usually what you want.
Here are examples:
humidity = humidity - 3 # 1
outTemp = outTemp + 0.4, loop # 2
barometer = barometer + .3, archive # 3
windSpeed = windSpeed * 1.05, loop, archive # 4
- Apply the correction to all LOOP packets. Apply the correction to archive records only if they came from hardware. This is usually what you want.
- Apply the correction only to LOOP packets. Do not apply to archive records.
- Apply the correction only to archive records. Do not apply to LOOP packets.
- Apply the correction to both LOOP packets and archive records all the time, even if the archive record came from software.
-
Corrections are not applied to software-generated reocords because the correction has already been applied to its constitutent LOOP packets. ↩