def update_parameter_data(cx_str, cy_str, t):
    # string parsing
    cx_fun, cx_sym = my_bokeh_utils.string_to_function_parser(cx_str, ['t'])
    cy_fun, cy_sym = my_bokeh_utils.string_to_function_parser(cy_str, ['t'])

    from sympy import diff

    dcx_sym = diff(cx_sym, 't')
    dcy_sym = diff(cy_sym, 't')

    dcx_fun = my_bokeh_utils.sym_to_function_parser(dcx_sym, 't')
    dcy_fun = my_bokeh_utils.sym_to_function_parser(dcy_sym, 't')

    # crating sample
    x_val = cx_fun(t)
    y_val = cy_fun(t)

    dx_val = dcx_fun(t)
    dy_val = dcy_fun(t)
    xx, hx = np.linspace(source_view.data['x_start'][0], source_view.data['x_end'][0], curveintegral_settings.n_sample,
                         retstep=True)
    ssdict, spdict, _ = my_bokeh_utils.quiver_to_data(x=np.array(x_val), y=np.array(y_val), u=np.array(dx_val), v=np.array(dy_val), h=2*hx,
                                                           do_normalization=True, fix_at_middle=False)

    # save data
    source_param.data = dict(x=[x_val], y=[y_val], t=[t], x0=ssdict['x0'], y0=ssdict['y0'],
                             x1=ssdict['x1'], y1=ssdict['y1'], xs=spdict['xs'], ys=spdict['ys'])

    print "curve point was updated with t=%f" % (t)
def update_parameter_data(cx_str, cy_str, t):
    # string parsing
    cx_fun, cx_sym = my_bokeh_utils.string_to_function_parser(cx_str, ['t'])
    cy_fun, cy_sym = my_bokeh_utils.string_to_function_parser(cy_str, ['t'])

    from sympy import diff

    dcx_sym = diff(cx_sym, 't')
    dcy_sym = diff(cy_sym, 't')

    dcx_fun = my_bokeh_utils.sym_to_function_parser(dcx_sym, 't')
    dcy_fun = my_bokeh_utils.sym_to_function_parser(dcy_sym, 't')

    # crating sample
    x_val = cx_fun(t)
    y_val = cy_fun(t)

    dx_val = dcx_fun(t)
    dy_val = dcy_fun(t)
    xx, hx = np.linspace(source_view.data['x_start'][0],
                         source_view.data['x_end'][0],
                         curveintegral_settings.n_sample,
                         retstep=True)
    ssdict, spdict, _ = my_bokeh_utils.quiver_to_data(x=np.array(x_val),
                                                      y=np.array(y_val),
                                                      u=np.array(dx_val),
                                                      v=np.array(dy_val),
                                                      h=2 * hx,
                                                      do_normalization=True,
                                                      fix_at_middle=False)

    # save data
    source_param.data = dict(x=[x_val],
                             y=[y_val],
                             t=[t],
                             x0=ssdict['x0'],
                             y0=ssdict['y0'],
                             x1=ssdict['x1'],
                             y1=ssdict['y1'],
                             xs=spdict['xs'],
                             ys=spdict['ys'])

    print "curve point was updated with t=%f" % (t)
def update_quiver_data(u_str, v_str):
    """
    updates the bokeh.models.ColumnDataSource_s holding the quiver data
    :param u_str: string, first component of the vector values function
    :param v_str: string, second component of the vector values function
    :return:
    """
    # string parsing
    u_fun, _ = my_bokeh_utils.string_to_function_parser(u_str, ['x', 'y'])
    v_fun, _ = my_bokeh_utils.string_to_function_parser(v_str, ['x', 'y'])
    # crating samples
    x_val, y_val, u_val, v_val, h = get_samples(u_fun, v_fun)
    # generating quiver data and updating sources
    ssdict, spdict, sbdict = my_bokeh_utils.quiver_to_data(x=x_val, y=y_val, u=u_val, v=v_val, h=h,
                                                           do_normalization=False)
    # save quiver data to respective ColumnDataSource_s
    source_segments.data = ssdict
    source_patches.data = spdict
    source_basept.data = sbdict

    print "quiver data was updated for u(x,y) = %s, v(x,y) = %s" % (u_str, v_str)
def update_quiver_data(u_str, v_str):
    """
    updates the bokeh.models.ColumnDataSource_s holding the quiver data
    :param u_str: string, first component of the vector values function
    :param v_str: string, second component of the vector values function
    :return:
    """
    # string parsing
    u_fun, _ = my_bokeh_utils.string_to_function_parser(u_str, ['x', 'y'])
    v_fun, _ = my_bokeh_utils.string_to_function_parser(v_str, ['x', 'y'])
    # crating samples
    x_val, y_val, u_val, v_val, h = get_samples(u_fun, v_fun)
    # generating quiver data and updating sources
    ssdict, spdict, sbdict = my_bokeh_utils.quiver_to_data(
        x=x_val, y=y_val, u=u_val, v=v_val, h=h, do_normalization=False)
    # save quiver data to respective ColumnDataSource_s
    source_segments.data = ssdict
    source_patches.data = spdict
    source_basept.data = sbdict

    print "quiver data was updated for u(x,y) = %s, v(x,y) = %s" % (u_str,
                                                                    v_str)