Cell type interaction enrichment
cellProximityEnrichment function
cellProximityEnrichment <- function(gobject, spatial_network_name = 'Delaunay_network', cluster_column,number_of_simulations = 1000,adjust_method = c("none", "fdr", "bonferroni","BH","holm", "hochberg", "hommel","BY")) {
This function computes the cell-type to cell-type interactions. It outputs the number of interactions (i.e. interaction frequency) per cell-type pair, and the depletion/enrichment score per cell-type pair, to be defined as the observed over expected interactions.
The input is a spatial network defined by spatial_network_name
. The cluster_column
refers to the column in the cell metadata table containing the cell types to use. The number_of_simulations
is the number of times the spatial network is simulated. In each simulation, the labels of the cells are reshuffled in the spatial network and the interactions are recounted. adjust_method
uses various ways to correct for multiple hyothesis testing.
Returns a list of cell proximity scores in data.table
format. The first
(raw_sim_table
) shows the raw observations of both the original and simulated networks. The second (enrichm_res
) shows the enrichment results.
It is recommended to use the functions cellProximityBarplot
, cellProximityHeatmap
, cellProximityNetwork
to visualize the enrichment/depletion result.
Examples
#seqFISH+ dataset
cell_proximities = cellProximityEnrichment(gobject = VC_test, cluster_column = 'cell_types',spatial_network_name = 'Delaunay_network',adjust_method = 'fdr',number_of_simulations = 2000)
#barplot
cellProximityBarplot(gobject = VC_test, CPscore = cell_proximities, min_orig_ints = 5, min_sim_ints = 5)
#network
cellProximityNetwork(gobject = VC_test, CPscore = cell_proximities, remove_self_edges = T, only_show_enrichment_edges = T)
findICG function
findICG = function(gobject, expression_values = 'normalized',selected_genes = NULL, cluster_column, spatial_network_name = 'Delaunay_network',minimum_unique_cells = 1, minimum_unique_int_cells = 1, diff_test = c('permutation', 'limma', 't.test', 'wilcox'), mean_method = c('arithmic', 'geometric'), offset = 0.1,adjust_method = c("bonferroni","BH", "holm", "hochberg", "hommel","BY", "fdr", "none"),nr_permutations = 100,exclude_selected_cells_from_test = T,do_parallel = TRUE, cores = NA)
findICG
identifies genes that are differentially expressed due to proximity to other cell types. CPG stands for cell proximity genes. This analysis is particularly meaningful for whole transcriptome dataset such as seqFISH+.
The options cluster_column
, spatial_network_name
, adjust_method
are explained previously (see cellProximityEnrichment()
).
param |
explanations |
minimum_unique_cells |
minimum number of target cells required |
minimum_unique_int_cells |
minimum number of interacting cells required |
diff_test |
which differential statistical test to use, among “permutation”, “limma”, “t.test”, or “wilcox” |
nr_permutations |
applies if diff_test is set to “permutation” |
mean_method |
whether to use arithmetic mean or geometric mean |
offset |
for calculating log2 ratio |
do_parallel |
whether or not to run in parallel using mcapply |
cores |
number of cores when do_parallel=TRUE |
Returns a data.table
with the following information:
- genes (tested genes)
- target cell type
- interacting cell type
- number of cells for target cell type
- number of cells for interacting cell type
- average expression in interacting cells from the target cell type
- average expression in the non-interacting cells from the target cell type
- log2 fold change between (6) and (7)
- difference of expression between (6) and (7)
- pvalue
- p.adj
Examples
gene_metadata = fDataDT(VC_test)
high_expressed_genes = gene_metadata[mean_expr_det > 1.31]$gene_ID
CPGscoresHighGenes = findICG(gobject = VC_test,selected_genes = high_expressed_genes,spatial_network_name = 'Delaunay_network', cluster_column = 'cell_types',diff_test = 'permutation',adjust_method = 'fdr',nr_permutations = 2000, do_parallel = T, cores = 2)
plotCellProximityGenes(VC_test, cpgObject = CPGscoresHighGenes, method = 'dotplot')