cell_layer = new deck.ScatterplotLayer({
id: 'cell_layer',
data: data,
getPosition: apply_map_morph,
// // // mean of multiple genes
// // 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 {
// // single gene
// 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
// },
getFillColor: d => {
var inst_color = [0, 255, 0, 255]
if (select_meta === 'none'){
// default coloring
////////////////////////////////////////
inst_color = [50, 50, 50, 100]
} else if (select_meta === 'leiden') {
// // color by category
// ////////////////////////////////////////
// if (select_cat === 'all'){
// 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, 25]
// if (d[select_meta] === select_cat){
// var rgb = d3.color(cat_colors[d[select_meta]])
// inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
// }
// }
if (selected_leidens.length === 0){
// single leiden
///////////////////
var rgb = d3.color(cat_colors[d[select_meta]])
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
} else {
// multiple leidens
/////////////////////
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') {
// mean gene expression
////////////////////////////////////////
inst_color = [0, 0, 0, 255]
} else {
// single gene expression
////////////////////////////////////////
if (all_genes.includes(select_meta)){
if (d.name in gex_dict[select_meta]){
var inst_expression = gex_dict[select_meta][d.name]
var inst_opacity = opacity_scale(inst_expression)
inst_color = [255, 0, 0, inst_opacity]
} else {
inst_color = [50, 50, 50, 2]
}
}
}
return inst_color
},
getRadius: cell_radius,
pickable: is_pickable,
highlightColor: d => [50, 50, 50],
radiusMinPixels: cell_min_radius,
opacity: cell_opacity,
updateTriggers: {
getFillColor: [select_meta, selected_leidens], // , mean_gene_data],
getPosition: map_type,
},
transitions: transitions,
onClick: (info, event) => {
console.log(info.object[cat_name])
if (mutable selected_leidens[0] !== info.object[cat_name]){
mutable select_meta = 'leiden'
mutable selected_leidens = [info.object[cat_name]]
d3.select('#meta_dropdown').select('select').node().value = 'none'
} else {
mutable select_meta = 'leiden'
mutable selected_leidens = []
d3.select('#meta_dropdown').select('select').node().value = 'leiden'
}
}
})