GithubHelp home page GithubHelp logo

mida-group / cytobrowser Goto Github PK

View Code? Open in Web Editor NEW
16.0 2.0 7.0 4.71 MB

CytoBrowser, a JavaScript and Node.js driven environment for fast and accessible collaborative online visualization, assessment, and annotation of very large microscopy images.

License: GNU General Public License v3.0

CSS 0.30% HTML 11.11% JavaScript 88.59%
cytology cytopathology wsi whole-slide-imaging annotations annotation-layer javascript machine-learning webapp microscopy-images

cytobrowser's Introduction

CytoBrowser, a JavaScript and Node.js driven environment for fast and accessible collaborative online visualization, assessment, and annotation of very large microscopy images.

Screenshot of CytoBrowser usage

Origintating as a fork1 of TissUUmaps aimed at Cytology

  1. Handling z-stacks (focus stacks), ctrl-scroll on your mouse to focus
  2. Multi-user shared view with follow options, also when changing images and annotation layers
  3. URL encodes the current view and annotation layer; easy to bookmark views, copy and share
  4. Point and region annotations with class label and textual comments
  5. Automatic server side storage of annotations; import/export of annotations in JSON format

Express setup

  1. Install Node.js
  2. Run npx cytobrowser --open-browser2

Done! ๐Ÿ˜Š

You may now populate your ./data directory, see below for further info.
ย 

Slightly longer example, cloning the latest sources from GitHub (instead of using npx)

#Clone from github
git clone https://github.com/MIDA-group/CytoBrowser.git
cd CytoBrowser

#Install the necessary dependencies
npm install
#Optionally switch to develop version `git switch develop`


#Put your OpenSeadragon compatible images in the 'data/' directory
#For converters, see e.g.: http://openseadragon.github.io/examples/creating-zooming-images/

#Or download an example image and convert it to Deep Zoom Image (dzi) format
#(There are more examples in the 'examples/' directory)
./examples/Zeiss-1-Stacked.sh  #This requires bftools and libvips


#Start the web server on a free port on localhost, and open a browser
node cytobrowser.js --open-browser


#More generally, to start the web server on a specified port
# node cytobrowser.js [hostname] [port]
# node cytobrowser.js --help

  
#Optionally open an ssh-pipe from your local machine to the web server
ssh -L 8080:localhost:8080 remote.host  



#Enjoy! =)

Branches

Current list of branches:

  • master - Main stable branch, official releases are from this branch;
  • devel - Main development branch, less stable but more up-to-date;
  • devel/multi-image - Work in progress to support multiple layers of images (for correlative multimodal analysis);
  • devel/multi-image-autoload-hack - Small add-on to hide images with suffix '_FL', and autoload them together with corresponding non-hidden images with same prefix.

Issues

We aim to support all modern browsers. Since development mostly utilizes the Chrome browser, that one can be expected to give the least troublesome usage experience. Please don't be shy to report issues that you experience.

Citing

If you find the CytoBrowser software useful in your research, please consider citing the following article:

Rydell C and Lindblad J. "CytoBrowser: a browser-based collaborative annotation platform for whole slide images". F1000Research 2021, 10:226 (https://doi.org/10.12688/f1000research.51916.1)

@article{ 10.12688/f1000research.51916.1,
  author = {Rydell, C and Lindblad, J},
  title = {CytoBrowser: a browser-based collaborative annotation platform for whole slide images [version 1; peer review: awaiting peer review]},
  journal = {F1000Research},
  volune = {10},
  year = {2021},
  number = {226},
  doi = {10.12688/f1000research.51916.1}
}

Acknowledgement

This work is supported by: VINNOVA grants 2017-02447, 2020-03611 and 2021-01420, and Swedish Research Council proj. 2017-04385.

Footnotes

  1. TissUUmaps originally had a strict "clientside only" policy, which was incompatible with the CytoBrowser collaborative aim. โ†ฉ

  2. If (on Windows) you get ENOENT: no such file or directory..., the try running npm install -g npm โ†ฉ

cytobrowser's People

Contributors

crydell avatar dependabot[bot] avatar joakimlindblad avatar lesolorzanov avatar marcellovendruscolo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

cytobrowser's Issues

Make an image picker html view

Point and click interface to choosing which WholeSlide image to view.
Presumably based on the largest one-tile image in the dzi stack (the directory number can vary).

Enable collaborator shared view

Enable a linked viewport between collaborators
Presumably using some server side data
As responsive as possible (but not faster than that ;-) )

Use some URL token to connect views?

Option to save annotations on the Server

Some restricted directory tree where user can save annotations on the server
Try to keep security on mind, disallow change of extension, make sure to check filename for weird characters, pop-up question when overwriting an existing file (perhaps even versioned saves... if not too complicated).

Region annotation element

Option to mark a region in the image.
Preferably with similar properties as markers, i.e., class, free-text info, etc.

  1. Rectangular region
  2. Polygonal region

Inconsistent clickable region for marker points

When adding new markers to the overlay, the area in which click and drag events are triggered is often very large, and the clickable region around the visual marker seems to be different for different points. The points do not seem to always be centered in these regions either. The clickable region seems to move independent of the the points when dragging them, and they can even be dragged far enough to not include the point itself.

Disallow delete of point while commenting

Bug: Right click on annotation object, then ctrl-click to delete the object.
Behaviour: Object is deleted, but dialogue stays open.
Desired behaviour: Disable delete while dialogue is open.

Class color config

Make class labels and colors easily adjusted in a separate settings file.

Cancer specific class buttons

Instead of buttons "Class 0" etc. use the following 7 classes

NILM, ASC-US, ASC-H, LSIL, HSIL, SCC, AdC

Taken from Zhang "DCCL: A Benchmark for Cervical Cytology Analysis"

"Based on The 2014 Bethesda System for Reporting Cervical Cytology
(2014 TBS) [12], the precancerous squamous intraepithelial lesions include four
types with an increasing level of severity: atypical squamous cells of undeter-
mined significance (ASC-US), low squamous intraepithelial lesion (LSIL), atypi-
cal squamous cell-cannot exclude HSIL (ASC-H) and high squamous intraepithe-
lial lesion (HSIL); while cancerous lesions include mainly two types: squamous
cell carcinoma (SCC) and adenocarcinoma (AdC)."
and "NILM (negative for intraepithelial lesion or malignancy)"

Update Bootstrap CSS to newer version

The current version of the Bootstrap CSS is 3.3.7, but the JS used is for version 4.0.0. The CSS should be updated to a more recent version so the two match, and the page should be updated to still work the same as it did with the old version.

Refactor and clean up code

The code should be refactored to have a clear, easily modifiable structure. In addition, unused code should be removed, code style should be consistent, and the code should be well-documented.

Integrate OpenSeadragon rotation

OpenSeadragon has the built-in ability to rotate the viewport with keyboard shortcuts, so it might be good to make this work well together with URL coordinates, viewport following, etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.