EFLRSet and EFLRItemΒΆ

The implementation of the ELFRs is split over two separate classes: EFLRSet and EFLRItem. For the different schemes (as mentioned above), subclasses of both EFLRSet and EFLRItem are defined, e.g. ChannelSet and ChannelItem, FrameSet and FrameItem, etc.

EFLRItem is e.g. a single Channel, Frame, or Axis. It has its own name (the first positional argument when initialising the object) and a number of attributes (instances of the Attribute class), pre-defined by the standard. For example, for a Channel, these attributes include: units, dimension, representation code, minimum and maximum value, and others.

EFLRSet can be viewed as a collection of EFLRItem instances. Because a specific subclass of EFLRSet (e.g. ChannelSet) can only contain instances of a specific subclass of EFLRItem (e.g. ChannelItem), all EFLRItems added to an EFLRSet will have exactly the same set of attribute types. Therefore, an EFLRSet can be viewed as a table of EFLRItems, with attribute names as table header and individual EFLRItem with their attribute values as rows in that table.

As shown in the Logical Record types diagram before, it is EFLRSet, not EFLRItem that inherits from LogicalRecord base class. While this might be non-intuitive, it is consistent with the standard; an Explicitly Formatted Logical Record in the standard is a table as described above, with additional metadata.

Theoretically, multiple EFLRSet instances of the same type (e.g. multiple ChannelSet instances) can be defined in a DLIS file. The key requirement is that their names - set_name - are different. There cannot be two ChannelItems (or two instances other EFLRItem subclass) with the same set_name. However, usually only a single instance of each EFLRSet is defined, and the default set_name is None.

In the current implementation, there is usually no need to explicitly define EFLRSet (subclass) instances or to interact with these. User is supposed to interact with the relevant EFLRItem subclass instead, e.g. ChannelItem, created through add_channel method of DLISFile instance.