code: def _init(self):
      self._edges = list(self._data.edge_index)
      self._edges = [self._edges[0], self._edges[1]]
      self._num_nodes = self._data.x.shape[0]
      self._num_edges = len(self._edges[0])
      self._neighbours = [[] for _ in range(self._num_nodes)]
      for i in range(len(self._edges[0])):
          u, v = self._edges[0][i], self._edges[1][i]
          self._neighbours[u].append(v)
  
      _LOGGER.info(
          "nodes {} , edges {}".format(self._num_nodes, self._num_edges)
      )
  
      # sorting
      self._node_degrees = np.array([len(x) for x in self._neighbours])
      self._nodes = np.argsort(self._node_degrees)
      for i in self._nodes:
          self._neighbours[i] = [
              x
              for _, x in sorted(
                  zip(
                      self._node_degrees[self._neighbours[i]],
                      self._neighbours[i],
                  ),
                  reverse=True,
              )
          ]
      self._neighbours = [np.array(x) for x in self._neighbours]
  
file_path: AutoGL/autogl/module/feature/_generators/_graphlet.py
imports: import logging
  import numpy
  import torch
  from tqdm import tqdm
  import autogl
  from ._basic import BaseFeatureGenerator
  from .._feature_engineer_registry import FeatureEngineerUniversalRegistry
label_desc: Use image node_id 2 for calling the _Graphlet obj's underlying member method code with example usage: obj._init() without return types