def dynamics(state, time, config, intervention=None):
    """Update equations for the Zika simulaton.

    Parameters
    ----------
        state:  np.ndarray, list, or tuple
            State of the dynamics
        time:   float
        config: hiv.Config
            Simulator configuration object that determines the coefficients
        intervantion: hiv.Intervention
            Simulator intervention object that determines when/how to update the
            dynamics.

    Returns
    -------
        ds_dt: list
            Derivative of the dynamics with respect to time

    """
    if intervention and time >= intervention.time:
        config = config.update(intervention)
    S_h, A_h, I_h, R_h, S_v, E_v, I_v, N_h, N_v = state
    newly_susceptible = config.lambda_h + config.recovery_rate * (1.0 -
        config.nu) * I_h + config.varphi_h * R_h
    exposure_rate = (config.mosquito_human_infection_rate * I_v * S_h / N_h +
        config.asymptomatic_infection_rate * A_h * S_h / N_h + config.
        symptomatic_infection_rate * I_h * S_h / N_h)
    dS_h = newly_susceptible - exposure_rate - config.mu_h * S_h
    dA_h = exposure_rate - config.alpha_h * A_h - config.mu_h * A_h
    dI_h = config.alpha_h * A_h - (config.recovery_rate + config.mu_h +
        config.delta_h) * I_h
    dR_h = config.recovery_rate * config.nu * I_h - (config.varphi_h +
        config.mu_h) * R_h
    dN_h = config.lambda_h - config.delta_h * I_h - config.mu_h * N_h
    dS_v = (config.lambda_v - config.human_mosquito_infection_rate * I_h *
        S_v / N_h - config.mu_v * S_v - config.theta * config.
        indoor_spray_use * S_v)
    dE_v = (config.human_mosquito_infection_rate * I_h * S_v / N_h - config
        .alpha_v * E_v - config.mu_v * E_v - config.theta * config.
        indoor_spray_use * E_v)
    dI_v = (config.alpha_v * E_v - config.mu_v * I_v - config.theta *
        config.indoor_spray_use * I_v)
    dN_v = config.lambda_v - (config.mu_v + config.theta * config.
        indoor_spray_use) * N_v
    ds_dt = [dS_h, dA_h, dI_h, dR_h, dS_v, dE_v, dI_v, dN_h, dN_v]
    return ds_dt
