GithubHelp home page GithubHelp logo

cmusatyalab / dermshare Goto Github PK

View Code? Open in Web Editor NEW
2.0 4.0 2.0 1.14 MB

DermShare web application and filters

Home Page: http://dermshare.cs.cmu.edu/

License: Eclipse Public License 1.0

Python 78.59% JavaScript 13.05% HTML 8.20% Shell 0.16%

dermshare's Introduction

Installing

Requirements

At build time

On the web application server

  • OpenDiamond

On the Diamond servers

  • 64-bit environment
  • OpenDiamond
  • virtualenv
  • OpenCV-Python
  • BLAS library and headers
  • LAPACK library and headers
  • freetype library and headers
  • libpng library and headers
  • libjpeg library and headers

DermShare

  1. Use make-filter.py to build the Autosegment filter.
  2. Use make-filter.py to build the Gemini filter.
  3. Create and populate virtualenv. Use --system-site-packages, since OpenDiamond can't be installed with pip.
  4. Configure and run. dermshare.py is always needed, but dermshare-ws.py is only necessary if the mobile device link is enabled with WEBSOCKET_BASEURL.

Diamond servers

To avoid conflicts with older versions of NumPy and Six packaged by your Linux distribution, it is best to (re-)install NumPy v1.9.1 and Six v1.9.0 with pip after installing OpenCV-Python.

fil_autosegment and fil_gemini must install dependencies into a virtualenv in /tmp the first time it runs. To avoid long delays in the first search, the virtualenv can be prepopulated by running fil_autosegment and fil_gemini without arguments on the Diamond servers. To avoid additional delays whenever a Diamond server is rebooted or /tmp is cleared, you can globally install the necessary Python libraries:

pip install -r autosegment/requirements.txt
pip install -r gemini/requirements.txt

Scope server

An example scope server is provided in simplescope. The scope server shipped with OpenDiamond will not work because it doesn't integrate with Diamond web apps.

Dataretriever

An example dataretriever is provided in dataretriever. It includes support for serving segmentation images and pathology reports in addition to the Diamond objects and scope lists. The diamond_store dataretriever shipped with OpenDiamond will probably also work, but has not been tested.

Laying out the data

The DermShare dataretriever expects a directory tree with the following layout:

DERMSHARE_SCOPE_PATH
    <scope1>
        <name1>-image.{jpg|png|...}
        <name1>-segm.png
        <name1>-attr.yaml
        <name1>-path.html
        <name2>-image.{jpg|png|...}
        ...
    <scope2>
        ...

The segmentation image must be a PNG the same size as the image, with the pixels corresponding to the lesion marked in red and the remaining pixels transparent.

The attributes file, if present, contains only one attribute, the diagnosis code as listed in search.js:

diagnosis: bcc

The path file, if present, contains the pathology report to be shown in DermShare.

dermshare's People

Contributors

bgilbert avatar jaharkes avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dermshare's Issues

OpenCV headers.

When trying to build dermshare, I had to change a few OpenCV include lines in autosegmenter/src/IPPInterface/IPPImage.h for everything to compile correctly. e.g. "cv.h" couldn't be found. Changing the import statements to <opencv/cv.h> fixed the problem. Submitting a pull request if upstream which upstream can use if they find it useful.

Server layout

Hi, My team and I have been working on the dermshare opendiamond implementation. We believe we have all dependency requirements met because each of the services appear to run (autosegementer, simplescope.py, blaster, dermshare.py, diamondd, dermshare_dataretriever.py, etc).

We split up the services across 4 servers in the following way:

  • scopeserver - running simplescope.py
  • dermclient - running dermshare.py
  • jsonblaster - running /usr/local/bin/blaster (without reverse proxy)
  • diamond0 - running diamondd, redis and dermshare_dataretriever.py (with populated data folders)

All these services are

  • listening on 0.0.0.0 with "-l 0.0.0.0" arguments
  • on port 8080 which is mapped to port 80 with iptables
  • running under the same nonroot user

Is this topology recommended? Would it be preferred to group the jsonblaster with diamond0 or separate the dataretriever? Are there any junctions where using localhost instead of an IP address in a config file are more supported? We separated the servers to aid in debugging such as reading logs, distinguishing cookiecutter arguments and scopecookie placements. Thanks

What is the cookiecutter command for autosegment-cookie?

What would be the cookiecutter command for autosegment-cookie if you have have 4 servers:

  • scopeserver - 192.168.1.20
  • dermclient - 192.168.1.30
  • jsonblaster - 192.168.1.40
  • diamond0 - 192.168.1.50

On which host to run the cookiecutter command for autosegment-cookie?

And on which host do you place the autosegment-cookie in /etc/dermshare/ ?

Thanks

Is simplescope.py scope server sufficient

Section "Scope server" of README.md says "An example scope server is provided in simplescope."
Is simplescope/simplescope.py fully functional and do we still need to configure ~/.diamond/CERTS ~/.diamond/NEWSCOPE files? Thanks

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.