def __getitem__()

in data/data.py [0:0]


    def __getitem__(self, index):
        data_curr = self.dataset[index]

        i1 = int(index / self.dataset.num_shapes)
        i2 = int(index % self.dataset.num_shapes)

        idx_arr_x = self.idx_arr_arr[i1]
        idx_arr_y = self.idx_arr_arr[i2]

        triv_arr_x = self.triv_arr_arr[i1]
        triv_arr_y = self.triv_arr_arr[i2]

        i_mesh_x = random.randint(0, idx_arr_x.shape[0] - 1)
        i_mesh_y = random.randint(0, idx_arr_y.shape[0] - 1)

        data_new = dict()
        data_new["X"] = dict()
        data_new["Y"] = dict()

        idx_x = idx_arr_x[i_mesh_x][0].astype(np.long) - 1
        idx_y = idx_arr_y[i_mesh_y][0].astype(np.long) - 1

        data_new["X"]["vert_full"] = data_curr["X"]["vert"]
        data_new["Y"]["vert_full"] = data_curr["Y"]["vert"]
        data_new["X"]["idx"] = idx_x
        data_new["Y"]["idx"] = idx_y

        data_new["X"]["vert"] = data_curr["X"]["vert"][idx_x, :]
        data_new["Y"]["vert"] = data_curr["Y"]["vert"][idx_y, :]
        data_new["X"]["triv"] = triv_arr_x[i_mesh_x][0].astype(np.long)
        data_new["Y"]["triv"] = triv_arr_y[i_mesh_y][0].astype(np.long)

        if "D" in data_curr["X"]:
            idx_x = idx_x.squeeze()
            idx_y = idx_y.squeeze()
            data_new["X"]["D"] = data_curr["X"]["D"][:, idx_x][idx_x, :]
            data_new["Y"]["D"] = data_curr["Y"]["D"][:, idx_y][idx_y, :]

        if "sub" in data_curr["X"]:
            data_new["X"]["sub"] = data_curr["X"]["sub"]
            data_new["Y"]["sub"] = data_curr["Y"]["sub"]
            data_new["X"]["idx"] = idx_x
            data_new["Y"]["idx"] = idx_y

        data_new["axis"] = self.axis

        return data_new