def METHOD_NAME(self, structure: Structure, cif_id: int | None = None) -> tuple:
    """
    Generate cgcnn inputs for given structure.
    Args:
        structure(Structure): structure to get input for
        cif_id(int): Optional, the id of the structure
    Returns: Tuple of input (atom_fea, nbr_fea, nbr_fea_idx)
    """
    atom_fea = [sum((self.ari.get_atom_fea(el.Z) * oc) for el, oc in site.species.items()) for site in structure]
    atom_fea = np.vstack(atom_fea)  # type: ignore
    atom_fea = Tensor(atom_fea)  # type: ignore
    all_nbrs = structure.get_all_neighbors(self.radius, include_index=True)
    # sort the nbrs by distance
    all_nbrs = [sorted(nbrs, key=lambda x: x[1]) for nbrs in all_nbrs]
    if cif_id:
        nbr_fea_idx, nbr_fea = self._get_nbr_fea(all_nbrs, cif_id)
    else:
        nbr_fea_idx, nbr_fea = self._get_nbr_fea(all_nbrs, 0)
    nbr_fea = Tensor(nbr_fea)  # type: ignore
    nbr_fea_idx = torch.LongTensor(nbr_fea_idx)  # type: ignore
    return (atom_fea, nbr_fea, nbr_fea_idx)