Skip to contents

Generate correlation plots between predicted and expected cell type proportions of test data. Correlation plots can be shown all mixed or either split by cell type (CellType) or the number of different cell types present in the spots (nCellTypes).

Usage

corrExpPredPlot(
  object,
  colors,
  facet.by = NULL,
  color.by = "CellType",
  corr = "both",
  filter.sc = TRUE,
  pos.x.label = 0.01,
  pos.y.label = 0.95,
  sep.labels = 0.15,
  size.point = 0.1,
  alpha.point = 1,
  ncol = NULL,
  nrow = NULL,
  title = NULL,
  theme = NULL,
  ...
)

Arguments

object

SpatialDDLS object with trained.model slot containing metrics in the test.deconv.metrics slot of a DeconvDLModel object.

colors

Vector of colors to be used.

facet.by

Show data in different panels. Options are nCellTypes (number of different cell types) and CellType (cell type) (NULL by default).

color.by

Variable used to color data. Options are nCellTypes and CellType.

corr

Correlation value shown as an annotation on the plot. Available metrics are Pearson's correlation coefficient ('pearson') and concordance correlation coefficient ('ccc'). It can be 'pearson', 'ccc' or 'both' (by default).

filter.sc

Boolean indicating whether single-cell profiles are filtered out and only mixed transcriptional profile errors are shown (TRUE by default).

pos.x.label

X-axis position of correlation annotations (0.95 by default).

pos.y.label

Y-axis position of correlation annotations (0.1 by default).

sep.labels

Space separating annotations if corr is equal to 'both' (0.15 by default).

size.point

Size of points (0.1 by default).

alpha.point

Alpha of points (0.1 by default).

ncol

Number of columns if facet.by is other than NULL.

nrow

Number of rows if facet.by is different from NULL.

title

Title of the plot.

theme

ggplot2 theme.

...

Additional arguments for the facet_wrap function of ggplot2 if facet.by is not NULL.

Value

A ggplot object.

Examples

# \donttest{
set.seed(123)
sce <- SingleCellExperiment::SingleCellExperiment(
  assays = list(
    counts = matrix(
      rpois(30, lambda = 5), nrow = 15, ncol = 20,
      dimnames = list(paste0("Gene", seq(15)), paste0("RHC", seq(20)))
    )
  ),
  colData = data.frame(
    Cell_ID = paste0("RHC", seq(20)),
    Cell_Type = sample(x = paste0("CellType", seq(6)), size = 20,
                       replace = TRUE)
  ),
  rowData = data.frame(
    Gene_ID = paste0("Gene", seq(15))
  )
)
SDDLS <- createSpatialDDLSobject(
  sc.data = sce,
  sc.cell.ID.column = "Cell_ID",
  sc.gene.ID.column = "Gene_ID",
  sc.filt.genes.cluster = FALSE
)
#> === Spatial transcriptomics data not provided
#> === Processing single-cell data
#>       - Filtering features:
#>          - Selected features: 15
#>          - Discarded features: 0
#> 
#> === No mitochondrial genes were found by using ^mt- as regrex
#> 
#> === Final number of dimensions for further analyses: 15
SDDLS <- genMixedCellProp(
  object = SDDLS,
  cell.ID.column = "Cell_ID",
  cell.type.column = "Cell_Type",
  num.sim.spots = 50,
  train.freq.cells = 2/3,
  train.freq.spots = 2/3,
  verbose = TRUE
)
#> 
#> === The number of mixed profiles that will be generated is equal to 50
#> 
#> === Training set cells by type:
#>     - CellType1: 3
#>     - CellType2: 1
#>     - CellType3: 3
#>     - CellType4: 2
#>     - CellType5: 3
#>     - CellType6: 2
#> === Test set cells by type:
#>     - CellType1: 1
#>     - CellType2: 1
#>     - CellType3: 1
#>     - CellType4: 1
#>     - CellType5: 1
#>     - CellType6: 1
#> === Probability matrix for training data:
#>     - Mixed spots: 34
#>     - Cell types: 6
#> === Probability matrix for test data:
#>     - Mixed spots: 16
#>     - Cell types: 6
#> DONE
SDDLS <- simMixedProfiles(SDDLS)
#> === Setting parallel environment to 1 thread(s)
#> 
#> === Generating train mixed profiles:
#> 
#> === Generating test mixed profiles:
#> 
#> DONE
# training of DDLS model
SDDLS <- trainDeconvModel(
  object = SDDLS,
  batch.size = 15,
  num.epochs = 5
)
#> === Training and test from stored data
#>     Using only simulated mixed samples
#>     Using only simulated mixed samples
#> Model: "SpatialDDLS"
#> _____________________________________________________________________
#> Layer (type)                   Output Shape               Param #    
#> =====================================================================
#> Dense1 (Dense)                 (None, 200)                3200       
#> _____________________________________________________________________
#> BatchNormalization1 (BatchNorm (None, 200)                800        
#> _____________________________________________________________________
#> Activation1 (Activation)       (None, 200)                0          
#> _____________________________________________________________________
#> Dropout1 (Dropout)             (None, 200)                0          
#> _____________________________________________________________________
#> Dense2 (Dense)                 (None, 200)                40200      
#> _____________________________________________________________________
#> BatchNormalization2 (BatchNorm (None, 200)                800        
#> _____________________________________________________________________
#> Activation2 (Activation)       (None, 200)                0          
#> _____________________________________________________________________
#> Dropout2 (Dropout)             (None, 200)                0          
#> _____________________________________________________________________
#> Dense3 (Dense)                 (None, 6)                  1206       
#> _____________________________________________________________________
#> BatchNormalization3 (BatchNorm (None, 6)                  24         
#> _____________________________________________________________________
#> ActivationSoftmax (Activation) (None, 6)                  0          
#> =====================================================================
#> Total params: 46,230
#> Trainable params: 45,418
#> Non-trainable params: 812
#> _____________________________________________________________________
#> 
#> === Training DNN with 34 samples:
#> 
#> === Evaluating DNN in test data (16 samples)
#>    - loss: 1.7094
#>    - accuracy: 0.125
#>    - mean_absolute_error: 0.248
#>    - categorical_accuracy: 0.125
#> 
#> === Generating prediction results using test data
#> DONE
# evaluation using test data
SDDLS <- calculateEvalMetrics(object = SDDLS)
# correlations by cell type
corrExpPredPlot(
  object = SDDLS,
  facet.by = "CellType",
  color.by = "CellType",
  corr = "both"
)
#> `geom_smooth()` using formula = 'y ~ x'

# correlations of all samples mixed
corrExpPredPlot(
  object = SDDLS,
  facet.by = NULL,
  color.by = "CellType",
  corr = "ccc",
  pos.x.label = 0.2,
  alpha.point = 0.3
)
#> `geom_smooth()` using formula = 'y ~ x'

# }