tile_layer = new deck.GeoJsonLayer({
id: 'nbhd_layer',
data: tiles_geojson,
stroked: false,
filled: true,
getFillColor: d => {
var inst_color
var inst_cat = d.properties[cat_name]
if (select_meta === cat_name){
var rgb = d3.color(cat_colors[inst_cat])
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
} else if (available_cats.includes(select_meta)){
var rgb = d3.color(cat_colors[inst_cat])
if (inst_cat === select_meta){
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
} else {
inst_color = [rgb.r, rgb.g, rgb.b, unselected_opacity_255]
}
}
else if (tile_list.includes(select_meta) || select_meta === 'dendro_select_rows') {
// color by single gene
//////////////////////////
// look up cell index from columns
var inst_index = network_tile.col_nodes.map(x => x.name).indexOf(d.id)
var inst_data
if (inst_index !== -1){
inst_data = dimension_data[inst_index]
} else {
inst_data = 0
}
var inst_opacity = gene_opacity_scale(Math.abs(inst_data))
if (inst_data >= 0){
inst_color = [255, 0, 0, inst_opacity]
} else {
console.log('less than zero', inst_data, inst_index)
inst_color = [0, 0, 255, inst_opacity]
}
}
else if (select_meta === 'dendro_select_cols'){
var rgb = d3.color(cat_colors[d.properties[cat_name]])
// check if tile id is in the dendro list
// if (dendro_selected_leidens.includes(d.id)){
if (dendro_selected_leidens.includes(d.properties[cat_name])){
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
} else {
inst_color = [rgb.r, rgb.g, rgb.b, unselected_opacity_255]
}
} else if (select_meta === 'col_select'){
var rgb = d3.color(cat_colors[d.properties[cat_name]])
// check if tile id is in the dendro list
// if (d.id === heatmap_col){
if (d.properties[cat_name] === heatmap_col){
inst_color = [rgb.r, rgb.g, rgb.b, 255 * cat_opacity]
} else {
inst_color = [rgb.r, rgb.g, rgb.b, unselected_opacity_255]
}
}
return inst_color
},
updateTriggers: {
getFillColor: [select_meta, dendro_selected_leidens, dendro_selected_genes],
},
onClick: (info, event) => {
// show single leiden
var inst_cat = info.object.properties[cat_name]
if (select_meta !== inst_cat){
// switch to single category
mutable select_meta = inst_cat
d3.select('#meta_dropdown').select('select').node().value = inst_cat
} else {
// switch to showing all categories
mutable select_meta = cat_name
d3.select('#meta_dropdown').select('select').node().value = cat_name
}
},
pickable: true
});