cell_layer = new deck.ScatterplotLayer({
id: 'cell_layer',
data: cell_data,
getPosition: apply_map_morph,
getFillColor: d => {
var inst_color
if (select_meta === 'none'){
inst_color = [50, 50, 50, 100]
} else if (select_meta === 'leiden'){
if (selected_leidens.length === 0){
var rgb = d3.color(cat_colors[d[select_meta]])
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
} else {
if (selected_leidens.includes(d['leiden'])){
var rgb = d3.color(cat_colors[d[select_meta]])
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
} else {
inst_color = [50, 50, 50, 10]
}
}
} else if (select_meta === 'mean-gene'){
var inst_opacity = mean_opacity_scale(parseInt(mean_gene_data[d['name']]['mean-gene']))
if (inst_opacity > 0){
inst_color = [255, 0, 0, inst_opacity]
} else {
inst_color = [50, 50, 50, 10]
}
}
else {
var inst_opacity = opacity_scale(parseInt(gene_data[d['name']][select_meta]))
if (inst_opacity > 0){
inst_color = [255, 0, 0, inst_opacity]
} else {
inst_color = [50, 50, 50, 10]
}
}
return inst_color
},
getRadius: radius,
pickable: is_pickable,
highlightColor: d => [50, 50, 50],
radiusMinPixels: radius_min_pixels,
updateTriggers: {
getFillColor: [select_meta, selected_leidens, mean_gene_data],
getPosition: map_type
},
transitions: transitions,
onClick: (info, event) => {
if (mutable selected_leidens[0] !== info.object.leiden){
mutable select_meta = 'leiden'
mutable selected_leidens = [info.object.leiden]
} else {
mutable select_meta = 'leiden'
mutable selected_leidens = []
}
}
})