falcon:
version: 1.0
graph:
processors:
# Speed pipeline
behavior:
class: BehaviorZMQ
options:
address: 127.0.0.1
linearization mode:
dimension: 0
speed threshold:
class: SpeedThreshold
options:
threshold dev: 10
smooth time: 2 seconds
linearized speed: true
decoding filter:
class: Event2State
options:
target event: "crossed"
encoding filter:
class: Event2State
options:
target event: "not crossed"
# Decoding pipeline
raw:
class: OpenEphysZMQ
options:
port: 3335
nchannels: 384
splitter:
class: Distributor
options:
distribution mode: slots
channelmap file: //:local/decoding_model/sensormap.yaml
filter(0-7):
class: MultiChannelFilter
options:
filter:
type: biquad
gain: 0.175014382674721
coefficients:
- [1.0, 2.0, 1.0, 1.0, -0.4116456379943422, 0.1208387236075018]
- [1.0, -2.0, 1.0, 1.0, -1.888701220483925, 0.8929613419279413]
spike_detector(0-7):
class: SpikeFeatures
options:
threshold: 50.0
invert_signal: true
peak lifetime: 0
features:
- amplitude
decoding buffer:
class: Rebuffer
options:
buffer size: 0.1 seconds
likelihoods(0-7):
class: MultiLikelihoodSource
options:
decoding size: 0.1
decoder:
class: LikelihoodsMerger
## Encoding pipeline
encoding feature:
class: SpatialFeatures
options:
features:
- linearized position
encoding:
class: OnlineEncoder
options:
model path: //:local/decoding_model/model_empty
save model: true
model training: true
update model: 10
saver:
class: FileSerializer
options:
format: full
encoding: yaml
connections:
## Decoder
- raw = splitter
- splitter.data.(0-47) = filter0.data.(0-47)
- splitter.data.(48-95) = filter1.data.(0-47)
- splitter.data.(96-143) = filter2.data.(0-47)
- splitter.data.(144-191) = filter3.data.(0-47)
- splitter.data.(192-239) = filter4.data.(0-47)
- splitter.data.(240-287) = filter5.data.(0-47)
- splitter.data.(288-335) = filter6.data.(0-47)
- splitter.data.(336-383) = filter7.data.(0-47)
- filter(0-7).data.(0-47) = spike_detector(0-7).data.(0-47)
- spike_detector(0-7).data.(0-47) = likelihoods(0-7).data.(0-47)
- likelihoods(0-7).loglikelihood.(0-47) = decoder.loglikelihood.(0-383)
- decoder = saver
## Speed threshold
- behavior.data = speed threshold
- speed threshold.events = decoding filter
- speed threshold.events = encoding filter
- spike_detector(0-7).data.(0-47) = encoding feature.spike features.(0-383)
- behavior.data = encoding feature.spatial features
- encoding feature.features.(0-383) = encoding.data.(0-383)
states:
- [decoding filter.enabled, likelihoods(0-7).to decode]
- [decoding filter.enabled, encoder.to encode]
- [encoding.likelihoods, likelihoods(0-7).likelihoods]
- [encoding.decoder, decoder.decoder]