|
| 1 | +library(anndata) |
| 2 | +library(scIntegrationMetrics) |
| 3 | + |
| 4 | +## VIASH START |
| 5 | +par <- list( |
| 6 | + input_integrated = "resources_test/task_batch_integration/cxg_immune_cell_atlas/integrated_processed.h5ad", |
| 7 | + input_solution = "resources_test/task_batch_integration/cxg_immune_cell_atlas/solution.h5ad", |
| 8 | + output = "output.h5ad" |
| 9 | +) |
| 10 | +meta <- list( |
| 11 | + name = "cilisi" |
| 12 | +) |
| 13 | +## VIASH END |
| 14 | + |
| 15 | +cat("Reading input files\n") |
| 16 | +adata <- anndata::read_h5ad(par[["input_integrated"]]) |
| 17 | +solution <- anndata::read_h5ad(par[["input_solution"]]) |
| 18 | +embeddings <- adata$obsm[["X_emb"]] |
| 19 | +metadata <- solution$obs |
| 20 | + |
| 21 | +cat("Compute CiLISI metrics...\n") |
| 22 | +lisisplit <- |
| 23 | + scIntegrationMetrics::compute_lisi_splitBy( |
| 24 | + X = embeddings, |
| 25 | + meta_data = metadata, |
| 26 | + label_colnames = "batch", |
| 27 | + perplexity = 30, |
| 28 | + split_by_colname = "cell_type", |
| 29 | + normalize = TRUE, |
| 30 | + min.cells.split = 10, |
| 31 | + min.vars.label = 2 |
| 32 | +) |
| 33 | +# average CiLISI |
| 34 | +cilisi <- mean(unlist(lisisplit)) |
| 35 | +# Mean per cell type |
| 36 | +cilisi_means <- mean(sapply(lisisplit, function(x) mean(x[, 1]))) |
| 37 | + |
| 38 | +cat("Write output AnnData to file\n") |
| 39 | +output <- anndata::AnnData( |
| 40 | + shape = c(1,2), |
| 41 | + uns = list( |
| 42 | + dataset_id = adata$uns[["dataset_id"]], |
| 43 | + normalization_id = adata$uns[["normalization_id"]], |
| 44 | + method_id = adata$uns[["method_id"]], |
| 45 | + metric_ids = c("cilisi", "cilisi_means"), |
| 46 | + metric_values = list(cilisi, cilisi_means) |
| 47 | + ) |
| 48 | +) |
| 49 | +output$write_h5ad(par[["output"]], compression = "gzip") |
0 commit comments