BiAPoL / napari-clusters-plotter

A napari plugin for clustering objects according to their properties.
BSD 3-Clause "New" or "Revised" License
79 stars 10 forks source link

fast hdbscan #250

Open haesleinhuepf opened 1 year ago

haesleinhuepf commented 1 year ago

If fast-hdbscan works for our purposes (worth exploring), we could replace hdbscan. We can also make it an optional dependency.

thorstenwagner commented 1 year ago

Alternative: Rapids? https://docs.rapids.ai/api/cuml/nightly/api/#hdbscan

haesleinhuepf commented 1 year ago

Rapids needs an NVidia GPU, fast-hdbscan not, right? Anyway, I think we might work towards a pluggable interface for dimensionality reduction and clustering methods so that anyone can extend our pulldowns with whatever they like. We could use a similar scheme like the tools menu uses: https://github.com/haesleinhuepf/napari-tools-menu#Usage

It might be worth waiting for npe2 to support custom extension of napari commands and then introduce commands for clustering / dimensionality reduction. Not sure when this will be technically possible. Maybe @andy-sweet can tell?

kne42 commented 1 year ago

Hi @haesleinhuepf, when talking about custom extensions of napari commands, do you mean providing commands for napari to insert in menus/keybindings? If so, this work is still currently in progress but we hope to get it in for the next release (whenever that is)

haesleinhuepf commented 1 year ago

Hey @kne42 ,

thanks for replying! I think one small step ahead: if the napari yaml file allowed to specify not just menus and keybindings, but anything, we could define one entity of anything to be commands with an interface such as table_processing_algorithm(in:pd.DataFrame, ...) -> pd.DataFrame. We could then ask npe2: "give me all table processing algorithms" and list them in a pulldown. With npe1 such things were very easy to implement (see tools menu link above). Are there any plans for when this might be possible with npe2?

Thank! Robert