Skip to content

v2.1.0 - 2026-01-20

Latest

Choose a tag to compare

@cbouy cbouy released this 20 Jan 00:23
· 8 commits to master since this release
3900496

Welcome to new contributors: talagayev, yuyuan871111, nilay-v3rma, VAKozyrev, H-EKE, weitse-hsu, amorehead, maabuu, tanii1125 👋

Summary

This release has been staggered for a very long time and so it's quite massive, here's a TL;DR

  • New WaterBridge interaction 💧
  • Performance enhancements for parallelisation 🚀
  • New utility functions split_molecule and select_over_trajectory ✂️
  • Adjustments to the Hydrophobic and HBond SMARTS patterns 🎯
  • Type-hints ℹ️

Added

  • Added a new queue parallelization strategy for trajectories, alongside the
    existing chunk strategy, and some simple heuristics to decide
    between the two. Users can also force the usage of one strategy or the other
    through the parallel_strategy parameter.
  • Added split_molecule to split a molecule into components based on a predicate
    function.
  • Added select_over_trajectory to easily make AtomGroup distance-based selections
    (including recursive selections) over the whole trajectory rather than just the first
    frame. This helps making optimised selections when a protein is highly flexible
    instead of using protein and byres around X group ligand with a very large X.
  • Support for WaterBridge interactions (PR #229 with @talagayev).
  • Refactored the LigNetwork plotting code (PR #268 by @nilay-v3rma).
  • Type-checking and related pipelines:
  • Support for FrameIteratorIndices as trajectories in fp.run (PR #246 by @wehs7661).
  • LigNetwork now optionally displays the percentage of interaction occurence when
    show_interaction_data is enabled. The type of data shown on both the label and
    hover title can be modified (PR #234 by @talagayev).
  • VdWContact now accepts a preset parameter to easily use different van der Waals
    radii values: one of mdanalysis (default), rdkit, or csd. Documented in PR #253
    by @yuyuan871111.
  • IFP.interactions() iterator that yields all interaction data for a given frame in
    a single flat structure. This makes iterating over the fp.ifp results a bit
    easier / less nested.
  • Complex3D and fp.plot_3d now have access to only_interacting and
    remove_hydrogens parameters to control which residues and hydrogen atoms are
    displayed. Non-polar hydrogen atoms that aren't involved in interactions are now
    hidden by default.
  • LigNetwork.save_png to save the displayed plot to a PNG file through JavaScript
    (Issue #163).
  • Complex3D.save_png to save the displayed plot to a PNG file through JavaScript.
  • fp.plot_3d and fp.plot_lignetwork now return the underlying LigNetwork or
    Complex3D object which has been enhanced with rich display functionality. From the
    user's perspective, nothing changes apart from being able to do
    view = fp.plot_*(...); view.save_png() to display a popup window for saving the
    image.
  • cleanup_substructures parameter now accessible in mol2_supplier to skip
    sanitization based on atom types.
  • sanitize parameter now available for the mol2_supplier and sdf_supplier classes.
  • ruff linter and formatter.
  • uv and poethepoet for running local and automated CI pipelines.

Fixed

  • ResidueGroup resnumbers are now declared as uint32 instead of uint16 (PR #315,
    Issue #313).
  • SMARTS pattern for Hydrophobic were not matching as expected due to the presence of
    explicit hydrogens in the molecules. The SMARTS have been rewritten to account for
    this.
  • ProLIF can now use the segment number as a ResidueId chain. This should help with
    solvated systems that may reuse the same resname, resnumber and chain and were using
    the segment number/identifier to distinguish them in the topology file.
  • Sorting ResidueId objects where a subset of residues had no chain was raising a
    TypeError, it will now put cases without a chain first (PR #235 by @amorehead).
  • display_residues was sanitizing each residue while preparing them for display, which
    could make debugging faulty molecules difficult. This is now disabled.
  • Deprecation warnings

Changed

  • For trajectory analysis, unless a number of jobs is specified through n_jobs
    in Fingerprint.run, ProLIF will now use up to a maximum of 10 processes instead of
    all available cores. The cap can be modified through the PROLIF_MAX_N_JOBS
    environment variable.
  • Fingerprint.run now exposes a parallel_strategy parameter (chunk, queue, or
    None).
  • Unpin the numpy version (PR #306 by @maabuu).
  • Hydrophobic SMARTS pattern now excludes all carbon linked to
    nitrogen/oxygen/fluoride from being hydrophobic, previous versions were allowing such
    carbons if they were aromatic.
  • HBond SMARTS patterns now removes charged aromatic nitrogen, triazolium, and
    guanidine/anidine-like from acceptors, and enables the charged nitrogen from
    histidine as donor.
  • Strip whitespaces in ResidueId name and chain.
  • Improved parsing for less standard residue names in ResidueId.