1. load libraries

2. Load Seurat Object


load("AllSample_corrected_AzimuthAnnotated_L1.Robj")

All_samples_Merged

3. Data PREPERATION


alldata <- All_samples_Merged

alldata.list <- SplitObject(alldata, split.by = "orig.ident")

for (i in 1:length(alldata.list)) {
    alldata.list[[i]] <- NormalizeData(alldata.list[[i]], verbose = FALSE)
    alldata.list[[i]] <- FindVariableFeatures(alldata.list[[i]], selection.method = "vst", nfeatures = 2000,verbose = FALSE)
}

# get the variable genes from all the datasets.
hvgs_per_dataset <- lapply(alldata.list, function(x) { x@assays$RNA@var.features })

# also add in the variable genes that was selected on the whole dataset
hvgs_per_dataset$all = VariableFeatures(alldata)

temp <- unique(unlist(hvgs_per_dataset))
overlap <- sapply( hvgs_per_dataset , function(x) { temp %in% x } )
pheatmap::pheatmap(t(overlap*1),cluster_rows = F ,
                   color = c("grey90","grey20"))

hvgs_all = SelectIntegrationFeatures(alldata.list)
hvgs_per_dataset$all_ranks = hvgs_all

temp <- unique(unlist(hvgs_per_dataset))
overlap <- sapply( hvgs_per_dataset , function(x) { temp %in% x } )
pheatmap::pheatmap(t(overlap*1),cluster_rows = F ,
                   color = c("grey90","grey20"))


alldata.list <- lapply(X = alldata.list, FUN = function(x) {
    x <- ScaleData(x, features = hvgs_all, verbose = FALSE)
    x <- RunPCA(x, features = hvgs_all, verbose = FALSE)
})

4. rpca-integration

5. Harmony-integration

FeaturePlot



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


FeaturePlot(alldata.int, reduction = "umap_rpca", dims = 1:2, features = myfeatures, ncol = 4, order = T) + NoLegend() + NoAxes() + NoGrid()

6. Save the Seurat object as an Robj file


save(alldata.int, file = "Integrated_by_rpca_Harmony.Robj")
LS0tCnRpdGxlOiAiSW50ZWdyYXRpb24gYnkgcnBjYS1IYXJtb255IgphdXRob3I6IE5hc2lyIE1haG1vb2QgQWJiYXNpCmRhdGU6ICIyMDI0LTA0LTAzIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogdHJ1ZQogICAgdGhlbWU6IGRhcmtseQotLS0KIyAxLiBsb2FkIGxpYnJhcmllcwpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoU2V1cmF0T2JqZWN0KQpsaWJyYXJ5KFNldXJhdERhdGEpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KGhhcm1vbnkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShyZXRpY3VsYXRlKQpsaWJyYXJ5KEF6aW11dGgpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoUnRzbmUpCmxpYnJhcnkoaGFybW9ueSkKCmBgYAoKIyAyLiBMb2FkIFNldXJhdCBPYmplY3QgCmBgYHtyIGxvYWRfc2V1cmF0fQoKbG9hZCgiQWxsU2FtcGxlX2NvcnJlY3RlZF9BemltdXRoQW5ub3RhdGVkX0wxLlJvYmoiKQoKQWxsX3NhbXBsZXNfTWVyZ2VkCgpgYGAKCgojIDMuIERhdGEgUFJFUEVSQVRJT04KYGBge3IgZGF0YSwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CgphbGxkYXRhIDwtIEFsbF9zYW1wbGVzX01lcmdlZAoKYWxsZGF0YS5saXN0IDwtIFNwbGl0T2JqZWN0KGFsbGRhdGEsIHNwbGl0LmJ5ID0gIm9yaWcuaWRlbnQiKQoKZm9yIChpIGluIDE6bGVuZ3RoKGFsbGRhdGEubGlzdCkpIHsKICAgIGFsbGRhdGEubGlzdFtbaV1dIDwtIE5vcm1hbGl6ZURhdGEoYWxsZGF0YS5saXN0W1tpXV0sIHZlcmJvc2UgPSBGQUxTRSkKICAgIGFsbGRhdGEubGlzdFtbaV1dIDwtIEZpbmRWYXJpYWJsZUZlYXR1cmVzKGFsbGRhdGEubGlzdFtbaV1dLCBzZWxlY3Rpb24ubWV0aG9kID0gInZzdCIsIG5mZWF0dXJlcyA9IDIwMDAsdmVyYm9zZSA9IEZBTFNFKQp9CgojIGdldCB0aGUgdmFyaWFibGUgZ2VuZXMgZnJvbSBhbGwgdGhlIGRhdGFzZXRzLgpodmdzX3Blcl9kYXRhc2V0IDwtIGxhcHBseShhbGxkYXRhLmxpc3QsIGZ1bmN0aW9uKHgpIHsgeEBhc3NheXMkUk5BQHZhci5mZWF0dXJlcyB9KQoKIyBhbHNvIGFkZCBpbiB0aGUgdmFyaWFibGUgZ2VuZXMgdGhhdCB3YXMgc2VsZWN0ZWQgb24gdGhlIHdob2xlIGRhdGFzZXQKaHZnc19wZXJfZGF0YXNldCRhbGwgPSBWYXJpYWJsZUZlYXR1cmVzKGFsbGRhdGEpCgp0ZW1wIDwtIHVuaXF1ZSh1bmxpc3QoaHZnc19wZXJfZGF0YXNldCkpCm92ZXJsYXAgPC0gc2FwcGx5KCBodmdzX3Blcl9kYXRhc2V0ICwgZnVuY3Rpb24oeCkgeyB0ZW1wICVpbiUgeCB9ICkKcGhlYXRtYXA6OnBoZWF0bWFwKHQob3ZlcmxhcCoxKSxjbHVzdGVyX3Jvd3MgPSBGICwKICAgICAgICAgICAgICAgICAgIGNvbG9yID0gYygiZ3JleTkwIiwiZ3JleTIwIikpCgpodmdzX2FsbCA9IFNlbGVjdEludGVncmF0aW9uRmVhdHVyZXMoYWxsZGF0YS5saXN0KQpodmdzX3Blcl9kYXRhc2V0JGFsbF9yYW5rcyA9IGh2Z3NfYWxsCgp0ZW1wIDwtIHVuaXF1ZSh1bmxpc3QoaHZnc19wZXJfZGF0YXNldCkpCm92ZXJsYXAgPC0gc2FwcGx5KCBodmdzX3Blcl9kYXRhc2V0ICwgZnVuY3Rpb24oeCkgeyB0ZW1wICVpbiUgeCB9ICkKcGhlYXRtYXA6OnBoZWF0bWFwKHQob3ZlcmxhcCoxKSxjbHVzdGVyX3Jvd3MgPSBGICwKICAgICAgICAgICAgICAgICAgIGNvbG9yID0gYygiZ3JleTkwIiwiZ3JleTIwIikpCgoKYWxsZGF0YS5saXN0IDwtIGxhcHBseShYID0gYWxsZGF0YS5saXN0LCBGVU4gPSBmdW5jdGlvbih4KSB7CiAgICB4IDwtIFNjYWxlRGF0YSh4LCBmZWF0dXJlcyA9IGh2Z3NfYWxsLCB2ZXJib3NlID0gRkFMU0UpCiAgICB4IDwtIFJ1blBDQSh4LCBmZWF0dXJlcyA9IGh2Z3NfYWxsLCB2ZXJib3NlID0gRkFMU0UpCn0pCmBgYAoKCiMgNC4gcnBjYS1pbnRlZ3JhdGlvbgpgYGB7ciBpbnRlZ3JhdGlvbi1ycGNhLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xMH0KIyBFeGNsdWRlIGdlbmVzIHN0YXJ0aW5nIHdpdGggIkhMQS0iIG9yICJYaXN0IgpodmdzX2FsbF9maW5hbCA8LSBodmdzX2FsbFshZ3JlcGwoIl5ITEEtfF5YaXN0IiwgaHZnc19hbGwpXQoKYWxsZGF0YS5hbmNob3JzIDwtIEZpbmRJbnRlZ3JhdGlvbkFuY2hvcnMob2JqZWN0Lmxpc3QgPSBhbGxkYXRhLmxpc3QsIGRpbXMgPSAxOjEyLCByZWR1Y3Rpb24gPSAicnBjYSIsIGFuY2hvci5mZWF0dXJlcyA9IGh2Z3NfYWxsX2ZpbmFsKQoKYWxsZGF0YS5pbnQgPC0gSW50ZWdyYXRlRGF0YShhbmNob3JzZXQgPSBhbGxkYXRhLmFuY2hvcnMsIGRpbXMgPSAxOjEyLCBuZXcuYXNzYXkubmFtZSA9ICJycGNhIikKCm5hbWVzKGFsbGRhdGEuaW50QGFzc2F5cykKCmFsbGRhdGEuaW50QGFjdGl2ZS5hc3NheQoKRGVmYXVsdEFzc2F5KGFsbGRhdGEuaW50KSA8LSAicnBjYSIKCiNSdW4gRGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG9uIGludGVncmF0ZWQgc3BhY2UKYWxsZGF0YS5pbnQgPC0gU2NhbGVEYXRhKGFsbGRhdGEuaW50LCB2ZXJib3NlID0gRkFMU0UpCmFsbGRhdGEuaW50IDwtIFJ1blBDQShhbGxkYXRhLmludCwgZmVhdHVyZXMgPSBodmdzX2FsbCwgcmVkdWN0aW9uLm5hbWUgPSAicGNhX3JwY2EiLCBkby5wcmludCA9IFRSVUUsIHBjcy5wcmludCA9IDE6NSwgZ2VuZXMucHJpbnQgPSAxNSwgdmVyYm9zZSA9IEZBTFNFKQphbGxkYXRhLmludCA8LSBSdW5VTUFQKGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAicGNhX3JwY2EiLCByZWR1Y3Rpb24ubmFtZSA9ICJ1bWFwX3JwY2EiLCBkaW1zID0gMToxMiwgdmVyYm9zZSA9IEZBTFNFKQphbGxkYXRhLmludCA8LSBSdW5UU05FKGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAicGNhX3JwY2EiLCByZWR1Y3Rpb24ubmFtZSA9ICJ0c25lX3JwY2EiLCBkaW1zID0gMToxMiwgdmVyYm9zZSA9IEZBTFNFKQphbGxkYXRhLmludCA8LSBGaW5kTmVpZ2hib3JzKGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAicGNhX3JwY2EiLCBkaW1zID0gMToxMiwgdmVyYm9zZSA9IEZBTFNFKQphbGxkYXRhLmludCA8LSBGaW5kQ2x1c3RlcnMoYWxsZGF0YS5pbnQsIHJlc29sdXRpb24gPSAxLjIsIHZlcmJvc2UgPSBGQUxTRSkKCgoKd3JhcF9wbG90cygKCiAgICAKICAgIERpbVBsb3QoYWxsZGF0YS5pbnQsIHJlZHVjdGlvbiA9ICJ1bWFwX3JwY2EiLCBncm91cC5ieSA9ICJvcmlnLmlkZW50IikrTm9BeGVzKCkrZ2d0aXRsZSgiVU1BUCBpbnRlZ3JhdGVkIiksCiAgICBEaW1QbG90KGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAidW1hcF9ycGNhIiwgZ3JvdXAuYnkgPSAib3JpZy5pZGVudCIsIGxhYmVsID0gVFJVRSwgbGFiZWwuYm94ID0gVFJVRSwgcmVwZWwgPSBUUlVFKStOb0F4ZXMoKStnZ3RpdGxlKCJVTUFQIGludGVncmF0ZWQiKSwKICAgIAogICAgRGltUGxvdChhbGxkYXRhLmludCwgcmVkdWN0aW9uID0gInVtYXBfcnBjYSIsIGdyb3VwLmJ5ID0gInJwY2Ffc25uX3Jlcy4xLjIiKStOb0F4ZXMoKStnZ3RpdGxlKCJVTUFQIGludGVncmF0ZWQiKSwKICAgIERpbVBsb3QoYWxsZGF0YS5pbnQsIHJlZHVjdGlvbiA9ICJ1bWFwX3JwY2EiLCBncm91cC5ieSA9ICJycGNhX3Nubl9yZXMuMS4yIiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5ib3ggPSBUUlVFLCByZXBlbCA9IFRSVUUpK2dndGl0bGUoIlVNQVAgaW50ZWdyYXRlZCIpLAogICAgCiAgICBEaW1QbG90KGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAidW1hcF9ycGNhIiwgZ3JvdXAuYnkgPSAicHJlZGljdGVkLmNlbGx0eXBlLmwyIikrZ2d0aXRsZSgiVU1BUCBpbnRlZ3JhdGVkIiksCiAgICBEaW1QbG90KGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAidW1hcF9ycGNhIiwgZ3JvdXAuYnkgPSAicHJlZGljdGVkLmNlbGx0eXBlLmwyIiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5ib3ggPSBUUlVFLCByZXBlbCA9IFRSVUUpK2dndGl0bGUoIlVNQVAgaW50ZWdyYXRlZCIpLAogICAgCiAgICBuY29sID0gMikgKyBwbG90X2xheW91dChndWlkZXMgPSAiY29sbGVjdCIpCgpgYGAKCgoKCgoKCgoKCiAgICAKCgojIDUuIEhhcm1vbnktaW50ZWdyYXRpb24KYGBge3IgSGFybW9ueV9pbnRlZ3JhdGlvbiwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CgphbGxkYXRhLmludEBhY3RpdmUuYXNzYXkgPSAiUk5BIgoKVmFyaWFibGVGZWF0dXJlcyhhbGxkYXRhLmludCkgPSBodmdzX2FsbF9maW5hbAphbGxkYXRhLmludCA9IFNjYWxlRGF0YShhbGxkYXRhLmludCwgdmVyYm9zZSA9IFRSVUUpCmFsbGRhdGEuaW50ID0gUnVuUENBKGFsbGRhdGEuaW50LCByZWR1Y3Rpb24ubmFtZSA9ICJwY2FfaGFybW9ueSIpCgoKYWxsZGF0YS5pbnQgPC0gUnVuSGFybW9ueSgKICBhbGxkYXRhLmludCwKICBncm91cC5ieS52YXJzID0gIm9yaWcuaWRlbnQiLAogIHJlZHVjdGlvbi51c2UgPSAicGNhX2hhcm1vbnkiLAogIGRpbXMudXNlID0gMToxMiwKICBhc3NheS51c2UgPSAiUk5BIikKCgphbGxkYXRhLmludCA8LSBSdW5VTUFQKGFsbGRhdGEuaW50LCBkaW1zID0gMToxMiwgcmVkdWN0aW9uID0gImhhcm1vbnkiLCByZWR1Y3Rpb24ubmFtZSA9ICJ1bWFwX2hhcm1vbnkiKQphbGxkYXRhLmludCA8LSBSdW5UU05FKGFsbGRhdGEuaW50LCBkaW1zID0gMToxMiwgcmVkdWN0aW9uID0gImhhcm1vbnkiLCByZWR1Y3Rpb24ubmFtZSA9ICJ0c25lX2hhcm1vbnkiKQphbGxkYXRhLmludCA8LSBGaW5kTmVpZ2hib3JzKGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAicGNhX2hhcm1vbnkiLCBkaW1zID0gMToxMiwgdmVyYm9zZSA9IEZBTFNFKQphbGxkYXRhLmludCA8LSBGaW5kQ2x1c3RlcnMoYWxsZGF0YS5pbnQsIHJlc29sdXRpb24gPSAxLjIsIHZlcmJvc2UgPSBGQUxTRSkKCgogCiAKIHdyYXBfcGxvdHMoCgogICAgCiAgICBEaW1QbG90KGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAidW1hcF9oYXJtb255IiwgZ3JvdXAuYnkgPSAib3JpZy5pZGVudCIpK05vQXhlcygpK2dndGl0bGUoIlVNQVAgaW50ZWdyYXRlZCIpLAogICAgRGltUGxvdChhbGxkYXRhLmludCwgcmVkdWN0aW9uID0gInVtYXBfaGFybW9ueSIsIGdyb3VwLmJ5ID0gIm9yaWcuaWRlbnQiLCBsYWJlbCA9IFRSVUUsIGxhYmVsLmJveCA9IFRSVUUsIHJlcGVsID0gVFJVRSkrTm9BeGVzKCkrZ2d0aXRsZSgiVU1BUCBpbnRlZ3JhdGVkIiksCiAgICAKICAgIERpbVBsb3QoYWxsZGF0YS5pbnQsIHJlZHVjdGlvbiA9ICJ1bWFwX2hhcm1vbnkiLCBncm91cC5ieSA9ICJSTkFfc25uX3Jlcy4xLjIiKStOb0F4ZXMoKStnZ3RpdGxlKCJVTUFQIGludGVncmF0ZWQiKSwKICAgIERpbVBsb3QoYWxsZGF0YS5pbnQsIHJlZHVjdGlvbiA9ICJ1bWFwX2hhcm1vbnkiLCBncm91cC5ieSA9ICJSTkFfc25uX3Jlcy4xLjIiLCBsYWJlbCA9IFRSVUUsIGxhYmVsLmJveCA9IFRSVUUsIHJlcGVsID0gVFJVRSkrTm9BeGVzKCkrZ2d0aXRsZSgiVU1BUCBpbnRlZ3JhdGVkIiksCiAgICAKICAgIERpbVBsb3QoYWxsZGF0YS5pbnQsIHJlZHVjdGlvbiA9ICJ1bWFwX2hhcm1vbnkiLCBncm91cC5ieSA9ICJwcmVkaWN0ZWQuY2VsbHR5cGUubDIiKStOb0F4ZXMoKStnZ3RpdGxlKCJVTUFQIGludGVncmF0ZWQiKSwKICAgICBEaW1QbG90KGFsbGRhdGEuaW50LCByZWR1Y3Rpb24gPSAidW1hcF9oYXJtb255IiwgZ3JvdXAuYnkgPSAicHJlZGljdGVkLmNlbGx0eXBlLmwyIiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5ib3ggPSBUUlVFLCByZXBlbCA9IFRSVUUpK05vQXhlcygpK2dndGl0bGUoIlVNQVAgaW50ZWdyYXRlZCIpLAogICAgbmNvbCA9IDIpICsgcGxvdF9sYXlvdXQoZ3VpZGVzID0gImNvbGxlY3QiKQoKCgpgYGAKCiMgRmVhdHVyZVBsb3QKYGBge3IgZmVhdHVyZXBsb3QtaGFybW9ueSwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CgoKbXlmZWF0dXJlcyA8LSBjKCJDRDNFIiwgIkNENCIsICJDRDhBIiwgIk5LRzciLCAiR05MWSIsICJNUzRBMSIsICJDRDE0IiwgIkxZWiIsICJNUzRBNyIsICJGQ0dSM0EiLCAiQ1NUMyIsICJGQ0VSMUEiKQpGZWF0dXJlUGxvdChhbGxkYXRhLmludCwgcmVkdWN0aW9uID0gInVtYXBfaGFybW9ueSIsIGRpbXMgPSAxOjIsIGZlYXR1cmVzID0gbXlmZWF0dXJlcywgbmNvbCA9IDQsIG9yZGVyID0gVCkgKyBOb0xlZ2VuZCgpICsgTm9BeGVzKCkgKyBOb0dyaWQoKQoKRmVhdHVyZVBsb3QoYWxsZGF0YS5pbnQsIHJlZHVjdGlvbiA9ICJ1bWFwX3JwY2EiLCBkaW1zID0gMToyLCBmZWF0dXJlcyA9IG15ZmVhdHVyZXMsIG5jb2wgPSA0LCBvcmRlciA9IFQpICsgTm9MZWdlbmQoKSArIE5vQXhlcygpICsgTm9HcmlkKCkKYGBgCgoKIyA2LiBTYXZlIHRoZSBTZXVyYXQgb2JqZWN0IGFzIGFuIFJvYmogZmlsZQpgYGB7ciBzYXZlUk9CSn0KCnNhdmUoYWxsZGF0YS5pbnQsIGZpbGUgPSAiSW50ZWdyYXRlZF9ieV9ycGNhX0hhcm1vbnkuUm9iaiIpCgoKYGBgCgoKCgo=