massonix / SLOcatoR

SLOcatoR is an R package to annotate single-cell transcriptomes and open chromatin profiles from secondary lymphoid organs using the tonsil atlas as reference
Other
3 stars 0 forks source link

misunderstand SLOcatoR::integrate_assays #1

Closed Chuang1118 closed 1 year ago

Chuang1118 commented 1 year ago

Hello SLOcatoR team,

Great work Tonsil Atlas.

Currently, I am working small dataset tonsil. I want transfer label using 20220215_tonsil_atlas_rna_seurat_obj.rds.

I am following tutorial, but I get error message in step of integrate_assays.

tonsil <- readRDS(file = paste0(FOLDER_INPUT_REF,"20220215_tonsil_atlas_rna_seurat_obj.rds"))

custom # for my custom object, I just do Normalisation 
custom$assay = "5P"
custom <- NormalizeData(custom, normalization.method = "LogNormalize", scale.factor = 10000)

reference <- tonsil
query <- custom

label_var <- "annotation_figure_1"
batch_var <- "assay"

# Define new variables for label transfer
reference$type <- "reference"
query$type <- "query"
reference$batch <- reference@meta.data[[batch_var]]
reference$label <- reference@meta.data[[label_var]]
reference$annotation_probability <- NA
reference$UMAP1 <- Embeddings(reference, "umap")[, "UMAP_1"]
reference$UMAP2 <- Embeddings(reference, "umap")[, "UMAP_2"]
query$label <- NA
query$annotation_probability <- NA
query$batch <- "query"
query$UMAP1 <- NA
query$UMAP2 <- NA

common_cols <- intersect(
  colnames(reference@meta.data),
  colnames(query@meta.data)
)
reference@meta.data <- reference@meta.data[, common_cols]
query@meta.data <- query@meta.data[, common_cols]
merged <- merge(x = reference, y = query)

merged <- integrate_assays(
  merged,
  assay_specific = TRUE,
  assay_var = "batch",
  shared_hvg = shared_features
)

an error message:

  |======================================================================| 100%
PC_ 1 
Positive:  ASPM, TOP2A, CENPF, CENPE, HMMR, DLGAP5, UBE2C, CDKN3, CDK1, CCNB2 
       NCAPG, CDC20, CCNB1, NUF2, PLK1, AURKA, CKAP2L, CEP55, PBK, KPNA2 
       DEPDC1B, RRM2, KIF20A, TK1, KIF18A, KNSTRN, GMNN, PARPBP, PLK4, ORC6 
Negative:  TRBC2, CD69, PLAC8, TCF7, ITM2A, CD96, ITK, GBP2, CCND2, GPRIN3 
       PHACTR2, SLC9A9, ANK3, PYHIN1, SNX9, TIGIT, ANTXR2, TRG-AS1, TNFRSF1B, TSPAN5 
       ZEB2, SH2D1A, CD226, DUSP16, ICA1, CAMK4, TBC1D9, AOAH, TRABD2A, CD200 
PC_ 2 
Positive:  IGHM, IGHD, IGKC, JCHAIN, IGLC2, IGHG3, IGHG1, IGLC3, IGHG4, TNFRSF13B 
       IGLC1, LMO2, CR1, MARCKS, LRRK2, ZEB2, IGHG2, TBC1D9, CCDC50, FCRL4 
       RAB31, IGHGP, HOPX, PLAC8, KYNU, GSN, FAM177B, ZBED2, TESC, IGLV6-57 
Negative:  PHACTR2, ITK, TBC1D4, GPRIN3, TCF7, ICA1, CAMK4, PYHIN1, ITM2A, TIGIT 
       SLC9A9, TSPAN5, TRBC2, DUSP16, SH2D1A, GBP2, CD96, CD226, TRG-AS1, NFIA 
       ANK3, DGKH, IKZF2, AOAH, TNFRSF1B, ITGB8, FAM184A, MCTP1, CD69, RUNX2 
PC_ 3 
Positive:  TRBC2, TCF7, ITM2A, JCHAIN, SH2D1A, TIGIT, IGHG1, IGHG4, IGLV6-57, TRABD2A 
       LINC01480, IGLV3-1, IGHD, IGHG3, IGHM, IGHV1-69D, CDKN3, IGKC, IGKV3-20, IGKV4-1 
       HSP90B1, CDC20, IGHV2-70D, IGLV3-21, ICA1, IGLC1, CCNB1, IGHV3-23, IGHV1-69, IGKV1-5 
Negative:  ZEB2, ITGAX, SOX5, FCRL4, HCK, KYNU, RAB31, LRRK2, PLXNC1, GSN 
       TBC1D9, DNAH8, TNFRSF13B, CTNND1, OSTN-AS1, CCR1, LYZ, GPR34, CCDC50, DSE 
       AHR, CD58, MS4A6A, RASSF4, MIR155HG, TNFAIP2, CLNK, FMNL2, CR1, SPRED1 
PC_ 4 
Positive:  GINS2, PCNA, CDC45, CCNE2, RRM2, FAM111B, TK1, GMNN, PAICS, MYRIP 
       JCHAIN, LMO2, POLE2, FAM184A, MAPK10, E2F3, IGHG1, ORC6, GPR137B, ATF5 
       HOPX, SOX5, IGHG4, HPRT1, ZNF804A, EBI3, MRTO4, AHR, ZNF732, MAP2 
Negative:  PLK1, PLAC8, KIF20A, CDC20, AURKA, IGHM, HMMR, CENPE, DLGAP5, KNSTRN 
       IGHD, CCNB2, UBE2C, CCNB1, CCDC50, GAS2L3, CR1, ZEB2, CENPF, ASPM 
       TBC1D9, CD69, TNFRSF13B, KPNA2, FAM177B, CKAP2L, ADAMTS6, CDKN3, RAB31, TRBC2 
PC_ 5 
Positive:  LYZ, LGALS3, RASSF4, IL18, APOE, MS4A6A, TNFAIP2, LST1, GLUL, CEBPD 
       MARCKS, IL4I1, ADAMDEC1, FDCSP, S100A8, TLR4, C15orf48, CPVL, HSP90B1, CFP 
       IL1RN, TNFRSF1B, ITGAX, PLAUR, TIMP2, VASH1, ATF5, HCK, DNASE1L3, ETS2 
Negative:  SOX5, ANK3, LRRK2, KYNU, CR1, MACROD2, TBC1D9, CMSS1, ANTXR2, ZNF804A 
       ADAMTS6, CD96, SNX9, DNAH8, MYRIP, SLC9A9, FAM177B, ZEB2, MAP2, CLNK 
       MAPK10, CD69, CAMK4, PLAC8, PCDH9, ANKRD33B, RUNX2, TNFRSF13B, CCDC50, IKZF2 
Harmony 1/10
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Quitting from lines 62-63 (2.3_Prediction.Rmd) 
Error in harmonyObj$cluster_cpp() : 
  element-wise pow(): incompatible matrix dimensions: 100x3 and 3x1

How should I handle it? Thank you

Chuang

Chuang1118 commented 1 year ago

hello,

integrate_assays <- function(seurat_obj,
                             assay_specific = TRUE,
                             assay_var = "assay",
                             shared_hvg,
                             n_dim = 30
) {
  if (assay_specific) {
    seurat_obj <- seurat_obj %>%
      ScaleData(features = shared_hvg) %>%
      RunPCA(features = shared_hvg) %>%
      RunHarmony(group.by.vars = assay_var, reduction = "pca", dims = 1:n_dim)
  } else {
    seurat_obj <- seurat_obj %>%
      ScaleData() %>%
      RunPCA()
  }

  seurat_obj
}

This issue come from RunHarmony (package harmony). Solution: In dockerfile add this line before install SLOcatoR

RUN Rscript -e 'library(devtools);devtools::install_github("https://github.com/eddelbuettel/harmony")'

More details see: https://github.com/immunogenomics/harmony/issues/169

Chuang