def METHOD_NAME(self):
    objects = [_read_file(self.path, self.name, s) for s in self.suffixes]
    objects = [o.A if sp.issparse(o) else o for o in objects]
    x, y, tx, ty, allx, ally, graph, idx_te = objects
    # Public Planetoid splits. This is the default
    idx_tr = np.arange(y.shape[0])
    idx_va = np.arange(y.shape[0], y.shape[0] + 500)
    idx_te = idx_te.astype(int)
    idx_te_sort = np.sort(idx_te)
    # Fix disconnected nodes in Citeseer
    if self.name == "citeseer":
        idx_te_len = idx_te.max() - idx_te.min() + 1
        tx_ext = np.zeros((idx_te_len, x.shape[1]))
        tx_ext[idx_te_sort - idx_te.min(), :] = tx
        tx = tx_ext
        ty_ext = np.zeros((idx_te_len, y.shape[1]))
        ty_ext[idx_te_sort - idx_te.min(), :] = ty
        ty = ty_ext
    x = np.vstack((allx, tx))
    y = np.vstack((ally, ty))
    x[idx_te, :] = x[idx_te_sort, :]
    y[idx_te, :] = y[idx_te_sort, :]
    # Row-normalize the features
    if self.normalize_x:
        print("Pre-processing node features")
        x = _preprocess_features(x)
    if self.random_split:
        # Throw away public splits and compute random ones like Shchur et al.
        indices = np.arange(y.shape[0])
        n_classes = y.shape[1]
        idx_tr, idx_te, _, y_te = train_test_split(
            indices, y, train_size=20 * n_classes, stratify=y
        )
        idx_va, idx_te = train_test_split(
            idx_te, train_size=30 * n_classes, stratify=y_te
        )
    # Adjacency matrix
    a = nx.adjacency_matrix(nx.from_dict_of_lists(graph))  # CSR
    a.setdiag(0)
    a.eliminate_zeros()
    # Train/valid/test masks
    self.mask_tr = _idx_to_mask(idx_tr, y.shape[0])
    self.mask_va = _idx_to_mask(idx_va, y.shape[0])
    self.mask_te = _idx_to_mask(idx_te, y.shape[0])
    return [
        Graph(
            x=x.astype(self.dtype),
            a=a.astype(self.dtype),
            y=y.astype(self.dtype),
        )
    ]