docstr: Subgenerate a cell `C_i` of generation `gen` and
  homology group rank `hgr`.
docstr_tok: ["Subgenerate","a","cell","`","C_i","`","of","generation","`","gen","`","and","homology","group","rank","`","hgr","`","."]
code: def sub_generate_cell(self, C_i, gen):
      """Subgenerate a cell `C_i` of generation `gen` and
      homology group rank `hgr`."""
      origin_new = tuple(C_i.centroid)
      centroid_index = len(C_i()) - 1
  
      # If not gen append
      try:
          self.H[gen]
      except IndexError:
          self.H.append([])
  
      # Generate subcubes using every extreme vertex in C_i as a supremum
      # and the centroid of C_i as the origin
      H_new = []  # list storing all the new cubes split from C_i
      for i, v in enumerate(C_i()[:-1]):
          supremum = tuple(v.x)
          H_new.append(
              self.construct_hypercube(
                  origin_new, supremum, gen, C_i.hg_n
              )
          )
  
      for i, connections in enumerate(self.graph):
          # Present vertex V_new[i]; connect to all connections:
          if i == centroid_index:  # Break out of centroid
              break
  
          for j in connections:
              C_i()[i].disconnect(C_i()[j])
  
      # Destroy the old cell
      if (
          C_i is not self.C0
      ):  # Garbage collector does this anyway; not needed
          del C_i
  
      # TODO: Recalculate all the homology group ranks of each cell
      return H_new
  
imports: import numpy
  import copy
label_desc: Use image node_id 9 for calling the Complex obj's underlying member method code with example usage: obj.sub_generate_cell(C_i, gen) and returns: H_new