Review stats

Overview

Counts the review side of a Supervisely process and keeps the numbers on the node card. Connect the Process output of either manager node — a labeling queue and a batch of jobs are read the same way.

The totals only ever grow. Supervisely keeps the current status of an entity, so a rejected image loses that status the moment its author picks it up again, and this node remembers what it saw. Once both inputs are set, the node runs itself every minute.

Prerequisites

RequirementWhat you need
Process handleThe Process output of a Labeling queue manager or a Labeling jobs manager.
Supervisely credentialsAn existing supervisely secret allowed to read jobs in that team.

How it works

1

Reads the jobs of the connected process, whether they belong to a queue or stand on their own.

2

Adds what it sees to the running totals, so an image counts once however many times it passes.

3

Publishes reviewers, images reviewed, images accepted, and how many rejections happened.

FAQ

Each person there holds a whole batch, not one image, so the card also shows Images on review: how many images sit in jobs on review right now. That row is live and does go down. A queue hands out one image at a time, so it is not shown for it.

They answer “how much work has this process done”, not “what is in progress right now”. The stage datasets of the manager node show the live picture.

Every time an image is rejected, including a second rejection of the same image after its author resubmitted it. Images reviewed counts each image once.

Into the Supervisely annotation tool, on a live job that has work waiting for a decision. With no live job it opens the list instead.

The manager has to run first. Until it has created its Supervisely queue or dataset, the Process handle has nothing to read and each run fails.

No. One node reads one Process handle. Add a second node for a second step.

Per-person breakdowns and time ranges. It also holds the ids it has seen in its own state, so a process with very many images makes that state large.

Inputs

Process
objectRequired

The Process output of a Labeling queue manager or a Labeling jobs manager. Both forms are read the same way. Key: PROCESS.

Supervisely credentials
secretRequired

Allowed credential types: supervisely. Key: SLY_SECRET.

Outputs

Stats
object

Compact review table shown on the node card. Hidden from the flow editor. Key: STATS.

Supervisely URL
string

Opens the Supervisely annotation tool on a live review job. Falls back to the list when there is no live job. Key: SLY_URL.

State
object

Internal running totals, kept so the numbers never go backwards. Hidden from the flow editor. Key: STATE.

JSON config

Machine-readable node interface for automation and advanced usage.

{
"name": "Review stats",
"description": "Running totals of the review side of a Supervisely process: who reviews, how much went through and how often work came back.",
"category": "Supervisely",
"namespace": "supervisely",
"templateKey": "supervisely/review_stats",
"version": "v1",
"inputs": [
{
"key": "PROCESS",
"label": "Process",
"type": "object",
"description": "The Process output of a Labeling queue manager or a Labeling jobs manager. Both forms are read the same way.",
"required": true,
"default": null,
"visibleWhen": null
},
{
"key": "SLY_SECRET",
"label": "Supervisely credentials",
"type": "secret",
"description": "",
"required": true,
"default": null,
"visibleWhen": null,
"options": {
"types": [
"supervisely"
]
}
}
],
"outputs": [
{
"key": "STATS",
"label": "Stats",
"type": "object",
"description": "Compact review table shown on the node card.",
"artifact": false,
"badge": false,
"badgeOpens": null,
"hidden": true
},
{
"key": "SLY_URL",
"label": "Supervisely URL",
"type": "string",
"description": "Opens the Supervisely annotation tool on a live review job. Falls back to the list when there is no live job.",
"artifact": false,
"badge": false,
"badgeOpens": null,
"hidden": false
},
{
"key": "STATE",
"label": "State",
"type": "object",
"description": "Internal running totals, kept so the numbers never go backwards.",
"artifact": false,
"badge": false,
"badgeOpens": null,
"hidden": true
}
],
"automation": {
"isolated": true,
"requires_configuration": true,
"schedule": "* * * * *",
"discard_history": "on_success"
},
"widgets": {
"widget": {
"id": "table",
"settings": {
"data": {
"type": "variable",
"value": "self.outputs.STATS"
}
}
},
"secondaryWidget": {
"id": "link",
"settings": {
"name": {
"type": "input",
"value": "Open review"
},
"link": {
"type": "variable",
"value": "self.outputs.SLY_URL"
}
}
}
}
}