O Bokeh Callback atualiza uma lista em vez de um ColumnDataSource?

Minha pergunta tem a ver com modificaresta exemplo da Galeria Bokeh.

Eu tenho uma matriz m ou dados brutos, em que cada linha corresponde a um par de coordenadas x, y em um espaço transformado (consulte #MockData parte do código).

As coordenadas x, y são plotadas no gráfico esquerdo. Estou tentando alterar o exemplo para que, quando eu selecionar alguns pontos na figura da esquerda, a figura da direita exibirá gráficos de linhas das linhas correspondentes.

Eu reduzi o problema até o ponto, onde a figura à direita mostra os dados desejados, conforme especificado na lista "índices". No entanto, não consigo descobrir como vincular a função de retorno de chamada à lista de índices. (Atualmente, o retorno de chamada atualiza inutilmente a fonte s2 com os índices.)

O código deve funcionar quando copiado:

from bokeh.plotting import figure, output_file, show, ColumnDataSource, hplot
from bokeh.models import HoverTool, Callback, ColumnDataSource
import pandas as pd
output_file("Map.html")

# Mock data
m = np.zeros((6,11))
for i in range(6):
    for j in range(11):
        m[i,j] = i+j
x = [0,1,2,3,4,5]; y = [0,2,4,6,8,10]
m0 = m.transpose()
m1 = pd.DataFrame(m0, index=['0','1','2','3','4','5','6','7','8','9','10'], columns=[np.arange(0,len(m),1).astype(str)])

#First plot
s1 = ColumnDataSource(data=dict(x=x,y=y))
p1 = figure(tools=["lasso_select"], plot_width=600, plot_height=400)
p1.scatter('x', 'y', fill_color='black', line_color=None, size=10, source=s1)

#Second plot
s2 = ColumnDataSource(data=dict(z=[]))
p2 = figure(plot_width=400, plot_height=400)    
m1 = ColumnDataSource(m1)
indices = [1,3,4]
for i in indices:
    p2.line(np.arange(0,11,1), '%s'%i ,  source=m1)

s1.callback = Callback(args=dict(s2=s2), code="""
  var inds = cb_obj.get('selected')['1d'].indices;
  var d2 = s2.get('data');
  d2['z'] = []
  for (i = 0; i < inds.length; i++) {
      d2['z'].push(inds[i])}
  s2.trigger('change'); 
""")

layout = hplot(p1, p2)
show(layout)

Pergunta original:

Trabalhando com o exemplo na documentação do Bokeh. Estou tentando obter índices da seleção na janela esquerda e usá-los para obter a linha apropriada de uma matriz com dados originais e plotar a linha. Em detalhe:

Começo com uma matriz de valores, onde cada coluna é um ano e cada linha é um local. Eu executo um Sklearn Spectral Embedding na matriz para caracterizar os dados e obter uma matriz, onde cada coluna de alguma forma descreve os dados. Ploto as 3 primeiras colunas como coordenadas x, y e uma cor. Em seguida, estou tentando modificar o exemplo, de modo que, quando seleciono alguns pontos, o segundo gráfico exibe seus dados originais (linhas) como linhas separadas. O código relevante extraído principalmente do exemplo está abaixo.

questionAnswers(2)

yourAnswerToTheQuestion