Added
- Added a `display_residues` function to quickly visualize the residues in a `Molecule`
object.
- Added a `Complex3D` class for plotting interactions in 3D. Added the corresponding
`Fingerprint.plot_3d` method to generate the plot directly from an FP object.
- Added a `Barcode` class for plotting interactions. Added the corresponding
`Fingerprint.plot_barcode` method to generate the plot directly from an FP object.
- Added a `count` argument in `Fingerprint`. If `count=True`, enumerates all groups of
atoms that satisfy interaction constraints (instead of stopping at the first one),
allowing users to generate a count-fingerprint. The `Fingerprint.to_dataframe` method
has been modified accordingly, and a `Fingerprint.to_countvectors` method has been
added to generate a list of RDKit's `UIntSparseIntVect` from the count-fingerprint.
The visualisation scripts have been updated to display the occurence with the shortest
distance when a count-fingerprint is being used.
- Added a `parameters` argument in `Fingerprint` to easily update the parameters used
by an interaction, instead of defining a new interaction class (Issue 118).
- Added new abstract interaction classes `SingleAngle` and `DoubleAngle` to more easily
create custom interactions.
- Added the `vdwradii` parameter to the `VdWContact` interaction class to update the
radii it uses.
- Added the `Fingerprint.plot_lignetwork` method to generate a `LigNetwork` plot directly.
- Added `LigNetwork.from_fingerprint` to generate the ligplot from a `Fingerprint`
instance. Added a `display_all` parameter for displaying all interactions instead
of only the shortest one for a given pair of residues. Added `use_coordinates` and
`flatten_coordinates` to control how the ligand structure is displayed.
- Added support for displaying peptides with the `LigNetwork`.
- Added `Fingerprint.metadata` to generate a dictionary containing metadata about
interactions between two residues. Replaces `Fingerprint.bitvector_atoms`.
- Added a `vicinity_cutoff` parameter in `Fingerprint` to control the distance cutoff
used to automatically restrict the IFP calculation to residues within the specified
range of the ligand.
- Added a `metadata` method to the base `Interaction` class to easily generate metadata
for custom interactions.
- Added an `Interaction.invert_class` classmethod to easily invert the role of the
ligand and protein residues in an interaction, e.g. to create a donor class from an
acceptor class.
Changed
- The tutorials have been overhauled and should now be much easier to navigate.
- The multiprocessing and pickling backends have been switched to `multiprocess` and
`dill` respectively, and the parallel implementation has been improved. Users should
now be able to define custom interactions in Jupyter notebooks, IPython and so on
without any issue (Issue 117, Issue 86).
- The `LigNetwork` plot now displays the distance for each interaction on mouse hover.
- Changed the format of the `Fingerprint.ifp` attribute to be a dictionary indexed by
frame/structure index. The values are custom `IFP` dictionaries that can be more
easily indexed by using residue identifier strings (e.g. `ALA216.A`) rather than
`ResidueId` objects. Each entry contains complete interaction metadata instead of just
atom indices.
- All interaction classes now return more complete details about the interaction (e.g.
distances, angles, atom indices in the residue and parent molecule).
- Changed the default color for `VanDerWaals` interactions in the builtin plots.
- Converting the IFP to a dataframe with atom indices has been optimized and now runs
about 5 times faster (Issue 112, PR 113 by ReneHamburger1993). *Note: discarded*
*by the subsequent updates to the codebase which removed the ability to have*
*atom indices in the dataframe.*
- Various changes related to packaging, code formatting, linting and CI pipelines
(PR 114).
Fixed
- Fixed pickling properties on RDKit molecules for Windows.
Removed
- Removed the `return_atoms` argument in `Fingerprint.to_dataframe`. Users should
directly use `Fingerprint.ifp` instead (the documentation's tutorials have been
updated accordingly).
- Removed the `Fingerprint.bitvector_atoms` method, replaced by `Fingerprint.metadata`.
- Removed the `__wrapped__` attribute on interaction methods that are available
from the `Fingerprint` object. These methods now accept a `metadata` parameter
instead.
- Removed `LigNetwork.from_ifp` in favor of `LigNetwork.from_fingerprint`.
- Removed the `match3D` parameter in `LigNetwork`. Replaced by `use_coordinates` and
`flatten_coordinates` to give users more control and allow them to provide their own
2D coordinates.