-module(gleam_synapses@model@net_elems@neuron@neuron_serialized). -compile(no_auto_import). -export([serialized/1, deserialized/1, json_encoded/1, json_decoder/0]). -export_type([neuron_serialized/0]). -type neuron_serialized() :: {neuron_serialized, binary(), list(float())}. -spec serialized(gleam_synapses@model@net_elems@neuron@neuron:neuron()) -> neuron_serialized(). serialized(Neuron) -> {neuron_serialized, gleam_synapses@model@net_elems@activation@activation_serialized:serialized( erlang:element(2, Neuron) ), gleam_zlists:to_list(erlang:element(3, Neuron))}. -spec deserialized(neuron_serialized()) -> gleam_synapses@model@net_elems@neuron@neuron:neuron(). deserialized(Neuron_serialized) -> {neuron, gleam_synapses@model@net_elems@activation@activation_serialized:deserialized( erlang:element(2, Neuron_serialized) ), gleam_zlists:of_list(erlang:element(3, Neuron_serialized))}. -spec json_encoded(neuron_serialized()) -> gleam@json:json(). json_encoded(Neuron_serialized) -> gleam@json:object( [{<<"activationF"/utf8>>, gleam_synapses@model@net_elems@activation@activation_serialized:json_encoded( erlang:element(2, Neuron_serialized) )}, {<<"weights"/utf8>>, gleam@json:array( erlang:element(3, Neuron_serialized), fun gleam@json:float/1 )}] ). -spec json_decoder() -> fun((gleam@dynamic:dynamic()) -> {ok, neuron_serialized()} | {error, list(gleam@dynamic:decode_error())}). json_decoder() -> gleam@dynamic:decode2( fun(A, B) -> {neuron_serialized, A, B} end, gleam@dynamic:field( <<"activationF"/utf8>>, gleam_synapses@model@net_elems@activation@activation_serialized:json_decoder( ) ), gleam@dynamic:field( <<"weights"/utf8>>, gleam@dynamic:list(fun gleam@dynamic:float/1) ) ).