Decoder avec encoder graph ========================== .. code:: yaml 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]