From 8755f27a314ad399719296b3d539c0787e2a5605 Mon Sep 17 00:00:00 2001 From: measty <20169086+measty@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:32:55 +0000 Subject: [PATCH 1/5] fix test --- tests/test_app_bokeh.py | 12 ++++++------ tiatoolbox/visualization/bokeh_app/main.py | 9 ++++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/tests/test_app_bokeh.py b/tests/test_app_bokeh.py index 997a12f52..2978a4661 100644 --- a/tests/test_app_bokeh.py +++ b/tests/test_app_bokeh.py @@ -11,19 +11,19 @@ from pathlib import Path from typing import TYPE_CHECKING -import bokeh.models as bkmodels import matplotlib.pyplot as plt import numpy as np import pytest import requests -from bokeh.application import Application -from bokeh.application.handlers import FunctionHandler -from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from flask_cors import CORS from matplotlib import colormaps from PIL import Image from scipy.ndimage import label +import bokeh.models as bkmodels +from bokeh.application import Application +from bokeh.application.handlers import FunctionHandler +from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from tiatoolbox.data import _fetch_remote_sample from tiatoolbox.visualization.bokeh_app import main from tiatoolbox.visualization.tileserver import TileServer @@ -185,8 +185,8 @@ def test_get_level_by_extent() -> None: def test_roots(doc: Document) -> None: """Test that the document has the correct number of roots.""" - # should be 4 roots: main window, controls, slide_info, popup table - assert len(doc.roots) == 4 + # should be 5 roots: main window, controls, slide_info, popup, extra_layout + assert len(doc.roots) == 5 def test_config_loaded(data_path: pytest.TempPathFactory) -> None: diff --git a/tiatoolbox/visualization/bokeh_app/main.py b/tiatoolbox/visualization/bokeh_app/main.py index 4401295b1..035a4193c 100644 --- a/tiatoolbox/visualization/bokeh_app/main.py +++ b/tiatoolbox/visualization/bokeh_app/main.py @@ -16,6 +16,10 @@ import pandas as pd import requests import torch +from matplotlib import colormaps +from PIL import Image +from requests.adapters import HTTPAdapter, Retry + from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from bokeh.io import curdoc from bokeh.layouts import column, row @@ -60,9 +64,6 @@ from bokeh.models.tiles import WMTSTileSource from bokeh.plotting import figure from bokeh.util import token -from matplotlib import colormaps -from PIL import Image -from requests.adapters import HTTPAdapter, Retry # GitHub actions seems unable to find TIAToolbox unless this is here sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent)) @@ -1871,6 +1872,8 @@ def make_window(vstate: ViewerState) -> dict: # noqa: PLR0915 "hover": hover, "user": user, "color_bar": color_bar, + "ui_layout": ui_layout, + "extra_options": extra_options, } From b7715f6897022141763f0c55580f09907be75a61 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:59:17 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_app_bokeh.py | 8 ++++---- tiatoolbox/visualization/bokeh_app/main.py | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/test_app_bokeh.py b/tests/test_app_bokeh.py index 2978a4661..3444e5ade 100644 --- a/tests/test_app_bokeh.py +++ b/tests/test_app_bokeh.py @@ -11,19 +11,19 @@ from pathlib import Path from typing import TYPE_CHECKING +import bokeh.models as bkmodels import matplotlib.pyplot as plt import numpy as np import pytest import requests +from bokeh.application import Application +from bokeh.application.handlers import FunctionHandler +from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from flask_cors import CORS from matplotlib import colormaps from PIL import Image from scipy.ndimage import label -import bokeh.models as bkmodels -from bokeh.application import Application -from bokeh.application.handlers import FunctionHandler -from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from tiatoolbox.data import _fetch_remote_sample from tiatoolbox.visualization.bokeh_app import main from tiatoolbox.visualization.tileserver import TileServer diff --git a/tiatoolbox/visualization/bokeh_app/main.py b/tiatoolbox/visualization/bokeh_app/main.py index 035a4193c..fb5d7365a 100644 --- a/tiatoolbox/visualization/bokeh_app/main.py +++ b/tiatoolbox/visualization/bokeh_app/main.py @@ -16,10 +16,6 @@ import pandas as pd import requests import torch -from matplotlib import colormaps -from PIL import Image -from requests.adapters import HTTPAdapter, Retry - from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from bokeh.io import curdoc from bokeh.layouts import column, row @@ -64,6 +60,9 @@ from bokeh.models.tiles import WMTSTileSource from bokeh.plotting import figure from bokeh.util import token +from matplotlib import colormaps +from PIL import Image +from requests.adapters import HTTPAdapter, Retry # GitHub actions seems unable to find TIAToolbox unless this is here sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent)) From 4ca17e15063e283aa987b34b3e40b17e3ab65624 Mon Sep 17 00:00:00 2001 From: measty <20169086+measty@users.noreply.github.com> Date: Thu, 14 Mar 2024 23:34:31 +0000 Subject: [PATCH 3/5] change circle size->radius for bokeh 3.4 compatibility --- tiatoolbox/visualization/bokeh_app/main.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tiatoolbox/visualization/bokeh_app/main.py b/tiatoolbox/visualization/bokeh_app/main.py index 035a4193c..1ef130a0f 100644 --- a/tiatoolbox/visualization/bokeh_app/main.py +++ b/tiatoolbox/visualization/bokeh_app/main.py @@ -785,7 +785,7 @@ def overlay_alpha_cb(attr: str, old: float, new: float) -> None: # noqa: ARG001 def pt_size_cb(attr: str, old: float, new: float) -> None: # noqa: ARG001 """Callback to change the size of the points.""" - UI["vstate"].graph_node.size = 2 * new + UI["vstate"].graph_node.radius = 2 * new def edge_size_cb(attr: str, old: float, new: float) -> None: # noqa: ARG001 @@ -1790,7 +1790,14 @@ def make_window(vstate: ViewerState) -> dict: # noqa: PLR0915 box_source = ColumnDataSource({"x": [], "y": [], "width": [], "height": []}) pt_source = ColumnDataSource({"x": [], "y": []}) r = p.rect("x", "y", "width", "height", source=box_source, fill_alpha=0) - c = p.circle("x", "y", source=pt_source, color="red", size=5) + c = p.circle( + "x", + "y", + source=pt_source, + color="red", + radius=3, + radius_units="screen", + ) p.add_tools(BoxEditTool(renderers=[r], num_objects=1)) p.add_tools(PointDrawTool(renderers=[c])) p.add_tools(TapTool()) @@ -1802,7 +1809,13 @@ def make_window(vstate: ViewerState) -> dict: # noqa: PLR0915 # Add graph stuff node_source = ColumnDataSource({"x_": [], "y_": [], "node_color_": []}) edge_source = ColumnDataSource({"x0_": [], "y0_": [], "x1_": [], "y1_": []}) - vstate.graph_node = Circle(x="x_", y="y_", fill_color="node_color_", size=5) + vstate.graph_node = Circle( + x="x_", + y="y_", + fill_color="node_color_", + radius=3, + radius_units="screen", + ) vstate.graph_edge = Segment(x0="x0_", y0="y0_", x1="x1_", y1="y1_") p.add_glyph(node_source, vstate.graph_node) node_source.selected.on_change("indices", node_select_cb) From 1e8df6293fc15f2d69568cf3ddb629e3d7cf5970 Mon Sep 17 00:00:00 2001 From: measty <20169086+measty@users.noreply.github.com> Date: Fri, 15 Mar 2024 10:19:23 +0000 Subject: [PATCH 4/5] remove refs to size --- tests/test_app_bokeh.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_app_bokeh.py b/tests/test_app_bokeh.py index 3444e5ade..f5cefa6a4 100644 --- a/tests/test_app_bokeh.py +++ b/tests/test_app_bokeh.py @@ -11,19 +11,19 @@ from pathlib import Path from typing import TYPE_CHECKING -import bokeh.models as bkmodels import matplotlib.pyplot as plt import numpy as np import pytest import requests -from bokeh.application import Application -from bokeh.application.handlers import FunctionHandler -from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from flask_cors import CORS from matplotlib import colormaps from PIL import Image from scipy.ndimage import label +import bokeh.models as bkmodels +from bokeh.application import Application +from bokeh.application.handlers import FunctionHandler +from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from tiatoolbox.data import _fetch_remote_sample from tiatoolbox.visualization.bokeh_app import main from tiatoolbox.visualization.tileserver import TileServer @@ -627,7 +627,7 @@ def test_pt_size_spinner(doc: Document) -> None: pt_size_spinner.value = 10 # check that the point size has been set correctly assert ( - main.UI["p"].renderers[main.UI["vstate"].layer_dict["nodes"]].glyph.size + main.UI["p"].renderers[main.UI["vstate"].layer_dict["nodes"]].glyph.radius == 2 * 10 ) From 96ccd9786e8a0fee19299a925f83da246c90b11a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 10:21:11 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_app_bokeh.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_app_bokeh.py b/tests/test_app_bokeh.py index f5cefa6a4..f9527a735 100644 --- a/tests/test_app_bokeh.py +++ b/tests/test_app_bokeh.py @@ -11,19 +11,19 @@ from pathlib import Path from typing import TYPE_CHECKING +import bokeh.models as bkmodels import matplotlib.pyplot as plt import numpy as np import pytest import requests +from bokeh.application import Application +from bokeh.application.handlers import FunctionHandler +from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from flask_cors import CORS from matplotlib import colormaps from PIL import Image from scipy.ndimage import label -import bokeh.models as bkmodels -from bokeh.application import Application -from bokeh.application.handlers import FunctionHandler -from bokeh.events import ButtonClick, DoubleTap, MenuItemClick from tiatoolbox.data import _fetch_remote_sample from tiatoolbox.visualization.bokeh_app import main from tiatoolbox.visualization.tileserver import TileServer