PMANN is a part of the Pathomation back-end API that makes it easy to handle heterogeneous (external) annotations.
PMA.core can leverage the use of PMANN via the External Files interface and the associated API calls. These API calls associate a number of files containing any known 3rd party annotations with a slide. PMA.core supports 3rd party annotations from the following vendors Visiopharm, Indica Labs and Aperio. Each of these formats are supported via parsing the respective vendor specific file:
To associate external files with a slide you have to use the API call SetExternalAnnotationFiles. This takes an array of tuples containing the Name and Path for each associated 3rd party annotations file. For Name you can use any text to differentiate from other annotations an the Path needs to be a virtual path to the file containing the annotations. You can get the previously set external annotations files for a slide via the GetExternalAnnotationFiles API call, which returns the array of Name/Path tuples for each file associated with any slide
Lets suppose we have a slide called Slide.mrxs that we want to attach 2 separate annotation files from 3rd party sources, and the two files are in the virtual directory called Slides
The first file contains some cell counting information and the second file contains some regions of interest so we want to name them based on that to distinguish more easily, and keep in mind that the name of a external file is presented to the user on all viewer products of the Pathomation platform.
So we call the SetExternalAnnotationFiles API with query string parameters
?pathOrUid=Slides/Slide1.mrxs&sessionId={sessionId}
and with the following json data on the body
[ { "Name": "Cell counting", "Path": "Slides/Slide1.mld" }, { "Name": "Regions of interest", "Path": "Slides/Slide1.xmls" } ]
To test that everything worked we can use the GetExternalAnnotationFiles that should return the same json as a result.
We can now see the external annotation using any Pathomation Platform viewer like PMA.studio. We can also adjust the visibility and opacity for each layer independently