digitalslidearchive / histomicstk Goto Github PK
View Code? Open in Web Editor NEWA Python toolkit for pathology image analysis algorithms.
Home Page: https://digitalslidearchive.github.io/HistomicsTK/
License: Apache License 2.0
A Python toolkit for pathology image analysis algorithms.
Home Page: https://digitalslidearchive.github.io/HistomicsTK/
License: Apache License 2.0
@brianhelba You can add the documentation for testing here. I will find a good place to move it to when we organize our documentation later.
EmbedBounds does not throw error when mask/label and intensity images are not same size.
Implement poisson mixture modeling and binary pygco graph cuts for foreground/background segmentation.
Create a slicer xml based command-line argument parser using argparse to enable developers to write slicer execution model CLIs in python.
Once this is done developers will be able to write CLIs in python once which can then be run both on command-line (the in-line python script CLIs that we have now wont allow this) and called over the web via REST end point.
@jbeezley
In the front-end, use a single text box for vector parameters (integer-vector, float-vector, double-vector, string-vector) in a CLI and expect the user to provide a comma separated list of values
I don't think we need to require matplotlib for installing histomicstk. This is causing issues installing on our cluster as it tries to pull in all kinds of other packages. People are free to install this independently and there are other options for viewing images.
@brianhelba .travis.yml needs to be updated to switch from romanesco to girder_worker
Implement end-to-end nuclear segmentation pipeline using the following components:
-Whole-slide Reinhard normalization
-Poisson mixture models / binary graph cuts
-Constrained log (cLoG) splitting to produce label image
-Multilabel graph cuts refinement to refine label image
Sample attempts to load a low-res version of the entire slide to generate a tissue mask. If a 1.25X magnification is not provided by the WSI then this could result in loading an entire slide at 5X or high magnification.
The stable branch should contain the most recent stable version of HistomicsTK that we can show to people.
The fill values used when requesting image tiles from OpenSlide can produce errors in building models to distinguish tissue from glass. Need to modify code to exclude pixels from filled areas that are added to create an integral-sized tiling.
While running a CLI through the histomicstk front end (localhost:808/histomicstk#<cli-name>
), pass values of CLI parameters in the POST Request are in the format outputted by json.dumps
. I use json.loads
to convert them back to a value of their python type.
@brianhelba should we also be installing requirements_c.txt in .travis.yml.
I had to separate all packages that depend on c libraries into a separate file for ReadTheDocs to work. The issue is described here. I had to add mocks for them in docs/conf.py and exclude them from install_requires in setup.py to get the documentation to build without failure on ReadTheDocs. Dont know if there is a better way?
The front end should have ways to:
This is ITK v4.7 and I just verified on Monday that this works.
https://github.com/zachmullen/girder_training/blob/master/ansible/vagrant_playbook.yml#L17-L23
Then you can apt-get install insighttoolkit4-python
This contains zoom animations, which are an important feature.
Currently this is empty.
There is a cycle in trajectory tracking for MaxClustering that causes an endless loop. Need to check the edge values of tracking matrices for correctness.
Elongated cells are not being detected properly by GaussianVoting. Their symmetry is more axial than radial, and the votes are too diffuse to be detected as seed locations.
Optimization routine 'fmin_slsqp' from scipy is stopping early before convergence. Need to examine stopping criteria in documentation and do some more extensive testing for constrained curve fitting of image histograms.
@brianhelba can we assign this to someone? This will allow everyone to use the same development environment.
Refinement of label images using multi-label pygco graph cuts (alpha-expansions or alpha-beta swap). Graph coloring is used to reduce the computational burden so that # objects < # cells.
Issues include moving functions into submodules, converting function names from snake-case to camel-case, correcting function names in "See Also" document strings, and adding underscore prefixes to non-exposed functions.
Avoid unnecessary computation by calling with masks for select objects.
Examine in-place versus copy operations.
This issue is about bumping hash of girder, girder_worker and large_image to the latest commit in HistomicsTK/.travis.yml
Deal with cases where there are multiple connected seed pixels in (Response == Max) - typically encountered where Response is flat.
A good way to do this is by creating an abstract WholeSlideImage
class which defines the API and then make derived classes of it such as GirderWholeSlideImage
(which serves an image stored on girder) and LocalWholeSlideImage
(which serves an image located on the local machine).
We would want all analysis functions in histomicstk to take objects of the abstract WholeSlideImage
class as input instead of a numpy array or PIL image.
ConvertSchedule is generating bad size conversions for some slides, causing Sample.py to throw errors.
Shape check should only confirm that inputs have same number of rows/columns.
On images:
TCGA-HW-8322-01Z-00-DX1.B6F32F6B-7FA3-42E4-98CB-F2F55208F7C4.svs
TCGA-HT-7479-01Z-00-DX1.E310974D-E52C-4634-8E16-2A41E8C37D45.svs
TCGA-DU-8165-01Z-00-DX1.8d633ff1-6aed-41e5-8518-8856dbe4a718.svs
TCGA-DU-8166-01Z-00-DX1.82951397-8c63-4c0f-8696-f081b170e21f.svs
File "/opt/lib/python2.7/site-packages/histomicstk-0.1.0-py2.7.egg/histomicstk/Sample.py", line 119, in Sample
Pixels = np.concatenate(Pixels, 1)
Functions for processing label images automatically condense the label image values to fill gaps for simplicity. This breaks the correspondence between the values of objects before and after calling the function. This can be fixed by skipping over 'empty' labels in the input.
On image TCGA-S9-A6UA-01Z-00-DX1.99AB8786-858B-46A0-94BA-C5AA1CD5351B.svs
File "/opt/lib/python2.7/site-packages/histomicstk-0.1.0-py2.7.egg/histomicstk/SimpleMask.py", line 55, in SimpleMask
TissuePeak = Peaks[yHist[Peaks[1:]].argmax()+1] #take highest peak among remaining peaks as background
ValueError: attempt to get argmax of an empty sequence
Define the formats to be produced by object segmentation and feature extraction.
Boundaries - will need a function to convert a list of 2 x N arrays (x,y) to some format for consumption into Girder.
Features - how to link the feature names to the rows of a K x N array. Would these be consumed into Girder or kept as arrays on disk?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.