<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def fill_defaults(self):
 """ Fill in self.grid with default values in certain columns. Only fill in new values if grid is missing those values. """

        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()))