code: def fill_defaults(self):
          
          defaults = {'result_quality': 'g',
                      'result_type': 'i',
                      'orientation_quality': 'g',
                      'citations': 'This study'}
          for col_name in defaults:
              if col_name in self.grid.col_labels:
                  # try to grab existing values from contribution
                  if self.grid_type in self.contribution.tables:
                      if col_name in self.contribution.tables[self.grid_type].df.columns:
                          old_vals = self.contribution.tables[self.grid_type].df[col_name]
                          # if column is completely filled in, skip
                          if all([cb.not_null(val, False) for val in old_vals]):
                              continue
                          new_val = defaults[col_name]
                          vals = list(np.where((old_vals.notnull()) & (old_vals != ''), old_vals, new_val))
                      else:
                          vals = [defaults[col_name]] * self.grid.GetNumberRows()
                  # if values not available in contribution, use defaults
                  else:
                      vals = [defaults[col_name]] * self.grid.GetNumberRows()
              # if col_name not present in grid, skip
              else:
                  vals = None
              #
              if vals:
                  print('-I- Updating column "{}" with default values'.format(col_name))
                  if self.huge:
                      self.grid.SetColumnValues(col_name, vals)
                  else:
                      col_ind = self.grid.col_labels.index(col_name)
                      for row, val in enumerate(vals):
                          self.grid.SetCellValue(row, col_ind, val)
                          self.grid.changes = set(range(self.grid.GetNumberRows()))
docs: Fill in self.grid with default values in certain columns.
          Only fill in new values if grid is missing those values.