コード例 #1
0
        private static Offset <ObserverResult> BuildObserverOffset(FlatBufferBuilder builder, ObserverDataContainer observer)
        {
            var neuronId = NeuronId.CreateNeuronId(builder, observer.Definition.NeuronIndex,
                                                   observer.Definition.RegionIndex);
            var observerType = builder.CreateString(observer.Definition.Type);

            var observerOffset = Observer.CreateObserver(builder, neuronId, observerType);

            VectorOffset?metadataOffset = null;

            if (observer.Data.Metadata != null)
            {
                metadataOffset = ObserverResult.CreateMetadataVector(builder, observer.Data.Metadata);
            }

            VectorOffset?plainDataOffset = null;

            if (observer.Data.PlainData != null)
            {
                plainDataOffset = ObserverResult.CreatePlainDataVector(builder, observer.Data.PlainData);
            }

            VectorOffset?floatDataOffset = null;

            if (observer.Data.FloatData != null)
            {
                floatDataOffset = ObserverResult.CreateFloatDataVector(builder, observer.Data.FloatData);
            }

            ObserverResult.StartObserverResult(builder);

            ObserverResult.AddObserver(builder, observerOffset);

            if (metadataOffset.HasValue)
            {
                ObserverResult.AddMetadata(builder, metadataOffset.Value);
            }

            if (plainDataOffset.HasValue)
            {
                ObserverResult.AddPlainData(builder, plainDataOffset.Value);
            }

            if (floatDataOffset.HasValue)
            {
                ObserverResult.AddFloatData(builder, floatDataOffset.Value);
            }

            return(ObserverResult.EndObserverResult(builder));
        }
コード例 #2
0
        private void ApplyObservers(SimulationModel model, ModelResponse diff)
        {
            for (int i = 0; i < diff.ObserverResultsLength; i++)
            {
                ObserverResult observerData = diff.GetObserverResults(i);

                NeuronId neuronId   = observerData.Observer.NeuronId;
                var      definition = new ObserverDefinition(neuronId.Neuron, neuronId.Region, observerData.Observer.Type);

                model.Observers[definition] = new ObserverData(
                    CopyObserverArrayData(observerData.MetadataLength, (n => observerData.GetMetadata(n))),
                    observerData.GetPlainDataBytes()?.ToArray(),
                    CopyObserverArrayData(observerData.FloatDataLength, (n => observerData.GetFloatData(n))));
            }
        }