QuPath integration

QuPath is a very useful, easy-to-use, free, and open-source image analysis software that works with a wide variety of slide files, capable of automatically detecting and classifying cells. The analysis pipelines created in QuPath can be automated using scripts to process multiple images without requiring user interaction.

It is widely used - the paper describing QuPath has been cited more than 3000 times and the discussion forums have more than 1000 posts each year.

However, a drawback of QuPath is that it operates as a desktop application and requires direct access to slide files, which can hinder collaboration with remote colleagues.

Slide Score addresses this limitation by providing a plugin for QuPath, enabling it to read slide files stored on a Slide Score server as if they were stored on the local computer. This integration combines the strengths of both applications - central secure storage of slides in different formats on a Slide Score server, easy sharing with external colleagues, organized scoring and annotation, and the powerful analysis capabilities of QuPath.

For a step-by-step guide on using the QuPath Slide Score plugin, check out this video tutorial: Youtube: QuPath analyzing slides stored in Slide Score

As demonstrated in the video, QuPath, with the Slide Score plugin, can efficiently open slides, load annotations from Slide Score, perform image analysis, and upload the results back to Slide Score for easy sharing with external colleagues.

But it can do a lot more! One powerful feature is its ability to seamlessly work with tissue microarrays (TMA). QuPath can directly import the position and annotations of the cores from the Slide Score server. This streamlines the analysis process and ensures accurate handling of the data.

You also have the option to download a QuPath project file for an entire study, encompassing all the slides within that dataset. You can then run your analysis on the whole dataset in a unified manner.

See below for an example script fetching TMA core positions and annotations from Slide Score and sending analysis results back to the server - all these operations can be called from QuPath scripts.

By leveraging these advanced features and incorporating them into your workflow, you can maximize the potential of QuPath and the Slide Score plugin for seamless collaboration, efficient analysis, and comprehensive data handling.

Contact us for more information

import qupath.lib.gui.QuPathGUI
import qupath.lib.scripting.QP
import qupath.lib.roi.interfaces.ROI
import qupath.lib.images.servers.slidescore.SlideScoreUploadAnnotationsCommand
import qupath.lib.images.servers.slidescore.SlideScoreImportTMAsCommand
import qupath.lib.images.servers.slidescore.SlideScoreImportAnswersCommand

//TODO: specify annotation questions to use as source and destination
def sourceQuestion = "Mark interesting area"
def destinationQuestion = "Positive_Cells"

//TODO: specify account under which the ROI annotation was made
def sourceAccount = 'demo@example.com'

qupathGUI = QuPathGUI.getInstance()
def slideScoreImportTMAsCommand = new SlideScoreImportTMAsCommand(qupathGUI)

def project = QP.getProject()

// go over all images in the project
for (projectImageEntry in project.getImageList()) { 
    def imageData = projectImageEntry.readImageData()
    def server = imageData.getServer()

    // load TMA core locations from Slide Score
    slideScoreImportTMAsCommand.run(imageData)

    def slideScoreImportAnswersCommand = new SlideScoreImportAnswersCommand(qupathGUI)
    slideScoreImportAnswersCommand.setQuestion(sourceQuestion)
    slideScoreImportAnswersCommand.setEmail(sourceAccount)    
    slideScoreImportAnswersCommand.run(imageData)
    
    //TODO: perform analysis, detect cells, ...

    // Send Point Annotation to Slide Score
    def hierarchy = QP.getCurrentHierarchy()
    def annotations = hierarchy.getAnnotationObjects()
    def pointAnnotation = annotations.find() {it.getROI().getRoiType() == ROI.RoiType.POINT}
    def sideScoreUploadAnnotationsCommand = new SlideScoreUploadAnnotationsCommand()
    sideScoreUploadAnnotationsCommand.submitAnnotations(imageData, [pointAnnotation], destinationQuestion)
}
© 2022 Slide Score B.V. Privacy Policy Follow us on Twitter Follow us on Linked IN