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')

4. Perform PCA



ElbowPlot(All_samples_Merged)

NA
NA

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==