dicom-microscopy-viewer
Version:
Interactive web-based viewer for DICOM Microscopy Images
252 lines (212 loc) • 9.72 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: opticalPath.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: opticalPath.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>const _attrs = Symbol('_attrs')
/**
* An Optical Path.
*
* An optical path represents a color or a monochromatic image that was acquired
* using specific microscopy settings. Usually, an optical path is also
* associated with specific specimen preparation steps, in particular one or
* more staining steps. For example, in immunofluorescence microscopy imaging,
* an optical path is generally associated with a specific fluorescence
* illumination wave length or color (e.g., 568nm in the red spectrum of the
* visible light) and an antibody or a set of antibodies labeled with a
* corresponding fluorophore that can be excited by light at the illumination
* wave length and re-emit light (usually at a slightly higher wave length)
* upon excitation.
*
* Note, however, that multiple stains may be applied to the imaging target
* (specimen) during specimen preparation, and multiple images may be acquired
* using different optical paths - either simultaneously or sequentially.
* The content of an image thus depends on the physical properties of the
* tissue stains (fluorophores) as well as the characteristics of the optical
* path (illumination wave length, light and image path filters, etc.).
*
* An optical path is identified by an optical path identifier that must be
* unique within the scope of an image acquisition (or multiple cycles of image
* acquisition in case of iterative immunofluorescence imaging).
* The relationship between the optical path and any corresponding staining
* specimen preparation steps may not be explicitly specified.
*
* @class
* @memberof opticalPath
*/
class OpticalPath {
/**
* @param {Object} options - Options
* @param {string} options.identifier - Optical Path Identifier
* @param {string} options.description - Optical Path Description
* @param {Object} options.illuminationType - Illumination Type Code
* @param {boolean} options.isMonochromatic - Whether optical path is monochromatic
* @param {Object|undefined} options.illuminationColor - Illumination Color Code
* @param {string|undefined} options.illuminationWaveLength - Illumination Wave Length
* @param {string} options.studyInstanceUID - Study Instance UID of VL Whole Slide Microscopy Image instances
* @param {string} options.seriesInstanceUID - Series Instance UID of VL Whole Slide Microscopy Image instances
* @param {string[]} options.sopInstanceUIDs - SOP Instance UIDs of VL Whole Slide Microscopy Image instances
* @param {string|undefined} options.paletteColorLookupTableUID - Palette Color Lookup Table UID
*/
constructor ({
identifier,
description,
illuminationType,
isMonochromatic,
illuminationColor,
illuminationWaveLength,
studyInstanceUID,
seriesInstanceUID,
sopInstanceUIDs,
paletteColorLookupTableUID
}) {
this[_attrs] = {}
if (identifier == null) {
throw new Error('Identifier must be provided for optical path.')
}
this[_attrs].identifier = identifier
this[_attrs].description = description
if (illuminationType == null) {
throw new Error('Illumination type must be specified for optical path.')
}
this[_attrs].illuminationType = illuminationType
this[_attrs].illuminationWaveLength = illuminationWaveLength
if (studyInstanceUID == null) {
throw new Error('Study Instance UID must be provided for optical path.')
}
this[_attrs].studyInstanceUID = studyInstanceUID
if (seriesInstanceUID == null) {
throw new Error('Series Instance UID must be provided for optical path.')
}
this[_attrs].seriesInstanceUID = seriesInstanceUID
if (sopInstanceUIDs == null) {
throw new Error('SOP Instance UIDs must be provided for optical path.')
}
this[_attrs].sopInstanceUIDs = sopInstanceUIDs
if (isMonochromatic == null) {
throw new Error(
'Whether optical path is monochromatic must be specified.'
)
}
this[_attrs].isMonochromatic = isMonochromatic
this[_attrs].paletteColorLookupTableUID = paletteColorLookupTableUID
Object.freeze(this)
}
/**
* Optical Path Identifier
*
* @type string
*/
get identifier () {
return this[_attrs].identifier
}
/**
* Optical Path Description
*
* @type string
*/
get description () {
return this[_attrs].description
}
/**
* Illumination Type Code
*
* @type object
*/
get illuminationType () {
return this[_attrs].illuminationType
}
/**
* Illumination Color
*
* @type object
*/
get illuminationColor () {
return this[_attrs].illuminationColor
}
/**
* Illumination Wave Length
*
* @type string | undefined
*/
get illuminationWaveLength () {
return this[_attrs].illuminationWaveLength
}
/**
* Study Instance UID of images
*
* @type string
*/
get studyInstanceUID () {
return this[_attrs].studyInstanceUID
}
/**
* Series Instance UID of images
*
* @type string
*/
get seriesInstanceUID () {
return this[_attrs].seriesInstanceUID
}
/**
* SOP Instance UIDs of images
*
* @type string[]
*/
get sopInstanceUIDs () {
return this[_attrs].sopInstanceUIDs
}
/**
* Palette Color Lookup Table UID
*
* @type string
*/
get paletteColorLookupTableUID () {
return this[_attrs].paletteColorLookupTableUID
}
/**
* Whether optical path is monochromatic
*
* @type boolean
*/
get isMonochromatic () {
return this[_attrs].isMonochromatic
}
/**
* Whether images of optical path are colorable
*
* @type boolean
*/
get isColorable () {
return this[_attrs].isMonochromatic
}
}
export { OpticalPath }
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Namespaces</h3><ul><li><a href="annotation.html">annotation</a></li><li><a href="api.html">api</a></li><li><a href="color.html">color</a></li><li><a href="events.html">events</a></li><li><a href="mapping.html">mapping</a></li><li><a href="metadata.html">metadata</a></li><li><a href="opticalPath.html">opticalPath</a></li><li><a href="roi.html">roi</a></li><li><a href="scoord3d.html">scoord3d</a></li><li><a href="segment.html">segment</a></li><li><a href="utils.html">utils</a></li><li><a href="viewer.html">viewer</a></li></ul><h3>Classes</h3><ul><li><a href="annotation.AnnotationGroup.html">AnnotationGroup</a></li><li><a href="color.PaletteColorLookupTable.html">PaletteColorLookupTable</a></li><li><a href="mapping.ParameterMapping.html">ParameterMapping</a></li><li><a href="mapping.Transformation.html">Transformation</a></li><li><a href="metadata.Comprehensive3DSR.html">Comprehensive3DSR</a></li><li><a href="metadata.MicroscopyBulkSimpleAnnotations.html">MicroscopyBulkSimpleAnnotations</a></li><li><a href="metadata.ParametricMap.html">ParametricMap</a></li><li><a href="metadata.Segmentation.html">Segmentation</a></li><li><a href="metadata.SOPClass.html">SOPClass</a></li><li><a href="metadata.VLWholeSlideMicroscopyImage.html">VLWholeSlideMicroscopyImage</a></li><li><a href="module.exports_module.exports.html">exports</a></li><li><a href="opticalPath.OpticalPath.html">OpticalPath</a></li><li><a href="roi.ROI.html">ROI</a></li><li><a href="scoord3d.Ellipse.html">Ellipse</a></li><li><a href="scoord3d.Ellipsoid.html">Ellipsoid</a></li><li><a href="scoord3d.Multipoint.html">Multipoint</a></li><li><a href="scoord3d.Point.html">Point</a></li><li><a href="scoord3d.Polygon.html">Polygon</a></li><li><a href="scoord3d.Polyline.html">Polyline</a></li><li><a href="scoord3d.Scoord3D.html">Scoord3D</a></li><li><a href="segment.Segment.html">Segment</a></li><li><a href="viewer.LabelImageViewer.html">LabelImageViewer</a></li><li><a href="viewer.OverviewImageViewer.html">OverviewImageViewer</a></li><li><a href="viewer.VolumeImageViewer.html">VolumeImageViewer</a></li></ul><h3>Global</h3><ul><li><a href="global.html#addTask">addTask</a></li><li><a href="global.html#cancelTask">cancelTask</a></li><li><a href="global.html#decode">decode</a></li><li><a href="global.html#getStatistics">getStatistics</a></li><li><a href="global.html#handleMessageFromWorker">handleMessageFromWorker</a></li><li><a href="global.html#initialize">initialize</a></li><li><a href="global.html#loadWebWorkerTask">loadWebWorkerTask</a></li><li><a href="global.html#setTaskPriority">setTaskPriority</a></li><li><a href="global.html#spawnWebWorker">spawnWebWorker</a></li><li><a href="global.html#startTaskOnWebWorker">startTaskOnWebWorker</a></li><li><a href="global.html#terminateAllWebWorkers">terminateAllWebWorkers</a></li><li><a href="global.html#transform">transform</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.10</a> on Thu Sep 29 2022 16:54:54 GMT-0400 (Eastern Daylight Time)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>