Programmatic modification of widget configuration

[ ]:
from vitessce import (
    VitessceConfig,
    Component as cm,
    CoordinationType as ct,
    OmeTiffWrapper,
    MultiImageWrapper,
    CoordinationLevel as CL,
    ObsSegmentationsOmeTiffWrapper,
    ImageOmeTiffWrapper,
    get_initial_coordination_scope_prefix,
)
import random
[ ]:
vc = VitessceConfig(schema_version="1.0.16")
dataset = vc.add_dataset(name='Spraggins').add_object(
    ImageOmeTiffWrapper(
        img_url="https://storage.googleapis.com/vitessce-demo-data/kpmp-f2f-march-2023/S-1905-017737/S-1905-017737_PAS_2of2_bf.ome.tif",
        offsets_url="https://storage.googleapis.com/vitessce-demo-data/kpmp-f2f-march-2023/S-1905-017737/S-1905-017737_PAS_2of2_bf.offsets.json"
    )
).add_object(
    ObsSegmentationsOmeTiffWrapper(
        img_url="https://storage.googleapis.com/vitessce-demo-data/kpmp-f2f-march-2023/S-1905-017737/S-1905-017737_PAS_2of2.ome.tif",
        offsets_url="https://storage.googleapis.com/vitessce-demo-data/kpmp-f2f-march-2023/S-1905-017737/S-1905-017737_PAS_2of2.offsets.json",
        obs_types_from_channel_names=True
    )
)

spatial = vc.add_view("spatialBeta", dataset=dataset)
lc = vc.add_view("layerControllerBeta", dataset=dataset)

vc.link_views_by_dict([spatial, lc], {
    "imageLayer": CL([
        {
          "photometricInterpretation": "RGB"
        }
    ]),
}, meta=True, scope_prefix=get_initial_coordination_scope_prefix("A", "image"))

vc.layout(spatial | lc);
[ ]:
vw = vc.widget(remount_on_uid_change=False)
vw
[ ]:
# Inspect the current configuration value.
# This is a dict in the JSON-based format https://vitessce.io/docs/view-config-json/
vw.config
[ ]:
# Programatically set a different zoom level and toggle the visibility/color of different segmentation layers:
vw.config = {
    **vw.config,
    # Need to provide a fresh "uid" value.
    # This will tell Vitessce that the contents should be diff-ed against the previous config.
    "uid": f"new_config_{random.random()}",
    "coordinationSpace": {
      # Information about the coordination space can be found at https://vitessce.io/docs/coordination-types/
      **vw.config["coordinationSpace"],
      "spatialZoom": {
          **vw.config["coordinationSpace"]["spatialZoom"],
          "A": -8
      },
      "spatialChannelVisible": {
          **vw.config["coordinationSpace"]["spatialChannelVisible"],
          "init_A_obsSegmentations_0": True,
          "init_A_obsSegmentations_1": False,
          "init_A_obsSegmentations_2": False,
          "init_A_obsSegmentations_3": False
      },
      "spatialChannelColor": {
          **vw.config["coordinationSpace"]["spatialChannelColor"],
          "init_A_obsSegmentations_0": [255, 0, 0],
      }
  }
}