def heatmap(self, conditions=None, identifiers=None, transform=None, low="green", mid="yellow", high="blue", width=800, height=None, id_map=None): id_map = {} if id_map is None else id_map identifiers = self.identifiers if identifiers is None else identifiers conditions = self.conditions if conditions is None else conditions data = self.data_frame[conditions] data['y'] = [id_map.get(i, i) for i in identifiers] data = melt(data, id_vars=['y'], var_name='x') if transform: data['value'] = data.values.apply(transform) heatmap = plotting.heatmap(data, y='y', x='x', values='value', width=width, height=height, max_color=high, min_color=low, mid_color=mid, title='Expression profile heatmap') plotting.display(heatmap) return heatmap
def histogram(self, conditions=None, transform=None, filter=None, bins=None, width=800, height=None, palette='Spectral'): if conditions is None: conditions = self.conditions data = melt(self.data_frame[conditions], var_name='condition') if filter: data = data.query(filter) if transform: data['value'] = data['value'].apply(transform) hist = plotting.histogram(data, values='value', groups='condition', bins=bins, width=width, height=height, palette=palette, title="Histogram of expression values", legend=True) plotting.display(hist) return hist
def scatter(self, condition1=None, condition2=None, transform=float, width=800, height=None, color="#AFDCEC"): if len(self.conditions) <= 1: raise AssertionError("Cannot build a scatter with only one condition") if condition1 is None: condition1 = self.conditions[0] elif isinstance(condition1, int): condition1 = self.conditions[condition1] if condition2 is None: condition2 = self.conditions[1] elif isinstance(condition2, int): condition2 = self.conditions[condition2] if transform: data = self.data_frame.applymap(transform) else: data = self.data_frame data = data.reset_index() scatter = plotting.scatter(data, x=condition1, y=condition2, width=width, height=height, color=color, label='index', title="Expression values %s vs. %s" % (condition1, condition2), xaxis_label="Expression %s" % condition1, yaxis_label="Expression %s" % condition2) plotting.display(scatter) return scatter
def histogram(self, transform=float, bins=100, width=800, height=None, palette='Spectral'): data = melt(self.data_frame, var_name='condition') data['value'] = data['value'].apply(transform) hist = plotting.histogram(data, values='value', groups='condition', bins=bins, width=width, height=height, palette=palette, title="Histogram of expression values", legend=True) plotting.display(hist) return hist
def boxplot(self, conditions=None, transform=None, width=800, height=None, palette='Spectral'): if conditions is None: conditions = self.conditions data = melt(self.data_frame[conditions], var_name='condition') if transform: data['value'] = data['value'].apply(transform) hist = plotting.boxplot(data, values='value', groups='condition', width=width, height=height, palette=palette, title="Box plot of expression values", legend=True) plotting.display(hist) return hist
def heatmap(self, conditions=None, identifiers=None, transform=float, low="green", mid="yellow", high="blue", width=800, height=None, id_map=None): id_map = {} if id_map is None else id_map identifiers = self.identifiers if identifiers is None else identifiers conditions = self.conditions if conditions is None else conditions data = self.data_frame[conditions] data['y'] = [id_map.get(i, i) for i in identifiers] data = melt(data, id_vars=['y'], var_name='x') heatmap = plotting.heatmap(data, y='y', x='x', values='value', width=width, height=height, max_color=high, min_color=low, mid_color=mid, title='Expression profile heatmap') plotting.display(heatmap) return heatmap