code: def initialize(
              self, M_c, M_r, T, seed, initialization=b'from_the_prior',
              row_initialization=-1, n_chains=1,
              ROW_CRP_ALPHA_GRID=(), COLUMN_CRP_ALPHA_GRID=(),
              S_GRID=(), MU_GRID=(), N_GRID=31,):
          
          # FIXME: why is M_r passed?
          arg_tuples = self.get_initialize_arg_tuples(
              M_c, M_r, T, initialization, row_initialization, n_chains,
              ROW_CRP_ALPHA_GRID, COLUMN_CRP_ALPHA_GRID, S_GRID, MU_GRID, N_GRID,
              make_get_next_seed(seed),)
  
          chain_tuples = self.mapper(self.do_initialize, arg_tuples)
          X_L_list, X_D_list = zip(*chain_tuples)
          if n_chains == 1:
              X_L_list, X_D_list = X_L_list[0], X_D_list[0]
  
          return X_L_list, X_D_list
docs: Sample a latent state from prior.
  
          T, list of lists:
              The data table in mapped representation (all floats, generated
              by data_utils.read_data_objects)
  
          :returns: X_L, X_D -- the latent state