<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def simulate(radius=5e-6, sphere_index=1.339, medium_index=1.333, wavelength=550e-9, grid_size=(80, 80), model="projection", pixel_size=None, center=None):
 """Simulate scattering at a sphere Parameters radius: float Radius of the sphere [m] sphere_index: float Refractive index of the object medium_index: float Refractive index of the surrounding medium wavelength: float Vacuum wavelength of the imaging light [m] grid_size: tuple of ints or int Resulting image size in x and y [px] model: str Sphere model to use (see :const:`available`) pixel_size: float or None Pixel size [m]; if set to `None` the pixel size is chosen such that the radius fits at least three to four times into the grid. center: tuple of floats or None Center position in image coordinates [px]; if set to None, the center of the image (grid_size - 1)/2 is used. Returns ------- qpi: qpimage.QPImage Quantitative phase data set """

    if isinstance(grid_size, numbers.Integral):
        # default to square-shape grid
        grid_size = (grid_size, grid_size)
    if pixel_size is None:
        # select simulation automatically
        rl = radius / wavelength
        if rl < 5:
            # a lot of diffraction artifacts may occur;
            # use 4x radius to capture the full field
            fact = 4
        elif rl >= 5 and rl <= 10:
            # linearly decrease towards 3x radius
            fact = 4 - (rl - 5) / 5
        else:
            # not many diffraction artifacts occur;
            # 3x radius is enough and allows to
            # simulate larger radii with BHFIELD
            fact = 3
        pixel_size = fact * radius / np.min(grid_size)

    if center is None:
        center = (np.array(grid_size) - 1) / 2

    model = model_dict[model]
    qpi = model(radius=radius,
                sphere_index=sphere_index,
                medium_index=medium_index,
                wavelength=wavelength,
                pixel_size=pixel_size,
                grid_size=grid_size,
                center=center)

    return qpi