Interaction Fingerprints for protein-ligand complexes and more
Maintenance update:
PROLIF_N_JOBS
environment variable to control the default number of processes (used during the documentation build).tests/
directory being included as a module rather than as plain data files. This could interfere with pytest
during test collection in other packages.Complex3D
you can now use the compare
method to display two 3D structures side by side.imshow
call when generating the plot for large fingerprints. Interpolation has been disabled to address the issue.This is a major refactoring of the ProLIF codebase introducing new features, but also breaking changes:
Fingerprint
object: plot_3d
, plot_barcode
, plot_lignetwork
. A prolif.display_residues
function is also available for easier debugging of structure preparation.Fingerprint.ifp
.Fingerprint(count=True)
.parameters
argument in the Fingerprint
class allows providing custom parameters for interactions (rather than having to create new interaction classes).multiprocess
and dill
for better support in notebooks.Removed
section for a list of breaking changes.display_residues
function to quickly visualize the residues in a Molecule
object.Complex3D
class for plotting interactions in 3D. Added the corresponding
Fingerprint.plot_3d
method to generate the plot directly from an FP object.Barcode
class for plotting interactions. Added the corresponding
Fingerprint.plot_barcode
method to generate the plot directly from an FP object.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.parameters
argument in Fingerprint
to easily update the parameters used
by an interaction, instead of defining a new interaction class (Issue #118).SingleAngle
and DoubleAngle
to more easily
create custom interactions.vdwradii
parameter to the VdWContact
interaction class to update the
radii it uses.Fingerprint.plot_lignetwork
method to generate a LigNetwork
plot directly.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.LigNetwork
.Fingerprint.metadata
to generate a dictionary containing metadata about
interactions between two residues. Replaces Fingerprint.bitvector_atoms
.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.metadata
method to the base Interaction
class to easily generate metadata
for custom interactions.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.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).LigNetwork
plot now displays the distance for each interaction on mouse hover.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.VanDerWaals
interactions in the builtin plots.return_atoms
argument in Fingerprint.to_dataframe
. Users should
directly use Fingerprint.ifp
instead (the documentation's tutorials have been
updated accordingly).Fingerprint.bitvector_atoms
method, replaced by Fingerprint.metadata
.__wrapped__
attribute on interaction methods that are available
from the Fingerprint
object. These methods now accept a metadata
parameter
instead.LigNetwork.from_ifp
in favor of LigNetwork.from_fingerprint
.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.Fingerprint.run
now has a converter_kwargs
parameter that can pass kwargs to the
underlying RDKitConverter from MDAnalysis (Issue #57).black
.tolerance
parameter has been set to 0.pdbqt_supplier
will not add explicit hydrogen atoms anymore, to avoid detecting
hydrogen bonds with "random" hydrogens that weren't in the PDBQT file (PR #99).pdbqt_supplier
, irrelevant warnings and logs have been disabled (PR #99).2021.03.1
pdbqt_supplier
now correctly preserves hydrogens from the input PDBQT file (PR #99).to_dataframe
would error without giving a helpful message. It
now returns a dataframe with the correct number of frames in the index and no column.n_jobs
in fp.run
and fp.run_from_iterable
.fp.to_pickle
and
Fingerprint.from_pickle
(Issue #40).to_dataframe
will not complain about
a KeyError
anymore (Issue #44).plf.Fingerprint
, unknown interactions will no longer fail silently.This is the version corresponding to the ProLIF published paper.
CITATION.cff
file.fp.generate
#
) would lead to an error