-
Tired of hitting "View Selected" over and over? You can now toggle "auto refresh selection table".
- with the toggle active, the selection table will refresh whenever you make a select plotted data manually.
-
hover.configgives you the ability to customize the behavior of the package.- Choose your own color palette by setting
hover.config["visual"]["bokeh_palette"]. - Change selection table image styles through
hover.config["visual"]["table_img_style"]. - Change tooltip image styles through
hover.config["visual"]["tooltip_img_style"]. - try
hover.config.hint()to list the possible options!
- Choose your own color palette by setting
hover>=0.8.0may not be compatible withbokeh<3.0.- This is because we made low-level
bokehfunction call changes to keep up with3.0in this version.
- This is because we made low-level
-
Image and audio support through
SupervisableImageDatasetandSupervisableAudioDataset.- all other functionalities are similar to
SupervisableTextDataset BokehForImageandBokehForAudioimplemented search based on vector similarity.
- all other functionalities are similar to
-
- can compute arbitrary-dimensional embedding instead of only 2D.
- this is through a new method:
compute_nd_embedding. - same signature as
compute_2d_embeddingexcept for additional keyword argumentdimension=2.
- this is through a new method:
- embedding column names have changed.
- used to be
"x"and"y". - now will be
"embed_<n>d_<m>"where m = 0, 1, 2, ..., n-1.
- used to be
- can compute arbitrary-dimensional embedding instead of only 2D.
-
all explorers (
BokehBaseExplorersubclasses) have more selection options.- in 0.6.0, you could toggle "cumulative select".
- this corresponds to "union" in set operations.
- starting 0.7.0, you could also choose "intersection" or "difference".
- in 0.6.0, you could toggle "cumulative select".
- [
MultiVectorNet] is removed and no longer under experimentation.- we decided not to include noisy-label components in hover.
- future built-in recipes may use those mechanisms from other libraries like
cleanlab.
-
- you can now edit selections, like kicking points from current selection or updating cells on the fly.
-
- allows you to label and filter through functions.
- you can change those functions dynamically without having to replot!
-
all
Loggablesubclasses, i.e. datasets and explorers- traceback handling for all methods has switched to
rich.
- traceback handling for all methods has switched to
-
all
BokehBaseExplorersubclasses- Selections can now be made cumulatively. Tap on multiple points to view or label at once, without the overhead of re-plotting in between.
- this option is invoked through a checkbox toggle.
- by default, built-in recipes link the toggle between all explorers in the recipe.
- Selections can now be made cumulatively. Tap on multiple points to view or label at once, without the overhead of re-plotting in between.
-
- now has widgets for configuring training hyperparameters.
- currently only supports changing epochs.
- will support changing learning rate and momentum.
- added a method prepare_loader() that takes
SupervisableDatasetand returns a torchDataLoader.
- now has widgets for configuring training hyperparameters.
-
MultiVectorNetnew class under experimentation- makes use of multiple VectorNets trained simutaneously, inspired by the Coteaching research.
-
- used to have dual data structure: dataframes and lists of dictionaries
- now only uses dataframes, i.e.
dataset.dfsstays butdataset.dictlsis removed.
- now only uses dataframes, i.e.
- used to have dual data structure: dataframes and lists of dictionaries
-
active_learningsignature change- no longer takes
vectorizerorvecnet_callbackas inputs - will instead take
VectorNetdirectly.
- no longer takes
-
SupervisableDataset- Added import/export from/to pandas dataframes;
- Added a table for viewing selected data to the visual interface.
- Added an "Export" button -- this is taken from
BokehDataAnnotator.
-
BokehDataFinder- Search criteria can now be used to filter data point selections through a checkbox toggle.
-
BokehSoftLabelExplorer- Soft scores can now be used to filter data point selections through a checkbox toggle.
-
Intersecting Filters
- The two filters mentioned above can be in effect simultaneously, taking a set intersection.
-
Recipe:
active_learning- Added an interpolation of decision boundaries between 2D embeddings of the input and output.
-
VectorNet- It is now possible to configure whether or not to backup the model state dict.
-
A few JavaScript callbacks are converted to Python and will no longer work in static HTML:
- search widget responses (i.e. glyph color/size changes) in all
explorers; - synchronization of data point selections between
explorers, e.g. in thelinked_annotatorrecipe.
- search widget responses (i.e. glyph color/size changes) in all
-
BokehDataAnnotator- Removed the "Export" button -- it is now with
SupervisableDatasetinstead.
- Removed the "Export" button -- it is now with
-
Keyword arguments to recipes (
simple_annotator, for example) are now correctly forwarded to Bokeh figures.- Note that figure tooltips (the info box that show up upon mouse hover over data points) will append to, instead of replace, the built-in tooltips.
-
active_learning's dev set during model re-train will now fall back to using the train set if the dev set is empty.
-
Label -> Glyph legends are removed from
BokehDataAnnotatorandBokehSoftLabelExplorer.- instead,
SupervisableDatasetnow keeps track of labels and their corresponding colors consistently with explorers which use colors based on labels. - context for those who might be interested: the tie between legends and renderers makes legends hard to read when its renderer's glyphs vary a lot.
BokehDataAnnotatorandBokehSoftLabelExplorerdynamically update glyphs and fall into this scenario.
- instead,
-
BokehSoftLabelExplorernow "smartly" calculatesfill_alpha.- it does so through the mean value and standard deviation of soft scores.
-
Clicking the
Commitbutton on the interface ofSupervisableDatasetused to fail to reflect changes in the population table when a new class shows up.- this is now resolved. Clicking either
CommitorDedupwill reflect any population changes.
- this is now resolved. Clicking either
-
Added loading text before each
hover.recipes.<recipe>renders in BokehJS.- displays an additional dot every a few (5) seconds.
- potential security concern displays traceback information if something breaks in the scope of the recipe.
- this can be useful, for example, when you are visiting a remote Bokeh server with no access to the logs.
-
Partial towards image data support
hover.core.explorer.<explorer>tooltips are now capable of displaying images from theimagefield (http://url/to/image.pngorfile:///path/to/image.jpg) of yourDataFrame.
-
Partial towards audio data support
hover.core.explorer.<explorer>tooltips are now capable of running audio playbacks from theaudiofield (http://url/to/audio.mp3orfile:///path/to/audio.wav) of yourDataFrame.
hover.recipes.experimental.active_learning: signature change of an argument:vecnet_callback()becomesvecnet_callback(dataset, vectorizer)for more flexibilityhover.core.explorer.reset_figure()has been removed after a period of deprecation.
-
hover.core.explorer.BokehCorpusExplorer: please usehover.core.explorer.BokehTextFinderinstead.- This is a naming change for consistency; the class functionality stays the same.
- The original class name will be removed in a future version.
-
hover.core.explorer.BokehCorpus<XXX>: renamed tohover.core.explorer.BokehText<XXX>for consistency withtext/audio/imagefeatures. -
hover.core.neural.create_vector_net_from_module: this makes more sense as a class method ofhover.core.neural.VectorNet.- The original function will be removed in a future version.
- The class method now takes either a loaded module or a string representing it. It (or the predecessor function) used to accept only the string form.
-
Legend icons used to be broken when a legend item corresponded to multiple glyphs. This is now resolved at the cost of dropping renderer references from the legend item.
- the context is that a
Bokehlegend item shows its own icon by combining the glyphs of its renderers. The combined icon can be confusing when the glyphs' filling colors add up this way, even if they are the same color.
- the context is that a
-
Active learning: added a
model.save()step in the training callback so that the model resumes its progress on each callback, rather than starting over -
Cleaned up inconsistent logging format in the
hover.coremodule.- every class in
hover.corenow adoptsrichand specificallyhover.core.Loggablefor logging.- specified both foreground and background colors so that the text display clearly regardless of terminal settings.
- every class in