omicverse-single-cell-liana-communication

Installation
SKILL.md

OmicVerse Single-Cell — LIANA+ Cell-Cell Communication

Goal

Take a preprocessed annotated single-cell AnnData and run LIANA+ ligand-receptor inference, producing per-(sender, receiver, ligand, receptor) score columns in adata.uns['liana_res']. Then post-process via ov.single.to_comm_adata(...) into a communication AnnData keyed on the sender→receiver direction, classified against the CellChat / CellChatDB pathway taxonomy. Visualise with ov.pl.ccc_heatmap(...) — eight plot_type modes covering dot / tile / aggregation heatmap / pathway-bubble / role-heatmap / role-network / focused-heatmap.

This skill is the LIANA-side complement to the existing single-cell-cellphonedb-communication skill. They produce comparable hit sets but LIANA aggregates across multiple base methods (CellPhoneDB, NATMI, Connectome, SingleCellSignalR, CellChat) into a rank_aggregate consensus — typically more robust than any single method.

Quick Workflow

  1. Load a preprocessed annotated AnnData (obs[group_key] populated; for the PBMC8k demo, bulk_labels).
  2. Optional: visualise the cohort embedding to confirm cluster labels look right (ov.pl.embedding(adata, basis='X_umap', color='bulk_labels', frameon='small')).
  3. Run LIANA: ov.single.run_liana(adata, groupby='bulk_labels', method='rank_aggregate', resource_name='consensus', key_added='liana_res', inplace=True). Result lands at adata.uns['liana_res'].
  4. Pathway-aware reshape: comm_adata = ov.single.to_comm_adata(adata, result_uns_key='liana_res', score_key='specificity_rank', pvalue_key='specificity_rank', classification_reference='cellchat', classification_fallback='family'). Returns a CommAnnData with one var per (ligand, receptor) and a var['classification'] column mapping each pair to a CellChat pathway.
  5. Pathway dot plots: ov.pl.ccc_heatmap(adata, plot_type='dot', display_by='interaction', score_key='specificity_rank', ...). Multiple plot_type modes share a uniform interface — see Branch Selection below.
  6. Aggregation heatmap: plot_type='heatmap', display_by='aggregation' shows sender→receiver totals.
  7. Sender / receiver focus: pass sender_use=<cluster> or receiver_use=<cluster> to filter to a single direction.
  8. Pathway-focused / role-network views: plot_type='focused_heatmap', 'pathway_bubble', 'role_heatmap', 'role_network' — pick by question (see Branch Selection).
  9. Multi-condition comparison: stack LIANA results from multiple conditions, set condition column on the result frames, and re-run plotters with the multi-condition adata.
Installs
1
GitHub Stars
13
First Seen
Jul 22, 2026
omicverse-single-cell-liana-communication — omicverse/omicverse-skills