def load_data(filename, format_file='cloudupdrs', button_left_rect=None, button_right_rect=None):
    """
        This is a general load data method where the format of data to load can be passed as a parameter,

        :param filename: The path to load data from
        :type filename: str
        :param format_file: format of the file. Default is CloudUPDRS. Set to mpower for mpower data.
        :type format_file: str
        :param button_left_rect: mpower param
        :type button_left_rect: str
        :param button_right_rect: mpower param
        :type button_right_rect: str

    """
    if format_file == 'mpower':
        return load_mpower_data(filename)
    
    elif format_file == 'segmented':
        return load_segmented_data(filename)

    elif format_file == 'accapp':
        return load_accapp_data(filename)

    elif format_file == 'physics':
        return load_physics_data(filename)
    
    elif format_file == 'freeze':
        return load_freeze_data(filename)
    
    elif format_file == 'huga':
        return load_huga_data(filename)

    else:
        if format_file == 'ft_cloudupdrs':
            return load_finger_tapping_cloudupdrs_data(filename)
        else:
            if format_file == 'ft_mpower':
                if button_left_rect is not None and button_right_rect is not None:
                    return load_finger_tapping_mpower_data(filename, button_left_rect, button_right_rect)
            else:
                return load_cloudupdrs_data(filename)