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_integral_data(u_str, v_str, cx_str, cy_str): #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']) 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') t = np.linspace(curveintegral_settings.parameter_min,curveintegral_settings.parameter_max) f_I = lambda xx, tt: (u_fun(cx_fun(tt),cy_fun(tt)) * dcx_fun(tt) + v_fun(cx_fun(tt),cy_fun(tt)) * dcy_fun(tt)) integrand = f_I(None,t) from scipy.integrate import odeint integral = odeint(f_I,0,t) source_integral.data = dict(t=t.tolist(), integral=integral.tolist(), integrand=integrand.tolist())
def update_integral_data(u_str, v_str, cx_str, cy_str): #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']) 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') t = np.linspace(curveintegral_settings.parameter_min, curveintegral_settings.parameter_max) f_I = lambda xx, tt: (u_fun(cx_fun(tt), cy_fun(tt)) * dcx_fun(tt) + v_fun( cx_fun(tt), cy_fun(tt)) * dcy_fun(tt)) integrand = f_I(None, t) from scipy.integrate import odeint integral = odeint(f_I, 0, t) source_integral.data = dict(t=t.tolist(), integral=integral.tolist(), integrand=integrand.tolist())
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)