{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "DMHMGyrF27ID"
},
"source": [
"# **Global Ocean Data Explorer: visualize Temperature, Salinity and Currents Velocity** #"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For an interactive version of this page please visit the Google Colab: \n",
"[
Open in Google Colab ](https://colab.research.google.com/drive/1qiBrQNdDPGqYXPp_tE-T04u1bF-aSuP9)
\n",
"(To open link in new tab press Ctrl + click)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively this notebook can be opened with Binder by following the link:\n",
"[Global Ocean Data Explorer: visualize Temperature, Salinity and Currents Velocity](https://mybinder.org/v2/gh/s4oceanice/literacy.s4oceanice/main?urlpath=%2Fdoc%2Ftree%2Fnotebooks_binder%2Foceanice_cora_analysis.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AaGHvW_DpeS9"
},
"source": [
"**Purpose**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "22Ya3diN3XqI"
},
"source": [
"The Southern Ocean plays a central role in regulating Earth's climate by storing heat and carbon, driving global ocean circulation, and modulating sea level through its interactions with the Antarctic Ice Sheet. Understanding these complex ocean-ice-climate interactions is critical for improving climate projections and policy responses.\n",
"As part of the OCEAN ICE project, which aims to reduce uncertainties in future sea level rise and climate predictions by improving our knowledge of Antarctic and Southern Ocean processes, this Colab notebook serves as an interactive tool for exploring **global oceanographic data**.\n",
"This tool is particularly useful for:\n",
"\n",
"•\tExploring **spatial patterns** in the ocean.\n",
"\n",
"•\tInvestigating **surface and subsurface currents**.\n",
"\n",
"•\tAccessing **oceanographic conditions at specific coordinates**.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZDTGrNi0pmow"
},
"source": [
"**Data sources**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "-vTfl6HtPqup"
},
"source": [
"This tool is powered by data from the **GLORYS12V1 global ocean reanalysis**, developed by the Copernicus Marine Service (CMEMS). It provides a detailed reconstruction of ocean conditions around the world from 1993 to the present.\n",
"\n",
"The dataset combines advanced ocean models with a wide range of real-world observations — including **satellite data (like sea level and surface temperature), sea ice measurements and in-situ temperature and salinity profiles** collected by ships and floats. These observations are blended to produce the most accurate possible picture of the ocean over time.\n",
"\n",
"Key features of this data:\n",
"\n",
"* High resolution: ~8 km horizontal resolution and 50 depth levels.\n",
"* Daily and monthly values for temperature, salinity, currents, sea level and sea ice.\n",
"* Based on the NEMO ocean model and driven by atmospheric data from the European Centre for Medium-Range Weather Forecasts (ECMWF).\n",
"\n",
"The data used in this Notebook are hosted into: https://er1.s4oceanice.eu/erddap/griddap/GLORYS12V1_sea_floor_potential_temp.html\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WD0HOyGMpwFM"
},
"source": [
"**Instructions to use this Notebook**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "U3cF9FWa4ssX"
},
"source": [
"Run each code cell by clicking the **Play button** (▶️) on the left side of each grey code block. This will execute the code in order and allow all features to work properly."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "68eqoABcp06o"
},
"source": [
"**Explaining the code**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pAPz_A4rpXfA"
},
"source": [
"\n",
"\n",
"**1. Install and import required libraries and set data source URLs**\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9CGF7eEg_EYZ"
},
"source": [
"This section installs all the necessary libraries into the Colab environment. These libraries are required for displaying interactive maps, creating user interface elements like sliders and dropdowns and visualizing oceanographic data with plots."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "cef293b1"
},
"source": [
"The following libraries are used in this notebook:\n",
"\n",
"\n",
"* [**requests**](https://docs.python-requests.org/en/latest/)\n",
"* [**xml.etree.ElementTree**](https://docs.python.org/3/library/xml.etree.elementtree.html)\n",
"* [**pandas**](https://pandas.pydata.org/docs/)\n",
"* [**io.BytesIO**](https://docs.python.org/3/library/io.html#io.BytesIO)\n",
"* [**traitlets**](https://traitlets.readthedocs.io/en/stable/)\n",
"* [**ipyleaflet**](https://ipyleaflet.readthedocs.io/en/latest/)\n",
"* [**ipywidgets**](https://ipywidgets.readthedocs.io/en/latest/)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "M_3GdBYZ_td6"
},
"source": [
"Then it sets the **endpoints for downloading real-time, high-resolution ocean data from the GLORYS12V1 dataset** hosted on the ERDDAP server.\n",
"\n",
"**Note**: This cell has to be runned once at the beginning so the rest of the notebook can use these tools and connect to the data source."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"id": "995d63a4"
},
"outputs": [],
"source": [
"# @title\n",
"import requests\n",
"import xml.etree.ElementTree as ET\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from io import BytesIO\n",
"from traitlets import Unicode\n",
"from ipyleaflet import (\n",
" Map,\n",
" Marker,\n",
" basemaps,\n",
" projections,\n",
" WMSLayer,\n",
" Popup,\n",
" Icon,\n",
" AwesomeIcon,\n",
" ImageOverlay,\n",
")\n",
"from ipywidgets import (\n",
" IntSlider,\n",
" HBox,\n",
" Layout,\n",
" Output,\n",
" VBox,\n",
" HTML,\n",
" Label,\n",
" Dropdown\n",
")\n",
"from IPython.display import display, clear_output\n",
"\n",
"ERRDAP_SLA_URL = 'https://er1.s4oceanice.eu/erddap/wms/GLORYS12V1_sea_floor_potential_temp/request?service=WMS&request=GetCapabilities&version=1.3.0'\n",
"BASE_DATA_URL = 'https://er1.s4oceanice.eu/erddap/griddap/GLORYS12V1_sea_floor_potential_temp.csv?'"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KspWf9EJqRNA"
},
"source": [
"\n",
"**3. Fetch and parse available layers, dates and depths**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3UsPdnG6BGzo"
},
"source": [
"This section dynamically prepares the list of:\n",
"\n",
"* **Available variables (temperature, salinity, currents)**\n",
"* **Time steps (dates)**\n",
"* **Depths (elevation levels)**\n",
"\n",
"from the remote GLORYS12V1 ocean dataset, allowing the rest of the notebook to automatically adapt to the actual contents of the server."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"id": "dbe649e0"
},
"outputs": [],
"source": [
"# @title\n",
"get_capabilities = requests.get(ERRDAP_SLA_URL)\n",
"\n",
"if get_capabilities.status_code == 200:\n",
" root = ET.fromstring(get_capabilities.content)\n",
"\n",
" for elem in root.findall(\".//{http://www.opengis.net/wms}Dimension\"):\n",
" if 'name' in elem.attrib and elem.attrib['name'] == 'time':\n",
" obs_dates = elem.text.strip().split(',')\n",
" elif 'name' in elem.attrib and elem.attrib['name'] == 'elevation':\n",
" obs_elev = elem.text.strip().split(',')\n",
" layers = {}\n",
" layers_to_display = []\n",
" layers_to_call = []\n",
" for name_tag in root.findall(\".//{http://www.opengis.net/wms}Name\"):\n",
" if name_tag.text and name_tag.text.startswith(\"GLORYS12V1\"):\n",
" if name_tag.text.endswith(\"thetao\"):\n",
" layers[name_tag.text] = 'Temperature'\n",
" elif name_tag.text.endswith(\"so\"):\n",
" layers[name_tag.text] = 'Salinity'\n",
" elif name_tag.text.endswith(\"uo\"):\n",
" layers[name_tag.text] = 'U-Velocity'\n",
" elif name_tag.text.endswith(\"vo\"):\n",
" layers[name_tag.text] = 'V-Velocity'\n",
" layers_to_display.append(name_tag.text)\n",
" # Populate layers_to_call with the part after the last colon\n",
" if ':' in name_tag.text:\n",
" layers_to_call.append(name_tag.text.split(':')[-1])\n",
" else:\n",
" layers_to_call.append(name_tag.text)\n",
"else:\n",
" print('ERROR: ', get_capabilities.status_code)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "19MvAeXOqdzP"
},
"source": [
"\n",
"**4. Define function to extract layer type and fetch data**\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JkEzxzdTaokm"
},
"source": [
"Thus section builds the logic engine of this Notebook.\n",
"\n",
"When the user select a date, depth, and variable using the sliders in the interface below and then click on a point in the ocean on the map as requested, the code below reacts to those selections, loads the selected layer onto the map, show the exact ocean data at that location and plot a time series of how that variable behaved over one year at that depth and location.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"id": "d14af114"
},
"outputs": [],
"source": [
"# @title\n",
"def get_layer_type(selected_layer):\n",
" if selected_layer:\n",
" stop_char = ':'\n",
" res = ''\n",
" for c in reversed(selected_layer):\n",
" if c == stop_char:\n",
" break\n",
" res = c + res\n",
" return res\n",
" return None\n",
"\n",
"\n",
"def update_data():\n",
" global m # Declare m as global to modify the map object\n",
" if coordinates is not None and selected_time is not None and selected_elev is not None and selected_layer is not None:\n",
" layer_type = get_layer_type(selected_layer)\n",
" if layer_type:\n",
" # Convert selected_elev to a number and take the absolute value *only* for the data API call\n",
" try:\n",
" elev_for_data_api = abs(float(selected_elev))\n",
" except ValueError:\n",
" with data_output:\n",
" clear_output(wait=True)\n",
" print(f\"Error: Could not convert elevation '{selected_elev}' to a number for the data API call.\")\n",
" return # Exit the function if conversion fails\n",
"\n",
"\n",
" # Update the WMS layer on the map using the original selected_elev\n",
" new_wms_url = f'https://er1.s4oceanice.eu/erddap/wms/GLORYS12V1_sea_floor_potential_temp/request?&elevation={selected_elev}&time={selected_time}'\n",
" new_wms_layer_name = selected_layer\n",
"\n",
" # Find and remove the existing WMS layer based on URL and layers\n",
" existing_wms_layer = None\n",
" # Iterate over a copy of the list to avoid issues during removal\n",
" for layer in list(m.layers):\n",
" if isinstance(layer, WMSLayer):\n",
" # Check if the URL contains the base WMS service URL\n",
" if layer.url.startswith('https://er1.s4oceanice.eu/erddap/wms/GLORYS12V1_sea_floor_potential_temp/request?'):\n",
" existing_wms_layer = layer\n",
" break\n",
"\n",
" if existing_wms_layer:\n",
" m.remove_layer(existing_wms_layer)\n",
" # print(\"Removed existing WMS layer.\") # Debugging print\n",
"\n",
"\n",
" # Add the new WMS layer\n",
" new_wms_layer = WMSLayer(\n",
" url=new_wms_url,\n",
" layers=f'{new_wms_layer_name},Coastlines,Nations,States',\n",
" format='image/png',\n",
" transparent=True,\n",
" crs={'name': 'EPSG:4326'},\n",
" )\n",
" m.add_layer(new_wms_layer)\n",
" # print(\"Added new WMS layer.\") # Debugging print\n",
"\n",
"\n",
" # Fetch and display the data for the selected coordinates using the positive elevation value\n",
" api_url = f'{BASE_DATA_URL}{layer_type}%5B({selected_time}):1:({selected_time})%5D%5B({elev_for_data_api}):1:({elev_for_data_api})%5D%5B({coordinates[0]}):1:({coordinates[0]})%5D%5B({coordinates[1]}):1:({coordinates[1]})%5D'\n",
" graph_url = f\"https://er1.s4oceanice.eu/erddap/griddap/GLORYS12V1_sea_floor_potential_temp.csv?{layer_type}%5B(1993-01-16T12:00:00Z):1:(1993-12-16T12:00:00Z)%5D%5B({elev_for_data_api}):1:({elev_for_data_api})%5D%5B({coordinates[0]}):1:({coordinates[0]})%5D%5B({coordinates[1]}):1:({coordinates[1]})%5D\"\n",
"\n",
"\n",
" with data_output: # Use the dedicated data_output widget\n",
" clear_output(wait=True)\n",
" try:\n",
" get_data_from_coords = requests.get(api_url)\n",
" get_graph_data = requests.get(graph_url)\n",
"\n",
"\n",
" if get_data_from_coords.status_code == 200 and get_graph_data.status_code == 200:\n",
" df = pd.read_csv(BytesIO(get_data_from_coords.content))\n",
" df_graph = pd.read_csv(BytesIO(get_graph_data.content))\n",
" print(\"Data received:\")\n",
" print(df) # Print DataFrame to data_output\n",
"\n",
" # Plotting logic\n",
" # Convert the 'time' column to datetime objects, specifying the format\n",
" df_graph['time'] = pd.to_datetime(df_graph['time'], format='%Y-%m-%dT%H:%M:%SZ', errors='coerce')\n",
"\n",
" # Assuming the first row is header information we want to skip\n",
" # and the actual data starts from the second row (index 1)\n",
" # Also assuming the column for the value to plot is the last one\n",
" data_col_name = df_graph.columns[-1]\n",
" df_plot_data = df_graph.iloc[1:].copy() # Make a copy to avoid SettingWithCopyWarning\n",
"\n",
" # Convert the data column to numeric, coercing errors to NaN\n",
" df_plot_data[data_col_name] = pd.to_numeric(df_plot_data[data_col_name], errors='coerce')\n",
"\n",
" # Drop rows where the data column is NaN\n",
" df_plot_data.dropna(subset=[data_col_name], inplace=True)\n",
"\n",
" # Check if all values in the data column are NaN after dropping rows with NaN\n",
" with plot_output: # Use the dedicated plot_output widget\n",
" clear_output(wait=True)\n",
" if df_plot_data[data_col_name].isnull().all():\n",
" print(\"Data not available for the selected location and depth. Please ensure you have clicked on a water area on the map.\")\n",
" else:\n",
" fig, ax = plt.subplots(figsize=(12, 6)) # Get figure and axes objects\n",
" ax.plot(df_plot_data['time'], df_plot_data[data_col_name])\n",
" ax.set_xlabel('Time')\n",
"\n",
" # Get the user-friendly layer name from the layers dictionary\n",
" user_friendly_layer_name = data_col_name # Default to data_col_name if not found\n",
" for key, value in layers.items():\n",
" if key.endswith(f':{data_col_name}'):\n",
" user_friendly_layer_name = value\n",
" break\n",
"\n",
" ax.set_ylabel(user_friendly_layer_name)\n",
" ax.set_title(f'Time Series of {user_friendly_layer_name} at Selected Location and Depth')\n",
" ax.grid(True)\n",
" display(fig) # Display the figure in plot_output\n",
" plt.close(fig) # Close the figure to prevent it from displaying elsewhere\n",
"\n",
" else:\n",
" with plot_output: # Clear plot output if data fetch fails\n",
" clear_output(wait=True)\n",
" print('ERROR fetching data from one or both URLs:')\n",
" if get_data_from_coords.status_code != 200:\n",
" print('Data URL Error:', get_data_from_coords.status_code)\n",
" print(get_data_from_coords.text)\n",
" if get_graph_data.status_code != 200:\n",
" print('Graph URL Error:', get_graph_data.status_code)\n",
" print(get_graph_data.text)\n",
"\n",
" except requests.exceptions.RequestException as e:\n",
" with data_output:\n",
" clear_output(wait=True)\n",
" print(f\"An error occurred during the data request: {e}\")\n",
" with plot_output: # Clear plot output if data fetch fails\n",
" clear_output(wait=True)\n",
"\n",
" else:\n",
" with data_output:\n",
" clear_output(wait=True)\n",
" with plot_output: # Clear plot output if layer type is not determined\n",
" clear_output(wait=True)\n",
" print(\"Could not determine layer type.\")\n",
" else:\n",
" # Clear output when inputs are not complete\n",
" with data_output:\n",
" clear_output(wait=True)\n",
" with plot_output: # Clear plot output when inputs are not complete\n",
" clear_output(wait=True)\n",
" print(\"Please ensure a location is selected on the map, and time, elevation, and layer are available.\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "h1k39WnUqk2l"
},
"source": [
"\n",
"**5. Create time, depth and variable selection widgets**\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BJkp1V7TEATl"
},
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "g9f2WZPcR-5X"
},
"source": [
"This section builds the user interface, including:\n",
"\n",
"* A slider for **date selection**.\n",
"* A slider for **depth selection**.\n",
"* A dropdown for choosing **which variable to display**.\n",
"\n",
"This part of the code works togheter with the last one above. The difference is that the code above respond to the settings created below by the users.\n",
"\n",
"\n",
"\n",
"\n",
"**Note:** be sure to drag the selector through the slider and to not just clicking on the bar in order to select the value you want."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 145,
"referenced_widgets": [
"92cc3235b8cd49178d99e4bcc4de1231",
"ee3d13599884491982ea853468802a13",
"23336c6fc3834adea027a41b889c2831",
"807e0636b917464eb26bfc014332ed8d",
"092bd037b679497d83f3fc2945708ec4",
"fa87e02dc6e642f98fb8ca7c767ab60d",
"b5169380a7a5471098a630c13021372f",
"74fd3ae6f9464b8ba0d0bda98c7db400",
"04893ab80fd0470982e9cbcdb4638297",
"051dbf8aa94740b488271d80186d120d",
"8f92ebdd5d07417d8df3c46a69a969ed",
"f5f8ef83a1dc49f5a653b13016d26bbd",
"589ccf7d74e8492a85510a953f2d090a",
"2aaa9653b0d04befa22c367b451419f0",
"80a9f0897f3b4767bba2e65087ea9cdb",
"985fc612d1444845a3f8f5276b010b3e",
"e93596ac3e48440f811557a23ae95aff",
"c164d8777ffd4c44b9e8277e7e4eaca9",
"d1d6dc4ff07d49a1a09dc486d363265e",
"dfa8a76ecb264da1b1c4ccc25a8faa59",
"cb6c17581d8e459db73cd6e95903d597",
"46f799371d564db0a59e927190476e7b",
"c967b448574242f7af9ad7371348b7b5",
"f73ea091eef842cfb9ffd32997dd6e56",
"a4e6ff19e67b4dc9a41caeeec3ed73cc",
"cb1a4bd4a34e480190c201c1ca713dc2",
"07d229d9349b43829e8f49035c184691",
"38768b083685419891cb11acd80bd618",
"297f31e93d1046dab59f8c1b9c485ab9",
"d39e3e088708436593c72bf4f8000770"
]
},
"id": "a3189d8e",
"outputId": "d091af4c-2833-4a2b-91f0-24b8291c1e35"
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "92cc3235b8cd49178d99e4bcc4de1231",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(Label(value='Date: '), IntSlider(value=1, continuous_update=False, max=12, min=1, readout=False…"
]
},
"metadata": {
"application/vnd.jupyter.widget-view+json": {
"colab": {
"custom_widget_manager": {
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
}
}
}
},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "f5f8ef83a1dc49f5a653b13016d26bbd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"HBox(children=(Label(value='Depth (m): '), IntSlider(value=1, continuous_update=False, max=50, min=1, readout=…"
]
},
"metadata": {
"application/vnd.jupyter.widget-view+json": {
"colab": {
"custom_widget_manager": {
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
}
}
}
},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d39e3e088708436593c72bf4f8000770",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"VBox(children=(Label(value='Choose a layer to display on the map:'), Dropdown(description='Select Layer:', opt…"
]
},
"metadata": {
"application/vnd.jupyter.widget-view+json": {
"colab": {
"custom_widget_manager": {
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
}
}
}
},
"output_type": "display_data"
}
],
"source": [
"# @title\n",
"# Time Slider\n",
"selected_time = obs_dates[0] if obs_dates else None\n",
"time_label = Label(value=str(selected_time))\n",
"\n",
"def updating_time_values(change):\n",
" global selected_time\n",
" # Ensure the index is within bounds\n",
" if obs_dates and 0 <= (change.new)-1 < len(obs_dates):\n",
" selected_time = obs_dates[(change.new)-1]\n",
" time_label.value = str(selected_time)\n",
" update_data() # Call update_data here\n",
" else:\n",
" selected_time = None\n",
" time_label.value = \"Invalid Index or No Data\"\n",
"\n",
"\n",
"time_slider = IntSlider(min=1, max=len(obs_dates), readout = False, continuous_update=False) if obs_dates else Label(\"No time data available\")\n",
"if obs_dates:\n",
" time_slider.observe(updating_time_values, names='value')\n",
" display(HBox([Label('Date: '), time_slider, time_label]))\n",
"else:\n",
" display(time_slider)\n",
"\n",
"\n",
"# Elevation Slider\n",
"selected_elev = obs_elev[0] if obs_elev else None\n",
"elev_label = Label(value=str(selected_elev))\n",
"\n",
"def updating_elev_values(change):\n",
" global selected_elev\n",
" # Ensure the index is within bounds\n",
" if obs_elev and 0 <= (change.new)-1 < len(obs_elev):\n",
" selected_elev = obs_elev[(change.new)-1]\n",
" elev_label.value = str(selected_elev)\n",
" update_data() # Call update_data here\n",
" else:\n",
" selected_elev = None\n",
" elev_label.value = \"Invalid Index or No Data\"\n",
"\n",
"\n",
"elev_slider = IntSlider(min=1, max=len(obs_elev), readout = False, continuous_update=False) if obs_elev else Label(\"No depth data available\")\n",
"if obs_elev:\n",
" elev_slider.observe(updating_elev_values, names='value')\n",
" display(HBox([Label('Depth (m): '), elev_slider, elev_label]))\n",
"else:\n",
" display(elev_slider)\n",
"\n",
"\n",
"# Layer Dropdown\n",
"layer_dropdown = Dropdown(\n",
" options=layers.values(),\n",
" description='Select Layer:',\n",
" disabled=False,\n",
")\n",
"\n",
"selected_layer = list(layers.keys())[list(layers.values()).index(layer_dropdown.value)] if layers else None\n",
"\n",
"def update_selected_layer(change):\n",
" global selected_layer\n",
" selected_value = change['new']\n",
" # Find the key corresponding to the selected value\n",
" selected_layer = list(layers.keys())[list(layers.values()).index(selected_value)]\n",
" update_data() # Call update_data here\n",
"\n",
"layer_dropdown.observe(update_selected_layer, names='value')\n",
"\n",
"# Display the dropdown menu\n",
"display(VBox([Label('Choose a layer to display on the map:'), layer_dropdown]))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "148ggajwqskU"
},
"source": [
"\n",
"**6. Generate interactive map and handle click events**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JQ2BkGncofQ0"
},
"source": [
"This section creates the interactive map interface. The user can click anywhere on the map to select a location. A marker appears, and the coordinates are printed. The system will then:\n",
"* Update the map with the correct ocean data layer.\n",
"* Fetch and show the values (temperature, salinity, etc.).\n",
"* Plot a time series for that point and depth.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 527,
"referenced_widgets": [
"e63539bf3ae349c09911f6fd3ca5014d",
"b987ddc177f146b29a7d5f68b5b3fed0",
"d5a607aae05f4922b4364ccf91794d97",
"99f88a5a35de4f5e96927ab9d1fa3254",
"667bd00ffb094efdb3afab846d986387",
"99b1fd77ca6a4dda809e103be3b03913",
"4e0a2068eb0b40d4aa488e285857a8fa",
"631a39c4293d462eb07cd8015d7378f9",
"8bfae07031cd4e55a05aac1140b1aa30",
"70ea5cbb76684d49bc7e0184c58e5088",
"440774635c5d4e3db3f0b82cf0ab2316",
"9fe1cb1d8f0a4b6a9857368d00b7a34e",
"4a109a0c5c4e4398bece3ed1a758d9a6",
"8833c5ef41f94df69fab1af4fd1bd1b4"
]
},
"id": "1d8a8d54",
"outputId": "19dd21fa-173d-4e15-ab9f-d82ecabbedab"
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e63539bf3ae349c09911f6fd3ca5014d",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {
"application/vnd.jupyter.widget-view+json": {
"colab": {
"custom_widget_manager": {
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
}
}
}
},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "d5a607aae05f4922b4364ccf91794d97",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Map(center=[0, 0], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out_text'…"
]
},
"metadata": {
"application/vnd.jupyter.widget-view+json": {
"colab": {
"custom_widget_manager": {
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
}
}
}
},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "9fe1cb1d8f0a4b6a9857368d00b7a34e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {
"application/vnd.jupyter.widget-view+json": {
"colab": {
"custom_widget_manager": {
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
}
}
}
},
"output_type": "display_data"
}
],
"source": [
"# @title\n",
"# Map Generator\n",
"m = Map(\n",
" center=(0, 0),\n",
" zoom=1,\n",
" basemap = basemaps.Esri,\n",
" layout=Layout(width='80%', height='500px', margin='10px 0 0 0'),\n",
" crs = projections.EPSG4326,\n",
")\n",
"\n",
"# Output widget to display coordinates\n",
"output = Output()\n",
"display(output)\n",
"\n",
"# Output widget specifically for the DataFrame and plot\n",
"data_output = Output()\n",
"plot_output = Output(layout=Layout(width='80%', height='500px', margin='10px 0 0 0'))\n",
"\n",
"\n",
"# Variable to store the current marker and coordinates\n",
"current_marker = None\n",
"coordinates = None\n",
"\n",
"def handle_map_click(**kwargs):\n",
" global current_marker\n",
" global coordinates\n",
" if kwargs.get('type') == 'click':\n",
" coordinates = kwargs.get('coordinates')\n",
" with output:\n",
" clear_output()\n",
" print(f\"Selected coordinates: {coordinates}\")\n",
"\n",
" # Remove previous marker if it exists\n",
" if current_marker is not None:\n",
" m.remove_layer(current_marker)\n",
"\n",
" # Add a new marker at the clicked location\n",
" current_marker = Marker(location=coordinates)\n",
" m.add_layer(current_marker)\n",
" update_data() # Call update_data here after coordinates are set\n",
"\n",
"\n",
"m.on_interaction(handle_map_click)\n",
"\n",
"# This initial layer will be replaced when update_data is called by interacting with widgets/map\n",
"if layers and obs_dates and obs_elev:\n",
" initial_wms = WMSLayer(\n",
" url=f'https://er1.s4oceanice.eu/erddap/wms/GLORYS12V1_sea_floor_potential_temp/request?&elevation={selected_elev}&time={selected_time}',\n",
" layers=f'{selected_layer},Coastlines,Nations,States',\n",
" format='image/png',\n",
" transparent=True,\n",
" crs={'name': 'EPSG:4326'},\n",
" )\n",
" m.add(initial_wms)\n",
"\n",
"# Arrange the HBox (map and plot) and the data output vertically in a VBox\n",
"#VBox([m, data_output, plot_output])\n",
"\n",
"display(m)\n",
"display(data_output)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EPTAM_TdqzVY"
},
"source": [
"\n",
"7. Display plot output area\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iLmNX1tBo42l"
},
"source": [
"This section draws a graph in the notebook, so the users can see how the selected ocean variable changes over time at the clicked location."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"cellView": "form",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 527,
"referenced_widgets": [
"a4e5fd103b054c3bbb873fe23fba46b3",
"8833c5ef41f94df69fab1af4fd1bd1b4"
]
},
"id": "6tzKbQqu1HgR",
"outputId": "6a2c6b26-0b6f-4c9c-9082-2f4bcbb811df"
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "a4e5fd103b054c3bbb873fe23fba46b3",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output(layout=Layout(height='500px', margin='10px 0 0 0', width='80%'))"
]
},
"metadata": {
"application/vnd.jupyter.widget-view+json": {
"colab": {
"custom_widget_manager": {
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
}
}
}
},
"output_type": "display_data"
}
],
"source": [
"# @title\n",
"display(plot_output)"
]
}
],
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"04893ab80fd0470982e9cbcdb4638297": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "SliderStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "SliderStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "",
"handle_color": null
}
},
"051dbf8aa94740b488271d80186d120d": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"07d229d9349b43829e8f49035c184691": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "LabelModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "LabelModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "LabelView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_a4e6ff19e67b4dc9a41caeeec3ed73cc",
"placeholder": "",
"style": "IPY_MODEL_cb1a4bd4a34e480190c201c1ca713dc2",
"value": "Choose a layer to display on the map:"
}
},
"092bd037b679497d83f3fc2945708ec4": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"23336c6fc3834adea027a41b889c2831": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "IntSliderModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "IntSliderModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "IntSliderView",
"continuous_update": false,
"description": "",
"description_tooltip": null,
"disabled": false,
"layout": "IPY_MODEL_74fd3ae6f9464b8ba0d0bda98c7db400",
"max": 12,
"min": 1,
"orientation": "horizontal",
"readout": false,
"readout_format": "d",
"step": 1,
"style": "IPY_MODEL_04893ab80fd0470982e9cbcdb4638297",
"value": 1
}
},
"297f31e93d1046dab59f8c1b9c485ab9": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"2aaa9653b0d04befa22c367b451419f0": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "IntSliderModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "IntSliderModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "IntSliderView",
"continuous_update": false,
"description": "",
"description_tooltip": null,
"disabled": false,
"layout": "IPY_MODEL_d1d6dc4ff07d49a1a09dc486d363265e",
"max": 50,
"min": 1,
"orientation": "horizontal",
"readout": false,
"readout_format": "d",
"step": 1,
"style": "IPY_MODEL_dfa8a76ecb264da1b1c4ccc25a8faa59",
"value": 1
}
},
"38768b083685419891cb11acd80bd618": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DropdownModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DropdownModel",
"_options_labels": [
"Temperature",
"Salinity",
"U-Velocity",
"V-Velocity"
],
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "DropdownView",
"description": "Select Layer:",
"description_tooltip": null,
"disabled": false,
"index": 0,
"layout": "IPY_MODEL_c967b448574242f7af9ad7371348b7b5",
"style": "IPY_MODEL_f73ea091eef842cfb9ffd32997dd6e56"
}
},
"440774635c5d4e3db3f0b82cf0ab2316": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletMapStyleModel",
"state": {
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletMapStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"cursor": "grab"
}
},
"46f799371d564db0a59e927190476e7b": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"4a109a0c5c4e4398bece3ed1a758d9a6": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"4e0a2068eb0b40d4aa488e285857a8fa": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletMapStyleModel",
"state": {
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletMapStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"cursor": "move"
}
},
"589ccf7d74e8492a85510a953f2d090a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "LabelModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "LabelModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "LabelView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_e93596ac3e48440f811557a23ae95aff",
"placeholder": "",
"style": "IPY_MODEL_c164d8777ffd4c44b9e8277e7e4eaca9",
"value": "Depth (m): "
}
},
"631a39c4293d462eb07cd8015d7378f9": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletTileLayerModel",
"state": {
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletTileLayerModel",
"_view_count": null,
"_view_module": "jupyter-leaflet",
"_view_module_version": "^0.20",
"_view_name": "LeafletTileLayerView",
"attribution": "",
"base": true,
"bottom": true,
"bounds": null,
"detect_retina": false,
"loading": false,
"max_native_zoom": null,
"max_zoom": 18,
"min_native_zoom": null,
"min_zoom": 1,
"name": "",
"no_wrap": false,
"opacity": 1,
"options": [
"attribution",
"bounds",
"detect_retina",
"max_native_zoom",
"max_zoom",
"min_native_zoom",
"min_zoom",
"no_wrap",
"pm_ignore",
"tile_size",
"tms",
"zoom_offset"
],
"pane": "",
"pm_ignore": true,
"popup": null,
"popup_max_height": null,
"popup_max_width": 300,
"popup_min_width": 50,
"show_loading": false,
"snap_ignore": true,
"subitems": [],
"tile_size": 256,
"tms": false,
"url": "",
"visible": true,
"zoom_offset": 0
}
},
"667bd00ffb094efdb3afab846d986387": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletAttributionControlModel",
"state": {
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletAttributionControlModel",
"_view_count": null,
"_view_module": "jupyter-leaflet",
"_view_module_version": "^0.20",
"_view_name": "LeafletAttributionControlView",
"options": [
"position",
"prefix"
],
"position": "bottomright",
"prefix": "ipyleaflet"
}
},
"70ea5cbb76684d49bc7e0184c58e5088": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": "500px",
"justify_content": null,
"justify_items": null,
"left": null,
"margin": "10px 0 0 0",
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "80%"
}
},
"74fd3ae6f9464b8ba0d0bda98c7db400": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"807e0636b917464eb26bfc014332ed8d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "LabelModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "LabelModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "LabelView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_051dbf8aa94740b488271d80186d120d",
"placeholder": "",
"style": "IPY_MODEL_8f92ebdd5d07417d8df3c46a69a969ed",
"value": "1993-01-16T12:00:00Z"
}
},
"80a9f0897f3b4767bba2e65087ea9cdb": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "LabelModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "LabelModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "LabelView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_cb6c17581d8e459db73cd6e95903d597",
"placeholder": "",
"style": "IPY_MODEL_46f799371d564db0a59e927190476e7b",
"value": "-0.494025"
}
},
"8833c5ef41f94df69fab1af4fd1bd1b4": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": "500px",
"justify_content": null,
"justify_items": null,
"left": null,
"margin": "10px 0 0 0",
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": "80%"
}
},
"8bfae07031cd4e55a05aac1140b1aa30": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletWMSLayerModel",
"state": {
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletWMSLayerModel",
"_view_count": null,
"_view_module": "jupyter-leaflet",
"_view_module_version": "^0.20",
"_view_name": "LeafletWMSLayerView",
"attribution": null,
"base": false,
"bottom": true,
"bounds": null,
"crs": {
"name": "EPSG:4326"
},
"detect_retina": false,
"format": "image/png",
"layers": "GLORYS12V1_sea_floor_potential_temp:thetao,Coastlines,Nations,States",
"loading": false,
"max_native_zoom": null,
"max_zoom": 18,
"min_native_zoom": null,
"min_zoom": 0,
"name": "",
"no_wrap": false,
"opacity": 1,
"options": [
"attribution",
"bounds",
"detect_retina",
"format",
"layers",
"max_native_zoom",
"max_zoom",
"min_native_zoom",
"min_zoom",
"no_wrap",
"pm_ignore",
"styles",
"tile_size",
"tms",
"transparent",
"uppercase",
"zoom_offset"
],
"pane": "",
"pm_ignore": true,
"popup": null,
"popup_max_height": null,
"popup_max_width": 300,
"popup_min_width": 50,
"show_loading": false,
"snap_ignore": true,
"styles": "",
"subitems": [],
"tile_size": 256,
"tms": false,
"transparent": true,
"uppercase": false,
"url": "https://er1.s4oceanice.eu/erddap/wms/GLORYS12V1_sea_floor_potential_temp/request?&elevation=-0.494025&time=1993-01-16T12:00:00Z",
"visible": true,
"zoom_offset": 0
}
},
"8f92ebdd5d07417d8df3c46a69a969ed": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"92cc3235b8cd49178d99e4bcc4de1231": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_ee3d13599884491982ea853468802a13",
"IPY_MODEL_23336c6fc3834adea027a41b889c2831",
"IPY_MODEL_807e0636b917464eb26bfc014332ed8d"
],
"layout": "IPY_MODEL_092bd037b679497d83f3fc2945708ec4"
}
},
"985fc612d1444845a3f8f5276b010b3e": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"99b1fd77ca6a4dda809e103be3b03913": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletMapStyleModel",
"state": {
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletMapStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"cursor": "grab"
}
},
"99f88a5a35de4f5e96927ab9d1fa3254": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletZoomControlModel",
"state": {
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletZoomControlModel",
"_view_count": null,
"_view_module": "jupyter-leaflet",
"_view_module_version": "^0.20",
"_view_name": "LeafletZoomControlView",
"options": [
"position",
"zoom_in_text",
"zoom_in_title",
"zoom_out_text",
"zoom_out_title"
],
"position": "topleft",
"zoom_in_text": "+",
"zoom_in_title": "Zoom in",
"zoom_out_text": "-",
"zoom_out_title": "Zoom out"
}
},
"9fe1cb1d8f0a4b6a9857368d00b7a34e": {
"model_module": "@jupyter-widgets/output",
"model_module_version": "1.0.0",
"model_name": "OutputModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/output",
"_model_module_version": "1.0.0",
"_model_name": "OutputModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/output",
"_view_module_version": "1.0.0",
"_view_name": "OutputView",
"layout": "IPY_MODEL_4a109a0c5c4e4398bece3ed1a758d9a6",
"msg_id": "",
"outputs": []
}
},
"a4e5fd103b054c3bbb873fe23fba46b3": {
"model_module": "@jupyter-widgets/output",
"model_module_version": "1.0.0",
"model_name": "OutputModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/output",
"_model_module_version": "1.0.0",
"_model_name": "OutputModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/output",
"_view_module_version": "1.0.0",
"_view_name": "OutputView",
"layout": "IPY_MODEL_8833c5ef41f94df69fab1af4fd1bd1b4",
"msg_id": "",
"outputs": []
}
},
"a4e6ff19e67b4dc9a41caeeec3ed73cc": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b5169380a7a5471098a630c13021372f": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"b987ddc177f146b29a7d5f68b5b3fed0": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c164d8777ffd4c44b9e8277e7e4eaca9": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"c967b448574242f7af9ad7371348b7b5": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"cb1a4bd4a34e480190c201c1ca713dc2": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"cb6c17581d8e459db73cd6e95903d597": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d1d6dc4ff07d49a1a09dc486d363265e": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d39e3e088708436593c72bf4f8000770": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "VBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "VBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "VBoxView",
"box_style": "",
"children": [
"IPY_MODEL_07d229d9349b43829e8f49035c184691",
"IPY_MODEL_38768b083685419891cb11acd80bd618"
],
"layout": "IPY_MODEL_297f31e93d1046dab59f8c1b9c485ab9"
}
},
"d5a607aae05f4922b4364ccf91794d97": {
"model_module": "jupyter-leaflet",
"model_module_version": "^0.20",
"model_name": "LeafletMapModel",
"state": {
"_dom_classes": [],
"_model_module": "jupyter-leaflet",
"_model_module_version": "^0.20",
"_model_name": "LeafletMapModel",
"_view_count": null,
"_view_module": "jupyter-leaflet",
"_view_module_version": "^0.20",
"_view_name": "LeafletMapView",
"bottom": 506,
"bounce_at_zoom_limits": true,
"box_zoom": true,
"center": [
0,
0
],
"close_popup_on_click": true,
"controls": [
"IPY_MODEL_99f88a5a35de4f5e96927ab9d1fa3254",
"IPY_MODEL_667bd00ffb094efdb3afab846d986387"
],
"crs": {
"custom": false,
"name": "EPSG4326"
},
"default_style": "IPY_MODEL_99b1fd77ca6a4dda809e103be3b03913",
"double_click_zoom": true,
"dragging": true,
"dragging_style": "IPY_MODEL_4e0a2068eb0b40d4aa488e285857a8fa",
"east": 174.375,
"fullscreen": false,
"inertia": true,
"inertia_deceleration": 3000,
"inertia_max_speed": 1500,
"interpolation": "bilinear",
"keyboard": true,
"keyboard_pan_offset": 80,
"keyboard_zoom_offset": 1,
"layers": [
"IPY_MODEL_631a39c4293d462eb07cd8015d7378f9",
"IPY_MODEL_8bfae07031cd4e55a05aac1140b1aa30"
],
"layout": "IPY_MODEL_70ea5cbb76684d49bc7e0184c58e5088",
"left": 17,
"max_zoom": null,
"min_zoom": null,
"modisdate": "2025-09-09",
"north": 87.890625,
"options": [
"bounce_at_zoom_limits",
"box_zoom",
"center",
"close_popup_on_click",
"double_click_zoom",
"dragging",
"fullscreen",
"inertia",
"inertia_deceleration",
"inertia_max_speed",
"interpolation",
"keyboard",
"keyboard_pan_offset",
"keyboard_zoom_offset",
"max_zoom",
"min_zoom",
"prefer_canvas",
"scroll_wheel_zoom",
"tap",
"tap_tolerance",
"touch_zoom",
"world_copy_jump",
"zoom",
"zoom_animation_threshold",
"zoom_delta",
"zoom_snap"
],
"panes": {},
"prefer_canvas": false,
"right": 1008,
"scroll_wheel_zoom": false,
"south": -87.890625,
"style": "IPY_MODEL_440774635c5d4e3db3f0b82cf0ab2316",
"tap": true,
"tap_tolerance": 15,
"top": 6,
"touch_zoom": true,
"west": -174.0234375,
"window_url": "https://twzyt7209af-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab_20250908-060055_RC00_804364215",
"world_copy_jump": false,
"zoom": 1,
"zoom_animation_threshold": 4,
"zoom_delta": 1,
"zoom_snap": 1
}
},
"dfa8a76ecb264da1b1c4ccc25a8faa59": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "SliderStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "SliderStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "",
"handle_color": null
}
},
"e63539bf3ae349c09911f6fd3ca5014d": {
"model_module": "@jupyter-widgets/output",
"model_module_version": "1.0.0",
"model_name": "OutputModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/output",
"_model_module_version": "1.0.0",
"_model_name": "OutputModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/output",
"_view_module_version": "1.0.0",
"_view_name": "OutputView",
"layout": "IPY_MODEL_b987ddc177f146b29a7d5f68b5b3fed0",
"msg_id": "",
"outputs": []
}
},
"e93596ac3e48440f811557a23ae95aff": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ee3d13599884491982ea853468802a13": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "LabelModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "LabelModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "LabelView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_fa87e02dc6e642f98fb8ca7c767ab60d",
"placeholder": "",
"style": "IPY_MODEL_b5169380a7a5471098a630c13021372f",
"value": "Date: "
}
},
"f5f8ef83a1dc49f5a653b13016d26bbd": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_589ccf7d74e8492a85510a953f2d090a",
"IPY_MODEL_2aaa9653b0d04befa22c367b451419f0",
"IPY_MODEL_80a9f0897f3b4767bba2e65087ea9cdb"
],
"layout": "IPY_MODEL_985fc612d1444845a3f8f5276b010b3e"
}
},
"f73ea091eef842cfb9ffd32997dd6e56": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"fa87e02dc6e642f98fb8ca7c767ab60d": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}