def redraw(self, event=None): if self.ignore_redraw: return for vw_row in self.image_rows + self.object_rows + self.mask_rows: vw_row.update() if not self.frame.figure.canvas.IsShown(): self.frame.figure.canvas.Show() self.layout() # # Remove all the old text labels # to_remove = [] for artist in list(self.axes.texts): artist.remove() m = self.workspace.measurements assert isinstance(m, cellprofiler.measurement.Measurements) title_lines = [] object_values = {} for measurement_row in self.measurement_rows: assert isinstance(measurement_row, MeasurementRow) if not measurement_row.should_show(): continue object_name = measurement_row.get_object_name() if object_name is None or object_name not in m.get_object_names(): continue feature = measurement_row.get_measurement_name() if feature is None or not m.has_feature(object_name, feature): continue value = m[object_name, feature] if object_name in (cellprofiler.measurement.IMAGE, cellprofiler.measurement.EXPERIMENT): if isinstance(value, int): fmt = "%s: %d" elif isinstance(value, float): fmt = "%s: %.4f" else: fmt = "%s: %s" title_lines.append(fmt % (feature, value)) else: if object_name not in object_values: if any([ not m.has_feature(object_name, lf) for lf in cellprofiler.measurement.M_LOCATION_CENTER_X, cellprofiler.measurement.M_LOCATION_CENTER_Y ]): continue object_values[object_name] = [] object_values[object_name].append((value, measurement_row))
def redraw(self, event=None): if self.ignore_redraw: return for vw_row in self.image_rows + self.object_rows + self.mask_rows: vw_row.update() if not self.frame.figure.canvas.IsShown(): self.frame.figure.canvas.Show() self.layout() # # Remove all the old text labels # to_remove = [] for artist in list(self.axes.texts): artist.remove() m = self.workspace.measurements assert isinstance(m, cellprofiler.measurement.Measurements) title_lines = [] object_values = {} for measurement_row in self.measurement_rows: assert isinstance(measurement_row, MeasurementRow) if not measurement_row.should_show(): continue object_name = measurement_row.get_object_name() if object_name is None or object_name not in m.get_object_names(): continue feature = measurement_row.get_measurement_name() if feature is None or not m.has_feature(object_name, feature): continue value = m[object_name, feature] if object_name in (cellprofiler.measurement.IMAGE, cellprofiler.measurement.EXPERIMENT): if isinstance(value, int): fmt = "%s: %d" elif isinstance(value, float): fmt = "%s: %.4f" else: fmt = "%s: %s" title_lines.append(fmt % (feature, value)) else: if object_name not in object_values: if any([not m.has_feature(object_name, lf) for lf in cellprofiler.measurement.M_LOCATION_CENTER_X, cellprofiler.measurement.M_LOCATION_CENTER_Y]): continue object_values[object_name] = []
def redraw(self, event=None): if self.ignore_redraw: return for vw_row in self.image_rows + self.object_rows + self.mask_rows: vw_row.update() if not self.frame.figure.canvas.IsShown(): self.frame.figure.canvas.Show() self.layout() # # Remove all the old text labels # to_remove = [] for artist in list(self.axes.texts): artist.remove() m = self.workspace.measurements assert isinstance(m, cellprofiler.measurement.Measurements) title_lines = [] object_values = {} for measurement_row in self.measurement_rows: assert isinstance(measurement_row, MeasurementRow) if not measurement_row.should_show(): continue object_name = measurement_row.get_object_name() if object_name is None or object_name not in m.get_object_names(): continue feature = measurement_row.get_measurement_name() if feature is None or not m.has_feature(object_name, feature): continue value = m[object_name, feature] if object_name in ( cellprofiler.measurement.IMAGE, cellprofiler.measurement.EXPERIMENT, ): if isinstance(value, int): fmt = "%s: %d" elif isinstance(value, float): fmt = "%s: %.4f" else: fmt = "%s: %s" title_lines.append(fmt % (feature, value)) else: if object_name not in object_values: if any([ not m.has_feature(object_name, lf) for lf in ( cellprofiler.measurement.M_LOCATION_CENTER_X, cellprofiler.measurement.M_LOCATION_CENTER_Y, ) ]): continue object_values[object_name] = [] object_values[object_name].append((value, measurement_row)) if len(title_lines) > 0: self.axes.set_title("\n".join(title_lines)) else: self.axes.set_title("Image set # %d" % m.image_number) for object_name, value_rows in object_values.items(): values = [vr[0] for vr in value_rows] measurement_rows = [vr[1] for vr in value_rows] x, y = [ m[object_name, ftr] for ftr in ( cellprofiler.measurement.M_LOCATION_CENTER_X, cellprofiler.measurement.M_LOCATION_CENTER_Y, ) ] for i in range(len(x)): xi, yi = x[i], y[i] if numpy.isnan(xi) or numpy.isnan(yi): continue height = 0 for j, measurement_row in enumerate(measurement_rows): if len(values[j]) <= i or numpy.isnan(values[j][i]): continue value = values[j][i] font = measurement_row.font if font.GetStyle() == wx.ITALIC: fontstyle = "italic" else: fontstyle = "normal" color = measurement_row.foreground_color fontcolor, backgroundcolor = [ tuple([float(c) / 255 for c in color][:3]) for color in ( measurement_row.foreground_color, measurement_row.background_color, ) ] fmt = "%%.%df" % measurement_row.precision a = self.axes.annotate( fmt % value, (xi, yi), xytext=(0, -height), textcoords="offset points", ha="center", va="center", bbox={ "boxstyle": measurement_row.box_style, "fc": backgroundcolor, "alpha": measurement_row.background_alpha, }, color=fontcolor, family=font.GetFaceName(), fontsize=font.GetPointSize(), fontstyle=fontstyle, weight=font.GetWeight(), ) height += font.GetPointSize() + 1 self.scale_axes() self.frame.figure.canvas.draw()
def redraw(self, event=None): if self.ignore_redraw: return for vw_row in self.image_rows + self.object_rows + self.mask_rows: vw_row.update() if not self.frame.figure.canvas.IsShown(): self.frame.figure.canvas.Show() self.layout() # # Remove all the old text labels # to_remove = [] for artist in list(self.axes.texts): artist.remove() m = self.workspace.measurements assert isinstance(m, cellprofiler.measurement.Measurements) title_lines = [] object_values = {} for measurement_row in self.measurement_rows: assert isinstance(measurement_row, MeasurementRow) if not measurement_row.should_show(): continue object_name = measurement_row.get_object_name() if object_name is None or object_name not in m.get_object_names(): continue feature = measurement_row.get_measurement_name() if feature is None or not m.has_feature(object_name, feature): continue value = m[object_name, feature] if object_name in (cellprofiler.measurement.IMAGE, cellprofiler.measurement.EXPERIMENT): if isinstance(value, int): fmt = "%s: %d" elif isinstance(value, float): fmt = "%s: %.4f" else: fmt = "%s: %s" title_lines.append(fmt % (feature, value)) else: if object_name not in object_values: if any([not m.has_feature(object_name, lf) for lf in (cellprofiler.measurement.M_LOCATION_CENTER_X, cellprofiler.measurement.M_LOCATION_CENTER_Y)]): continue object_values[object_name] = [] object_values[object_name].append( (value, measurement_row)) if len(title_lines) > 0: self.axes.set_title("\n".join(title_lines)) else: self.axes.set_title("Image set # %d" % m.image_number) for object_name, value_rows in object_values.items(): values = [vr[0] for vr in value_rows] measurement_rows = [vr[1] for vr in value_rows] x, y = [m[object_name, ftr] for ftr in (cellprofiler.measurement.M_LOCATION_CENTER_X, cellprofiler.measurement.M_LOCATION_CENTER_Y)] for i in range(len(x)): xi, yi = x[i], y[i] if numpy.isnan(xi) or numpy.isnan(yi): continue height = 0 for j, measurement_row in enumerate(measurement_rows): if len(values[j]) <= i or numpy.isnan(values[j][i]): continue value = values[j][i] font = measurement_row.font if font.GetStyle() == wx.ITALIC: fontstyle = "italic" else: fontstyle = "normal" color = measurement_row.foreground_color fontcolor, backgroundcolor = [ tuple([float(c) / 255 for c in color][:3]) for color in (measurement_row.foreground_color, measurement_row.background_color)] fmt = "%%.%df" % measurement_row.precision a = self.axes.annotate( fmt % value, (xi, yi), xytext=(0, -height), textcoords="offset points", ha="center", va="center", bbox={ "boxstyle": measurement_row.box_style, "fc": backgroundcolor, "alpha": measurement_row.background_alpha }, color=fontcolor, family=font.GetFaceName(), fontsize=font.GetPointSize(), fontstyle=fontstyle, weight=font.GetWeight()) height += font.GetPointSize() + 1 self.scale_axes() self.frame.figure.canvas.draw()