PathViewer API¶
PathViewer 3.0+¶
Base URL¶
https://omero.server/pathviewer/viewer
List of query string parameters¶
Name Type Description
----------------------------------------------------------------------------------
slide Number OMERO image id to show
q_image List Comma separated list of OMERO image ids to load
q_dataset Number OMERO dataset id from which to load images
tabs String Panel and active tab visibility settings
x Number View position X
y Number View position Y
t Number Timepoint
z Number Z section
zoom Number Zoom level
rotate Number Rotation angle in degrees
flip String Image flip. Accepted values:
h - horizontal
v - vertical
hv - both horizontal and vertical
c0, c1, ..., cn String Color settings for channels 0, 1, ..., n
r String Rendering mode. Accepted values:
color
greyscale
gc Number Channel to use in greyscale mode
roi Number ROI id to select and focus on initial load
Showing single image with PathViewer¶
<base_url>/#?slide=<image_id>
Loading specific images into Slides Panel¶
<base_url>/#?slide=<image_id>&q_image=<image_id>,<image_id>,...
Loading all images from a specific OMERO dataset into Slides Panel¶
<base_url>/#?slide=<image_id>&q_dataset=<dataset_id>
Selecting active user interface components¶
URL parameter format:
tabs=<Browse_panel_option><Properties_panel_option><Browse_panel_on_off><Properties_panel_on_off>
Available options:
* S - slide tab
* V - view options tab
* D - details tab
* R - rois tab
* L - data tab (only available when label image ROIs exist)
* b - hide browse panel
* p - hide properties panel
Example 1. Setting the browse panel tab to view options tab (V), and the properties panel to ROIs tab (R), and making both panels invisible:
<base_url>/#?slide=<image_id>&tabs=VRbp
Example 2. Setting browse panel tab to slide tab (S), and the right hand side panel to ROIs tab (R), and making the properties panel invisible:
<base_url>/#?slide=<image_id>&tabs=VRp
Setting image position and orientation¶
Example 1. Rotating the image by 15 degrees and flipping it horizontally:
<base_url>/#?slide=<image_id>&rotate=15&flip=h
Example 2. Rotating the image by 15 degrees and flipping it horizontally and vertically:
<base_url>/#?slide=<image_id>&rotate=15&flip=hv
Channel color settings¶
Values for channel color settings have the following format:
rccccccf-t
^^^^^^^^ ^
| | | +- Window max as hexadecimal number
| | +--- Window min as hexadecimal number
| +------ Color as six digit hexadecimal number
+---------- Render channel: 0=off, 1=on
Example: RGB image with blue channel turned off:
<base_url>/#?slide=<image_id>&c0=1FF00000-FF&c1=100FF000-FF&c2=00000FF0-FF
Note about PathViewer 2.x compatibility¶
Releases of PathViewer 3.0.x use values for y and zoom that are not backwards compatible, so URLs created with PathViewer 2.x do not show the same image area and zoom level in PathViewer 3.0.x.
URLs in PathViewer 3.1.x restore backwards compatibility with PathViewer 2.x URLs.
PathViewer 3.2+¶
PathViewer supports a number of shape properties that are not supported by the OME schema (https://www.openmicroscopy.org/Schemas/OME/2016-06/ome.xsd).
These properties are stored in an XML annotation with namespace glencoesoftware.com/pathviewer/roi/settings. The annotation value is JSON encoded and contains the following fields:
fontColor: Color used for shape label
labelPosition: Shape label position, one of “default”, “above”, “below”, “left”, “right”
label: Raw shape label text. The text property of the shape contains this value with all variables replaced with the measurement values current as of the last save.
Example:
{
"fontColor": "rgba(0,0,255,0.8)",
"labelPosition": "above",
"label": "Area {Area} {Width:px} {Height:px}"
}
PathViewer 3.1+¶
Saved grid view format¶
Grid views are saved in YAML format with the following structure:
dataset: null|<dataset_id>
rows: <1-4>
columns: <1-4>
images:
- <image_id>
- ...
slots:
- <viewer_settings>
- ...
The list of image identifiers under images determines which images are shown in the selection drop-down list. All images used in slots should be listed here.
The viewer settings under slots include all parameters also available in the query string. Only slide is mandatory.
If there are fewer slots defined than available positions given by rows and columns, extra positions will remain empty.
If there are more slots defined than available positions given by rows and columns, paging will be enabled to navigate through all slots.
Example:
dataset: null
rows: 2
columns: 2
images:
- 156067
- 156046
- 156127
slots:
- slide: 156067
tabs: SDbp
x: 45696
y: 17173
t: 0
z: 0
zoom: 1.704
rotate: 0
c0: 1FF00000-FF
c1: 100FF000-FF
c2: 10000FF0-FF
gc: 0
- slide: 156046
tabs: SDbp
x: 34473
y: 13520
t: 0
z: 0
zoom: 1.704
rotate: 0
- slide: 156127
tabs: SDbp
x: 38304
y: 8650
t: 0
z: 0
zoom: 1.704
rotate: 0
PathViewer 3.1+¶
Hooks for custom JavaScript¶
PathViewer has a number of extension points to add custom functionality. It is recommended to load the code with the custom code via the omero.web.pathviewer.js setting.
KeepAlive¶
As long as the PathViewer browser window is open, the user session is kept active by a call every 60 seconds. Additionally custom handlers can be added that are called at the same interval:
$('viewer')
.controller('keepalive')
.registerCallback(function () {
window.console.log('custom keepalive');
});
ROI Actions¶
To add custom actions that act on ROIs, register a new button that will appear on top of the ROI list in the right-hand panel:
$('viewer')
.controller('roiManager')
.registerAction('customAction', {
icon: 'fas fa-cogs',
title: 'Custom ROI action',
enabled: function (roimanager) {
return roimanager.selected().length;
},
action: function (roimanager) {
alert('Custom action');
}
});
PathViewer 3.3+¶
Label images¶
Label image mask ROIs with attached data tables get an additional XML annotation on the ROI with namespace glencoesoftware.com/pathviewer/labelimage/filters.
The value of the annotation is a JSON string containing an array of stored query groups configured for the label image.
Each query group has the following properties:
hits is the cached hit count for this group
name
color
filters is an array of column value comparisons
query is filters formatted as a query string
manual.include and manual.exclude are optional lists of identifiers that have been added to or removed from the query results. They are not considered in the hit count stored in hits.
cached is an optional field; for groups with few hits, the query results are cached as a comma-separated string of base-36 encoded identifiers
Example:
[
{
"hits": 54,
"name": "above 90%",
"color": "rgb(255,255,0)",
"filters": [
{
"column": {
"name": "percent_probability",
"type": "long"
},
"comparison": ">=",
"value": 90
}
],
"manual": {
"include": [438,136,291,745,52,12],
"exclude": [2059,2101,2053,2538,2207,2065,2804,2172,2447]
},
"cached": "rx,ua,zu,zv,122,17v,1gz,1h0,1i2,1mp,1oh,1vj,256,281,2e0,...",
"query": "(roi==540402)&(percent_probability>=90)"
},
{
"hits": 728,
"name": "85% probability",
"color": "rgb(28,230,255)",
"filters": [
{
"column": {
"name": "percent_probability",
"type": "long"
},
"comparison": "==",
"value": 85
}
],
"query": "(roi==540402)&(percent_probability==85)",
"cached": "1u,1v,1w,1x,1y,2z,30,4y,67,7e,7f,7g,7h,7i,7j,97,98,99,..."
}
]
ROI display order¶
ROIs are rendered in a given order, so that overlapping shapes are displayed consistently. This display order is stored in an additional XML annotation on the image with namespace glencoesoftware.com/pathviewer/roidisplayorder.
The value of the annotation is a JSON string containing an object with one displayOrder property, which is a list of shape identifiers in the order the shapes should be rendered, i.e. shapes listed first are displayed behind shapes listed later.
Example:
{
displayOrder: [1003, 1001, 1002]
}
Note: due to the implementation of shape rendering in PathViewer, all read-only shapes are displayed behind all editable shapes. This may cause unintended ordering if a user can edit some, but not all shapes.
Channel groups and labels¶
Channel group information is stored in a Comment annotation on the first image channel with namespace glencoesoftware.com/pathviewer/channel/settings.
These annotations can also be read or set using the command line.
The value of the annotation is a JSON string containing an object with two properties:
descriptions is an optional object mapping channel indexes (as strings) to a string description
groups is an array of channel group objects
Channel group objects have the following properties:
name is the name of the channel group. Note that exactly one channel group must have a NUL character (represented in JSON as “\u0000”) as its name, indicating that it is the default group.
description is the optional string description of the channel group
channels is an array of channel indexes (as numbers) of the channels that are part of the channel group. Note that channels can be part of multiple channel groups, but each channel must appear in at least one group.
channelSettings is an optional object mapping channel indexes (as strings) to channel settings objects, which can override the default settings for that channel in this channel group context.
Channel settings objects have the following properties:
active is true or false
color in the standard #rrggbb format
window is an object with number start and end properties
Example:
{
"descriptions": {
"0": "Description for Channel 1",
"1": "",
"2": ""
},
"groups": [
{
"channelSettings": {
"0": {
"active": true,
"color": "#FF0000",
"window": {
"end": 182,
"start": 38
}
},
"1": {
"active": true,
"color": "#00FF00",
"window": {
"end": 255,
"start": 0
}
}
},
"channels": [
0,
1
],
"description": "A custom channel group",
"name": "Custom group"
},
{
"channelSettings": {
"0": {
"active": true,
"color": "#FF0000",
"window": {
"end": 255,
"start": 0
}
},
"1": {
"active": true,
"color": "#00FF00",
"window": {
"end": 255,
"start": 0
}
},
"2": {
"active": true,
"color": "#0000FF",
"window": {
"end": 255,
"start": 0
}
}
},
"channels": [
0,
2
],
"name": "\u0000"
}
]
}