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("/home/bioinfo/0-imp_Robj/All_Normal-PBMC_Abnormal-cellLines_T_cells_Merged_Annotated_UMAP_on_Clusters_to_USE.Robj")
All_samples_Merged
An object of class Seurat
62625 features across 46976 samples within 6 assays
Active assay: SCT (25901 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
DimPlot(All_samples_Merged, group.by = "cell_line", label = T, label.box = T)

3. Normalize ADT-Margin1
rownames(All_samples_Merged[["ADT"]])
[1] "CD274" "CD30" "CD40" "CD3" "CD45RA" "CD7" "CCR4" "CD4" "CD25" "CD45RO" "PD1" "CD44" "CD5" "CXCR3"
[15] "CCR6" "CD62L" "CCR7" "CD95" "TCRab" "CXCR4" "CD2" "CD28" "CD127" "CD45" "CD26" "CCR10" "CCR8" "CD19"
# Perform normalization and scaling
All_samples_Merged <- NormalizeData(All_samples_Merged, normalization.method = "CLR", margin = 1, assay = "ADT")
Normalizing across features
| | 0 % ~calculating
|++ | 4 % ~00s
|++++ | 7 % ~00s
|++++++ | 11% ~00s
|++++++++ | 14% ~00s
|+++++++++ | 18% ~00s
|+++++++++++ | 21% ~00s
|+++++++++++++ | 25% ~00s
|+++++++++++++++ | 29% ~00s
|+++++++++++++++++ | 32% ~00s
|++++++++++++++++++ | 36% ~00s
|++++++++++++++++++++ | 39% ~00s
|++++++++++++++++++++++ | 43% ~00s
|++++++++++++++++++++++++ | 46% ~00s
|+++++++++++++++++++++++++ | 50% ~00s
|+++++++++++++++++++++++++++ | 54% ~00s
|+++++++++++++++++++++++++++++ | 57% ~00s
|+++++++++++++++++++++++++++++++ | 61% ~00s
|+++++++++++++++++++++++++++++++++ | 64% ~00s
|++++++++++++++++++++++++++++++++++ | 68% ~00s
|++++++++++++++++++++++++++++++++++++ | 71% ~00s
|++++++++++++++++++++++++++++++++++++++ | 75% ~00s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~00s
|++++++++++++++++++++++++++++++++++++++++++ | 82% ~00s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~00s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=00s
DefaultAssay(All_samples_Merged) <- "ADT"
genes <- rownames(All_samples_Merged[["ADT"]])
# Replace NA values in the 'Patient_origin' column with 'PBMC'
All_samples_Merged@meta.data$Patient_origin[All_samples_Merged@meta.data$Patient_origin == "NA"] <- "PBMC"
library(dittoSeq)
dittoHeatmap(All_samples_Merged, genes,
annot.by = c("Patient_origin", "cell_line"))

# Load additional libraries for color palettes
library(RColorBrewer)
# Define a custom color palette for the heatmap
my_colors <- colorRampPalette(brewer.pal(9, "YlGnBu"))(100) # Example: Yellow to Blue
# Generate the heatmap with custom colors
dittoHeatmap(
All_samples_Merged,
genes,
annot.by = c("Patient_origin", "cell_line"),
heatmap.colors = my_colors, # Apply custom heatmap colors
scaled.to.max = TRUE # Optionally, scale data for better contrast
)

NA
NA
Save the Seurat object as an Robj file
# save(All_samples_Merged, file = "/home/bioinfo/0-imp_Robj/All_Samples_Merged_NormalizedADT_Margin1.Robj")
4. Normalize ADT-Margin2
rownames(All_samples_Merged[["ADT"]])
# Perform normalization and scaling
All_samples_Merged <- NormalizeData(All_samples_Merged, normalization.method = "CLR", margin = 2, assay = "ADT")
DefaultAssay(All_samples_Merged) <- "ADT"
genes <- rownames(All_samples_Merged[["ADT"]])
# Replace NA values in the 'Patient_origin' column with 'PBMC'
All_samples_Merged@meta.data$Patient_origin[All_samples_Merged@meta.data$Patient_origin == "NA"] <- "PBMC"
library(dittoSeq)
dittoHeatmap(All_samples_Merged, genes,
annot.by = c("Patient_origin", "cell_line"))
# Load additional libraries for color palettes
library(RColorBrewer)
# Define a custom color palette for the heatmap
my_colors <- colorRampPalette(brewer.pal(9, "YlGnBu"))(100) # Example: Yellow to Blue
# Generate the heatmap with custom colors
dittoHeatmap(
All_samples_Merged,
genes,
annot.by = c("Patient_origin", "cell_line"),
heatmap.colors = my_colors, # Apply custom heatmap colors
scaled.to.max = TRUE # Optionally, scale data for better contrast
)
Save the Seurat object as an Robj file
# save(All_samples_Merged, file = "/home/bioinfo/0-imp_Robj/All_Samples_Merged_NormalizedADT_Margin2.Robj")
LS0tCnRpdGxlOiAiQURUIG5vcm1hbGl6YXRpb24tIE1hcmdpbiA9IDEgYW5kIFZpc3VhbGl6ZWQgYnkgZGl0dG9zZXEgaGVhdG1hcCIKYXV0aG9yOiBOYXNpciBNYWhtb29kIEFiYmFzaQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDoKICAjIHBkZl9kb2N1bWVudDogZGVmYXVsdAogICMgd29yZF9kb2N1bWVudDogZGVmYXVsdAogICMgaHRtbF9kb2N1bWVudDogZGVmYXVsdAogICNybWRmb3JtYXRzOjpyZWFkdGhlZG93bgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogdHJ1ZQotLS0KCiMgMS4gbG9hZCBsaWJyYXJpZXMKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CgpsaWJyYXJ5KFNldXJhdCkKbGlicmFyeShTZXVyYXRPYmplY3QpCmxpYnJhcnkoU2V1cmF0RGF0YSkKbGlicmFyeShwYXRjaHdvcmspCmxpYnJhcnkocm1hcmtkb3duKQpsaWJyYXJ5KHRpbnl0ZXgpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShkcGx5cikKbGlicmFyeSh0aWR5cikKCmBgYAoKCiMgMi4gTG9hZCBTZXVyYXQgT2JqZWN0IApgYGB7ciBsb2FkX3NldXJhdH0KCiNMb2FkIFNldXJhdCBPYmplY3QgbWVyZ2VkIGZyb20gY2VsbCBsaW5lcyBhbmQgYSBjb250cm9sKFBCTUMpIGFmdGVyIGZpbHRyYXRpb24KU1NfQWxsX3NhbXBsZXNfTWVyZ2VkIDwtIGxvYWQoIi9ob21lL2Jpb2luZm8vMC1pbXBfUm9iai9BbGxfTm9ybWFsLVBCTUNfQWJub3JtYWwtY2VsbExpbmVzX1RfY2VsbHNfTWVyZ2VkX0Fubm90YXRlZF9VTUFQX29uX0NsdXN0ZXJzX3RvX1VTRS5Sb2JqIikKCkFsbF9zYW1wbGVzX01lcmdlZAoKRGltUGxvdChBbGxfc2FtcGxlc19NZXJnZWQsIGdyb3VwLmJ5ID0gImNlbGxfbGluZSIsIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKYGBgCgoKCiMgMy4gTm9ybWFsaXplIEFEVC1NYXJnaW4xCmBgYHtyIE5vcm1hbGl6ZUFEVCwgZmlnLmhlaWdodD0xNCwgZmlnLndpZHRoPTE4fQoKCnJvd25hbWVzKEFsbF9zYW1wbGVzX01lcmdlZFtbIkFEVCJdXSkKIyBQZXJmb3JtIG5vcm1hbGl6YXRpb24gYW5kIHNjYWxpbmcKQWxsX3NhbXBsZXNfTWVyZ2VkIDwtIE5vcm1hbGl6ZURhdGEoQWxsX3NhbXBsZXNfTWVyZ2VkLCBub3JtYWxpemF0aW9uLm1ldGhvZCA9ICJDTFIiLCBtYXJnaW4gPSAxLCBhc3NheSA9ICJBRFQiKQoKRGVmYXVsdEFzc2F5KEFsbF9zYW1wbGVzX01lcmdlZCkgPC0gIkFEVCIKCmdlbmVzIDwtIHJvd25hbWVzKEFsbF9zYW1wbGVzX01lcmdlZFtbIkFEVCJdXSkKCiMgUmVwbGFjZSBOQSB2YWx1ZXMgaW4gdGhlICdQYXRpZW50X29yaWdpbicgY29sdW1uIHdpdGggJ1BCTUMnCkFsbF9zYW1wbGVzX01lcmdlZEBtZXRhLmRhdGEkUGF0aWVudF9vcmlnaW5bQWxsX3NhbXBsZXNfTWVyZ2VkQG1ldGEuZGF0YSRQYXRpZW50X29yaWdpbiA9PSAiTkEiXSA8LSAiUEJNQyIKCgpsaWJyYXJ5KGRpdHRvU2VxKQoKZGl0dG9IZWF0bWFwKEFsbF9zYW1wbGVzX01lcmdlZCwgZ2VuZXMsCiAgICBhbm5vdC5ieSA9IGMoIlBhdGllbnRfb3JpZ2luIiwgImNlbGxfbGluZSIpKQoKIyBMb2FkIGFkZGl0aW9uYWwgbGlicmFyaWVzIGZvciBjb2xvciBwYWxldHRlcwpsaWJyYXJ5KFJDb2xvckJyZXdlcikKCiMgRGVmaW5lIGEgY3VzdG9tIGNvbG9yIHBhbGV0dGUgZm9yIHRoZSBoZWF0bWFwCm15X2NvbG9ycyA8LSBjb2xvclJhbXBQYWxldHRlKGJyZXdlci5wYWwoOSwgIllsR25CdSIpKSgxMDApICAjIEV4YW1wbGU6IFllbGxvdyB0byBCbHVlCgojIEdlbmVyYXRlIHRoZSBoZWF0bWFwIHdpdGggY3VzdG9tIGNvbG9ycwpkaXR0b0hlYXRtYXAoCiAgQWxsX3NhbXBsZXNfTWVyZ2VkLCAKICBnZW5lcywKICBhbm5vdC5ieSA9IGMoIlBhdGllbnRfb3JpZ2luIiwgImNlbGxfbGluZSIpLAogIGhlYXRtYXAuY29sb3JzID0gbXlfY29sb3JzLCAgIyBBcHBseSBjdXN0b20gaGVhdG1hcCBjb2xvcnMKICBzY2FsZWQudG8ubWF4ID0gVFJVRSAgICAgICAgICMgT3B0aW9uYWxseSwgc2NhbGUgZGF0YSBmb3IgYmV0dGVyIGNvbnRyYXN0CikKCgpgYGAKIyMgU2F2ZSB0aGUgU2V1cmF0IG9iamVjdCBhcyBhbiBSb2JqIGZpbGUKYGBge3Igc2F2ZVJPQkp9CgojIHNhdmUoQWxsX3NhbXBsZXNfTWVyZ2VkLCBmaWxlID0gIi9ob21lL2Jpb2luZm8vMC1pbXBfUm9iai9BbGxfU2FtcGxlc19NZXJnZWRfTm9ybWFsaXplZEFEVF9NYXJnaW4xLlJvYmoiKQoKCgpgYGAKCgojIDQuIE5vcm1hbGl6ZSBBRFQtTWFyZ2luMgpgYGB7ciBWaXN1YWxpemVBRFQyLCBldmFsID0gRkFMU0V9Cgpyb3duYW1lcyhBbGxfc2FtcGxlc19NZXJnZWRbWyJBRFQiXV0pCiMgUGVyZm9ybSBub3JtYWxpemF0aW9uIGFuZCBzY2FsaW5nCkFsbF9zYW1wbGVzX01lcmdlZCA8LSBOb3JtYWxpemVEYXRhKEFsbF9zYW1wbGVzX01lcmdlZCwgbm9ybWFsaXphdGlvbi5tZXRob2QgPSAiQ0xSIiwgbWFyZ2luID0gMiwgYXNzYXkgPSAiQURUIikKCkRlZmF1bHRBc3NheShBbGxfc2FtcGxlc19NZXJnZWQpIDwtICJBRFQiCgpnZW5lcyA8LSByb3duYW1lcyhBbGxfc2FtcGxlc19NZXJnZWRbWyJBRFQiXV0pCgojIFJlcGxhY2UgTkEgdmFsdWVzIGluIHRoZSAnUGF0aWVudF9vcmlnaW4nIGNvbHVtbiB3aXRoICdQQk1DJwpBbGxfc2FtcGxlc19NZXJnZWRAbWV0YS5kYXRhJFBhdGllbnRfb3JpZ2luW0FsbF9zYW1wbGVzX01lcmdlZEBtZXRhLmRhdGEkUGF0aWVudF9vcmlnaW4gPT0gIk5BIl0gPC0gIlBCTUMiCgoKbGlicmFyeShkaXR0b1NlcSkKCmRpdHRvSGVhdG1hcChBbGxfc2FtcGxlc19NZXJnZWQsIGdlbmVzLAogICAgYW5ub3QuYnkgPSBjKCJQYXRpZW50X29yaWdpbiIsICJjZWxsX2xpbmUiKSkKCgojIExvYWQgYWRkaXRpb25hbCBsaWJyYXJpZXMgZm9yIGNvbG9yIHBhbGV0dGVzCmxpYnJhcnkoUkNvbG9yQnJld2VyKQoKIyBEZWZpbmUgYSBjdXN0b20gY29sb3IgcGFsZXR0ZSBmb3IgdGhlIGhlYXRtYXAKbXlfY29sb3JzIDwtIGNvbG9yUmFtcFBhbGV0dGUoYnJld2VyLnBhbCg5LCAiWWxHbkJ1IikpKDEwMCkgICMgRXhhbXBsZTogWWVsbG93IHRvIEJsdWUKCiMgR2VuZXJhdGUgdGhlIGhlYXRtYXAgd2l0aCBjdXN0b20gY29sb3JzCmRpdHRvSGVhdG1hcCgKICBBbGxfc2FtcGxlc19NZXJnZWQsIAogIGdlbmVzLAogIGFubm90LmJ5ID0gYygiUGF0aWVudF9vcmlnaW4iLCAiY2VsbF9saW5lIiksCiAgaGVhdG1hcC5jb2xvcnMgPSBteV9jb2xvcnMsICAjIEFwcGx5IGN1c3RvbSBoZWF0bWFwIGNvbG9ycwogIHNjYWxlZC50by5tYXggPSBUUlVFICAgICAgICAgIyBPcHRpb25hbGx5LCBzY2FsZSBkYXRhIGZvciBiZXR0ZXIgY29udHJhc3QKKQoKCmBgYAoKCiMjIFNhdmUgdGhlIFNldXJhdCBvYmplY3QgYXMgYW4gUm9iaiBmaWxlCmBgYHtyIHNhdmVST0JKXzJ9CgojIHNhdmUoQWxsX3NhbXBsZXNfTWVyZ2VkLCBmaWxlID0gIi9ob21lL2Jpb2luZm8vMC1pbXBfUm9iai9BbGxfU2FtcGxlc19NZXJnZWRfTm9ybWFsaXplZEFEVF9NYXJnaW4yLlJvYmoiKQoKCgpgYGAKCg==