Hangout notes: 4/15/14, 8:00 AM

EPICS V4 Telecon, 15-Apr-2014.

==========================

AGENDA

=======

0. Preliminaries

1. N-types for units and error (greg).

2. Demo using pva and easyPva from within matlab (greg). [Not covered. See meeting 29-Apr-14]

MINUTES

=======

Present: BD, GC, MK, MS, GW, NM

Scribe: GK

Chair: GW

********

NEW TOPIC: Proposal for normative types

********

GW: not try to match error and value type

MS: error could just be a double

GC: Why not have statistics type

GW: we do: NTAggregate

When creating a table, should we have a column of an NTAggregate, or multiple name column with average, stddev, …

GC: multiple column (I’d rather converge to a general purpose case)

GW: single column of aggregate type (I want to keep the semantic association)

GW: we’ll need to try

NM: we could use the archiver

GW: will try to use the proposal for data from an archiver

Normative Types

=============

1. Units are already in N-Types, as I said before, they're in

display_t so they're already in all types.

2. Error

Propose:

a) Add error and N (number of observations) to NTScalar and

NTScalarArray.

b) The rule that a type must not be composed of any other types

is removed. That way, we can define the higher types like

NTTable in terms of NTScalar and NTScalarArray.

Definitions:

NTScalar:

structure NTScalar

scalar_t value

scalar_t error :opt

scalar_t n :opt

.. other

NTScalarArray:

structure NTScalarArray

scalar_t [] value

scalar_t [] error :opt

scalar_t [] n :opt

.. other

Error communicates the error bars of each element of value. That

is, error SHOULD NOT be used to communicate the computed error

of the set of values in the value field. Thereby, the length of

error MUST be equal to the length of value. Call length of value "M".

n MUST be length = 1 or M.

If length 1, then the value of n should be taken to range for

all elements of error. For instance, in a synchronous

acquisition system, where 300 diagnostic devices are all sampled

on a 100Hz signal, and we wish to encode the average reading and

RMS of each device over (the same) 5 cycles in one

NTScalarArray. Then length of value = 300, length of error =

300, and length of n = 1 (and has value = 5). Incidentally, the

100Hz nature of the acquisition would have to be encoded

elsewhere, possibly in the display_t.description field.

So, using NTScalarArray for NTTable:

NTTable:

structure NTTable

string [] labels

structure value

{NTScalarArray <colname>}0+

integer_t

int

uint

long

ulong

real_t

float

double

http://epics-pvdata.sourceforge.net/alpha/normativeTypes/normativeTypes.html#ntaggregate

Conclusion: Maybe N-types should make a formal association between all value fields and their error, whereas V-types don’t, they’re oriented toward being general purpose.

So remains to be seen whether that makes sense or is just bullshit.

Matlab demo in 2 weeks.

Meeting ends.