class_docstr: Symmetric Stochastic Block Model Mixture
  
  Reference: Appendix C of `Supervised Community Detection with Hierarchical Graph Neural Networks <https://arxiv.org/abs/1705.08415>`_
  
  Parameters
  ----------
  n_graphs : int
      Number of graphs.
  n_nodes : int
      Number of nodes.
  n_communities : int
      Number of communities.
  k : int, optional
      Multiplier. Default: 2
  avg_deg : int, optional
      Average degree. Default: 3
  pq : list of pair of nonnegative float or str, optional
      Random densities. This parameter is for future extension,
      for now it's always using the default value.
      Default: Appendix_C
  rng : numpy.random.RandomState, optional
      Random number generator. If not given, it's numpy.random.RandomState() with `seed=None`,
      which read data from /dev/urandom (or the Windows analogue) if available or seed from
      the clock otherwise.
      Default: None
  
  Raises
  ------
  RuntimeError is raised if pq is not a list or string.
  
  Examples
  --------
  >>> data = SBMMixtureDataset(n_graphs=16, n_nodes=10000, n_communities=2)
  >>> from torch.utils.data import DataLoader
  >>> dataloader = DataLoader(data, batch_size=1, collate_fn=data.collate_fn)
  >>> for graph, line_graph, graph_degrees, line_graph_degrees, pm_pd in dataloader:
  ...     # your code here
code: def __init__(
      self,
      n_graphs,
      n_nodes,
      n_communities,
      k=2,
      avg_deg=3,
      pq="Appendix_C",
      rng=None,
  ):
      self._n_graphs = n_graphs
      self._n_nodes = n_nodes
      self._n_communities = n_communities
      assert n_nodes % n_communities == 0
      self._block_size = n_nodes // n_communities
      self._k = k
      self._avg_deg = avg_deg
      self._pq = pq
      self._rng = rng
      super(SBMMixtureDataset, self).__init__(
          name="sbmmixture",
          hash_key=(
              n_graphs,
              n_nodes,
              n_communities,
              k,
              avg_deg,
              pq,
              rng,
          ),
      )
  
imports: import math
  import os
  import random
  import numpy
  import numpy.random
  import scipy
  from ..None import batch
  from ..convert import from_scipy
  from .dgl_dataset import DGLDataset
  from .utils import load_graphs, load_info, save_graphs, save_info
label_desc: Use image node_id 1 to create a new SBMMixtureDataset object from inherited base classes: DGLDataset with example: obj = SBMMixtureDataset(n_graphs, n_nodes, n_communities, k, avg_deg, pq, rng)