code: def create(self, n_features, alpha):
          
          n_block_features = int(np.floor(1. * n_features / self.n_blocks))
          if n_block_features * self.n_blocks != n_features:
              raise ValueError(
                  (
                      "Error: n_features {} not divisible by n_blocks {}."
                      "Use n_features = n_blocks * int"
                  ).format(n_features, self.n_blocks)
              )
              return
  
          block_adj = self.prototype_adjacency(n_block_features, alpha)
          adjacency = blocks(
              self.prng, block_adj, n_blocks=self.n_blocks, chain_blocks=self.chain_blocks
          )
  
          precision = self.to_precision(adjacency)
          covariance = self.to_covariance(precision)
          return covariance, precision, adjacency
docs: Build a new graph with block structure.
  
          Parameters
          -----------
          n_features : int
  
          alpha : float (0,1)
              The complexity / sparsity factor for each graph type.
  
          Returns
          -----------
          (n_features, n_features) matrices: covariance, precision, adjacency