Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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] = []
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
    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()