@classmethod
def set_ROI(cls, s, shape='circle', color='r', interactive=False):
    """ Selects an interactive region of interst (ROI) to the signal

        :type  s: hyperspy signal
        :param s: the signal of interest

        :type  shape: string
        :param shape: the description of the ROI; circle, ring, rectangle

        :type  interactive: boolean
        :param interactive: interactive if True, False if left blank
        
        :returns: hyperspy roi, hyperspy signal
        """
    import hyperspy.api as hs
    if s.axes_manager.navigation_dimension < 2:
        axes = 'sig'
        x_axis = s.axes_manager[s.axes_manager.signal_indices_in_array[1]]
        y_axis = s.axes_manager[s.axes_manager.signal_indices_in_array[0]]
    else:
        axes = 'nav'
        x_axis = s.axes_manager[s.axes_manager.navigation_indices_in_array[1]]
        y_axis = s.axes_manager[s.axes_manager.navigation_indices_in_array[0]]
    if shape == 'circle':
        x = x_axis.axis[round(x_axis.size / 2)]
        y = y_axis.axis[round(y_axis.size / 2)]
        r_outer = x_axis.axis[round(3 * x_axis.size / 4)]
        sroi = hs.roi.CircleROI(x, y, r=r_outer, color=color)
        """
            s.plot()
            sroi= sroi.interactive(s) 
            ss = hs.interactive(f=sroi.sum, event=sroi.events.data_changed)
            """
    elif shape == 'ring':
        x = x_axis.axis[round(x_axis.size / 2)]
        y = y_axis.axis[round(y_axis.size / 2)]
        r_outer = x_axis.axis[round(4 * x_axis.size / 5)]
        r_inner = x_axis.axis[round(3 * x_axis.size / 4)]
        sroi = hs.roi.CircleROI(x, y, r=r_outer, r_inner=r_inner, color=color)
        """
            s.plot()
            sroi= sroi.interactive(s) 
            ss = hs.interactive(f=sroi.sum, event=sroi.events.data_changed)
            """
    else:
        if not shape == 'rectangle':
            print('Did not recognize shape, using rectangle')
        x1 = x_axis.axis[1]
        x2 = x_axis.axis[round(x_axis.size / 10)]
        y1 = y_axis.axis[1]
        y2 = y_axis.axis[round(y_axis.size / 10)]
        sroi = hs.roi.RectangularROI(x1, y1, x2, y2)
    if interactive:
        s.plot()
        roi_signal = sroi.interactive(s)
        ss = hs.interactive(f=roi_signal.sum, event=roi_signal.events.
            data_changed)
    else:
        roi_signal = sroi(s)
        ss = roi_signal.sum()
    return sroi, ss
