1.load libraries

2.Read Seurat object and Merge


load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/L1.Robj")
load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/L2.Robj")
load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/L3_B.Robj")
load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/L4_B.Robj")
load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/L5.Robj")
load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/L6.Robj")
load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/L7.Robj")
load("/home/bioinfo/Documents/1-SS-STeps/4-Analysis_and_Robj_Marie/analyse juillet 2023/ObjetsR/PBMC.Robj")
load("/home/bioinfo/14-New_PBMC_INCLUSION/PBMC-10x/1-PBMC_10x/PBMC_10x.Robj")

# Rename the assay if necessary
DefaultAssay(SS_PBMC_10x) <- "RNA"  # or whatever assay you are using

# Add nUMI column (if it doesn't exist)
if(!"nUMI" %in% colnames(SS_PBMC_10x@meta.data)) {
  SS_PBMC_10x$nUMI <- SS_PBMC_10x$nCount_RNA
}

# Add nGene column (if it doesn't exist)
if(!"ngene" %in% colnames(SS_PBMC_10x@meta.data)) {
  SS_PBMC_10x$ngene <- SS_PBMC_10x$nFeature_RNA
}

# Verify that the columns have been added
print(colnames(SS_PBMC_10x@meta.data))
 [1] "orig.ident"                         "nCount_RNA"                        
 [3] "nFeature_RNA"                       "percent.mt"                        
 [5] "cell_line"                          "Patient_origin"                    
 [7] "Patient_Immunophenotype"            "condition_of_amplification_in_vivo"
 [9] "culture_medium"                     "Stromal_cells"                     
[11] "Cell_line_Immunophenotype"          "TP53_mutation"                     
[13] "TCRVB2"                             "CD3_M"                             
[15] "CD30_M"                             "CCR4_M"                            
[17] "CD162_BL"                           "CD26_BD"                           
[19] "CD7_M"                              "CLA_BD"                            
[21] "CD4_BD"                             "CCR7_M"                            
[23] "CD45RO_BD"                          "CD45RA_M"                          
[25] "age_at_diagnosis"                   "stage_diagnosis"                   
[27] "stage_analysis"                     "Treatments_analysis"               
[29] "nUMI"                               "ngene"                             
# Check the names of loaded objects
ls()  # This will show you all objects currently in your environment
[1] "L1"          "L2"          "L3_B"        "L4_B"        "L5"          "L6"         
[7] "L7"          "PBMC"        "SS_PBMC_10x"

3.Check Loaded Objects and Merge


# Adding dummy ADT assay if it doesn't exist
if (!"ADT" %in% names(SS_PBMC_10x)) {
  # Create a matrix with 28 dummy features and columns matching cell barcodes
  dummy_adt <- matrix(0, nrow = 28, ncol = ncol(SS_PBMC_10x))
  
  # Assign row names as placeholder feature names
  rownames(dummy_adt) <- paste0("Dummy_ADT_", 1:28)
  
  # Assign column names using cell barcodes from the RNA assay
  colnames(dummy_adt) <- colnames(SS_PBMC_10x)
  
  # Add the dummy ADT assay to the Seurat object
  SS_PBMC_10x[["ADT"]] <- CreateAssayObject(counts = dummy_adt)
}
Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')Warning: Feature names cannot have underscores ('_'), replacing with dashes ('-')
# Set the RNA assay as default
DefaultAssay(SS_PBMC_10x) <- "RNA"

# Normalize new PBMC-10x object before merging
SS_PBMC_10x <- NormalizeData(SS_PBMC_10x, normalization.method = "LogNormalize", scale.factor = 10000)
Normalizing layer: counts
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
# Merge Seurat objects while retaining the ADT assay
All_samples_Merged_new <- merge(L1, y = c(L2, L3_B, L4_B, L5, L6, L7, PBMC, SS_PBMC_10x))

# Display summary of the merged object
All_samples_Merged_new
An object of class Seurat 
36657 features across 59355 samples within 2 assays 
Active assay: RNA (36601 features, 0 variable features)
 18 layers present: counts.1, counts.2, counts.3, counts.4, counts.5, counts.6, counts.7, counts.8, counts.9, data.1, data.2, data.3, data.4, data.5, data.6, data.7, data.8, data.9
 1 other assay present: ADT
All_samples_Merged_10x <- JoinLayers(All_samples_Merged_new)

All_samples_Merged_10x
An object of class Seurat 
36657 features across 59355 samples within 2 assays 
Active assay: RNA (36601 features, 0 variable features)
 2 layers present: data, counts
 1 other assay present: ADT
print(dim(GetAssayData(All_samples_Merged_10x, layer = "counts")))
[1] 36601 59355
print(dim(GetAssayData(All_samples_Merged_10x, layer = "data")))
[1] 36601 59355
All_samples_Merged_10x$orig.ident[grepl("PBMC_10x", colnames(All_samples_Merged_10x))] <- "PBMC10x"

# Display summary of the merged object
print(All_samples_Merged_10x)
An object of class Seurat 
36657 features across 59355 samples within 2 assays 
Active assay: RNA (36601 features, 0 variable features)
 2 layers present: data, counts
 1 other assay present: ADT

4.Save the Seurat object as an Robj file



save(All_samples_Merged_10x, file ="/home/bioinfo/14-New_PBMC_INCLUSION/PBMC-10x/2-Merge_Old_object_to_PBMC-10x/SS_merged_marie_obj_with_PBMC_10x_final.Robj")
LS0tCnRpdGxlOiAiTWVyZ2luZyBhbGwgb3VyIGNlbGwgbGluZXMgYW5kIGNvbnRyb2xzKFBCTUMtUEJNQzEweCkgaW50byBzaW5nbGUgc2V1cmF0IG9iamVjdC1Sb2JqIgphdXRob3I6IE5hc2lyIE1haG1vb2QgQWJiYXNpCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKb3V0cHV0OgogICNybWRmb3JtYXRzOjpyZWFkdGhlZG93bgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogdHJ1ZQotLS0KCiMgMS5sb2FkIGxpYnJhcmllcwpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeSh0aW55dGV4KQoKYGBgCgoKCiMgMi5SZWFkIFNldXJhdCBvYmplY3QgYW5kIE1lcmdlCmBgYHtyIHNldXJhdH0KCmxvYWQoIi9ob21lL2Jpb2luZm8vRG9jdW1lbnRzLzEtU1MtU1RlcHMvNC1BbmFseXNpc19hbmRfUm9ial9NYXJpZS9hbmFseXNlIGp1aWxsZXQgMjAyMy9PYmpldHNSL0wxLlJvYmoiKQpsb2FkKCIvaG9tZS9iaW9pbmZvL0RvY3VtZW50cy8xLVNTLVNUZXBzLzQtQW5hbHlzaXNfYW5kX1JvYmpfTWFyaWUvYW5hbHlzZSBqdWlsbGV0IDIwMjMvT2JqZXRzUi9MMi5Sb2JqIikKbG9hZCgiL2hvbWUvYmlvaW5mby9Eb2N1bWVudHMvMS1TUy1TVGVwcy80LUFuYWx5c2lzX2FuZF9Sb2JqX01hcmllL2FuYWx5c2UganVpbGxldCAyMDIzL09iamV0c1IvTDNfQi5Sb2JqIikKbG9hZCgiL2hvbWUvYmlvaW5mby9Eb2N1bWVudHMvMS1TUy1TVGVwcy80LUFuYWx5c2lzX2FuZF9Sb2JqX01hcmllL2FuYWx5c2UganVpbGxldCAyMDIzL09iamV0c1IvTDRfQi5Sb2JqIikKbG9hZCgiL2hvbWUvYmlvaW5mby9Eb2N1bWVudHMvMS1TUy1TVGVwcy80LUFuYWx5c2lzX2FuZF9Sb2JqX01hcmllL2FuYWx5c2UganVpbGxldCAyMDIzL09iamV0c1IvTDUuUm9iaiIpCmxvYWQoIi9ob21lL2Jpb2luZm8vRG9jdW1lbnRzLzEtU1MtU1RlcHMvNC1BbmFseXNpc19hbmRfUm9ial9NYXJpZS9hbmFseXNlIGp1aWxsZXQgMjAyMy9PYmpldHNSL0w2LlJvYmoiKQpsb2FkKCIvaG9tZS9iaW9pbmZvL0RvY3VtZW50cy8xLVNTLVNUZXBzLzQtQW5hbHlzaXNfYW5kX1JvYmpfTWFyaWUvYW5hbHlzZSBqdWlsbGV0IDIwMjMvT2JqZXRzUi9MNy5Sb2JqIikKbG9hZCgiL2hvbWUvYmlvaW5mby9Eb2N1bWVudHMvMS1TUy1TVGVwcy80LUFuYWx5c2lzX2FuZF9Sb2JqX01hcmllL2FuYWx5c2UganVpbGxldCAyMDIzL09iamV0c1IvUEJNQy5Sb2JqIikKbG9hZCgiL2hvbWUvYmlvaW5mby8xNC1OZXdfUEJNQ19JTkNMVVNJT04vUEJNQy0xMHgvMS1QQk1DXzEweC9QQk1DXzEweC5Sb2JqIikKCiMgUmVuYW1lIHRoZSBhc3NheSBpZiBuZWNlc3NhcnkKRGVmYXVsdEFzc2F5KFNTX1BCTUNfMTB4KSA8LSAiUk5BIiAgIyBvciB3aGF0ZXZlciBhc3NheSB5b3UgYXJlIHVzaW5nCgojIEFkZCBuVU1JIGNvbHVtbiAoaWYgaXQgZG9lc24ndCBleGlzdCkKaWYoISJuVU1JIiAlaW4lIGNvbG5hbWVzKFNTX1BCTUNfMTB4QG1ldGEuZGF0YSkpIHsKICBTU19QQk1DXzEweCRuVU1JIDwtIFNTX1BCTUNfMTB4JG5Db3VudF9STkEKfQoKIyBBZGQgbkdlbmUgY29sdW1uIChpZiBpdCBkb2Vzbid0IGV4aXN0KQppZighIm5nZW5lIiAlaW4lIGNvbG5hbWVzKFNTX1BCTUNfMTB4QG1ldGEuZGF0YSkpIHsKICBTU19QQk1DXzEweCRuZ2VuZSA8LSBTU19QQk1DXzEweCRuRmVhdHVyZV9STkEKfQoKIyBWZXJpZnkgdGhhdCB0aGUgY29sdW1ucyBoYXZlIGJlZW4gYWRkZWQKcHJpbnQoY29sbmFtZXMoU1NfUEJNQ18xMHhAbWV0YS5kYXRhKSkKCgojIENoZWNrIHRoZSBuYW1lcyBvZiBsb2FkZWQgb2JqZWN0cwpscygpICAjIFRoaXMgd2lsbCBzaG93IHlvdSBhbGwgb2JqZWN0cyBjdXJyZW50bHkgaW4geW91ciBlbnZpcm9ubWVudApgYGAKCiMgMy5DaGVjayBMb2FkZWQgT2JqZWN0cyBhbmQgTWVyZ2UKYGBge3IgVU1BUH0KCiMgQWRkaW5nIGR1bW15IEFEVCBhc3NheSBpZiBpdCBkb2Vzbid0IGV4aXN0CmlmICghIkFEVCIgJWluJSBuYW1lcyhTU19QQk1DXzEweCkpIHsKICAjIENyZWF0ZSBhIG1hdHJpeCB3aXRoIDI4IGR1bW15IGZlYXR1cmVzIGFuZCBjb2x1bW5zIG1hdGNoaW5nIGNlbGwgYmFyY29kZXMKICBkdW1teV9hZHQgPC0gbWF0cml4KDAsIG5yb3cgPSAyOCwgbmNvbCA9IG5jb2woU1NfUEJNQ18xMHgpKQogIAogICMgQXNzaWduIHJvdyBuYW1lcyBhcyBwbGFjZWhvbGRlciBmZWF0dXJlIG5hbWVzCiAgcm93bmFtZXMoZHVtbXlfYWR0KSA8LSBwYXN0ZTAoIkR1bW15X0FEVF8iLCAxOjI4KQogIAogICMgQXNzaWduIGNvbHVtbiBuYW1lcyB1c2luZyBjZWxsIGJhcmNvZGVzIGZyb20gdGhlIFJOQSBhc3NheQogIGNvbG5hbWVzKGR1bW15X2FkdCkgPC0gY29sbmFtZXMoU1NfUEJNQ18xMHgpCiAgCiAgIyBBZGQgdGhlIGR1bW15IEFEVCBhc3NheSB0byB0aGUgU2V1cmF0IG9iamVjdAogIFNTX1BCTUNfMTB4W1siQURUIl1dIDwtIENyZWF0ZUFzc2F5T2JqZWN0KGNvdW50cyA9IGR1bW15X2FkdCkKfQoKCiMgU2V0IHRoZSBSTkEgYXNzYXkgYXMgZGVmYXVsdApEZWZhdWx0QXNzYXkoU1NfUEJNQ18xMHgpIDwtICJSTkEiCgojIE5vcm1hbGl6ZSBuZXcgUEJNQy0xMHggb2JqZWN0IGJlZm9yZSBtZXJnaW5nClNTX1BCTUNfMTB4IDwtIE5vcm1hbGl6ZURhdGEoU1NfUEJNQ18xMHgsIG5vcm1hbGl6YXRpb24ubWV0aG9kID0gIkxvZ05vcm1hbGl6ZSIsIHNjYWxlLmZhY3RvciA9IDEwMDAwKQoKIyBNZXJnZSBTZXVyYXQgb2JqZWN0cyB3aGlsZSByZXRhaW5pbmcgdGhlIEFEVCBhc3NheQpBbGxfc2FtcGxlc19NZXJnZWRfbmV3IDwtIG1lcmdlKEwxLCB5ID0gYyhMMiwgTDNfQiwgTDRfQiwgTDUsIEw2LCBMNywgUEJNQywgU1NfUEJNQ18xMHgpKQoKIyBEaXNwbGF5IHN1bW1hcnkgb2YgdGhlIG1lcmdlZCBvYmplY3QKQWxsX3NhbXBsZXNfTWVyZ2VkX25ldwoKQWxsX3NhbXBsZXNfTWVyZ2VkXzEweCA8LSBKb2luTGF5ZXJzKEFsbF9zYW1wbGVzX01lcmdlZF9uZXcpCgpBbGxfc2FtcGxlc19NZXJnZWRfMTB4CgpwcmludChkaW0oR2V0QXNzYXlEYXRhKEFsbF9zYW1wbGVzX01lcmdlZF8xMHgsIGxheWVyID0gImNvdW50cyIpKSkKcHJpbnQoZGltKEdldEFzc2F5RGF0YShBbGxfc2FtcGxlc19NZXJnZWRfMTB4LCBsYXllciA9ICJkYXRhIikpKQoKCkFsbF9zYW1wbGVzX01lcmdlZF8xMHgkb3JpZy5pZGVudFtncmVwbCgiUEJNQ18xMHgiLCBjb2xuYW1lcyhBbGxfc2FtcGxlc19NZXJnZWRfMTB4KSldIDwtICJQQk1DMTB4IgoKIyBEaXNwbGF5IHN1bW1hcnkgb2YgdGhlIG1lcmdlZCBvYmplY3QKcHJpbnQoQWxsX3NhbXBsZXNfTWVyZ2VkXzEweCkKYGBgCgoKIyA0LlNhdmUgdGhlIFNldXJhdCBvYmplY3QgYXMgYW4gUm9iaiBmaWxlCmBgYHtyIHNhdmVvYmp9CgoKc2F2ZShBbGxfc2FtcGxlc19NZXJnZWRfMTB4LCBmaWxlID0iL2hvbWUvYmlvaW5mby8xNC1OZXdfUEJNQ19JTkNMVVNJT04vUEJNQy0xMHgvMi1NZXJnZV9PbGRfb2JqZWN0X3RvX1BCTUMtMTB4L1NTX21lcmdlZF9tYXJpZV9vYmpfd2l0aF9QQk1DXzEweF9maW5hbC5Sb2JqIikKCgpgYGAKCgoKCgoKCg==