Skip to content

Releases: cbouy/mols2grid

v2.0.0 - 2023-07-23

29 Jul 18:12
Compare
Choose a tag to compare

This release is a major change on the UI contributed by @themoenen, refer to
PR#55 for the full list of changes:

Added

  • background_color="white" parameter added to display and save to control the background
    color of each cell.
  • Property values displayed via subset or tooltip can now be copied by clicking them.

Changed

  • Responsiveness: the grid as well as all UI components are now fully responsive, up until around
    ~415px wide. Smaller usage seems unlikely.
  • n_items_per_page replaces the n_rows and n_cols parameters. The responsive CSS assumes
    results to be a multiple of 12, otherwise a gap is displayed at the end of the grid.
  • Hover tooltips: now displayed when hovering the i icon, and anchored by clicking this icon.
  • Save CVS: When exporting as CSV we now use a semicolon ; as delineator instead of a tab, this
    way CSVs are properly previewed on Mac.
  • Templates: the pages/table templates and corresponding functions have been renamed to
    interactive/static for clarity.
  • Parameters width and height have been renamed to iframe_width and iframe_height to be more
    descriptive.
  • Improved the sorting UI to be more intuitive.
  • You can now toggle between text/SMARTS search instead of having to click a dropdown.
  • The checkbox menu icon was replaced with a more standard triple dot menu.
  • The mols2grid-id is now permanently displayed next to the checkbox in the corner.
  • SVGs are now rendered with a transparent background.
  • The entire cell is now clickable, instead of just the tiny checkbox.
  • Implemented some basic keyboard navigation: ENTER / ESC for selecting / unselecting, arrows and
    TAB for navigation.
  • Copy to clipboard: this will now record a tab delineated text which is ready to be pasted into a
    spreadsheet, instead of the less useful dictionary format.
  • The tooltip_trigger parameter has been removed since callback and hover functionalities don't
    overlap anymore.
  • We're now automatically adding "img" to the subset instead of throwing an error.
  • A smaller default font size (12px) makes the experience out of the box a bit more practical.

Fixed

  • Docstring now mention default values and some inconsistencies have been fixed.
  • All UI elements are now neatly aligned and displayed on top so they're accessible without
    scrolling.
  • Longer property values are now only truncated in the interactive grid, and broken into multiple
    lines by default in the static grid, as it is mostly meant for printing. A new parameter
    truncate lets you override the default truncating behavior.
  • The tooltip display zone (around which the tooltip is displayed) is now the entire cell instead
    of only the image, so it never overlaps with any of the cell's data or functionality.
  • When you download a CSV or SMILES file without any cells selected, you will now download data for
    all cells instead of an empty document.
  • Parameter gap in static template didn't work.
  • We no longer resize the iframe if a custom iframe_height is set by the display function.

v1.1.1 - 2023-03-18

18 Mar 14:24
Compare
Choose a tag to compare

Added

  • Support for pathlib.Path objects as input for display, save, MolGrid.from_sdf
    and sdf_to_dataframe.

Changed

  • The hover tooltip placement has been changed from "bottom" to "auto".
  • Code and notebook formatting with black and isort.
  • Switched to hatchling for the build process, tbump for versioning, and migrated to
    using only the pyproject.toml file.
  • Refactored tests to use Pytest's contest.py file.

Fixed

  • CSV export when sorting the grid was not using the selected molecules.

v1.1.0 - 2022-12-24

24 Dec 16:25
Compare
Choose a tag to compare

Added

  • Predefined JavaScript callbacks in the mols2grid.callbacks module. Those can be
    extensively configured:
    • info: displays a bigger image alongside some common descriptors for the molecule
    • show_3d: displays the molecule in 3D
    • external_link: opens a new tab. By default, opens Leruli.com
      using the SMILES of the molecule.
  • Support for tuple of molecules in display and save.

Changed

  • The "click" event is now automatically removed from tooltip_trigger when
    specifying a callback.

Fixed

  • Issue #34: text searches containing any of the following regex characters
    -[]{}()*+?.,\^$|# would automatically return an empty grid, preventing searching
    for CAS numbers and any other identifier or text containing the above characters. This
    has been temporarily patched until a proper fix is released in the underlying
    list.js library.
  • The link to the KNIME component on the corresponding badges has been fixed.

v1.0.0 - 2022-06-07

04 Sep 16:30
Compare
Choose a tag to compare

Added

  • Notebooks running in VSCode and Jupyter Lab now support accessing selections from
    Python, executing Python callback functions, and filtering based on other widgets.

Changed

  • Python callbacks can now also be lambda functions.
  • If prerender=True, substructure highlighting will be automatically disabled by
    default instead of raising an error.
  • When exporting a selection to a SMILES file through the GUI, the output no longer
    contains a header.
  • Relies on a custom ipywidget to handle communication between the front-end/Javascript
    and the back-end/Python.
  • When calling grid.filter and other filtering methods, mols2grid will now use the
    filtering code based on ipywidgets, except for Streamlit where it will use the older
    JavaScript version of the code to maintain compatibility.

Fixed

  • Automatically fitting to the content's height in Streamlit.

Removed

  • mapping argument for renaming fields, replaced by rename in v0.1.0.
  • mols2grid.selection, replaced by mols2grid.get_selection() in v0.1.0.

v0.2.4 - 2022/05/29

29 May 17:13
Compare
Choose a tag to compare

Fixed

  • Calling MolGrid.get_selection() when 2 grids with different names are present now returns the correct selection (Issue #31)

v0.2.3 - 2022/05/10

10 May 22:28
28b5a51
Compare
Choose a tag to compare

Fixed

  • Doing a substructure search on molecules with explicit hydrogens should now highlight
    the correct atoms.

v0.2.2 - 2022/04/04

04 Apr 14:45
Compare
Choose a tag to compare

Added

  • A proper documentation page with tutorials can now be accessed online.
  • Added a single_highlight=False parameter to only highlight a single match per
    molecule in substructure queries.
  • Added a "Check matching" button that only selects items that match the current search
    and/or filters.
  • Added custom_css, custom_header and sort_by to the "table" template

Changed

  • Compounds matching a substructure search are now aligned to the query molecule before
    rendering the image.
  • When doing a substructure search, all matches are now highlighted by default. To only
    show a single one, use single_highlight=True.
  • The Check all, Uncheck all and Invert selection buttons have been fixed. They now
    actually check/uncheck ALL items, and not just the ones matching the current search. A
    Check matching button has been added to reproduce the old behaviour.
  • If both subset and tooltip are None, the index and image will be directly
    displayed on the grid while the remaining fields will be in the tooltip. This makes the
    default representation much more readable.
  • The default number of columns is now 5 for template="table" (same as the other default
    template)

Fixed

  • template="table" now correctly displays images when prerender=True (Issue #27)
  • Displaying the grid with template="table" in a notebook now automatically fits to the
    content of the table.

v0.2.1 - 2022/02/23

23 Feb 18:41
af7d56f
Compare
Choose a tag to compare

Fixes

  • Field names containing spaces are now correctly delt with
  • The text search now looks for matches inside the values of the tooltip fields, rather than inside the HTML code of the tooltip which included tags and other irrelevant text
  • Fixed an encoding bug when saving the grid as an HTML file on French Windows, which uses CP-1252 encoding instead of UTF-8

v0.2.0 - 2022/02/10

10 Feb 14:16
Compare
Choose a tag to compare

Added

  • cache_selection=True allows to retrieve the checkbox state when re-displaying a grid,
    as long as they have the same name. Fixes #22
  • prerender=False moves the rendering of molecule images from Python to the browser and
    only when the molecule is on the current page, giving a performance boost and allowing
    to process much larger files. Fixes #17
  • substruct_highlight=True highlight the atoms that matched the substructure query when
    using the SMARTS search (only available when prerender=False). Fixes #18
  • Added CSV save option. Exports all the data present in subset and tooltip for the
    current selection
  • Support for .sdf.gz files
  • Added automated tests of the interface, which should prevent future updates from
    breaking things

Changed

  • Python 3.6 is no longer supported
  • Molecule images are now generated by the web browser (see prerender=False argument)
  • The coordinates of the input file are now ignored by default (use_coords=False). This
    change was made to comply with generating images from SMILES string with the browser by
    default.
  • Python callbacks are now automatically registered in Google Colab
  • Javascript callbacks can access RDKit as either RDKit or RDKitModule
  • The "img" field is now available from the callback data
  • The subset parameter now throws an error if "img" is not present
  • Clicking "Check all"/"Uncheck all" should now be faster
  • Bumped RDKit JS version to 2021.9.4 to better support moldrawoptions
  • Installation now requires jinja2>=2.11.0 to prevent an error when given a pathlib.Path
    object instead of a string

Fixed

  • Callbacks now work when selection=False. Fixes: Issue #22
  • Using both transform and style should now display the labels as expected in the
    tooltip
  • Fixed a race condition when clicking checkboxes on different grids
  • Fixed the gap argument not being properly taken into account
  • Automatic resizing of the iframe (used in mols2Grid.display) should now work even
    better

v0.1.0 - 2021/10/11

10 Oct 22:41
Compare
Choose a tag to compare

Added

  • The grid can be filtered using pandas DataFrame's query and loc logic (mostly
    useful to combine with ipywidgets) with MolGrid.filter_by_index and MolGrid.filter.
  • Selections can now be modified (select and unselect all, or invert) and exported (to
    clipboard or a SMILES file) even without a notebook kernel. Fixes: Issue #16.
  • The grid can be sorted according to the selection status and to values in the tooltips.
  • Added tracking the selection in multiple grids at the same time (i.e. it's not a
    global object that get's overwritten anymore).
  • Added support for executing custom JavaScript code or Python function when clicking on
    a molecule's image through the callback argument.
  • Added the mols2grid.make_popup_callback helper function to create a popup-like window
    as a JavaScript callback.
  • Added styling for the whole cell through style={"__all__": userfunction}.
  • Added mols2grid.get_selection() allowing users to specify which grid selection should
    be returned. Without argument, the most recently updated grid is returned.
  • Added mols2grid.list_grids() to return a list of grid names available.
  • Added the mols2grid.sdf_to_dataframe function to easily convert an SDF file to a
    pandas DataFrame.
  • Added the custom_css argument to pass custom CSS for the HTML document.
  • Added the sort_by argument to change how the grid elements are ordered

Changed

  • The functions in style and transform are now also applied to tooltips.
  • The sizing of the iframe displaying the grid is now fully automated and more precise.
  • Reorganized the code to separate the JS, CSS and HTML templates.

Fixed

  • Fixed mols2grid.save that returned an error about missing the output argument.
  • The tooltip is now compatible with the "focus" mode: tooltip_trigger="focus".
  • Fixed rendering SVG images in tooltips.

Deprecated

  • Deprecated mols2grid.selection in favor of mols2grid.get_selection().
  • Deprecated mapping in favor of rename in the MolGrid class and mols2grid.display.