def METHOD_NAME(grid, advection, trim_edges=0, field_list=None):
    """
    Shift a grid by a certain number of pixels.
    Parameters
    ----------
    grid: Grid
        Py-ART Grid object.
    advection : two-tuple of floats
        Number of Pixels to shift the image by.
    trim_edges: integer, optional
        Edges to cut off the grid and axes, both x and y. Defaults to zero.
    field_list : list, optional
        List of fields to include in new grid. None, the default, includes all
        fields from the input grid.
    Returns
    -------
    shifted_grid : Grid
         Grid with fields shifted and, if requested, subset.
    """
    if trim_edges == 0:
        trim_slice = slice(None, None)
    else:
        trim_slice = slice(int(trim_edges), -int(trim_edges))
    shifted_grid = copy.deepcopy(grid)
    # grab the x and y axis and trim
    shifted_grid.x["data"] = grid.x["data"][trim_slice].copy()
    shifted_grid.y["data"] = grid.y["data"][trim_slice].copy()
    # shift each field.
    if field_list is None:
        field_list = grid.fields.keys()
    for field in field_list:
        # copy data and fill with nans
        data = grid.fields[field]["data"].copy()
        data = np.ma.filled(data, np.nan)
        # shift the data
        shifted_data = shift(data, [0, advection[0], advection[1]], prefilter=False)
        # mask invalid, trim and place into grid
        shifted_data = np.ma.fix_invalid(
            shifted_data, copy=False, fill_value=get_fillvalue()
        )
        shifted_data = shifted_data[:, trim_slice, trim_slice]
        shifted_grid.fields[field]["data"] = shifted_data
    return shifted_grid