def split_dataset(X, Y, validation=True, supertest=True, train_cut=0.7,
    validation_cut=0.8, test_cut=0.9):
    """
    Splits dataset into train, test, validation and supertest categories
    """
    train_cut = round(X.shape[0] * train_cut)
    validaiton_cut = round(X.shape[0] * validation_cut)
    test_cut = round(X.shape[0] * test_cut)
    x_train = X[:train_cut]
    y_train = Y[:train_cut]
    if validation == True:
        x_validation = X[train_cut:validaiton_cut]
        y_validation = Y[train_cut:validaiton_cut]
        x_test = X[validaiton_cut:test_cut]
        y_test = Y[validaiton_cut:test_cut]
    else:
        x_validation = None
        y_validation = None
        x_test = X[train_cut:test_cut]
        y_test = Y[train_cut:test_cut]
    if supertest == True:
        x_test = X[train_cut:test_cut]
        y_test = Y[train_cut:test_cut]
        x_supertest = X[test_cut:]
        y_supertest = Y[test_cut:]
    else:
        x_test = X[train_cut:]
        y_test = Y[train_cut:]
        x_supertest = None
        y_supertest = None
    return (x_train, y_train, x_validation, y_validation, x_test, y_test,
        x_supertest, y_supertest)
