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