Visualizer
| Draw a molecule using RDKit | |
| Draw the alignment of multiple spectrums | |
| draws a fragment of the molecule. | |
| Draw the modifications from molecule 1 to molecule 2 | |
| Draw a molecule and color the atoms based on the scores | |
| Draw a spectrum | 
More information on the features provided here are available at
rdkit: http://www.rdkit.org/ matplotlib: http://matplotlib.org/
GNPS Utils - Visualizer Module
This module provides functionality to visualize data from GNPS.
Author: Shahneh
- modifinder.utilities.visualizer.draw_alignment(spectrums, matches=None, output_type='png', normalize_peaks=False, size=None, dpi=300, draw_mapping_lines=True, ppm=40, x_lim=None, **kwargs)[source]
- Draw the alignment of multiple spectrums - Parameters:
- spectrums (list of SpectrumTuple or list of list of tuples (mz, intensity)) – list of spectrums to draw 
- matches (list of list of tuples or list of tuples, optional (default=None)) – matching between the spectrums 
- output_type (str, optional (default='png')) – type of output (png or svg) 
- normalize_peaks (bool, optional (default=False)) – normalize the peaks or not 
- size (tuple, optional (default=None)) – size of the figure 
- dpi (int, optional (default=300)) – dpi of the stored image 
- draw_mapping_lines (bool, optional (default=True)) – draw the mapping lines 
- ppm (float, optional (default=40)) – ppm value for the alignment 
- x_lim (tuple, optional (default=None)) – x limit of the figure 
- kwargs (dict) – additional arguments for drawing the spectrum in matplotlib 
 
- Returns:
- img 
- Return type:
- numpy array or str 
 - Examples - import modifinder.utilities.visualizer as mf_vis from matplotlib import pyplot as plt import numpy as np peaks1 = list(zip([100, 200, 270, 400, 450], [0.1, 0.2, 0.5, 0.4, 0.3])) peaks2 = list(zip([100, 230, 350, 360, 430], [0.1, 0.3, 0.2, 0.4, 0.5])) peaks3 = list(zip([120, 230, 300, 380, 550], [0.1, 0.2, 0.5, 0.4, 0.3])) matches = [[(0, 0), (1, 1), (3, 4)], [(0, 0), (1, 1), (3, 3)]] img = mf_vis.draw_alignment([peaks1, peaks2, peaks3], matches=matches, output_type='png', normalize_peaks=True, x_lim=(0, 550)) plt.imshow(img) plt.axis('off') plt.show()   
- modifinder.utilities.visualizer.draw_frag_of_molecule(mol, fragment, output_type='png', **kwargs)[source]
- draws a fragment of the molecule. The fragment is represented by a binary string where 1 indicates the presence of the atom and 0 indicates the absence. - Parameters:
- mol (rdkit molecule) – Molecule to draw the fragment for 
- fragment (int or list) – fragment represented in base 10 where in the binary representation 1 indicates the presence of the atom and 0 indicates the absence, or a list of atom indices 
- output_type (str, optional (default='png')) – type of output (png or svg) 
- kwargs (dict) – additional arguments for drawing the molecule in rdkit 
 
- Returns:
- img 
- Return type:
- numpy array or str 
 - Examples - import modifinder.utilities.visualizer as mf_vis from matplotlib import pyplot as plt from rdkit import Chem mol = Chem.MolFromSmiles('CN1C=NC2=C1C(=O)N(C(=O)N2C)C') def mol_with_atom_index(mol): for atom in mol.GetAtoms(): atom.SetAtomMapNum(atom.GetIdx()) return mol mol = mol_with_atom_index(mol) fragment = int("110111", 2) # Convert binary to decimal img = mf_vis.draw_frag_of_molecule(mol, fragment, output_type='png') plt.imshow(img) plt.axis('off') plt.show()   
- modifinder.utilities.visualizer.draw_modifications(mol1, mol2, output_type='png', show_legend=True, legend_font=15, legend_position=None, highlight_common=True, highlight_added=True, highlight_removed=True, modification_only=False, **kwargs)[source]
- Draw the modifications from molecule 1 to molecule 2 - Parameters:
- mol1 (rdkit molecule, str) – rdkit molecule or str for SMILES or InChI or GNPS identifier (USI or Accession) 
- mol2 (rdkit molecule) – rdkit molecule or str for SMILES or InChI or GNPS identifier (USI or Accession) 
- output_type (str, optional (default='png')) – type of output (png or svg) 
- show_legend (bool, optional (default=True)) – show the legend or not 
- legend_font (int, optional (default=15)) – font size of the legend 
- legend_position (tuple, optional (default=None)) – position of the legend 
- highlight_common (bool, optional (default=True)) – highlight the common atoms 
- highlight_added (bool, optional (default=True)) – highlight the added atoms 
- highlight_removed (bool, optional (default=True)) – highlight the removed atoms 
- modification_only (bool, optional (default=False)) – only highlight the modification edges, if highlight_removed or highlight_added is False, this will only show the enabled ones 
 
- Returns:
- img – image of the modification 
- Return type:
- numpy array or str 
 - Examples - import modifinder.utilities.visualizer as mf_vis from matplotlib import pyplot as plt from rdkit import Chem smiles1, smiles2 = 'N[C@@H](CCC(=O)N[C@@H](CS)C(=O)NCC(O)=O)C(O)=O', 'CCCCCCSCC(CNCC(=O)O)NC(=O)CCC(C(=O)O)N' mol1 = mf_vis.draw_molecule(smiles1, label="mol1") mol2 = mf_vis.draw_molecule(smiles2, label="mol2") modification = mf_vis.draw_modifications(smiles1, smiles2, label="modifications") fig, ax = plt.subplots(1, 3, figsize=(15, 5)) ax[0].imshow(mol1) ax[1].imshow(mol2) ax[2].imshow(modification) for a in ax: a.axis('off') plt.show()   
- modifinder.utilities.visualizer.draw_molecule(mol, output_type='png', font_size=None, label=None, label_font_size=20, label_color=(0, 0, 0), label_position='top', **kwargs)[source]
- Draw a molecule using RDKit - Parameters:
- mol (rdkit molecule or str) – rdkit molecule or str for SMILES or InChI or GNPS identifier (USI or Accession) 
- output_type (str) – type of output (png or svg) 
- font_size (int, optional (default=None)) – font size for the labels 
- label (str, optional (default=None)) – label for the molecule 
- label_font_size (int, optional (default=20)) – font size for the label 
- label_color (tuple, optional (default=(0,0,0))) – color of the label 
- label_position (str, optional (default='top')) – position of the label (top or bottom) 
- kwargs (dict) – additional arguments for drawing the molecule in rdkit like highlightAtoms, highlightAtomColors, highlightBonds, highlightBondColors, highlightAtomRadii, etc. 
 
- Returns:
- img – image of the molecule 
- Return type:
- numpy array or str 
 - Examples - import modifinder.utilities.visualizer as mf_vis from matplotlib import pyplot as plt img = mf_vis.draw_molecule('CN1C=NC2=C1C(=O)N(C(=O)N2C)C', output_type='png', label="Caffeine") plt.imshow(img) plt.axis('off') plt.show()   - import modifinder.utilities.visualizer as mf_vis from matplotlib import pyplot as plt from rdkit import Chem def mol_with_atom_index(mol): for atom in mol.GetAtoms(): atom.SetAtomMapNum(atom.GetIdx()) return mol mol = Chem.MolFromSmiles('CN1C=NC2=C1C(=O)N(C(=O)N2C)C') mol = mol_with_atom_index(mol) highlightAtoms = {1, 3, 11, 8} img = mf_vis.draw_molecule(mol, output_type='png', label="Caffeine", highlightAtoms=highlightAtoms) plt.imshow(img) plt.axis('off') plt.show()   
- modifinder.utilities.visualizer.draw_molecule_heatmap(mol, scores, output_type='png', show_labels=False, shrink_labels=False, annotation_scale=1, show_legend=True, legend_width=50, legend_font=40, **kwargs)[source]
- Draw a molecule and color the atoms based on the scores - Parameters:
- mol (rdkit molecule) – Molecule to Draw the heatmap for 
- scores (list) – list of scores for each atom (the order should be the same as the order of atoms in the molecule) 
- output_type (str, optional (default='png')) – type of output (png or svg) 
- show_labels (bool, optional (default=False)) – add labels to the atoms 
- shrink_labels (bool, optional (default=False)) – shrink the labels to more compact form 
- annotation_scale (float, optional (default=1)) – size of the labels (font size) 
- show_legend (bool, optional (default=True)) – show the legend or not 
- legend_width (int, optional (default=50)) – width of the legend in pixels 
- legend_font (int, optional (default=40)) – font size of the legend 
 
- Returns:
- img 
- Return type:
- numpy array or str 
 - Examples - import modifinder.utilities.visualizer as mf_vis from matplotlib import pyplot as plt import numpy as np mol = Chem.MolFromSmiles('CN1C=NC2=C1C(=O)N(C(=O)N2C)C') scores = np.random.rand(mol.GetNumAtoms()) img = mf_vis.draw_molecule_heatmap(mol, scores, label="Caffeine", show_labels=True, legend_font=20) plt.imshow(img) plt.axis('off') plt.show()   
- modifinder.utilities.visualizer.draw_spectrum(spectrum, output_type='png', normalize_peaks=False, colors: dict = {}, flipped=False, size=None, show_x_label=False, show_y_label=False, font_size=None, bar_width=3, x_lim=None, dpi=300, **kwargs)[source]
- Draw a spectrum - Parameters:
- spectrum (Spectrum or list of tuples or USI or Accession) – Spectrum to draw 
- output_type (str, optional (default='png')) – type of output (png or svg) 
- normalize_peaks (bool, optional (default=False)) – normalize the peaks or not 
- colors (dict, optional (default={})) – dictionary of colors for the peaks, keys are the indices of the peaks, if value is a list, the first value is the color of top half and the second value is the color of the bottom half. 
- flipped (bool, optional (default=False)) – flip the spectrum or not 
- size (tuple, optional (default=None)) – size of the figure 
- show_x_label (bool, optional (default=False)) – show x label or not 
- show_y_label (bool, optional (default=False)) – show y label or not 
- font_size (int, optional (default=None)) – font size of the labels 
- bar_width (int, optional (default=3)) – width of the spectrum bars 
- x_lim (tuple, optional (default=None)) – x limit of the figure 
- dpi (int, optional (default=300)) – dpi of the stored image 
- kwargs (dict) – additional arguments for drawing the spectrum in matplotlib 
 
- Returns:
- img 
- Return type:
- numpy array or str 
 - Examples - import modifinder.utilities.visualizer as mf_vis from matplotlib import pyplot as plt import numpy as np mz = [100, 200, 270, 400, 450] intensity = [0.1, 0.2, 0.5, 0.4, 0.3] colors = { 0: 'red', 1: ['blue', 'green'], 3: '#FFA500', 4: (0.9,0.9,0.2) } img = mf_vis.draw_spectrum(list(zip(mz, intensity)), output_type='png', show_x_label=True, show_y_label=True, colors=colors) plt.imshow(img) plt.axis('off') plt.show() 