Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DEGA-137-Custom-segment-arg-for-Landscape-view #64

Draft
wants to merge 18 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions js/deck-gl/cell_layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,13 @@ const cell_layer_onclick = async (info, d, deck_ist, layers_obj, viz_state) => {

export const ini_cell_layer = async (base_url, viz_state) => {

const cell_url = base_url + `/cell_metadata.parquet`;
let cell_url
if (viz_state.seg.version === 'default'){
cell_url = base_url + `/cell_metadata.parquet`;
} else {
cell_url = base_url + '/cell_metadata_' + viz_state.seg.version + '.parquet';
}

var cell_arrow_table = await get_arrow_table(cell_url, options.fetch)

set_cell_names_array(viz_state.cats, cell_arrow_table)
Expand All @@ -105,7 +111,9 @@ export const ini_cell_layer = async (base_url, viz_state) => {
viz_state.cats.cell_cats = viz_state.cats.cell_names_array.map(name => viz_state.cats.meta_cell[name])
} else {
// default clustering
var cluster_arrow_table = await get_arrow_table(base_url + `/cell_clusters/cluster.parquet`, options.fetch)

var cluster_arrow_table = await get_arrow_table(base_url + `/cell_clusters${viz_state.seg.version && viz_state.seg.version !== 'default' ? '_' + viz_state.seg.version : ''}/cluster.parquet`,
options.fetch)
set_cell_cats(viz_state.cats, cluster_arrow_table, 'cluster')
}

Expand All @@ -114,8 +122,13 @@ export const ini_cell_layer = async (base_url, viz_state) => {
// Combine names and positions into a single array of objects
const new_cell_names_array = cell_arrow_table.getChild("name").toArray()

console.log(cell_arrow_table)

const flatCoordinateArray = viz_state.spatial.cell_scatter_data.attributes.getPosition.value;

console.log('*********************')
console.log(new_cell_names_array)

// save cell positions and categories in one place for updating cluster bar plot
viz_state.combo_data.cell = new_cell_names_array.map((name, index) => ({
name: name,
Expand Down
2 changes: 1 addition & 1 deletion js/deck-gl/trx_layer.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const trx_layer_callback = async (info, d, deck_ist, layers_obj, viz_state) => {
update_selected_genes(viz_state.genes, [inst_gene])
update_selected_cats(viz_state.cats, [])

await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene)
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene, viz_state.seg.version)

update_cell_layer_id(layers_obj, new_cat)

Expand Down
21 changes: 19 additions & 2 deletions js/global_variables/cell_exp_array.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,33 @@
import { get_arrow_table } from '../read_parquet/get_arrow_table'
import { options } from '../global_variables/fetch_options.js'

export const update_cell_exp_array = async (cats, genes, base_url, inst_gene) => {
export const update_cell_exp_array = async (cats, genes, base_url, inst_gene, version) => {

var file_path = base_url + '/cbg/' + inst_gene + '.parquet'
let file_path;
if (version === 'default'){
file_path = base_url + '/cbg/' + inst_gene + '.parquet';
} else {
file_path = base_url + '/cbg_' + version + '/' + inst_gene + '.parquet';
}

//var file_path = base_url + '/cbg/' + inst_gene + '.parquet'
var exp_table = await get_arrow_table(file_path, options.fetch)
let cell_names = exp_table.getChild('__index_level_0__').toArray()
let cell_exp = exp_table.getChild(inst_gene).toArray()

const new_exp_array = new Array(cats.cell_names_array.length).fill(0)

Object.entries(cats.cell_name_to_index_map).forEach(([key, value]) => {
console.log(`${key}: ${value}`);
});

console.log(cats.cell_names_array.length)
console.log(cats.cell_name_to_index_map.get('127062'))

cell_names.forEach((name, i) => {
name = String(name)
//console.log(name, typeof name)

if (cats.cell_name_to_index_map.has(name)) {
const index = cats.cell_name_to_index_map.get(name);
const exp_value = Number(cell_exp[i]);
Expand Down
2 changes: 2 additions & 0 deletions js/global_variables/cell_names_array.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ export const set_cell_names_array = (cats, cell_arrow_table) => {

export const set_cell_name_to_index_map = (cats) => {
cats.cell_names_array.forEach((name, index) => {
console.log(name, typeof name)
name = String(name)
cats.cell_name_to_index_map.set(name, index)
})
}
2 changes: 1 addition & 1 deletion js/ui/bar_plot.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ export const bar_callback_gene = async (event, d, deck_ist, layers_obj, viz_stat
update_cat(viz_state.cats, new_cat)
update_selected_genes(viz_state.genes, [inst_gene])
update_selected_cats(viz_state.cats, [])
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene)
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene, viz_state.seg.version)

update_cell_layer_id(layers_obj, new_cat)
update_path_layer_id(layers_obj, new_cat)
Expand Down
2 changes: 1 addition & 1 deletion js/ui/gene_search.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ const ist_gene_search_callback = async (deck_ist, layers_obj, viz_state) => {
const inst_gene_in_gene_names = viz_state.genes.gene_names.includes(inst_gene)

if (inst_gene_in_gene_names) {
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene)
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene, viz_state.seg.version)
}

toggle_image_layers_and_ctrls(layers_obj, viz_state, !inst_gene_in_gene_names)
Expand Down
10 changes: 9 additions & 1 deletion js/viz/landscape_ist.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,13 @@ export const landscape_ist = async (
meta_cluster={},
umap={},
landscape_state='spatial',
segmentation='default',
view_change_custom_callback=null
) => {

console.log('checking segmentation', segmentation)


if (width === 0){
width = '100%'
}
Expand Down Expand Up @@ -240,6 +244,10 @@ export const landscape_ist = async (
viz_state.edit.visible = false
viz_state.edit.modify_index = null

// starting to set up custom segmentation support
viz_state.seg = {}
viz_state.seg.version = segmentation

if (Object.keys(viz_state.model).length !== 0){

if (Object.keys(viz_state.model.get('region')).length === 0) {
Expand Down Expand Up @@ -365,7 +373,7 @@ export const landscape_ist = async (
update_cat(viz_state.cats, new_cat)
update_selected_genes(viz_state.genes, [inst_gene])
update_selected_cats(viz_state.cats, [])
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene)
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene, viz_state.seg.version)

update_cell_layer_id(layers_obj, new_cat)
update_path_layer_id(layers_obj, new_cat)
Expand Down
4 changes: 3 additions & 1 deletion js/widget.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export const render_landscape_ist = async ({ model, el }) => {
const meta_cluster = model.get('meta_cluster')
const umap = model.get('umap')
const landscape_state = model.get('landscape_state')
const segmentation = model.get('segmentation')

return landscape_ist(
el,
Expand All @@ -51,7 +52,8 @@ export const render_landscape_ist = async ({ model, el }) => {
meta_cell,
meta_cluster,
umap,
landscape_state
landscape_state,
segmentation
)

}
Expand Down
2 changes: 1 addition & 1 deletion js/widget_interactions/update_ist_landscape_from_cgm.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export const update_ist_landscape_from_cgm = async (deck_ist, layers_obj, viz_st
update_cat(viz_state.cats, new_cat)
update_selected_genes(viz_state.genes, [inst_gene])
update_selected_cats(viz_state.cats, [])
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene)
await update_cell_exp_array(viz_state.cats, viz_state.genes, viz_state.global_base_url, inst_gene, viz_state.seg.version)

update_cell_layer_id(layers_obj, new_cat)
update_path_layer_id(layers_obj, new_cat)
Expand Down
807 changes: 807 additions & 0 deletions notebooks/cell_by_gene_matrix.csv

Large diffs are not rendered by default.

12 changes: 2 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading