Intro to the issue
We are currently having two temporal filter related fields in the electrophysiology specification:
SoftwareFilters
HardwareFilters
both fields have a description as follows (with slight adjustments), please focus on the specification of filters:
list of temporal software filters applied. Ideally key:value pairs of pre-applied software filters and their parameter values: e.g., {"Anti-aliasing filter": {"half-amplitude cutoff (Hz)": 500, "Roll-off": "6dB/Octave"}}. Write n/a if no software filters applied.
So we can always use a string "n/a".
Beyond that, the information is a bit confusing, as identified by @effigies in https://github.com/bids-standard/bids-specification/pull/322/files#r321275320.
We are asking for a list, which brings to mind an array of the following form:
{
"myKey": ["val1", "val2", 45455.3, {"obj": 1}]
}
However, in the validator and our examples (e.g., starter kit), we are requiring an "object of objects" in the form:
{
"HardwareFilters": {"HighpassFilter": {"CutoffFrequency": 0.1}}
}
questions
Should we:
- stay with our current way to specify filters and simply clarify the language in the specification to drop the word "list", and use "object of objects" or similar?
- change the way we specify filters to be a "list of objects" --> this would allow the benefit to intuitively specify the order of how filters were applied to the data
- allow both and change validator and spec text accordingly
I am not a signal processing expert ... but as long as the order in which filters are applied is irrelevant (e.g., because they are linear operations), I am in favor of option 1.
Intro to the issue
We are currently having two temporal filter related fields in the electrophysiology specification:
SoftwareFiltersHardwareFiltersboth fields have a description as follows (with slight adjustments), please focus on the specification of filters:
So we can always use a string
"n/a".Beyond that, the information is a bit confusing, as identified by @effigies in https://github.com/bids-standard/bids-specification/pull/322/files#r321275320.
We are asking for a list, which brings to mind an array of the following form:
{ "myKey": ["val1", "val2", 45455.3, {"obj": 1}] }However, in the validator and our examples (e.g., starter kit), we are requiring an "object of objects" in the form:
{ "HardwareFilters": {"HighpassFilter": {"CutoffFrequency": 0.1}} }questions
Should we:
I am not a signal processing expert ... but as long as the order in which filters are applied is irrelevant (e.g., because they are linear operations), I am in favor of option 1.