def plot_clustermap(sequences, title, plotpath, size=300, dpi=200):
"""
Plot a clustermap of the given sequences
size -- Downsample to this many sequences
title -- plot title
Return the number of clusters.
"""
logger.info('Clustering %d sequences (downsampled to at most %d)', len(sequences), size)
sequences = downsampled(sequences, size)
df, linkage, clusters = cluster_sequences(sequences)
palette = sns.color_palette([(0.15, 0.15, 0.15)])
palette += sns.color_palette('Spectral', n_colors=max(clusters), desat=0.9)
row_colors = [ palette[cluster_id] for cluster_id in clusters ]
cm = sns.clustermap(df,
row_linkage=linkage,
col_linkage=linkage,
row_colors=row_colors,
linewidths=None,
linecolor='none',
figsize=(210/25.4, 210/25.4),
cmap='Blues',
xticklabels=False,
yticklabels=False
)
if title is not None:
cm.fig.suptitle(title)
cm.savefig(plotpath, dpi=dpi)
# free the memory used by the plot
import matplotlib.pyplot as plt
plt.close('all')
return len(set(clusters))
评论列表
文章目录