v0-00-24 - Support for categorical data and faster rendering /downsampling point to render on client
Total 45 commits since v0-00-24 -solving or partially solving issues
Visualization changes #76, #89
#76 - Integrate dynamic down-sampling in number of points in bokeh visualization + bug fix in preserving selected points in interactive selection
#89 Bokeh wrappers - add support for categorical data in bokeDraw
- new syntax to specify number of points to render on client
- nPointRender=5000
- rescaleColorMapper=True
Example usage Visualization:
- creation of categorical data from root trees Experimental
- TODO - to be simplified further using default factors
pidMap = {0:"electron",1: "muon", 2: "pion", 3: "kaon", 4: "proton", 5: "H2", 6: "H3", 7: "He3", 8: "He4" }
dfResolMap0['pidCategory']=dfResolMap0['pidCenter'].map(pidMap)
markerPID=factor_mark('pidCategory', ['hex', 'circle_x', 'triangle'], pidCategory)
colorPID=factor_cmap('pidCategory', 'Category10_6', pidCategory )
- usage in visualization
output_file("fitlMultNormHighMultFit.html")
optionsAll={"color":colorPID,"marker":markerPID,"legend_field":"pidCategory"}
#optionsAll={"colorZvar":"tglMean"}
figureArray = [
[['qPMean'], ['log(dEdxS)'], {"colorZvar":"tglMean"}],
[['logBGMean'], ['log(dEdxS)'], {"colorZvar":"tglMean"}],
[['1/dEdxExp'], ['log(dEdxS)'], {"colorZvar":"tglMean"}],
[['primMultCenter'], ['log(dEdxS)'], {"colorZvar":"tglMean"}],
#
[['qPMean'], ['log(dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
[['logBGMean'], ['log(dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
[['1/dEdxExp'], ['log(dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
[['primMultCenter'], ['log(dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
#
[['qPMean'], ['log(dEdxS/dEdxFitBG)'], {"colorZvar":"tglMean"}],
[['logBGMean'], ['log(dEdxS/dEdxFitBG)'], {"colorZvar":"tglMean"}],
[['1/dEdxExp'], ['log(dEdxS/dEdxFitBG)'], {"colorZvar":"tglMean"}],
[['primMultCenter'], ['log(dEdxS/dEdxFitBG)'], {"colorZvar":"tglMean"}],
#
[['qPMean'], ['log(dEdxS/dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
[['logBGMean'], ['log(dEdxS/dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
[['1/dEdxExp'], ['log(dEdxS/dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
[['primMultCenter'], ['log(dEdxS/dEdxFitBGEl)'], {"colorZvar":"tglMean"}],
{"size": 4}
]
widgetParams=[
['multiSelect', ['pidCenter']],
['multiSelect', ['primMultBin']],
['multiSelect', ['cutResolOutliers']],
['range', ['tglMean']],
['range', ['primMultCenter']],
['range', ['qPtMean']],
]
tooltips = [("pid", "@pidCenter")]
widgetLayoutDesc=[ [0,1,2],[3,4,5], {'sizing_mode':'scale_width',"legend_visible":False} ]
figureLayoutDesc=[
[0,1,2,3, {'plot_height':250,"commonY":0,'x_visible':0}],
[4,5,6,7, {'plot_height':250,'x_visible':0,"commonY":4}],
[8,9,10,11, {'plot_height':250,"commonY":8}],
[12,13,14,15, {'plot_height':300,"commonY":8}],
{'plot_height':250,'sizing_mode':'scale_width',"legend_visible":False}
]
fig=bokehDrawSA.fromArray(dfResolMap0, "qPtMean>0.2&abs(log(dEdxS/dEdxFitBGEl))<0.2", figureArray, widgetParams,layout=figureLayoutDesc,tooltips=tooltips,sizing_mode='scale_width',widgetLayout=widgetLayoutDesc, nPointRender=5000,rescaleColorMapper=True)