How to visualize specific gene `transcripts` and specific cell-type `cell_boundaries` within `napari-spatialdata`?

Open
#369 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Documentation
Clarity
Mostly clear
Activity status
Quiet
Tech stack
jupyter-notebook, python

Research direction

Start with the reproducible Xenium example in the issue, the napari-spatialdata Nanostring analysis tutorial, and the linked spatialdata Xenium tutorial. Determine how to select specific genes and cell types, assign distinct colors, and display transcripts with cell boundaries in napari-spatialdata. Done means documenting a reproducible workflow for the two requested visualization objectives.

Written by the indexing model from the issue text.

Description

I am trying to accomplish two visualization objectives that have "sub-objectives". I think if I can learn how to do the 1st objective correctly, I think will be able to figure out how to do the 2nd objective using the tutorial from napari-spatialdata - Analyse Nanostring data in Napari-SpatialData.

  1. visualize specific gene transcripts with either:
    a. all transcripts for 1 gene with 1 color
    b. all transcripts for a few genes with a unique color assignment for each gene

  2. visualize transcripts for two specific genes (1 color assignment for each gene) that are present in 2 cell-types

My current use-case for all of this is to interactively visualize the results from a ligand-receptor analysis (cells sending ligands and receptor cells receiving ligands). The ligand-receptor analysis was performed using liana-py/MISTy - Steady-state Ligand-Receptor inference and liana-py/MISTy - Learning Spatial Relationships with MISTy.

I have been using spatialdata within a jupyter notebook to visualize the results by rendering hi-res .pngs, which, to be frank, is excellent, but a slow process.
I am hoping to now visualize and explore these same results at hi-res using the versatile rendering of napari-spatialdata via a headless HPC setup I just got working.


Reproducible example:

1st (download data):
wget https://s3.embl.de/spatialdata/spatialdata-sandbox/xenium_rep1_io.zip

2nd (python clustering)

from spatialdata_io import xenium
import spatialdata as sd

sdata=sd.SpatialData.read("./data.zarr/")
sdata

import scanpy as sc
sc._settings.ScanpyConfig.n_jobs=-1
sc.pp.filter_cells(sdata.tables["table"], min_counts=10)
sc.pp.filter_genes(sdata.tables["table"], min_cells=5)
sc.pp.normalize_total(sdata.tables["table"], inplace=True)
sc.pp.log1p(sdata.tables["table"])
sc.pp.pca(sdata.tables["table"])
sc.pp.neighbors(sdata.tables["table"])
sc.tl.leiden(sdata.tables["table"], flavor="igraph", n_iterations=2)

sdata.write("./processed_sdata.zarr")

screenshots of napari-spatialdata and issue:

The first 3 images are how I opened the processed_sdata.zarr
Image

Image Image

opened processed_sdata.zarr:
Image

after double-clicking global then morphology_focus and cell_boundaries:
Image

after also double-clicking transcripts:
Image

This is from the scverse/spatialdata Xenium tutorial, so something like this would be good:
Image

My current objective is mainly the bullet-point (2.) above, which is to see 2-cell-types of interest, so I guess in the reproducible example this would mean 2 leiden clusters, and 2 genes of interest all in different colors.

I think the solution has to do with table assignment to the correct element, possibly?

Dominant language
Python
Stars
90
Forks
25
Avg merge
22m
Merged PRs (30d)
1

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from scverse/napari-spatialdata

All issues in scverse/napari-spatialdata

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.