Skip to content

[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
  1. 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.
  2. Apply the correction only to LOOP packets. Do not apply to archive records.
  3. Apply the correction only to archive records. Do not apply to LOOP packets.
  4. Apply the correction to both LOOP packets and archive records all the time, even if the archive record came from software.

  1. Corrections are not applied to software-generated reocords because the correction has already been applied to its constitutent LOOP packets.