When to use Channel Terminal, Splitter or Name Splitter
OverviewThree operators are offered in Polybench to select one or some of the channels in a channel bus, the Channel Splitter, Channel Name Splitter and Channel Terminal. But when should you be using which?
DetailsPolybench was designed to process multiple signal channels at once, because often signals from physiological measurement devices are transported in many similar signal channels. In such cases, a processing program can contain far less mathematical operators than would be the case if an operator would be used for each and every single channel.
Of course, often you will be working with only a subset of signal channels of your data source - maybe even with one single channel. To be able to do this, Polybench offers a few ways to split off a subset of channels from a larger set of channels.
Three components are available to do this: the Channel Terminal, the Channel Splitter and the Channel Name Splitter. For the case of splitting off a subset of channels, those three will all do the job. However, it is important to note in what situation you should use which of the three splitting operators.
Channel SplitterThe "Channel Splitter" is the simplest form of splitter operators available. This splitter is the first choice for splitting off a subset of channels, unless you have some specific requirements (see below).
The Channel Splitter works very simply: you specify which of the input channels should be copied to the output. The selection is based on the position of the channel in the channel list. So if you specify to copy channel 2 and channel 4, then those two will be used (in that order) for the output. The Channel Splitter - and this is important - does not care what the names and ID's of the channels are, it just copies channels 2 and 4.
Channel Name SplitterThe "Channel Name Splitter" is somewhat more complex than the Channel Splitter. It also takes a subset of channels from the input and copies them to the output. But in this case the selection is not based on the position of channels in the input, but is based on the name of the channels.
When is this useful? Often a certain processing schematic in Polybench is bound to a specific kind of signals. For example, a QRS detector needs heart signals for input. If your data source contains many channels and somewhere in the middle it also contains those heart signals, then you need to split out the heart signals for the source to connect to the QRS detector. You could do this using the Channel Splitter, and in many cases you should also do that.
In this case however, there is a danger. If it is possible that a few channels are going to be added to the channel list of your data source, then the positions of the heart signals in the list may shift. A Channel Splitter then would select the wrong channels, and your QRS detector would detect rubbish! If you know that the heart signals always have the same channel name, then the Channel Name Splitter is the better option here to select those signals, because the heart signals are selected independently of where they are in the channel list.
The Channel Name Splitter can also be used to change the order of channels of your source, but only if the selected signals have unique names. This operator also allows a connection with a Drop Down list, so that you can offer your end-user to make a channel selection in the user interface.
Channel TerminalThe "Channel Terminal" could also be used to split off a subset of channels from the input. However, this is not the reason to use this component. The Channel Terminal should be used to protect the input and output of a processing schematic. It can be used for this, because the Channel Terminal fixates its output configuration.
In the properties of the terminal, you can define a list of channels at the output by hand (or automatically). That list will never change, also if the input configuration changes or the input is even disconnected. So, behind a Channel Terminal, you know exactly which channels are there, how they are called and in which order they appear.
Now, if you would use the Channel Terminal to split of a few channels from the input, then at first the result will be equal to using the Channel Splitter for that. However, the difference is that if one of the selected channels at the input gets another name or unit, that this change is copied to the output of the Channel Splitter, but it is not copied to the output of the Channel Terminal. It is up to you to determine which behavior you expect, in order to decide whether to use a splitter or a terminal.
ConclusionTo make a sub-selection of signal channels from a multichannel bus, you should use the Channel Splitter because it is the easiest splitter that costs the least processing power.
However, if your application leaves an option to use changeable channel configurations, and if all channels will have a unique name, then you should use the Channel Name Splitter, because it selects the channels by name, independent of position.
If you require to change the name or unit of signal channels, or if you want to make a predefined and fixed channel configuration, then you should use the Channel Terminal, because it sets its output unchangeable and gives you full control over the configuration.