@@ -87,9 +87,6 @@ class HyperparametersSerde(
8787 def serialize (self , obj : spec .ModelSpec ) -> meridian_pb .Hyperparameters :
8888 """Serializes the given ModelSpec into a `Hyperparameters` proto."""
8989 hyperparameters_proto = meridian_pb .Hyperparameters (
90- media_effects_dist = media_effects_converter .to_proto (
91- obj .media_effects_dist
92- ),
9390 hill_before_adstock = obj .hill_before_adstock ,
9491 unique_sigma_for_each_geo = obj .unique_sigma_for_each_geo ,
9592 media_prior_type = paid_media_prior_type_converter .to_proto (
@@ -112,6 +109,15 @@ def serialize(self, obj: spec.ModelSpec) -> meridian_pb.Hyperparameters:
112109 ),
113110 enable_aks = obj .enable_aks ,
114111 )
112+ if isinstance (obj .media_effects_dist , str ):
113+ hyperparameters_proto .media_effects_dist = (
114+ media_effects_converter .to_proto (obj .media_effects_dist )
115+ )
116+ elif isinstance (obj .media_effects_dist , Mapping ):
117+ for channel , dist in obj .media_effects_dist .items ():
118+ hyperparameters_proto .media_effects_dist_by_channel .channel_media_effects_dists [
119+ channel
120+ ] = media_effects_converter .to_proto (dist )
115121 if obj .max_lag is not None :
116122 hyperparameters_proto .max_lag = obj .max_lag
117123
@@ -290,10 +296,24 @@ def deserialize(
290296 else :
291297 saturation_spec = sc .DEFAULT_SATURATION
292298
299+ if (
300+ serialized .HasField (sc .MEDIA_EFFECTS_DIST_BY_CHANNEL )
301+ and serialized .media_effects_dist_by_channel .channel_media_effects_dists
302+ ):
303+ channel_dists = (
304+ serialized .media_effects_dist_by_channel .channel_media_effects_dists
305+ )
306+ media_effects_dist = {
307+ channel : media_effects_converter .from_proto (dist )
308+ for channel , dist in channel_dists .items ()
309+ }
310+ else :
311+ media_effects_dist = media_effects_converter .from_proto (
312+ serialized .media_effects_dist
313+ )
314+
293315 return spec .ModelSpec (
294- media_effects_dist = media_effects_converter .from_proto (
295- serialized .media_effects_dist
296- ),
316+ media_effects_dist = media_effects_dist ,
297317 hill_before_adstock = serialized .hill_before_adstock ,
298318 max_lag = max_lag ,
299319 unique_sigma_for_each_geo = serialized .unique_sigma_for_each_geo ,
0 commit comments