Is your feature request related to a problem? Please describe.
Currently clustering must take place outside of the context of the pipeline. We should add in functionality to perform clustering so that we can have a seamless, integrated user-experience.
Describe the solution you'd like
This is a high-level issue to track the progress towards the eventual end goal. Each bullet below should be its own PR. Please create a separate issue for each bullet once you are going to tackle it, and link it here.
[x] Implement basic SOM in Python (#325). It looks like the most popular SOM package in python is miniSOM, but open to other options. We'll want to add basic functionality to load images, train the SOM, classify all pixels, and produce an output.
[x] Write testing for SOM code (#344) . This should first involve running some of the sample data from the miniSOM package to ensure the outputs are the same, and then building out an actual test suite.
[x] Benchmark current implementation to find slowest parts and most memory intensive processes (#345)
[x] Add option to select random subset of pixels and use those for training (#362) , rather than the entire image
[x] Implement pixel metaclustering (#364) to aggregate the 100 pixel clusters which are produced.
[x] Implement cell assignment (#365) to identify the cell type of each cell based on the pixel clusters of the corresponding pixels within that cell
[x] Create skeleton Jupyter notebook for clustering pipeline
[x] Reproduce code for heatmap visualizations in current pixel-clustering pipeline. This may overlap with #205. In particular, we'll need to add hierarchical clustering and a dendrogram display
[x] Create interactive interface to manually re/assign cluster labels (#350)
[x] Create visualization tools to overlay pixel clusters over image data (#351)
Is your feature request related to a problem? Please describe. Currently clustering must take place outside of the context of the pipeline. We should add in functionality to perform clustering so that we can have a seamless, integrated user-experience.
Describe the solution you'd like This is a high-level issue to track the progress towards the eventual end goal. Each bullet below should be its own PR. Please create a separate issue for each bullet once you are going to tackle it, and link it here.
[x] Implement basic SOM in Python (#325). It looks like the most popular SOM package in python is miniSOM, but open to other options. We'll want to add basic functionality to load images, train the SOM, classify all pixels, and produce an output.
[x] Write testing for SOM code (#344) . This should first involve running some of the sample data from the miniSOM package to ensure the outputs are the same, and then building out an actual test suite.
[x] Benchmark current implementation to find slowest parts and most memory intensive processes (#345)
[x] Add option to select random subset of pixels and use those for training (#362) , rather than the entire image
[x] Implement pixel metaclustering (#364) to aggregate the 100 pixel clusters which are produced.
[x] Implement cell assignment (#365) to identify the cell type of each cell based on the pixel clusters of the corresponding pixels within that cell
[x] Create skeleton Jupyter notebook for clustering pipeline
[x] Reproduce code for heatmap visualizations in current pixel-clustering pipeline. This may overlap with #205. In particular, we'll need to add hierarchical clustering and a dendrogram display
[x] Create interactive interface to manually re/assign cluster labels (#350)
[x] Create visualization tools to overlay pixel clusters over image data (#351)