Source code for lib5c.plotters.queried_counts_heatmap

"""
Module for plotting contact frequency heatmaps for fragment-level 5C data.
"""

import matplotlib.pyplot as plt

from lib5c.util.parallelization import parallelize_regions
from lib5c.util.system import check_outdir


[docs]@parallelize_regions def plot_queried_counts_heatmap(array, outfile, colorscale=(0, 0.98), colorbar=False, cmap=None): """ Plot a fragment-level contact frequency heatmap of only the interactions actually queried by the 5C assay. Parameters ---------- array : np.ndarray The non-symmetric, non-square matrix of queried counts for this region. outfile : str String reference to the file to write the heatmap to. colorscale : Tuple[float] The min and the max of the colormap, as a tuple of the form ``(min, max)``. colorbar : bool Pass True to include a colorbar on the plot. cmap : Optional[matplotlib.colors.Colormap] The colormap to use for the heatmap. If this kwarg is not passed, ``pyplot.cm.coolwarm`` will be used as a default. """ # default cmap if cmap is None: cmap = plt.cm.coolwarm # prepare to plot plt.clf() ax = plt.gca() heatmap = ax.imshow(array, interpolation='none', vmin=colorscale[0], vmax=colorscale[1], cmap=cmap, extent=[0, array.shape[1], array.shape[0], 0]) ax.get_xaxis().set_ticks([]) ax.get_yaxis().set_ticks([]) # resolve colorbar if colorbar: plt.colorbar(heatmap, ticks=[colorscale[0], colorscale[1]]) check_outdir(outfile) plt.savefig(outfile, bbox_inches='tight', dpi=800)