-
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.config
gives 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.0
may not be compatible withbokeh<3.0
.- This is because we made low-level
bokeh
function call changes to keep up with3.0
in this version.
- This is because we made low-level
-
Image and audio support through
SupervisableImageDataset
andSupervisableAudioDataset
.- all other functionalities are similar to
SupervisableTextDataset
BokehForImage
andBokehForAudio
implemented 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_embedding
except 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 (
BokehBaseExplorer
subclasses) 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
Loggable
subclasses, i.e. datasets and explorers- traceback handling for all methods has switched to
rich
.
- traceback handling for all methods has switched to
-
all
BokehBaseExplorer
subclasses- 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
SupervisableDataset
and returns a torchDataLoader
.
- now has widgets for configuring training hyperparameters.
-
MultiVectorNet
new 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.dfs
stays butdataset.dictls
is removed.
- now only uses dataframes, i.e.
- used to have dual data structure: dataframes and lists of dictionaries
-
active_learning
signature change- no longer takes
vectorizer
orvecnet_callback
as inputs - will instead take
VectorNet
directly.
- 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
explorer
s; - synchronization of data point selections between
explorer
s, e.g. in thelinked_annotator
recipe.
- search widget responses (i.e. glyph color/size changes) in all
-
BokehDataAnnotator
- Removed the "Export" button -- it is now with
SupervisableDataset
instead.
- 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
BokehDataAnnotator
andBokehSoftLabelExplorer
.- instead,
SupervisableDataset
now 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.
BokehDataAnnotator
andBokehSoftLabelExplorer
dynamically update glyphs and fall into this scenario.
- instead,
-
BokehSoftLabelExplorer
now "smartly" calculatesfill_alpha
.- it does so through the mean value and standard deviation of soft scores.
-
Clicking the
Commit
button on the interface ofSupervisableDataset
used to fail to reflect changes in the population table when a new class shows up.- this is now resolved. Clicking either
Commit
orDedup
will 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 theimage
field (http://url/to/image.png
orfile:///path/to/image.jpg
) of yourDataFrame
.
-
Partial towards audio data support
hover.core.explorer.<explorer>
tooltips are now capable of running audio playbacks from theaudio
field (http://url/to/audio.mp3
orfile:///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.BokehTextFinder
instead.- 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/image
features. -
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
Bokeh
legend 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.core
module.- every class in
hover.core
now adoptsrich
and specificallyhover.core.Loggable
for logging.- specified both foreground and background colors so that the text display clearly regardless of terminal settings.
- every class in