コード例 #1
0
    def __init__(self):
        """
        Initializing trigger with given threshold
        :param threshold: int in pixel how much of a movement does not count
        :param bodypart: str or list of str, bodypart or list of bodyparts in skeleton to use for trigger,
         if "any" will check if any bodypart reaches treshold; default "any"
        For example threshold of 5 would mean that all movements less then 5 pixels would be ignored
        """
        super().__init__()
        self._name = 'BaseRegionTrigger'

        #loading settings
        self._trigger_parameter_dict = dict(THRESHOLD='float',
                                            BODYPARTS='list',
                                            DEBUG='boolean')
        self._settings_dict = get_trigger_settings(self._name,
                                                   self._exp_parameter_dict)

        region_types = {'circle': EllipseROI, 'square': RectangleROI}
        self._region_of_interest = region_types[
            self._settings_dict['TYPE'].lower()](self._settings_dict['CENTER'],
                                                 self._settings_dict['RADIUS'],
                                                 self._settings_dict['RADIUS'])

        self._threshold = self._settings_dict['THRESHOLD']

        self._bodyparts = self._settings_dict['BODYPARTS'] if len(self._settings_dict['BODYPARTS']) > 1 \
                                                           else self._settings_dict['BODYPARTS'][0]

        self._debug = self._settings_dict['DEBUG'] if self._settings_dict[
            'DEBUG'] is not None else False

        self._skeleton = None
コード例 #2
0
    def __init__(self,
                 center: tuple,
                 radius: int,
                 angle: float = 45,
                 debug: bool = False):
        """
        Initialising trigger with following parameters:
        :param int angle: angle to meet for condition
        :param tuple center: point used as reference to measure headdirection angle and center of ROI
        :param int radius: radius of the ROI
        :param debug: Not used in this trigger
        """

        super().__init__()
        self._name = "BaseHeaddirectionROITrigger"

        # loading settings
        self._trigger_parameter_dict = dict(
            CENTER="tuple",
            TYPE="str",
            RADIUS="int",
            POINT="tuple",
            ANGLE="int",
            ROI_BODYPARTS="list",
            ANGLE_BODYPARTS="list",
            DEBUG="boolean",
        )
        self._settings_dict = get_trigger_settings(
            self._name, self._trigger_parameter_dict)

        region_types = {"circle": EllipseROI, "square": RectangleROI}
        self._region_of_interest = region_types[
            self._settings_dict["TYPE"].lower()](
                self._settings_dict["CENTER"],
                self._settings_dict["RADIUS"],
                self._settings_dict["RADIUS"],
            )

        self._roi_bodyparts = (self._settings_dict["BODYPARTS"]
                               if len(self._settings_dict["BODYPARTS"]) > 1
                               else self._settings_dict["BODYPARTS"][0])

        self._point = self._settings_dict["POINT"]
        self._angle = self._settings_dict["ANGLE"]
        self._angle_bodyparts = self._settings_dict["ANGLE_BODYPARTS"]

        self._debug = (self._settings_dict["DEBUG"]
                       if self._settings_dict["DEBUG"] is not None else False)
コード例 #3
0
    def __init__(self,
                 center: tuple,
                 radius: int,
                 angle: float = 45,
                 debug: bool = False):
        """
        Initialising trigger with following parameters:
        :param int angle: angle to meet for condition
        :param tuple center: point used as reference to measure headdirection angle and center of ROI
        :param int radius: radius of the ROI
        :param debug: Not used in this trigger
         """

        super().__init__()
        self._name = 'BaseHeaddirectionROITrigger'

        #loading settings
        self._trigger_parameter_dict = dict(CENTER='tuple',
                                            TYPE='str',
                                            RADIUS='int',
                                            POINT='tuple',
                                            ANGLE='int',
                                            ROI_BODYPARTS='list',
                                            ANGLE_BODYPARTS='list',
                                            DEBUG='boolean')
        self._settings_dict = get_trigger_settings(
            self._name, self._trigger_parameter_dict)

        region_types = {'circle': EllipseROI, 'square': RectangleROI}
        self._region_of_interest = region_types[
            self._settings_dict['TYPE'].lower()](self._settings_dict['CENTER'],
                                                 self._settings_dict['RADIUS'],
                                                 self._settings_dict['RADIUS'])

        self._roi_bodyparts = self._settings_dict['BODYPARTS'] if len(self._settings_dict['BODYPARTS']) > 1 \
                                                           else self._settings_dict['BODYPARTS'][0]

        self._point = self._settings_dict['POINT']
        self._angle = self._settings_dict['ANGLE']
        self._angle_bodyparts = self._settings_dict['ANGLE_BODYPARTS']

        self._debug = self._settings_dict['DEBUG'] if self._settings_dict[
            'DEBUG'] is not None else False
コード例 #4
0
    def __init__(self):
        """
        Initialising trigger with following parameters:
        :param region_type: type of a ROI
        Currently available ROIs are 'square' and 'circle'
        Both of them use the same scheme to define coordinates
        :param center: center of a ROI
        :param radius: radius of a ROI
        For circle - literally radius of a circle
        For square - half of a side
        :param bodyparts: joint or a list of joints for which we are checking the ROI
        """

        super().__init__()
        self._name = "BaseRegionTrigger"

        # loading settings
        self._trigger_parameter_dict = dict(CENTER="tuple",
                                            TYPE="str",
                                            RADIUS="int",
                                            BODYPARTS="list",
                                            DEBUG="boolean")
        self._settings_dict = get_trigger_settings(
            self._name, self._trigger_parameter_dict)

        region_types = {"circle": EllipseROI, "square": RectangleROI}
        self._region_of_interest = region_types[
            self._settings_dict["TYPE"].lower()](
                self._settings_dict["CENTER"],
                self._settings_dict["RADIUS"],
                self._settings_dict["RADIUS"],
            )

        self._bodyparts = (self._settings_dict["BODYPARTS"]
                           if len(self._settings_dict["BODYPARTS"]) > 1 else
                           self._settings_dict["BODYPARTS"][0])

        self._debug = (self._settings_dict["DEBUG"]
                       if self._settings_dict["DEBUG"] is not None else False)
コード例 #5
0
    def __init__(self):
        """
        Initialising trigger with following parameters:
        :param int angle: angle to meet for condition
        :param tuple point: point used as reference to measure headdirection angle

         """
        super().__init__()
        self._name = 'BaseHeaddirectionTrigger'

        #loading settings
        self._trigger_parameter_dict = dict(POINT='tuple',
                                            ANGLE='int',
                                            BODYPARTS='list',
                                            DEBUG='boolean')
        self._settings_dict = get_trigger_settings(self._name,
                                                   self._exp_parameter_dict)

        self._point = self._settings_dict['POINT']
        self._angle = self._settings_dict['ANGLE']
        self._bodyparts = self._settings_dict['BODYPARTS']
        self._debug = self._settings_dict['DEBUG'] if self._settings_dict[
            'DEBUG'] is not None else False
コード例 #6
0
    def __init__(self):
        """
        Initialising trigger with following parameters:
        :param int angle: angle to meet for condition
        :param str head_dir: head direction from egocentric position of the animal (left, right or both)

         """
        super().__init__()
        self._name = 'BaseEgoHeaddirectionTrigger'

        #loading settings
        self._trigger_parameter_dict = dict(ANGLE='int',
                                            HEADDIRECTION='str',
                                            BODYPARTS='list',
                                            DEBUG='boolean')
        self._settings_dict = get_trigger_settings(self._name,
                                                   self._exp_parameter_dict)

        self._point = self._settings_dict['POINT']
        self._angle = self._settings_dict['ANGLE']
        self._bodyparts = self._settings_dict['BODYPARTS']
        self._debug = self._settings_dict['DEBUG'] if self._settings_dict[
            'DEBUG'] is not None else False
コード例 #7
0
    def __init__(self):
        """
        Initialising trigger with following parameters:
        :param int angle: angle to meet for condition
        :param tuple point: point used as reference to measure headdirection angle

        """
        super().__init__()
        self._name = "BaseHeaddirectionTrigger"

        # loading settings
        self._trigger_parameter_dict = dict(POINT="tuple",
                                            ANGLE="int",
                                            BODYPARTS="list",
                                            DEBUG="boolean")
        self._settings_dict = get_trigger_settings(self._name,
                                                   self._exp_parameter_dict)

        self._point = self._settings_dict["POINT"]
        self._angle = self._settings_dict["ANGLE"]
        self._bodyparts = self._settings_dict["BODYPARTS"]
        self._debug = (self._settings_dict["DEBUG"]
                       if self._settings_dict["DEBUG"] is not None else False)
コード例 #8
0
    def __init__(self):
        """
        Initialising trigger with following parameters:
        :param int angle: angle to meet for condition
        :param str head_dir: head direction from egocentric position of the animal (left, right or both)

        """
        super().__init__()
        self._name = "BaseEgoHeaddirectionTrigger"

        # loading settings
        self._trigger_parameter_dict = dict(ANGLE="int",
                                            HEADDIRECTION="str",
                                            BODYPARTS="list",
                                            DEBUG="boolean")
        self._settings_dict = get_trigger_settings(self._name,
                                                   self._exp_parameter_dict)

        self._point = self._settings_dict["POINT"]
        self._angle = self._settings_dict["ANGLE"]
        self._bodyparts = self._settings_dict["BODYPARTS"]
        self._debug = (self._settings_dict["DEBUG"]
                       if self._settings_dict["DEBUG"] is not None else False)
コード例 #9
0
    def __init__(self):
        """
        Initialising trigger with following parameters:
        :param direction: a direction where the screen is located in the stream or video.
        All possible directions: 'North' (or top of the frame), 'East' (right), 'South' (bottom), 'West' (left)
        Note that directions are not tied to real-world cardinal directions
        :param angle: angle, at which animal is considered looking at the screen
        :param bodyparts: a pair of joints of animal (tuple or list) that represent 'looking vector' like (start, end)
        For example,
         ('neck', 'nose') pair would mean that direction in which animal is looking defined by vector from neck to nose
        """
        from utils.configloader import RESOLUTION

        super().__init__()
        self._name = "BaseScreenTrigger"
        max_x, max_y = RESOLUTION
        direction_dict = {
            "North": (int(max_x / 2), 0),
            "South": (int(max_x / 2), max_y),
            "West": (0, int(max_y / 2)),
            "East": (max_x, int(max_y / 2)),
        }

        # loading settings
        self._trigger_parameter_dict = dict(ANGLE="int",
                                            DIRECTION="str",
                                            BODYPARTS="list",
                                            DEBUG="boolean")
        self._settings_dict = get_trigger_settings(self._name,
                                                   self._exp_parameter_dict)

        self._direction = self._settings_dict["DIRECTION"]
        self._point = direction_dict[self._direction]
        self._angle = self._settings_dict["ANGLE"]
        self._bodyparts = self._settings_dict["BODYPARTS"]
        self._debug = (self._settings_dict["DEBUG"]
                       if self._settings_dict["DEBUG"] is not None else False)
コード例 #10
0
    def __init__(self):
        """
        Initialising trigger with following parameters:
        :param region_type: type of a ROI
        Currently available ROIs are 'square' and 'circle'
        Both of them use the same scheme to define coordinates
        :param center: center of a ROI
        :param radius: radius of a ROI
        For circle - literally radius of a circle
        For square - half of a side
        :param bodyparts: joint or a list of joints for which we are checking the ROI
        """

        super().__init__()
        self._name = 'BaseRegionTrigger'

        #loading settings
        self._trigger_parameter_dict = dict(CENTER='tuple',
                                            TYPE='str',
                                            RADIUS='int',
                                            BODYPARTS='list',
                                            DEBUG='boolean')
        self._settings_dict = get_trigger_settings(
            self._name, self._trigger_parameter_dict)

        region_types = {'circle': EllipseROI, 'square': RectangleROI}
        self._region_of_interest = region_types[
            self._settings_dict['TYPE'].lower()](self._settings_dict['CENTER'],
                                                 self._settings_dict['RADIUS'],
                                                 self._settings_dict['RADIUS'])

        self._bodyparts = self._settings_dict['BODYPARTS'] if len(self._settings_dict['BODYPARTS']) > 1 \
                                                           else self._settings_dict['BODYPARTS'][0]

        self._debug = self._settings_dict['DEBUG'] if self._settings_dict[
            'DEBUG'] is not None else False
コード例 #11
0
    def __init__(self):
        """
        Initializing trigger with given threshold
        :param threshold: int in pixel how much of a movement does not count
        :param bodypart: str or list of str, bodypart or list of bodyparts in skeleton to use for trigger,
         if "any" will check if any bodypart reaches treshold; default "any"
        For example threshold of 5 would mean that all movements less then 5 pixels would be ignored
        """
        super().__init__()
        self._name = "BaseRegionTrigger"

        # loading settings
        self._trigger_parameter_dict = dict(THRESHOLD="float",
                                            BODYPARTS="list",
                                            DEBUG="boolean")
        self._settings_dict = get_trigger_settings(self._name,
                                                   self._exp_parameter_dict)

        region_types = {"circle": EllipseROI, "square": RectangleROI}
        self._region_of_interest = region_types[
            self._settings_dict["TYPE"].lower()](
                self._settings_dict["CENTER"],
                self._settings_dict["RADIUS"],
                self._settings_dict["RADIUS"],
            )

        self._threshold = self._settings_dict["THRESHOLD"]

        self._bodyparts = (self._settings_dict["BODYPARTS"]
                           if len(self._settings_dict["BODYPARTS"]) > 1 else
                           self._settings_dict["BODYPARTS"][0])

        self._debug = (self._settings_dict["DEBUG"]
                       if self._settings_dict["DEBUG"] is not None else False)

        self._skeleton = None