1. load libraries
2. Load Seurat Object
#Load Seurat Object merged from cell lines and a control(PBMC) after filtration
SS_All_samples_Merged <- load("SS_All_Sample_Merged_Azimuth_ProjectTils_singleR_ANNOTATION_on_My_UMAP0.7_HPC.Robj")
All_samples_Merged
An object of class Seurat
63193 features across 49193 samples within 6 assays
Active assay: SCT (26469 features, 3000 variable features)
3 layers present: counts, data, scale.data
5 other assays present: RNA, ADT, prediction.score.celltype.l1, prediction.score.celltype.l2, prediction.score.celltype.l3
4 dimensional reductions calculated: pca, umap, integrated_dr, ref.umap
3. QC
Idents(All_samples_Merged) <- "cell_line"
VlnPlot(All_samples_Merged, features = c("nFeature_RNA",
"nCount_RNA",
"percent.mito"),
ncol = 3)

FeatureScatter(All_samples_Merged,
feature1 = "nCount_RNA",
feature2 = "nFeature_RNA") +
geom_smooth(method = 'lm')

##FeatureScatter is typically used to visualize feature-feature
relationships ##for anything calculated by the object, ##i.e. columns in
object metadata, PC scores etc.
FeatureScatter(All_samples_Merged,
feature1 = "nCount_RNA",
feature2 = "percent.mito")+
geom_smooth(method = 'lm')

FeatureScatter(All_samples_Merged,
feature1 = "nCount_RNA",
feature2 = "nFeature_RNA")+
geom_smooth(method = 'lm')

5. Harmony TEST
P1 <- DimPlot(object = All_samples_Merged, group.by = "cell_line") +
labs(title = 'Colored by cellline')
P1

P2 <- DimPlot(object = All_samples_Merged, group.by = "predicted.celltype.l2") +
labs(title = 'Colored by celltype')
P2

P3 <- DimPlot(object = All_samples_Merged, group.by = "cell_line", reduction = "pca") +
labs(title = 'Colored by cellline')
P3

P4 <- DimPlot(object = All_samples_Merged, group.by = "predicted.celltype.l2", reduction = "pca") +
labs(title = 'Colored by celltype')
P4

cowplot::plot_grid(P1, P2, P3, P4, nrow = 2)

6. Apply Harmony
All_samples_Merged_integrated_embed[1:10,1:10]
harmony_1 harmony_2 harmony_3 harmony_4 harmony_5 harmony_6 harmony_7 harmony_8 harmony_9 harmony_10
L3_B_AAACCTGAGGGATACC-1 -3.9095998 13.78526 -4.940704 3.4989230 2.9649714 -13.216809 3.3915887 -2.297467 8.096964 0.34628277
L3_B_AAACCTGCACATAACC-1 -1.3611464 21.34146 -17.044432 5.9969237 -2.9998383 3.949790 -5.6249972 -1.898653 3.561800 6.84990233
L3_B_AAACCTGCATCATCCC-1 -3.5550039 23.78250 -15.272387 4.8177437 -1.0650071 4.664416 -10.8897892 -4.944097 3.308021 7.16126840
L3_B_AAACCTGCATCCAACA-1 1.3002780 24.19582 -15.231390 2.8545064 -1.1484979 7.368370 -5.9550965 -2.142644 4.005343 1.78313977
L3_B_AAACCTGCATTCACTT-1 -0.6022814 21.95116 -12.323902 4.0463080 0.5432117 4.035378 -9.1942187 -3.512917 2.885230 3.07000318
L3_B_AAACCTGGTTCCATGA-1 1.1153356 22.02548 -15.093286 2.6848739 -1.6559538 4.798130 -4.1466364 -1.199545 3.149105 2.03709964
L3_B_AAACCTGTCAATACCG-1 -2.7448097 22.04932 -14.532976 7.4362953 0.5027631 2.688179 -5.3077889 -1.784279 8.101161 7.56392449
L3_B_AAACCTGTCACGACTA-1 1.6666778 28.62823 -20.204502 5.2013266 1.9786183 2.723314 -11.6712529 -3.229143 3.335289 0.07957117
L3_B_AAACCTGTCGTATCAG-1 1.4759493 26.66196 -16.969509 3.3140030 -0.8816951 4.965293 -4.7040881 -1.791957 1.530372 2.00108530
L3_B_AAACCTGTCGTGACAT-1 1.0025095 15.91482 -5.394434 0.1306539 -1.4207220 -0.490923 0.5903668 -1.469661 1.656719 1.74736733


#Visualize
Before1 <- DimPlot(object = All_samples_Merged, group.by = "cell_line", label = T, label.box = T, repel = T, reduction = "umap")
After1 <- DimPlot(object = All_samples_Merged_integrated, group.by = "cell_line", label = T, label.box = T, repel = T, reduction = "umap")
Before2 <- DimPlot(object = All_samples_Merged_integrated, group.by = "seurat_clusters", label = T, label.box = T, repel = T, reduction = "umap")
After2 <-DimPlot(object = All_samples_Merged_integrated, group.by = "seurat_clusters", label = T, label.box = T, repel = T, reduction = "umap")
Before1 | After1
Before2 | After2
DimPlot(object = All_samples_Merged_integrated, group.by = "predicted.celltype.l2", label = T, label.box = T, repel = T, reduction = "umap")

DimPlot(object = All_samples_Merged_integrated, group.by = "predicted.celltype.l2", label = T, label.box = T, repel = T, reduction = "harmony")

DimPlot(object = All_samples_Merged_integrated, group.by = "predicted.celltype.l2", label = T, label.box = T, repel = T, reduction = "integrated_dr")

DimPlot(object = All_samples_Merged_integrated, group.by = "predicted.celltype.l2", label = T, label.box = T, repel = T, reduction = "pca")

DimPlot(object = All_samples_Merged_integrated, group.by = "predicted.celltype.l2", label = T, label.box = T, repel = T, reduction = "ref.umap")

NA
NA
7. Cell Distribution
cell_distribution_table <- table(All_samples_Merged_integrated$cell_line, All_samples_Merged_integrated$seurat_clusters)
cell_distribution_df <- as.data.frame.matrix(cell_distribution_table)
print(cell_distribution_df)
write.csv(cell_distribution_df, file = "15-2-integration_table_HARMONY-TEST3.csv", row.names = TRUE)
Save the Seurat object as an Robj file———————————————————————-
# save
#save(All_samples_Merged_integrated,file = "15-2_All_samples_Merged_integrated.Robj")
```
LS0tCnRpdGxlOiAiaGFybW9ueSBpbnRlZ3JhdGlvbiBvbiBTQ1QiCmF1dGhvcjogTmFzaXIgTWFobW9vZCBBYmJhc2kKZGF0ZTogIjIwMjQtMDUtMDgiCm91dHB1dDoKICBodG1sX25vdGVib29rOiAKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0b2NfY29sbGFwc2VkOiB0cnVlCiAgICB0aGVtZTogZGFya2x5Ci0tLQoKIyAxLiBsb2FkIGxpYnJhcmllcwpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KFNldXJhdE9iamVjdCkKbGlicmFyeShTZXVyYXREYXRhKQpsaWJyYXJ5KHBhdGNod29yaykKbGlicmFyeShBemltdXRoKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHJtYXJrZG93bikKbGlicmFyeSh0aW55dGV4KQoKCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZGl0dG9TZXEpCmxpYnJhcnkoZ2dyZXBlbCkKI2xpYnJhcnkoZ2d0cmVlKQpsaWJyYXJ5KHBhcmFsbGVsKQpsaWJyYXJ5KHBsb3RseSkgICMgM0QgcGxvdApsaWJyYXJ5KFNldXJhdCkgICMgSWRlbnRzKCkKbGlicmFyeShTZXVyYXREaXNrKSAgIyBTYXZlSDVTZXVyYXQoKQpsaWJyYXJ5KHRpYmJsZSkgICMgcm93bm5hbWVzX3RvX2NvbHVtbgpsaWJyYXJ5KGhhcm1vbnkpICMgUnVuSGFybW9ueSgpCiNvcHRpb25zKG1jLmNvcmVzID0gZGV0ZWN0Q29yZXMoKSAtIDEpCgoKCmBgYAoKCiMgMi4gTG9hZCBTZXVyYXQgT2JqZWN0IApgYGB7ciBsb2FkX3NldXJhdH0KCiNMb2FkIFNldXJhdCBPYmplY3QgbWVyZ2VkIGZyb20gY2VsbCBsaW5lcyBhbmQgYSBjb250cm9sKFBCTUMpIGFmdGVyIGZpbHRyYXRpb24KU1NfQWxsX3NhbXBsZXNfTWVyZ2VkIDwtIGxvYWQoIlNTX0FsbF9TYW1wbGVfTWVyZ2VkX0F6aW11dGhfUHJvamVjdFRpbHNfc2luZ2xlUl9BTk5PVEFUSU9OX29uX015X1VNQVAwLjdfSFBDLlJvYmoiKQoKQWxsX3NhbXBsZXNfTWVyZ2VkCmBgYAojIDMuIFFDCmBgYHtyIFFDLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xMH0KCklkZW50cyhBbGxfc2FtcGxlc19NZXJnZWQpIDwtICJjZWxsX2xpbmUiClZsblBsb3QoQWxsX3NhbXBsZXNfTWVyZ2VkLCBmZWF0dXJlcyA9IGMoIm5GZWF0dXJlX1JOQSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibkNvdW50X1JOQSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyY2VudC5taXRvIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5jb2wgPSAzKQoKRmVhdHVyZVNjYXR0ZXIoQWxsX3NhbXBsZXNfTWVyZ2VkLCAKICAgICAgICAgICAgICAgZmVhdHVyZTEgPSAibkNvdW50X1JOQSIsIAogICAgICAgICAgICAgICBmZWF0dXJlMiA9ICJuRmVhdHVyZV9STkEiKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gJ2xtJykKCmBgYAoKIyNGZWF0dXJlU2NhdHRlciBpcyB0eXBpY2FsbHkgdXNlZCB0byB2aXN1YWxpemUgZmVhdHVyZS1mZWF0dXJlIHJlbGF0aW9uc2hpcHMKIyNmb3IgYW55dGhpbmcgY2FsY3VsYXRlZCBieSB0aGUgb2JqZWN0LCAKIyNpLmUuIGNvbHVtbnMgaW4gb2JqZWN0IG1ldGFkYXRhLCBQQyBzY29yZXMgZXRjLgoKYGBge3IgRkMsIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTEwfQoKRmVhdHVyZVNjYXR0ZXIoQWxsX3NhbXBsZXNfTWVyZ2VkLCAKICAgICAgICAgICAgICAgZmVhdHVyZTEgPSAibkNvdW50X1JOQSIsIAogICAgICAgICAgICAgICBmZWF0dXJlMiA9ICJwZXJjZW50Lm1pdG8iKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAnbG0nKQoKRmVhdHVyZVNjYXR0ZXIoQWxsX3NhbXBsZXNfTWVyZ2VkLCAKICAgICAgICAgICAgICAgZmVhdHVyZTEgPSAibkNvdW50X1JOQSIsIAogICAgICAgICAgICAgICBmZWF0dXJlMiA9ICJuRmVhdHVyZV9STkEiKSsKICBnZW9tX3Ntb290aChtZXRob2QgPSAnbG0nKQoKYGBgCiMgNC4gUGVyZm9ybSBQQ0EKYGBge3IgUENBLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xMH0KCgpFbGJvd1Bsb3QoQWxsX3NhbXBsZXNfTWVyZ2VkKQoKCmBgYAojIDUuIEhhcm1vbnkgVEVTVApgYGB7ciBQQ0EtVEVTVCwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CgpQMSA8LSBEaW1QbG90KG9iamVjdCA9IEFsbF9zYW1wbGVzX01lcmdlZCwgZ3JvdXAuYnkgPSAiY2VsbF9saW5lIikgKyAKICBsYWJzKHRpdGxlID0gJ0NvbG9yZWQgYnkgY2VsbGxpbmUnKQpQMQoKClAyIDwtIERpbVBsb3Qob2JqZWN0ID0gQWxsX3NhbXBsZXNfTWVyZ2VkLCBncm91cC5ieSA9ICJwcmVkaWN0ZWQuY2VsbHR5cGUubDIiKSArIAogIGxhYnModGl0bGUgPSAnQ29sb3JlZCBieSBjZWxsdHlwZScpClAyCgoKUDMgPC0gRGltUGxvdChvYmplY3QgPSBBbGxfc2FtcGxlc19NZXJnZWQsIGdyb3VwLmJ5ID0gImNlbGxfbGluZSIsIHJlZHVjdGlvbiA9ICJwY2EiKSArIAogIGxhYnModGl0bGUgPSAnQ29sb3JlZCBieSBjZWxsbGluZScpClAzCgoKUDQgPC0gRGltUGxvdChvYmplY3QgPSBBbGxfc2FtcGxlc19NZXJnZWQsIGdyb3VwLmJ5ID0gInByZWRpY3RlZC5jZWxsdHlwZS5sMiIsIHJlZHVjdGlvbiA9ICJwY2EiKSArIAogIGxhYnModGl0bGUgPSAnQ29sb3JlZCBieSBjZWxsdHlwZScpClA0Cgpjb3dwbG90OjpwbG90X2dyaWQoUDEsIFAyLCBQMywgUDQsIG5yb3cgPSAyKQpgYGAKIyA2LiBBcHBseSBIYXJtb255CmBgYHtyIEMxLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xMH0KCkFsbF9zYW1wbGVzX01lcmdlZCAlPiUKICAgICAgICAgICAgICAgICAgIFJ1bkhhcm1vbnkoZ3JvdXAuYnkudmFycyA9ICJjZWxsX2xpbmUiLCBwbG90X2NvbnZlcmdlbmNlID0gRkFMU0UpCgoKQWxsX3NhbXBsZXNfTWVyZ2VkX2ludGVncmF0ZWRfZW1iZWQ8LSBFbWJlZGRpbmdzKEFsbF9zYW1wbGVzX01lcmdlZF9pbnRlZ3JhdGVkLCAiaGFybW9ueSIpCgpBbGxfc2FtcGxlc19NZXJnZWRfaW50ZWdyYXRlZF9lbWJlZFsxOjEwLDE6MTBdCgoKCgoKYGBgCgoKYGBge3IgQzIsIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTEwfQoKQWxsX3NhbXBsZXNfTWVyZ2VkX2ludGVncmF0ZWQgPC0gQWxsX3NhbXBsZXNfTWVyZ2VkX2ludGVncmF0ZWQgJT4lIAogIAogIAogIFJ1blVNQVAocmVkdWN0aW9uID0gImhhcm1vbnkiLCBkaW1zID0gMTo4KSAlPiUKICBGaW5kTmVpZ2hib3JzKHJlZHVjdGlvbiA9ICJoYXJtb255IiwgZGltcyA9IDE6OCkgICU+JQogIEZpbmRDbHVzdGVycyhyZXNvbHV0aW9uID0gMC43KQoKI1Zpc3VhbGl6ZQpCZWZvcmUxIDwtIERpbVBsb3Qob2JqZWN0ID0gQWxsX3NhbXBsZXNfTWVyZ2VkLCBncm91cC5ieSA9ICJjZWxsX2xpbmUiLCBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQsIHJlcGVsID0gVCwgcmVkdWN0aW9uID0gInVtYXAiKQpBZnRlcjEgPC0gIERpbVBsb3Qob2JqZWN0ID0gQWxsX3NhbXBsZXNfTWVyZ2VkX2ludGVncmF0ZWQsIGdyb3VwLmJ5ID0gImNlbGxfbGluZSIsIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCwgcmVwZWwgPSBULCByZWR1Y3Rpb24gPSAidW1hcCIpCgpCZWZvcmUyIDwtIERpbVBsb3Qob2JqZWN0ID0gQWxsX3NhbXBsZXNfTWVyZ2VkX2ludGVncmF0ZWQsIGdyb3VwLmJ5ID0gInNldXJhdF9jbHVzdGVycyIsIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCwgcmVwZWwgPSBULCByZWR1Y3Rpb24gPSAidW1hcCIpCkFmdGVyMiA8LURpbVBsb3Qob2JqZWN0ID0gQWxsX3NhbXBsZXNfTWVyZ2VkX2ludGVncmF0ZWQsIGdyb3VwLmJ5ID0gInNldXJhdF9jbHVzdGVycyIsIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCwgcmVwZWwgPSBULCByZWR1Y3Rpb24gPSAidW1hcCIpCgpCZWZvcmUxIHwgQWZ0ZXIxCgpCZWZvcmUyIHwgQWZ0ZXIyCgpEaW1QbG90KG9iamVjdCA9IEFsbF9zYW1wbGVzX01lcmdlZF9pbnRlZ3JhdGVkLCBncm91cC5ieSA9ICJwcmVkaWN0ZWQuY2VsbHR5cGUubDIiLCBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQsIHJlcGVsID0gVCwgcmVkdWN0aW9uID0gInVtYXAiKQoKRGltUGxvdChvYmplY3QgPSBBbGxfc2FtcGxlc19NZXJnZWRfaW50ZWdyYXRlZCwgZ3JvdXAuYnkgPSAicHJlZGljdGVkLmNlbGx0eXBlLmwyIiwgbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBULCByZXBlbCA9IFQsIHJlZHVjdGlvbiA9ICJoYXJtb255IikKCkRpbVBsb3Qob2JqZWN0ID0gQWxsX3NhbXBsZXNfTWVyZ2VkX2ludGVncmF0ZWQsIGdyb3VwLmJ5ID0gInByZWRpY3RlZC5jZWxsdHlwZS5sMiIsIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCwgcmVwZWwgPSBULCByZWR1Y3Rpb24gPSAiaW50ZWdyYXRlZF9kciIpCgpEaW1QbG90KG9iamVjdCA9IEFsbF9zYW1wbGVzX01lcmdlZF9pbnRlZ3JhdGVkLCBncm91cC5ieSA9ICJwcmVkaWN0ZWQuY2VsbHR5cGUubDIiLCBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQsIHJlcGVsID0gVCwgcmVkdWN0aW9uID0gInBjYSIpCgpEaW1QbG90KG9iamVjdCA9IEFsbF9zYW1wbGVzX01lcmdlZF9pbnRlZ3JhdGVkLCBncm91cC5ieSA9ICJwcmVkaWN0ZWQuY2VsbHR5cGUubDIiLCBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQsIHJlcGVsID0gVCwgcmVkdWN0aW9uID0gInJlZi51bWFwIikKCgoKCmBgYAoKIyA3LiBDZWxsIERpc3RyaWJ1dGlvbgpgYGB7ciBjZWxsRH0KCgpjZWxsX2Rpc3RyaWJ1dGlvbl90YWJsZSA8LSB0YWJsZShBbGxfc2FtcGxlc19NZXJnZWRfaW50ZWdyYXRlZCRjZWxsX2xpbmUsIEFsbF9zYW1wbGVzX01lcmdlZF9pbnRlZ3JhdGVkJHNldXJhdF9jbHVzdGVycykKCmNlbGxfZGlzdHJpYnV0aW9uX2RmIDwtIGFzLmRhdGEuZnJhbWUubWF0cml4KGNlbGxfZGlzdHJpYnV0aW9uX3RhYmxlKQoKCnByaW50KGNlbGxfZGlzdHJpYnV0aW9uX2RmKQoKCndyaXRlLmNzdihjZWxsX2Rpc3RyaWJ1dGlvbl9kZiwgZmlsZSA9ICIxNS0yLWludGVncmF0aW9uX3RhYmxlX0hBUk1PTlktVEVTVDMuY3N2Iiwgcm93Lm5hbWVzID0gVFJVRSkKCgpgYGAKCiMgU2F2ZSB0aGUgU2V1cmF0IG9iamVjdCBhcyBhbiBSb2JqIGZpbGUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmBgYHtyIHNhdmVSRFN9CgoKIyBzYXZlCiNzYXZlKEFsbF9zYW1wbGVzX01lcmdlZF9pbnRlZ3JhdGVkLGZpbGUgPSAiMTUtMl9BbGxfc2FtcGxlc19NZXJnZWRfaW50ZWdyYXRlZC5Sb2JqIikKCmBgYAoKYGBgCgoKCg==