(Redirected from Histogram)

## Contents

The Histogram class is designed to watch either a single object or a group of objects with a common property and generate rows with the number of times the watched objects values' were within certain ranges.

## Glossary

Sample
refers to the values collected at a specific interval.
Count
refers to a collection of samples across a specific interval.
Row
aludes to the underlying structure of the histogram's output, in which the date precedes a comma separated list of counts for the previous counting interval.
Bin
is used to reference a column, such as "between ten and twenty".

# Usage

There are two overt ways of organizing the bins with the Histogram class. The first method will automatically partition a single range into several uniform bins. The second method requires the explicit delimitation of the bins, which may be single values (or enumerated states), single-ended infinite ranges, or finite ranges.

## Uniform Bins

To set up uniform bins, the Histogram object must define the properties:

object histogram {
// [...]
bin_count 4;
min 0;
max 100;
}

The first bin will count values 0 ≤ x < 25, the second counts 25 ≤ x < 50, third counts 50 ≤ x < 75, and the fourth counts 75 ≤ x ≤ 100.

## Non-Uniform Bins

The specific bin definitions are of the general form [a..b]. Both inclusive square brackets [ ] and exclusive parentheses ( ) are valid ways to bound either side of the bin. The omission of the brackets will implicitly create an inclusive range, such as with 25..50. If one of the two values is excluded, the bin will implicitly extend to positive or negative infinity, exclusively.

A dash may replace the .. in defining bin ranges. Possible ambiguity may arise because "-100" is synonymous to the parser as "..100". To count everything up to -100, "..-100" or "--100" should be used.

Explicit bins may overlap freely. An example is a cumulative function:

bins ..20,..40,..60,..80,..100;

#### Sample Object

A simple histogram that looks at a set of houses and accumulates the internal air temperatures would look like

object histogram {
name histogram_test;
filename /here/there/hist_test.csv;
bins ..66, ..68, ..70, ..72, ..74, ..;
limit 30;
samplerate 3600;
countrate 3600;
group class=house;
property temperature;
};

This will sample all of the houses in a model once an hour and write the accumulated temperature results thirty times to the file at /here/there/hist_test.csv (c:\here\there\hist_test.csv under Windows).

### Properties

filename - char1024
Used for a combination of defining the name of the output file, and for specifying the output mode. Read as either fname or ftype:fname, where valid values of ftype are file, memory, or odbc.
group - char1024
Defines the group that the histogram should collect values for, see Finding objects for more details.
bins - char1024
If nonempty, the string to parse to define the histogram bins. Only used if input bin_count is non-positive or not inititalized, or if min < max or not defined.
property - char32
The property name to look for and sample in the parent object or the object group. Complex values must use "prop.mag", "prop.ang", "prop.real", or "prop.imag" to specify which part to sample.
min - double
Minimum of the range to use for uniform bins.
max - double
Maximum of the range to use for uniform bins.
samplerate - int32
The interval for sampling the parent or the object group and incrementing histogram bins appropriately, in seconds. -1 means "every iteration", 0 means "every timestep".
countrate - int32
The interval for writing histogram counts to the output stream, in seconds. -1 means "every iteration", 0 means "every timestep".
bin_count - int32
[input] the number of uniform bins to create. [output] the number of bins used by the histogram.
limit - int32
The maximum number of lines to write to the output stream.