code: def _create_prices(t):
      last_average = 100 if t == 0 else source.data["average"][-1]
      returns = np.asarray(
          np.random.lognormal(mean.value, stddev.value, 1)
      )
      average = last_average * np.cumprod(returns)
      high = average * np.exp(abs(np.random.gamma(1, 0.03, size=1)))
      low = average / np.exp(abs(np.random.gamma(1, 0.03, size=1)))
      delta = high - low
      open = low + delta * np.random.uniform(0.05, 0.95, size=1)
      close = low + delta * np.random.uniform(0.05, 0.95, size=1)
      return open[0], high[0], low[0], close[0], average[0]
  
file_path: bokeh/examples/server/app/ohlc/main.py
imports: import numpy
  from bokeh.driving import count
  from bokeh.layouts import column, gridplot, row
  from bokeh.models import ColumnDataSource, Select, Slider
  from bokeh.plotting import curdoc, figure
label_desc: Use image node_id 1 for calling a global function with example usage: _create_prices(t) and returns: open,  high,  low,  close,  average