@staticmethod
def split_us(unique_uid, heldout_us_val=1, heldout_us_test=1):
    """
        Split the users into three different sets
        ---------------------
        :param unique_uid: num of unique user_ids
        :param heldout_us_val: num of user to keep in val_set
        :param heldout_us_test: num of user to keep in test_set
        :return tr_us: users used in tr_set
        :return val_us: users used in val_set
        :return test_us: users used in test_set
        """
    n_us = unique_uid.size
    assert isinstance(heldout_us_val, int), """Error in Framework configuration.
 The heldout_us_val parameter in cfg.JSON must be an integer greater than 0."""
    assert heldout_us_val <= int(0.5 * n_us), """Error in Framework configuration.
The heldout_us_val parameter in cfg.JSONis too much high. Reduce it"""
    assert heldout_us_val > 0, """Error in Framework configuration.
 The heldout_us_val parameter in cfg.JSON must be an integer greater than 0."""
    assert isinstance(heldout_us_test, int), """Error in Framework configuration.
 The heldout_us_test parameter in cfg.JSON must be an integer greater than 0."""
    assert heldout_us_test <= int(0.5 * n_us), """Error in Framework configuration.
The heldout_us_test parameter in cfg.JSONis too much high. Reduce it"""
    assert heldout_us_test > 0, """Error in Framework configuration.
 The heldout_us_val parameter in cfg.JSON must be an integer greater than 0."""
    tr_us = unique_uid[:n_us - heldout_us_val - heldout_us_test]
    val_us = unique_uid[n_us - heldout_us_val - heldout_us_test:n_us -
        heldout_us_test]
    test_us = unique_uid[n_us - heldout_us_test:]
    return tr_us, val_us, test_us
