code: def get_grid(self):
          
          columns = OrderedDict()
  
          index_pattern = r'^([A-Za-z]+)([0-9]+)$'
          for name in self.children_by_name:
              match = re.match(index_pattern, name)
              if match:
                  row, col = match.groups(0)
                  if col not in columns:
                      columns[col] = OrderedDict()
                  columns[col][row] = (row, col)
  
          return columns
docs: Calculates the grid inferring row/column structure
          from indexes. Currently only Letter+Number names are supported