Plotting#

Plot residues — prolif.plotting.residues#

New in version 2.0.0.

prolif.plotting.residues.display_residues(mol: Molecule, residues_slice: Optional[slice] = None, *, size: Tuple[int, int] = (200, 140), mols_per_row: int = 4, use_svg: bool = True) Any[source]#

Display a grid image of the residues in the molecule. The hydrogens are stripped and the 3D coordinates removed for a clearer visualisation.

Parameters
  • mol (prolif.Molecule) – The molecule to show residues from.

  • residues_slice (Optional[slice] = None) – Optionally, a slice of residues to display, e.g. slice(20) for the first 20 residues, or slice(<start>, <stop>, <step>) for a more complex selection.

  • size (Tuple[int, int] = (200, 140)) – Size of each residue image.

  • mols_per_row (int = 4) – Number of residues displayed per row.

  • use_svg (bool = True) – Generate an SVG or PNG image.

Plot interactions as a barcode — prolif.plotting.barcode#

New in version 2.0.0.

class prolif.plotting.barcode.Barcode(df: DataFrame)[source]#

Creates a barcode plot of interactions.

Parameters

df (pandas.DataFrame) – The DataFrame as obtained from Fingerprint.to_dataframe()

COLORS#

Dictionnary of colors used in the plot for interactions.

Type

dict

display(figsize: Tuple[int, int] = (8, 10), dpi: int = 100, interactive: bool = False, n_frame_ticks: int = 10, residues_tick_location: Literal['top', 'bottom'] = 'top', xlabel: str = 'Frame', subplots_kwargs: Optional[dict] = None, tight_layout_kwargs: Optional[dict] = None)[source]#

Generate and display the barcode plot.

Parameters
  • figsize (Tuple[int, int] = (8, 10)) – Size of the matplotlib figure.

  • dpi (int = 100) – DPI used for the matplotlib figure.

  • interactive (bool) – Add hover interactivity to the plot (only relevant for notebooks). You may need to add %matplotlib notebook or %matplotlib ipympl for it to work as expected.

  • n_frame_ticks (int = 10) – Number of ticks on the X axis. May use ±1 tick to have them evenly spaced.

  • residues_tick_location (Literal["top", "bottom"] = "top") – Whether the Y ticks appear at the top or at the bottom of the series of interactions of each residue.

  • xlabel (str = "Frame") – Label displayed for the X axis.

  • subplots_kwargs (Optional[dict] = None) – Other parameters passed to matplotlib.pyplot.subplots().

  • tight_layout_kwargs (Optional[dict] = None) – Other parameters passed to matplotlib.figure.Figure.tight_layout().

classmethod from_fingerprint(fp: Fingerprint) Barcode[source]#

Creates a barcode object from a fingerprint.

Plot interactions in 3D — prolif.plotting.complex3d#

New in version 2.0.0.

class prolif.plotting.complex3d.Complex3D(ifp: IFP, lig_mol: Molecule, prot_mol: Molecule)[source]#

Creates a py3Dmol plot of interactions.

Parameters
  • ifp (IFP) – The interaction dictionary for a single frame.

  • lig_mol (Molecule) – The ligand molecule to display.

  • prot_mol (Molecule) – The protein molecule to display.

COLORS#

Dictionnary of colors used in the plot for interactions.

Type

dict

LIGAND_STYLE#

Style object passed to 3Dmol.js for the ligand.

Type

Dict[str, Dict] = {“stick”: {“colorscheme”: “cyanCarbon”}}

RESIDUES_STYLE#

Style object passed to 3Dmol.js for the protein residues involved in interactions.

Type

Dict[str, Dict] = {“stick”: {}}

PROTEIN_STYLE#

Style object passed to 3Dmol.js for the entire protein.

Type

Dict[str, Dict] = {“cartoon”: {“style”: “edged”}}

PEPTIDE_STYLE#

Style object passed to 3Dmol.js for the ligand as a peptide if appropriate.

Type

Dict[str, Dict] = “cartoon”: {“style”: “edged”, “colorscheme”: “cyanCarbon”}

PEPTIDE_THRESHOLD#

Ligands with this number of residues or more will be displayed using PEPTIDE_STYLE in addition to the LIGAND_STYLE.

Type

int = 2

LIGAND_DISPLAYED_ATOM#

Which atom should be used to display an atom-to-atom interaction for the ligand. Refers to the order defined in the SMARTS pattern used in interaction definition. Interactions not specified here use 0 by default.

Type

Dict[str, int]

PROTEIN_DISPLAYED_ATOM#

Same as LIGAND_DISPLAYED_ATOM for the protein.

Type

Dict[str, int]

LIGAND_RING_INTERACTIONS#

Which interactions should be displayed using the centroid instead of using LIGAND_DISPLAYED_ATOM for the ligand.

Type

Set[str]

PROTEIN_RING_INTERACTIONS#

Which interactions should be displayed using the centroid instead of using PROTEIN_DISPLAYED_ATOM for the protein.

Type

Set[str]

RESIDUE_HOVER_CALLBACK#

JavaScript callback executed when hovering a residue involved in an interaction.

Type

str

INTERACTION_HOVER_CALLBACK#

JavaScript callback executed when hovering an interaction line.

Type

str

DISABLE_HOVER_CALLBACK#

JavaScript callback executed when the hovering event is finished.

Type

str

display(size: Tuple[int, int] = (650, 600), display_all: bool = False)[source]#

Display as a py3Dmol widget view.

Parameters
  • size (Tuple[int, int] = (650, 600)) – The size of the py3Dmol widget view.

  • display_all (bool) – Display all occurences for a given pair of residues and interaction, or only the shortest one. Not relevant if count=False in the Fingerprint object.

classmethod from_fingerprint(fp: Fingerprint, lig_mol: Molecule, prot_mol: Molecule, *, frame: int) Complex3D[source]#

Creates a py3Dmol plot of interactions.

Parameters
  • fp (prolif.fingerprint.Fingerprint) – The fingerprint object already executed using one of the run or run_from_iterable methods.

  • frame (int) – The frame number chosen to select which interactions are going to be displayed.

  • lig_mol (Molecule) – The ligand molecule to display.

  • prot_mol (Molecule) – The protein molecule to display.

Plot a Ligand Interaction Network — prolif.plotting.network#

New in version 0.3.2.

Changed in version 2.0.0: Replaced LigNetwork.from_ifp with LigNetwork.from_fingerprint which works without requiring a dataframe with atom indices.

class prolif.plotting.network.LigNetwork(df, lig_mol, use_coordinates=False, flatten_coordinates=True, kekulize=False, molsize=35, rotation=0, carbon=0.16)[source]#

Creates a ligand interaction diagram

Parameters
  • df (pandas.DataFrame) – Dataframe with a 4-level index (ligand, protein, interaction, atoms) and weight and distance columns for values

  • lig_mol (rdkit.Chem.rdChem.Mol) – Ligand molecule

  • use_coordinates (bool) – If True, uses the coordinates of the molecule directly, otherwise generates 2D coordinates from scratch. See also flatten_coordinates.

  • flatten_coordinates (bool) – If this is True and use_coordinates=True, generates 2D coordinates that are constrained to fit the 3D conformation of the ligand as best as possible.

  • kekulize (bool) – Kekulize the ligand

  • molsize (int) – Multiply the coordinates by this number to create a bigger and more readable depiction

  • rotation (int) – Rotate the structure on the XY plane

  • carbon (float) – Size of the carbon atom dots on the depiction. Use 0 to hide the carbon dots

COLORS#

Dictionnary of colors used in the diagram. Subdivided in several dictionaries:

  • “interactions”: mapping between interactions types and colors

  • “atoms”: mapping between atom symbol and colors

  • “residues”: mapping between residues types and colors

Type

dict

RESIDUE_TYPES#

Mapping between residue names (3 letter code) and types. The types are then used to define how each residue should be colored.

Type

dict

Notes

You can customize the diagram by tweaking LigNetwork.COLORS and LigNetwork.RESIDUE_TYPES by adding or modifying the dictionaries inplace.

Changed in version 2.0.0: Replaced LigNetwork.from_ifp with LigNetwork.from_fingerprint which works without requiring a dataframe with atom indices. Replaced match3D parameter with use_coordinates and flatten_coordinates to give users more control and allow them to provide their own 2D coordinates. Added support for displaying peptides as the “ligand”. Changed the default color for VanDerWaals.

display(**kwargs)[source]#

Prepare and display the network

classmethod from_fingerprint(fp, ligand_mol, kind='aggregate', frame=0, display_all=False, threshold=0.3, **kwargs)[source]#

Helper method to create a ligand interaction diagram from a Fingerprint object.

Notes

Two kinds of diagrams can be rendered: either for a designated frame or by aggregating the results on the whole IFP and optionnally discarding interactions that occur less frequently than a threshold. In the latter case (aggregate), only the group of atoms most frequently involved in each interaction is used to draw the edge.

Parameters
  • fp (prolif.fingerprint.Fingerprint) – The fingerprint object already executed using one of the run or run_from_iterable methods.

  • lig (rdkit.Chem.rdChem.Mol) – Ligand molecule

  • kind (str) – One of "aggregate" or "frame"

  • frame (int) – Frame number (see ifp). Only applicable for kind="frame"

  • display_all (bool) – Display all occurences for a given pair of residues and interaction, or only the shortest one. Only applicable for kind="frame". Not relevant if count=False in the Fingerprint object.

  • threshold (float) – Frequency threshold, between 0 and 1. Only applicable for kind="aggregate"

  • kwargs (object) – Other arguments passed to the LigNetwork class

Changed in version 2.0.0: Added the display_all parameter.

save(fp, **kwargs)[source]#

Save the network to an HTML file

Parameters

fp (str or file-like object) – Name of the output file, or file-like object

show(filename, **kwargs)[source]#

Save the network as HTML and display the resulting file