1. load libraries
2. Load Seurat Object
load("AllSample_corrected_AzimuthAnnotated_L1.Robj")
merged_seurat_filtered <- All_samples_Merged
merged_seurat_filtered
An object of class Seurat
36724 features across 49193 samples within 5 assays
Active assay: RNA (36601 features, 0 variable features)
2 layers present: counts, data
4 other assays present: ADT, prediction.score.celltype.l1, prediction.score.celltype.l2, prediction.score.celltype.l3
2 dimensional reductions calculated: integrated_dr, ref.umap
3. Data PREPERATION
# # perform standard workflow steps to figure out if we see any batch effects --------
# merged_seurat_filtered <- NormalizeData(object = merged_seurat_filtered, verbose = FALSE)
# merged_seurat_filtered <- FindVariableFeatures(object = merged_seurat_filtered , selection.method = "vst", nfeatures = 2000,verbose = FALSE)
#
# merged_seurat_filtered <- ScaleData(object = merged_seurat_filtered)
#
#
# Variable_genes <- merged_seurat_filtered@assays$RNA@var.features
#
# Variables_genes_after_exclusion <- Variable_genes[!grepl("^HLA-|^Xist", Variable_genes)]
#
# merged_seurat_filtered <- RunPCA(merged_seurat_filtered,
# features = Variables_genes_after_exclusion,
# do.print = TRUE,
# pcs.print = 1:5,
# genes.print = 15)
ElbowPlot(merged_seurat_filtered)

# merged_seurat_filtered <- RunUMAP(object = merged_seurat_filtered, dims = 1:20)
# plot
before <- DimPlot(merged_seurat_filtered, reduction = "umap", group.by = "cell_line", label = TRUE, label.box = TRUE, repel = TRUE)
DimPlot(merged_seurat_filtered, reduction = "umap", group.by = "cell_line", label = TRUE, label.box = TRUE, repel = TRUE)

NA
NA
NA
4. Harmony-integration
# run Harmony -----------
# merged_seurat_filtered.harmony <- merged_seurat_filtered %>%
# RunHarmony(group.by.vars = 'orig.ident', plot_convergence = FALSE)
#
# merged_seurat_filtered.harmony@reductions
#
# merged_seurat_filtered.harmony.embed <- Embeddings(merged_seurat_filtered.harmony, "harmony")
merged_seurat_filtered.harmony.embed[1:10,1:10]
harmony_1 harmony_2 harmony_3 harmony_4 harmony_5 harmony_6 harmony_7 harmony_8
L1_AAACCTGAGGGCTTCC-1 -6.427262 8.254969 0.7715261 1.3011146 -1.9436480 1.0627125 0.6935481 -0.3321792
L1_AAACCTGGTGCAGGTA-1 -6.873649 9.065062 1.2588632 -0.6417722 -3.6111313 0.1986480 -1.7125518 -1.3283037
L1_AAACCTGGTTAAAGTG-1 -5.077434 7.937975 1.9739861 -3.4979441 0.4035189 0.1413428 0.6675758 0.3393447
L1_AAACCTGTCAGGTAAA-1 -5.625381 8.585351 -0.2443243 -1.1042725 0.5691545 0.1484833 1.4564738 0.9102239
L1_AAACCTGTCCCTGACT-1 -5.430924 6.315944 -0.1937682 2.4432789 0.0980270 1.7624673 2.5231999 0.0290877
L1_AAACCTGTCCTTCAAT-1 -5.183905 7.760936 0.8473519 -1.8797225 -0.3723902 0.7151263 0.3032509 0.3750337
L1_AAACCTGTCTTGCAAG-1 -6.166992 8.118478 1.7496105 -1.8267948 -1.2020396 0.4086726 -0.1776375 -0.3375075
L1_AAACGGGAGGCTAGAC-1 -5.334131 7.449693 0.4832964 -0.2057412 0.6959762 0.9464938 2.0398931 -0.1466619
L1_AAACGGGAGGGTATCG-1 -3.965787 8.008437 1.7013528 -3.2969653 -0.1033832 0.5942966 0.1964398 0.1416826
L1_AAACGGGAGGGTTCCC-1 -3.599167 4.826824 -1.3444358 3.8005011 1.3107254 0.1699336 2.5707134 0.7357237
harmony_9 harmony_10
L1_AAACCTGAGGGCTTCC-1 0.30567983 -1.459491708
L1_AAACCTGGTGCAGGTA-1 0.16344334 -3.122505580
L1_AAACCTGGTTAAAGTG-1 0.62933951 1.222807346
L1_AAACCTGTCAGGTAAA-1 1.21593701 -0.005167528
L1_AAACCTGTCCCTGACT-1 0.01445315 -0.797898497
L1_AAACCTGTCCTTCAAT-1 0.46542327 -0.611959137
L1_AAACCTGTCTTGCAAG-1 -0.78707360 0.894576523
L1_AAACGGGAGGCTAGAC-1 0.41925378 0.026021925
L1_AAACGGGAGGGTATCG-1 -0.42878922 5.479253362
L1_AAACGGGAGGGTTCCC-1 0.99484956 -1.548533529
# Do UMAP and clustering using ** Harmony embeddings instead of PCA **
# merged_seurat_filtered.harmony <- merged_seurat_filtered.harmony %>%
# RunUMAP(reduction = 'harmony', dims = 1:20) %>%
# FindNeighbors(reduction = "harmony", dims = 1:20) %>%
# FindClusters(resolution = 0.5)
# visualize
after <- DimPlot(merged_seurat_filtered.harmony, reduction = "umap", group.by = "cell_line", label = TRUE, label.box = TRUE, repel = TRUE)
before|after

DimPlot(merged_seurat_filtered.harmony,reduction = "umap", group.by = "RNA_snn_res.0.5", label = TRUE, label.box = TRUE, repel = TRUE)

DimPlot(merged_seurat_filtered.harmony, reduction = "umap", group.by = "predicted.celltype.l2", label = TRUE, label.box = TRUE, repel = TRUE)

FeaturePlot
myfeatures <- c("CD3E", "CD4", "CD8A", "NKG7", "GNLY", "MS4A1", "CD14", "LYZ", "MS4A7", "FCGR3A", "CST3", "FCER1A")
FeaturePlot(merged_seurat_filtered.harmony, reduction = "umap", dims = 1:2, features = myfeatures, ncol = 4, order = T) + NoLegend() + NoAxes() + NoGrid()

6. Save the Seurat object as an Robj file
# save(seurat.integrated, file = "seurat.integrated_K_code_Harmony.Robj")
LS0tCnRpdGxlOiAiSW50ZWdyYXRpb24gYnkgSGFybW9ueV9ieV9LIgphdXRob3I6IE5hc2lyIE1haG1vb2QgQWJiYXNpCmRhdGU6ICIyMDI0LTA1LTEwIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogdHJ1ZQogICAgdGhlbWU6IGRhcmtseQotLS0KIyAxLiBsb2FkIGxpYnJhcmllcwpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoU2V1cmF0T2JqZWN0KQpsaWJyYXJ5KFNldXJhdERhdGEpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KGhhcm1vbnkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShyZXRpY3VsYXRlKQpsaWJyYXJ5KEF6aW11dGgpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoUnRzbmUpCmxpYnJhcnkoaGFybW9ueSkKbGlicmFyeShncmlkRXh0cmEpCmBgYAoKIyAyLiBMb2FkIFNldXJhdCBPYmplY3QgCmBgYHtyIGxvYWRfc2V1cmF0fQoKICMgbG9hZCgiQWxsU2FtcGxlX2NvcnJlY3RlZF9BemltdXRoQW5ub3RhdGVkX0wxLlJvYmoiKQogIyAKICMgbWVyZ2VkX3NldXJhdF9maWx0ZXJlZCA8LSBBbGxfc2FtcGxlc19NZXJnZWQKCm1lcmdlZF9zZXVyYXRfZmlsdGVyZWQKCmBgYAoKCiMgMy4gRGF0YSBQUkVQRVJBVElPTgpgYGB7ciBkYXRhLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xMH0KCiMgIyBwZXJmb3JtIHN0YW5kYXJkIHdvcmtmbG93IHN0ZXBzIHRvIGZpZ3VyZSBvdXQgaWYgd2Ugc2VlIGFueSBiYXRjaCBlZmZlY3RzIC0tLS0tLS0tCiMgbWVyZ2VkX3NldXJhdF9maWx0ZXJlZCA8LSBOb3JtYWxpemVEYXRhKG9iamVjdCA9IG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQsIHZlcmJvc2UgPSBGQUxTRSkKIyBtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkIDwtIEZpbmRWYXJpYWJsZUZlYXR1cmVzKG9iamVjdCA9IG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQgLCBzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDIwMDAsdmVyYm9zZSA9IEZBTFNFKQojIAojIG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQgPC0gU2NhbGVEYXRhKG9iamVjdCA9IG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQpCiMgCiMgCiMgVmFyaWFibGVfZ2VuZXMgPC0gbWVyZ2VkX3NldXJhdF9maWx0ZXJlZEBhc3NheXMkUk5BQHZhci5mZWF0dXJlcwojIAojIFZhcmlhYmxlc19nZW5lc19hZnRlcl9leGNsdXNpb24gPC0gVmFyaWFibGVfZ2VuZXNbIWdyZXBsKCJeSExBLXxeWGlzdCIsIFZhcmlhYmxlX2dlbmVzKV0KIyAKIyBtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkIDwtIFJ1blBDQShtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkLAojICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyA9IFZhcmlhYmxlc19nZW5lc19hZnRlcl9leGNsdXNpb24sCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGRvLnByaW50ID0gVFJVRSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgcGNzLnByaW50ID0gMTo1LAojICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcy5wcmludCA9IDE1KQoKRWxib3dQbG90KG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQpCgoKIyBtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkIDwtIFJ1blVNQVAob2JqZWN0ID0gbWVyZ2VkX3NldXJhdF9maWx0ZXJlZCwgZGltcyA9IDE6MjApCgoKIyBwbG90CmJlZm9yZSA8LSBEaW1QbG90KG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAiY2VsbF9saW5lIiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5ib3ggPSBUUlVFLCByZXBlbCA9IFRSVUUpCgoKCkRpbVBsb3QobWVyZ2VkX3NldXJhdF9maWx0ZXJlZCwgcmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICJjZWxsX2xpbmUiLCBsYWJlbCA9IFRSVUUsIGxhYmVsLmJveCA9IFRSVUUsIHJlcGVsID0gVFJVRSkKCgoKYGBgCgoKIyA0LiBIYXJtb255LWludGVncmF0aW9uCmBgYHtyIGludGVncmF0aW9uLWhhcm1vbnksIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTEwfQoKIyBydW4gSGFybW9ueSAtLS0tLS0tLS0tLQojIG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQuaGFybW9ueSA8LSBtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkICU+JQojICAgUnVuSGFybW9ueShncm91cC5ieS52YXJzID0gJ29yaWcuaWRlbnQnLCBwbG90X2NvbnZlcmdlbmNlID0gRkFMU0UpCiMgCiMgbWVyZ2VkX3NldXJhdF9maWx0ZXJlZC5oYXJtb255QHJlZHVjdGlvbnMKIyAKIyBtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkLmhhcm1vbnkuZW1iZWQgPC0gRW1iZWRkaW5ncyhtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkLmhhcm1vbnksICJoYXJtb255IikKbWVyZ2VkX3NldXJhdF9maWx0ZXJlZC5oYXJtb255LmVtYmVkWzE6MTAsMToxMF0KCgoKIyBEbyBVTUFQIGFuZCBjbHVzdGVyaW5nIHVzaW5nICoqIEhhcm1vbnkgZW1iZWRkaW5ncyBpbnN0ZWFkIG9mIFBDQSAqKgojIG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQuaGFybW9ueSA8LSBtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkLmhhcm1vbnkgJT4lCiMgICBSdW5VTUFQKHJlZHVjdGlvbiA9ICdoYXJtb255JywgZGltcyA9IDE6MjApICU+JQojICAgRmluZE5laWdoYm9ycyhyZWR1Y3Rpb24gPSAiaGFybW9ueSIsIGRpbXMgPSAxOjIwKSAlPiUKIyAgIEZpbmRDbHVzdGVycyhyZXNvbHV0aW9uID0gMC41KQoKIyB2aXN1YWxpemUgCgoKYWZ0ZXIgPC0gRGltUGxvdChtZXJnZWRfc2V1cmF0X2ZpbHRlcmVkLmhhcm1vbnksIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAiY2VsbF9saW5lIiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5ib3ggPSBUUlVFLCByZXBlbCA9IFRSVUUpCgpiZWZvcmV8YWZ0ZXIKCkRpbVBsb3QobWVyZ2VkX3NldXJhdF9maWx0ZXJlZC5oYXJtb255LHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAiUk5BX3Nubl9yZXMuMC41IiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5ib3ggPSBUUlVFLCByZXBlbCA9IFRSVUUpCgpEaW1QbG90KG1lcmdlZF9zZXVyYXRfZmlsdGVyZWQuaGFybW9ueSwgcmVkdWN0aW9uID0gInVtYXAiLCBncm91cC5ieSA9ICJwcmVkaWN0ZWQuY2VsbHR5cGUubDIiLCBsYWJlbCA9IFRSVUUsIGxhYmVsLmJveCA9IFRSVUUsIHJlcGVsID0gVFJVRSkKCmBgYAoKCiMgRmVhdHVyZVBsb3QKYGBge3IgZmVhdHVyZXBsb3QtaGFybW9ueSwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CgoKbXlmZWF0dXJlcyA8LSBjKCJDRDNFIiwgIkNENCIsICJDRDhBIiwgIk5LRzciLCAiR05MWSIsICJNUzRBMSIsICJDRDE0IiwgIkxZWiIsICJNUzRBNyIsICJGQ0dSM0EiLCAiQ1NUMyIsICJGQ0VSMUEiKQoKRmVhdHVyZVBsb3QobWVyZ2VkX3NldXJhdF9maWx0ZXJlZC5oYXJtb255LCByZWR1Y3Rpb24gPSAidW1hcCIsIGRpbXMgPSAxOjIsIGZlYXR1cmVzID0gbXlmZWF0dXJlcywgbmNvbCA9IDQsIG9yZGVyID0gVCkgKyBOb0xlZ2VuZCgpICsgTm9BeGVzKCkgKyBOb0dyaWQoKQoKYGBgCgoKIyA2LiBTYXZlIHRoZSBTZXVyYXQgb2JqZWN0IGFzIGFuIFJvYmogZmlsZQpgYGB7ciBzYXZlUk9CSn0KCiMgc2F2ZShzZXVyYXQuaW50ZWdyYXRlZCwgZmlsZSA9ICJzZXVyYXQuaW50ZWdyYXRlZF9LX2NvZGVfSGFybW9ueS5Sb2JqIikKCgpgYGAKCgoKCg==