Skip to content

Commit 1c37e1b

Browse files
committed
Merge branch 'feature/analysisresults'
* Display of DICOM Segmentation instances * Display of DICOM Parametric Map instances * Display of DICOM Microscopy Bulk Simple Annotations instances * Styling images using Palette Color Lookup Tables * Dynamically switching between origin servers (as long as they rely on the same identity provider) * Decoding of JPEG, JPEG-LS, and JPEG 2000 transfer syntaxes using WebAssembly bindings of the libjpeg-turbo, CharLS, and openjpeg C/C++ libraries * Color management based on ICC profiles using WebAssembly bindings of the dicomicc C library * Improved image transformations and rendering using WebGL * Use of webpack instead of rollup for building * Use of jest instead of mocha for testing Co-authored-by Chris Gorman <[email protected]>
2 parents 6c2dfd4 + 63cb3fc commit 1c37e1b

File tree

119 files changed

+42861
-64560
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+42861
-64560
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# This workflow will install JavaScript dependencies, run tests and lint.
2+
3+
name: unit tests
4+
5+
on:
6+
push:
7+
branches: [ master ]
8+
pull_request:
9+
branches: [ master ]
10+
11+
jobs:
12+
build:
13+
14+
runs-on: ubuntu-latest
15+
strategy:
16+
matrix:
17+
node-version: ["12.x", "14.x", "16.x"]
18+
19+
steps:
20+
- uses: actions/checkout@v2
21+
- name: Set up Node ${{ matrix.node-version }}
22+
uses: actions/setup-node@v2
23+
with:
24+
node-version: ${{ matrix.node-version }}
25+
cache: "npm"
26+
- name: Install dependencies
27+
run: npm install
28+
- name: Build package in production mode
29+
run: npm run build:prod
30+
- name: Lint with standard
31+
run: npm run lint
32+
- name: Test with jest
33+
run: npm run test

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
The library is intended to provide a lightweight and standard-compliant viewer for microscopy images in DICOM format.
66

7-
The viewer relies on [Openlayers](http://openlayers.org/) for rendering pyramid images and dynamically retrieves pyramid tiles (image frames) via [DICOMweb WADO-RS](https://www.dicomstandard.org/dicomweb/retrieve-wado-rs-and-wado-uri/) using [dicomweb-client](https://github.com/mghcomputationalpathology/dicomweb-client).
7+
The viewer relies on [Openlayers](http://openlayers.org/) for rendering pyramid images and dynamically retrieves pyramid tiles (image frames) via [DICOMweb WADO-RS](https://www.dicomstandard.org/dicomweb/retrieve-wado-rs-and-wado-uri/) using [dicomweb-client](https://github.com/herrmannlab/dicomweb-client).
88
However, the viewer API fully abstracts the underlying rendering library and doesn't expose the lower level Openlayers API directly, such that another rendering library could in principle be used in the future if this would be of advantage.
99

1010
A central design choice was to not expose any Openlayers objects or functions via the public API, but always provide an abstraction layer.

README.md

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,29 @@
1-
[![Build Status](https://travis-ci.com/mghcomputationalpathology/dicom-microscopy-viewer.svg?branch=master)](https://travis-ci.com/mghcomputationalpathology/dicom-microscopy-viewer)
1+
[![Build Status](https://github.com/herrmannlab/dicom-microscopy-viewer/actions/workflows/run_unit_tests.yml/badge.svg)](https://github.com/herrmannlab/dicom-microscopy-viewer/actions)
2+
[![NPM version](https://badge.fury.io/js/dicom-microscopy-viewer.svg)](http://badge.fury.io/js/dicom-microscopy-viewer)
23

34
# DICOM Microscopy Viewer
45

5-
Vanilla JS library for web-based visualization of [DICOM VL Whole Slide Microscopy Image](http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.32.8.html) datasets.
6+
Vanilla JS library for web-based visualization of [DICOM VL Whole Slide Microscopy Image](http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.32.8.html) datasets and derived information.
67

78
The viewer allows visualization of slide microscopy images stored in a [DICOMweb](https://www.dicomstandard.org/dicomweb/) compatible archive.
89
It leverages the [dicomweb-client](https://github.com/dcmjs-org/dicomweb-client) JavaScript library to retrieve data from the archive.
910

1011
## Features
1112

12-
* Display of different image types: `VOLUME`, `OVERVIEW`, `LABEL`
13+
* Display of different image types: `VOLUME`/`THUMBNAIL`, `OVERVIEW`, `LABEL`
1314
* Annotation of regions of interest (ROI) as vector graphics based on 3-dimensional spatial coordinates (SCOORD3D): `POINT`, `MULTIPOINT`, `POLYLINE`, `POLYGON`, `ELLIPSE`, `ELLIPSOID`
1415
* Assembly of concatenations
15-
* Decoding of compressed pixel data, supporting baseline JPEG, JPEG 2000 and JPEG-LS codecs
16+
* Decoding of compressed pixel data, supporting baseline JPEG, JPEG 2000, and JPEG-LS codecs
17+
* Correction of color images using ICC profiles
1618
* Additive blending and coloring of monochromatic images of multiple optical paths (channels), supporting highly-multiplexed immunofluorescence imaging
17-
18-
## Live demo
19-
20-
Check out the online examples at [microscopy.dcmjs.org](https://microscopy.dcmjs.org/).
19+
* Overlay of image analysis results in the form of [DICOM Segmentation](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.51.html), [Parametric Map](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.75.html), [Comprehensive 3D SR](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.35.13.html), or [Microscopy Bulk Simple Annotations](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_A.87.html)
2120

2221
## Documentation
2322

24-
The online Application Programming Interface (API) documentation is available at [mghcomputationalpathology.github.io/dicom-microscopy-viewer](https://mghcomputationalpathology.github.io/dicom-microscopy-viewer/).
23+
Documentation of the JavaScript Application Programming Interface (API) is available online at [mghcomputationalpathology.github.io/dicom-microscopy-viewer](https://mghcomputationalpathology.github.io/dicom-microscopy-viewer/).
2524

2625
## Getting started
2726

28-
Take a look at the examples in the `/examples` directory.
29-
They are also available online at [microscopy.dcmjs.org](https://microscopy.dcmjs.org/).
30-
3127
### Basic usage
3228

3329
```html
@@ -60,9 +56,11 @@ client.searchForInstances(searchInstanceOptions).then((instances) => {
6056
sopInstanceUID,
6157
};
6258
const promise = client.retrieveInstanceMetadata(retrieveInstanceOptions).then(metadata => {
63-
const imageType = metadata[0]["00080008"]["Value"];
64-
if (imageType[2] === "VOLUME") {
65-
return(metadata[0]);
59+
const image = new DICOMMicroscopyViewer.metadata.VLWholeSlideMicroscopyViewer({
60+
metadata
61+
})
62+
if (image.imageType[2] === "VOLUME") {
63+
return(image);
6664
}
6765
});
6866
promises.push(promise);
@@ -98,7 +96,6 @@ Please cite the following article when using the viewer for scientific studies:
9896
Volume={9},
9997
Number={37}
10098
}
101-
10299
```
103100

104101
## Installation
@@ -111,26 +108,21 @@ npm install dicom-microscopy-viewer
111108

112109
## Building & Testing
113110

114-
Build code locally:
111+
We use [webpack](https://webpack.js.org/) for bundling and [Jest](https://github.com/facebook/jest) for testing.
112+
113+
Build:
115114

116115
```None
117-
git clone https://github.com/mghcomputationalpathology/dicom-microscopy-viewer ~/dicom-microscopy-viewer
118-
cd ~/dicom-microscopy-viewer
119116
npm install
120117
npm run build
121118
```
122119

123-
test code locally:
120+
Test:
124121

125122
```None
126-
git clone https://github.com/mghcomputationalpathology/dicom-microscopy-viewer ~/dicom-microscopy-viewer
127-
cd ~/dicom-microscopy-viewer
128-
npm install
129-
npm test
123+
npm run test
130124
```
131125

132-
We use [rollup](https://rollupjs.org/guide/en) for bundling and [Jest](https://github.com/facebook/jest) for testing.
133-
134126
Build the documentation:
135127

136128
```None

0 commit comments

Comments
 (0)