FastCCC Cell–Cell Communication Analysis Report

{{ sample_name }}  |  Task: {{ task_id }}
{{ report_date }}  |  DB: {{ database_name }}  |  FastCCC v{{ version }}
{% for tab in tabs %} {% endfor %} {% if has_differential %} {% endif %}
{% macro render_tab(tab, ri) %} {% set f = tab.figs %} {% set s = tab.stats %} {% set n = tab.name %}

Contents

  1. Executive Summary
  2. Global CCC Overview
  3. Ligand–Receptor Pair Analysis
  4. Pathway Enrichment
  5. Cell Type Profiles
  6. Network Analyses
  7. Advanced L-R Analyses

1. Executive Summary

{{ s.n_celltypes }}
Cell types
{{ s.n_sig_interactions }}
Significant interactions
{{ s.n_lr_pairs }}
Unique L-R pairs
{{ s.n_ct_pairs }}
Active cell-type pairs
{{ s.n_pathways }}
Pathway classes
{% if s.top_sender %}

FastCCC identified {{ s.n_sig_interactions }} significant L-R interactions across {{ s.n_ct_pairs }} cell-type pairs in {{ n }}. Top sender: {{ s.top_sender }} ({{ s.top_sender_count }} outgoing). Top receiver: {{ s.top_receiver }} ({{ s.top_receiver_count }} incoming). Dominant pathway: {{ s.top_pathway }} ({{ s.top_pathway_count }} interactions).

{% endif %}

Run Parameters

{% if ri.has_conditions %} {% endif %}
Sample{{ n }}
Task ID {%- if tab.id == 'cond_a' and ri.cond_a_task_id -%} {{ ri.cond_a_task_id }} {%- elif tab.id == 'cond_b' and ri.cond_b_task_id -%} {{ ri.cond_b_task_id }} {%- else -%} {{ ri.task_id }} {%- endif -%}
Database{{ ri.database_name }}
p-value threshold{{ ri.pval_threshold }}
Top L-R pairs shown{{ ri.top_n_lr }}
Top cell types shown{{ ri.top_n_celltypes }}
Enrichment gene sets{{ ri.gene_sets_str }}
Conditions compared{{ ri.name_a }} vs {{ ri.name_b }}
Report generated{{ ri.report_date }}
FastCCC version{{ ri.version }}

2. Global CCC Overview

Figure 1 — Interaction Count Heatmap

{% if f.count_heatmap[0] %}
Count Heatmap
Figure 1. {{ f.count_heatmap[1] }}
{% else %}

Figure 1 not generated.

{% endif %}

Figure 2 — Communication Strength Heatmap

{% if f.strength_heatmap[0] %}
Strength Heatmap
Figure 2. {{ f.strength_heatmap[1] }}
{% else %}

Figure 2 not generated.

{% endif %}

Figure 3 — Chord Diagram

{% if f.chord[0] %}
Chord Diagram
Figure 3. {{ f.chord[1] }}
{% else %}

Figure 3 not generated.

{% endif %}

Figure 4 — Top Sender and Receiver Cell Types

{% if f.sr_bar[0] %}
Sender Receiver Bar
Figure 4. {{ f.sr_bar[1] }}
{% else %}

Figure 4 not generated.

{% endif %}

3. Ligand–Receptor Pair Analysis

Figure 5 — Top L-R Pairs Dot Plot

{% if f.lr_dotplot[0] %}
LR Dotplot
Figure 5. {{ f.lr_dotplot[1] }}
{% else %}

Figure 5 not generated.

{% endif %}

Figure 6 — Pathway Classification Distribution

{% if f.class_bar[0] %}
Classification Bar
Figure 6. {{ f.class_bar[1] }}
{% else %}

Figure 6 not generated.

{% endif %}

Figure 7 — Pathway × Cell-Type Pair Heatmap

{% if f.path_ct[0] %}
Pathway CT Heatmap
Figure 7. {{ f.path_ct[1] }}
{% else %}

Figure 7 not generated.

{% endif %}

4. Pathway Enrichment Analysis

Figure 8 — Ligand Gene ORA

{% if f.lig_ora[0] %}
Ligand ORA
Figure 8. {{ f.lig_ora[1] }}
{% else %}

Figure 8 not generated.

{% endif %}

Figure 9 — Receptor Gene ORA

{% if f.rec_ora[0] %}
Receptor ORA
Figure 9. {{ f.rec_ora[1] }}
{% else %}

Figure 9 not generated.

{% endif %}

Figure 10 — Predicted TF Activation Heatmap

{% if f.tf[0] %}
TF Heatmap
Figure 10. {{ f.tf[1] }}
{% else %}

Figure 10 not generated (requires CPDBv5).

{% endif %}

5. Cell Type Communication Profiles

Figure 11 — Sender vs. Receiver Scatter

{% if f.io_scatter[0] %}
IO Scatter
Figure 11. {{ f.io_scatter[1] }}
{% else %}

Figure 11 not generated.

{% endif %}

Figure 12 — Sender Pathway Specificity

{% if f.sender_pathway[0] %}
Sender Pathway
Figure 12. {{ f.sender_pathway[1] }}
{% else %}

Figure 12 not generated.

{% endif %}

Figure 13 — Outgoing Interaction Flow

{% if f.flow[0] %}
Interaction Flow
Figure 13. {{ f.flow[1] }}
{% else %}

Figure 13 not generated.

{% endif %}

6. Network-Level Analyses

Figure 14 — Communication Network

{% if f.network[0] %}
Network
Figure 14. {{ f.network[1] }}
{% else %}

Figure 14 not generated.

{% endif %}

Figure 15 — Sender → Pathway → Receiver Alluvial

{% if f.sankey[0] %}
Sankey
Figure 15. {{ f.sankey[1] }}
{% else %}

Figure 15 not generated.

{% endif %}

Figure 16 — Autocrine vs. Paracrine

{% if f.autocrine[0] %}
Autocrine
Figure 16. {{ f.autocrine[1] }}
{% else %}

Figure 16 not generated.

{% endif %}

Figure 17 — L-R Bipartite Network

{% if f.bipartite[0] %}
Bipartite
Figure 17. {{ f.bipartite[1] }}
{% else %}

Figure 17 not generated.

{% endif %}

7. Advanced Ligand–Receptor Analyses

Figure 18 — Pathway Information Flow

{% if f.info_flow[0] %}
Info Flow
Figure 18. {{ f.info_flow[1] }}
{% else %}

Figure 18 not generated.

{% endif %}

Figure 19 — Top L-R Pairs per Pathway

{% if f.lr_multiples[0] %}
LR Multiples
Figure 19. {{ f.lr_multiples[1] }}
{% else %}

Figure 19 not generated.

{% endif %}

Figure 20 — L-R Pair Specificity Heatmap

{% if f.lr_spec[0] %}
LR Specificity
Figure 20. {{ f.lr_spec[1] }}
{% else %}

Figure 20 not generated.

{% endif %}

Figure 21 — CS Distribution Violin

{% if f.cs_violin[0] %}
CS Violin
Figure 21. {{ f.cs_violin[1] }}
{% else %}

Figure 21 not generated.

{% endif %}
{% endmacro %} {% set ri = { 'task_id': task_id, 'database_name': database_name, 'pval_threshold': pval_threshold, 'top_n_lr': top_n_lr, 'top_n_celltypes': top_n_celltypes, 'gene_sets_str': gene_sets_str, 'has_conditions': has_conditions, 'name_a': name_a, 'name_b': name_b, 'cond_a_task_id': cond_a_task_id, 'cond_b_task_id': cond_b_task_id, 'report_date': report_date, 'version': version, } %} {% for tab in tabs %}
{{ render_tab(tab, ri) }}
{% endfor %} {% if has_differential %}

Differential CCC Analysis — {{ name_a }} vs. {{ name_b }}

Figure 22 — Differential Interaction Count Heatmap

{% if diff_figs.heatmap[0] %}
Diff Heatmap
Figure 22. {{ diff_figs.heatmap[1] }}
{% else %}

Figure 22 not generated.

{% endif %}

Figure 23 — Differential L-R Volcano Plot

{% if diff_figs.volcano[0] %}
Diff Volcano
Figure 23. {{ diff_figs.volcano[1] }}
{% else %}

Figure 23 not generated.

{% endif %}

Figure 24 — Differential Pathway Activity

{% if diff_figs.pathway[0] %}
Diff Pathway
Figure 24. {{ diff_figs.pathway[1] }}
{% else %}

Figure 24 not generated.

{% endif %}
{% endif %}

Supplementary Tables (full dataset)

Table 1 — Top 50 Significant Interactions

{% for row in top_interactions %} {% endfor %}
#SenderReceiverLigandReceptor p-valuePathway
{{ loop.index }} {{ row.sender_celltype }}{{ row.receiver_celltype }} {{ row.ligand }}{{ row.receptor }} {{ "%.2e"|format(row['p-value']) }} {{ row.classification }}

Table 2 — Interaction Count per Cell-Type Pair

{% for row in ct_pair_counts %} {% endfor %}
SenderReceiverN interactions
{{ row.sender }}{{ row.receiver }}{{ row.count }}

Methods

Cell–cell communication inference. FastCCC (Hou et al., Nat. Commun. 16, 11428, 2025) was used to infer significant L-R interactions via FFT-based analytical p-values and a Cauchy combination test across 16 summary-statistic/aggregation variants. Database: {{ database_name }}. Threshold: p < 0.05.

Pathway enrichment. ORA was performed with gseapy (Fang et al., 2023) against {{ gene_sets_str }}. Fisher's exact test; Benjamini–Hochberg correction; adj. p < 0.05.

Network analyses. Directed graph built with NetworkX; betweenness centrality (weighted). Alluvial/Sankey diagrams use custom matplotlib Hermite S-curve ribbon fills.

Differential analysis. Each condition was analysed independently. Differential interaction counts are raw differences (Δ = B − A). The volcano plot shows log₂ FC of CS and −log₁₀(min p-value) for L-R pairs significant in ≥1 condition.

Visualisation. All figures generated with matplotlib (Hunter, 2007) and seaborn (Waskom, 2021). Saved at {{ "300" }} DPI (PNG + SVG).