1. load libraries

2. load seurat object


All_samples_Merged <- readRDS("/home/nabbasi/isilon/PHD_3rd_YEAR_Analysis/0-Seurat_RDS_OBJECT_FINAL/All_samples_Merged_Harmony_integrated_Cell_line_renamed_03-07-2025.rds")

Subset L5 from Merged Object


# Assuming All_samples_Merged is already loaded
L5 <- subset(All_samples_Merged, subset = cell_line == "L5")

L5
An object of class Seurat 
62900 features across 6022 samples within 6 assays 
Active assay: SCT (26176 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
 5 dimensional reductions calculated: integrated_dr, ref.umap, pca, umap, harmony
rm(All_samples_Merged)
gc()
            used   (Mb) gc trigger   (Mb)   max used    (Mb)
Ncells  14141577  755.3   20798778 1110.8   20798778  1110.8
Vcells 188348344 1437.0 1238941224 9452.4 1449986957 11062.6

3. QC

# Set identity classes to an existing column in meta data
Idents(object = L5) <- "cell_line"

L5[["percent.rb"]] <- PercentageFeatureSet(L5, pattern = "^RP[SL]")
VlnPlot(L5, features = c("nFeature_RNA", "nCount_RNA", "percent.mt", "percent.rb"),
        pt.size = 0.1, ncol = 4) & theme(plot.title = element_text(size = 10))
Avis : The `slot` argument of `FetchData()` is deprecated as of SeuratObject 5.0.0.
Please use the `layer` argument instead.Avis : `PackageCheck()` was deprecated in SeuratObject 5.0.0.
Please use `rlang::check_installed()` instead.

FeatureScatter(L5, feature1 = "nCount_RNA", feature2 = "percent.mt") + geom_smooth(method = "lm")

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

Assign Cell-Cycle Scores

Running SCTransform on assay: RNA
Avis : The `slot` argument of `GetAssayData()` is deprecated as of SeuratObject 5.0.0.
Please use the `layer` argument instead.vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 18690 by 6022
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 5000 cells
Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Found 118 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 18690 genes
Computing corrected count matrix for 18690 genes
Calculating gene attributes
Wall clock passed: Time difference of 51.03297 secs
Determine variable features

  |                                                                                                                        
  |                                                                                                                  |   0%
  |                                                                                                                        
  |============================                                                                                      |  25%
  |                                                                                                                        
  |=========================================================                                                         |  50%
  |                                                                                                                        
  |======================================================================================                            |  75%
  |                                                                                                                        
  |==================================================================================================================| 100%
Place corrected count matrix in counts slot
Avis : The `slot` argument of `SetAssayData()` is deprecated as of SeuratObject 5.0.0.
Please use the `layer` argument instead.Avis : Different cells and/or features from existing assay SCTSet default assay to SCT
Avis : The following features are not present in the object: MLF1IP, not searching for symbol synonymsAvis : The following features are not present in the object: FAM64A, HN1, not searching for symbol synonyms

4. Normalize data



# Apply SCTransform
L5 <- SCTransform(L5, vars.to.regress = c("percent.rb","percent.mt", "CC.Difference"), 
                  do.scale=TRUE, 
                  do.center=TRUE, 
                  verbose = TRUE)
Running SCTransform on assay: RNA
vst.flavor='v2' set. Using model with fixed slope and excluding poisson genes.
Calculating cell attributes from input UMI matrix: log_umi
Variance stabilizing transformation of count matrix of size 18690 by 6022
Model formula is y ~ log_umi
Get Negative Binomial regression parameters per gene
Using 2000 genes, 5000 cells
Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Avis : useNames = NA is deprecated. Instead, specify either useNames = TRUE or useNames = FALSE.Found 118 outliers - those will be ignored in fitting/regularization step

Second step: Get residuals using fitted parameters for 18690 genes
Computing corrected count matrix for 18690 genes
Calculating gene attributes
Wall clock passed: Time difference of 47.92601 secs
Determine variable features
Regressing out percent.rb, percent.mt, CC.Difference

  |                                                                                                                        
  |                                                                                                                  |   0%
  |                                                                                                                        
  |=                                                                                                                 |   0%
  |                                                                                                                        
  |=                                                                                                                 |   1%
  |                                                                                                                        
  |==                                                                                                                |   1%
  |                                                                                                                        
  |==                                                                                                                |   2%
  |                                                                                                                        
  |===                                                                                                               |   2%
  |                                                                                                                        
  |===                                                                                                               |   3%
  |                                                                                                                        
  |====                                                                                                              |   3%
  |                                                                                                                        
  |====                                                                                                              |   4%
  |                                                                                                                        
  |=====                                                                                                             |   4%
  |                                                                                                                        
  |=====                                                                                                             |   5%
  |                                                                                                                        
  |======                                                                                                            |   5%
  |                                                                                                                        
  |======                                                                                                            |   6%
  |                                                                                                                        
  |=======                                                                                                           |   6%
  |                                                                                                                        
  |=======                                                                                                           |   7%
  |                                                                                                                        
  |========                                                                                                          |   7%
  |                                                                                                                        
  |=========                                                                                                         |   7%
  |                                                                                                                        
  |=========                                                                                                         |   8%
  |                                                                                                                        
  |==========                                                                                                        |   8%
  |                                                                                                                        
  |==========                                                                                                        |   9%
  |                                                                                                                        
  |===========                                                                                                       |   9%
  |                                                                                                                        
  |===========                                                                                                       |  10%
  |                                                                                                                        
  |============                                                                                                      |  10%
  |                                                                                                                        
  |============                                                                                                      |  11%
  |                                                                                                                        
  |=============                                                                                                     |  11%
  |                                                                                                                        
  |=============                                                                                                     |  12%
  |                                                                                                                        
  |==============                                                                                                    |  12%
  |                                                                                                                        
  |==============                                                                                                    |  13%
  |                                                                                                                        
  |===============                                                                                                   |  13%
  |                                                                                                                        
  |===============                                                                                                   |  14%
  |                                                                                                                        
  |================                                                                                                  |  14%
  |                                                                                                                        
  |=================                                                                                                 |  14%
  |                                                                                                                        
  |=================                                                                                                 |  15%
  |                                                                                                                        
  |==================                                                                                                |  15%
  |                                                                                                                        
  |==================                                                                                                |  16%
  |                                                                                                                        
  |===================                                                                                               |  16%
  |                                                                                                                        
  |===================                                                                                               |  17%
  |                                                                                                                        
  |====================                                                                                              |  17%
  |                                                                                                                        
  |====================                                                                                              |  18%
  |                                                                                                                        
  |=====================                                                                                             |  18%
  |                                                                                                                        
  |=====================                                                                                             |  19%
  |                                                                                                                        
  |======================                                                                                            |  19%
  |                                                                                                                        
  |======================                                                                                            |  20%
  |                                                                                                                        
  |=======================                                                                                           |  20%
  |                                                                                                                        
  |=======================                                                                                           |  21%
  |                                                                                                                        
  |========================                                                                                          |  21%
  |                                                                                                                        
  |=========================                                                                                         |  22%
  |                                                                                                                        
  |==========================                                                                                        |  22%
  |                                                                                                                        
  |==========================                                                                                        |  23%
  |                                                                                                                        
  |===========================                                                                                       |  23%
  |                                                                                                                        
  |===========================                                                                                       |  24%
  |                                                                                                                        
  |============================                                                                                      |  24%
  |                                                                                                                        
  |============================                                                                                      |  25%
  |                                                                                                                        
  |=============================                                                                                     |  25%
  |                                                                                                                        
  |=============================                                                                                     |  26%
  |                                                                                                                        
  |==============================                                                                                    |  26%
  |                                                                                                                        
  |==============================                                                                                    |  27%
  |                                                                                                                        
  |===============================                                                                                   |  27%
  |                                                                                                                        
  |===============================                                                                                   |  28%
  |                                                                                                                        
  |================================                                                                                  |  28%
  |                                                                                                                        
  |=================================                                                                                 |  29%
  |                                                                                                                        
  |==================================                                                                                |  29%
  |                                                                                                                        
  |==================================                                                                                |  30%
  |                                                                                                                        
  |===================================                                                                               |  30%
  |                                                                                                                        
  |===================================                                                                               |  31%
  |                                                                                                                        
  |====================================                                                                              |  31%
  |                                                                                                                        
  |====================================                                                                              |  32%
  |                                                                                                                        
  |=====================================                                                                             |  32%
  |                                                                                                                        
  |=====================================                                                                             |  33%
  |                                                                                                                        
  |======================================                                                                            |  33%
  |                                                                                                                        
  |======================================                                                                            |  34%
  |                                                                                                                        
  |=======================================                                                                           |  34%
  |                                                                                                                        
  |=======================================                                                                           |  35%
  |                                                                                                                        
  |========================================                                                                          |  35%
  |                                                                                                                        
  |========================================                                                                          |  36%
  |                                                                                                                        
  |=========================================                                                                         |  36%
  |                                                                                                                        
  |==========================================                                                                        |  36%
  |                                                                                                                        
  |==========================================                                                                        |  37%
  |                                                                                                                        
  |===========================================                                                                       |  37%
  |                                                                                                                        
  |===========================================                                                                       |  38%
  |                                                                                                                        
  |============================================                                                                      |  38%
  |                                                                                                                        
  |============================================                                                                      |  39%
  |                                                                                                                        
  |=============================================                                                                     |  39%
  |                                                                                                                        
  |=============================================                                                                     |  40%
  |                                                                                                                        
  |==============================================                                                                    |  40%
  |                                                                                                                        
  |==============================================                                                                    |  41%
  |                                                                                                                        
  |===============================================                                                                   |  41%
  |                                                                                                                        
  |===============================================                                                                   |  42%
  |                                                                                                                        
  |================================================                                                                  |  42%
  |                                                                                                                        
  |================================================                                                                  |  43%
  |                                                                                                                        
  |=================================================                                                                 |  43%
  |                                                                                                                        
  |==================================================                                                                |  43%
  |                                                                                                                        
  |==================================================                                                                |  44%
  |                                                                                                                        
  |===================================================                                                               |  44%
  |                                                                                                                        
  |===================================================                                                               |  45%
  |                                                                                                                        
  |====================================================                                                              |  45%
  |                                                                                                                        
  |====================================================                                                              |  46%
  |                                                                                                                        
  |=====================================================                                                             |  46%
  |                                                                                                                        
  |=====================================================                                                             |  47%
  |                                                                                                                        
  |======================================================                                                            |  47%
  |                                                                                                                        
  |======================================================                                                            |  48%
  |                                                                                                                        
  |=======================================================                                                           |  48%
  |                                                                                                                        
  |=======================================================                                                           |  49%
  |                                                                                                                        
  |========================================================                                                          |  49%
  |                                                                                                                        
  |========================================================                                                          |  50%
  |                                                                                                                        
  |=========================================================                                                         |  50%
  |                                                                                                                        
  |==========================================================                                                        |  50%
  |                                                                                                                        
  |==========================================================                                                        |  51%
  |                                                                                                                        
  |===========================================================                                                       |  51%
  |                                                                                                                        
  |===========================================================                                                       |  52%
  |                                                                                                                        
  |============================================================                                                      |  52%
  |                                                                                                                        
  |============================================================                                                      |  53%
  |                                                                                                                        
  |=============================================================                                                     |  53%
  |                                                                                                                        
  |=============================================================                                                     |  54%
  |                                                                                                                        
  |==============================================================                                                    |  54%
  |                                                                                                                        
  |==============================================================                                                    |  55%
  |                                                                                                                        
  |===============================================================                                                   |  55%
  |                                                                                                                        
  |===============================================================                                                   |  56%
  |                                                                                                                        
  |================================================================                                                  |  56%
  |                                                                                                                        
  |================================================================                                                  |  57%
  |                                                                                                                        
  |=================================================================                                                 |  57%
  |                                                                                                                        
  |==================================================================                                                |  57%
  |                                                                                                                        
  |==================================================================                                                |  58%
  |                                                                                                                        
  |===================================================================                                               |  58%
  |                                                                                                                        
  |===================================================================                                               |  59%
  |                                                                                                                        
  |====================================================================                                              |  59%
  |                                                                                                                        
  |====================================================================                                              |  60%
  |                                                                                                                        
  |=====================================================================                                             |  60%
  |                                                                                                                        
  |=====================================================================                                             |  61%
  |                                                                                                                        
  |======================================================================                                            |  61%
  |                                                                                                                        
  |======================================================================                                            |  62%
  |                                                                                                                        
  |=======================================================================                                           |  62%
  |                                                                                                                        
  |=======================================================================                                           |  63%
  |                                                                                                                        
  |========================================================================                                          |  63%
  |                                                                                                                        
  |========================================================================                                          |  64%
  |                                                                                                                        
  |=========================================================================                                         |  64%
  |                                                                                                                        
  |==========================================================================                                        |  64%
  |                                                                                                                        
  |==========================================================================                                        |  65%
  |                                                                                                                        
  |===========================================================================                                       |  65%
  |                                                                                                                        
  |===========================================================================                                       |  66%
  |                                                                                                                        
  |============================================================================                                      |  66%
  |                                                                                                                        
  |============================================================================                                      |  67%
  |                                                                                                                        
  |=============================================================================                                     |  67%
  |                                                                                                                        
  |=============================================================================                                     |  68%
  |                                                                                                                        
  |==============================================================================                                    |  68%
  |                                                                                                                        
  |==============================================================================                                    |  69%
  |                                                                                                                        
  |===============================================================================                                   |  69%
  |                                                                                                                        
  |===============================================================================                                   |  70%
  |                                                                                                                        
  |================================================================================                                  |  70%
  |                                                                                                                        
  |================================================================================                                  |  71%
  |                                                                                                                        
  |=================================================================================                                 |  71%
  |                                                                                                                        
  |==================================================================================                                |  72%
  |                                                                                                                        
  |===================================================================================                               |  72%
  |                                                                                                                        
  |===================================================================================                               |  73%
  |                                                                                                                        
  |====================================================================================                              |  73%
  |                                                                                                                        
  |====================================================================================                              |  74%
  |                                                                                                                        
  |=====================================================================================                             |  74%
  |                                                                                                                        
  |=====================================================================================                             |  75%
  |                                                                                                                        
  |======================================================================================                            |  75%
  |                                                                                                                        
  |======================================================================================                            |  76%
  |                                                                                                                        
  |=======================================================================================                           |  76%
  |                                                                                                                        
  |=======================================================================================                           |  77%
  |                                                                                                                        
  |========================================================================================                          |  77%
  |                                                                                                                        
  |========================================================================================                          |  78%
  |                                                                                                                        
  |=========================================================================================                         |  78%
  |                                                                                                                        
  |==========================================================================================                        |  79%
  |                                                                                                                        
  |===========================================================================================                       |  79%
  |                                                                                                                        
  |===========================================================================================                       |  80%
  |                                                                                                                        
  |============================================================================================                      |  80%
  |                                                                                                                        
  |============================================================================================                      |  81%
  |                                                                                                                        
  |=============================================================================================                     |  81%
  |                                                                                                                        
  |=============================================================================================                     |  82%
  |                                                                                                                        
  |==============================================================================================                    |  82%
  |                                                                                                                        
  |==============================================================================================                    |  83%
  |                                                                                                                        
  |===============================================================================================                   |  83%
  |                                                                                                                        
  |===============================================================================================                   |  84%
  |                                                                                                                        
  |================================================================================================                  |  84%
  |                                                                                                                        
  |================================================================================================                  |  85%
  |                                                                                                                        
  |=================================================================================================                 |  85%
  |                                                                                                                        
  |=================================================================================================                 |  86%
  |                                                                                                                        
  |==================================================================================================                |  86%
  |                                                                                                                        
  |===================================================================================================               |  86%
  |                                                                                                                        
  |===================================================================================================               |  87%
  |                                                                                                                        
  |====================================================================================================              |  87%
  |                                                                                                                        
  |====================================================================================================              |  88%
  |                                                                                                                        
  |=====================================================================================================             |  88%
  |                                                                                                                        
  |=====================================================================================================             |  89%
  |                                                                                                                        
  |======================================================================================================            |  89%
  |                                                                                                                        
  |======================================================================================================            |  90%
  |                                                                                                                        
  |=======================================================================================================           |  90%
  |                                                                                                                        
  |=======================================================================================================           |  91%
  |                                                                                                                        
  |========================================================================================================          |  91%
  |                                                                                                                        
  |========================================================================================================          |  92%
  |                                                                                                                        
  |=========================================================================================================         |  92%
  |                                                                                                                        
  |=========================================================================================================         |  93%
  |                                                                                                                        
  |==========================================================================================================        |  93%
  |                                                                                                                        
  |===========================================================================================================       |  93%
  |                                                                                                                        
  |===========================================================================================================       |  94%
  |                                                                                                                        
  |============================================================================================================      |  94%
  |                                                                                                                        
  |============================================================================================================      |  95%
  |                                                                                                                        
  |=============================================================================================================     |  95%
  |                                                                                                                        
  |=============================================================================================================     |  96%
  |                                                                                                                        
  |==============================================================================================================    |  96%
  |                                                                                                                        
  |==============================================================================================================    |  97%
  |                                                                                                                        
  |===============================================================================================================   |  97%
  |                                                                                                                        
  |===============================================================================================================   |  98%
  |                                                                                                                        
  |================================================================================================================  |  98%
  |                                                                                                                        
  |================================================================================================================  |  99%
  |                                                                                                                        
  |================================================================================================================= |  99%
  |                                                                                                                        
  |================================================================================================================= | 100%
  |                                                                                                                        
  |==================================================================================================================| 100%
Centering and scaling data matrix

  |                                                                                                                        
  |                                                                                                                  |   0%
  |                                                                                                                        
  |============================                                                                                      |  25%
  |                                                                                                                        
  |=========================================================                                                         |  50%
  |                                                                                                                        
  |======================================================================================                            |  75%
  |                                                                                                                        
  |==================================================================================================================| 100%
Place corrected count matrix in counts slot
Set default assay to SCT
                                      

5. Perform PCA


Variables_genes <- L5@assays$SCT@var.features

# Exclude genes starting with "HLA-" AND "Xist" AND "TRBV, TRAV"
Variables_genes_after_exclusion <- Variables_genes[!grepl("^HLA-|^XIST|^TRBV|^TRAV", Variables_genes)]


# These are now standard steps in the Seurat workflow for visualization and clustering
L5 <- RunPCA(L5,
             features = Variables_genes_after_exclusion,
             do.print = TRUE, 
             pcs.print = 1:5, 
             genes.print = 15,
             npcs = 50)
PC_ 1 
Positive:  MALAT1, LGALS1, RPL35A, S100A6, ANXA5, CRIP1, RPS23, HINT1, TMSB4X, HPGD 
       KLF2, CD70, PIM2, RPS14, AHNAK, ITM2B, LGALS3, NEAT1, TMSB10, S1PR4 
       RACK1, S100A4, ITGA4, VIM, SUB1, SERP1, S100P, TNFSF10, AC097518.2, TNFRSF18 
Negative:  C1QBP, EIF5A, RPL26, EIF4A1, BATF3, GSTP1, CYC1, TPRG1, PFN1, MGST3 
       PDE4DIP, ALOX5AP, LTB, NAA38, C1orf162, HSPD1, YWHAE, PRDX1, HSP90B1, TXNDC17 
       NUDT8, SLC35F3, HMGN5, CCT6A, DNAJC5B, TRAP1, HSP90AB1, EMC6, PPID, PSMB6 
PC_ 2 
Positive:  B2M, S100A11, PFN1, RNASEK, IL32, S100A6, IL2RG, LSP1, GABARAP, FXYD5 
       GSTP1, CYBA, S100A10, LY6E, TMSB10, LGALS1, S1PR4, CD3D, EMP3, C12orf75 
       DDIT4, ACADVL, TAGLN2, S100A4, S100P, RPL26, LIME1, ARPC1B, OSTF1, RHOC 
Negative:  NPM1, RPL35A, HNRNPAB, NME1, RPL37, NME2, RPS23, RPS14, RPL23, HSPA9 
       NCL, CCT5, HSP90AB1, PABPC1, RACK1, DANCR, JPT1, RPL38, NDUFAF8, CANX 
       MBNL1, SLC7A11-AS1, CENPX, EIF4G1, AC097518.2, HSPE1, ODC1, NOP16, PHB, KPNB1 
PC_ 3 
Positive:  PMAIP1, CCR7, HERC5, OASL, IFIT2, ZC3HAV1, IFIT3, SPAG9, ISG15, TRAF1 
       CCL5, TNFAIP3, DENND4A, PARP14, PELI1, UBE2Z, NCF2, TNFSF9, CXCL10, SAR1A 
       GRAMD1B, GAS5, CAMK4, PLCG2, IFIH1, FAM162A, CSAG3, CITED2, ANKRD33B, TP63 
Negative:  H3F3A, KLF2, TUBA1B, TUBA4A, S1PR4, ARHGDIB, IL32, SLC9A3R1, S100A4, HPGD 
       HMGB1, RPL17, H2AFZ, MRPS12, S100P, NQO1, IFITM2, CORO1A, TNFRSF18, GMFG 
       MT-CO3, PSMB8, STMN1, IFITM1, CRIP1, UBE2S, CD320, H2AFX, RASGRP2, CALM1 
PC_ 4 
Positive:  ISG15, PPA1, OASL, CDC20, IFIT3, DNAJA1, ZBTB32, CCL5, DYNLL1, LTA 
       HERC5, IFIT2, HSPA8, SAR1A, CSAG3, PRDX1, PRR13, CCNB1, TNFSF9, NOP16 
       CD70, CXCL10, PMAIP1, CCR7, JPT1, DHX58, HSPA5, IL4I1, ZC3HAV1, TNF 
Negative:  HIST1H1E, HIST1H4C, HIST1H1B, HIST1H1C, MKI67, MTHFD2, HIST1H1A, RRM2, PSAT1, HIST1H1D 
       SMC1A, ATAD2, CEP128, AARS, PRKDC, MYH9, MT-ND6, TOP2A, CTH, GARS 
       NSD2, RDH10, TYMS, NEIL3, HIST1H2AE, PTPRR, SLC7A11, LMNB1, LRMP, HIST1H2AL 
PC_ 5 
Positive:  HIST1H4C, HERC5, IFIT3, IFIT2, OASL, ISG15, HIST1H1E, H2AFZ, RRM2, WARS 
       CTH, RHEBL1, PMAIP1, PSAT1, HIST1H1B, ZC3HAV1, NCF2, UBE2Z, ZBTB32, MTHFD2 
       HIST1H1C, CCL5, CHAC1, PKMYT1, DHX58, CD74, PCK2, H2AFX, CD70, PARP14 
Negative:  SLC2A3, ANKRD37, LDHA, BNIP3, PGK1, HSPA8, PLIN2, GPI, KIF2A, DEGS1 
       MIF, CDC20, UBE2S, GDE1, C4orf3, HILPDA, BNIP3L, PRELID3B, GLUL, PGAM1 
       ENO1, HIF1A-AS3, PRDM1, TPI1, TNFRSF11A, AK4, IRF4, FABP5, CYTIP, CCP110 
# determine dimensionality of the data
ElbowPlot(L5, ndims =50)

NA
NA

Perform PCA TEST



library(ggplot2)
library(RColorBrewer)  

# Assuming you have 10 different cell lines, generating a color palette with 10 colors
cell_line_colors <- brewer.pal(10, "Set3")

# Assuming L5$cell_line is a factor or character vector containing cell line names
data <- as.data.frame(table(L5$cell_line))
colnames(data) <- c("cell_line", "nUMI")  # Change column name to nUMI

ncells <- ggplot(data, aes(x = cell_line, y = nUMI, fill = cell_line)) + 
  geom_col() +
  theme_classic() +
  geom_text(aes(label = nUMI), 
            position = position_dodge(width = 0.9), 
            vjust = -0.25) +
  scale_fill_manual(values = cell_line_colors) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.title = element_text(hjust = 0.5)) +  # Adjust the title position
  ggtitle("Filtered cells per sample") +
  xlab("Cell lines") +  # Adjust x-axis label
  ylab("Frequency")    # Adjust y-axis label

print(ncells)




# TEST-1
# given that the output of RunPCA is "pca"
# replace "so" by the name of your seurat object

pct <- L5[["pca"]]@stdev / sum(L5[["pca"]]@stdev) * 100
cumu <- cumsum(pct) # Calculate cumulative percents for each PC
# Determine the difference between variation of PC and subsequent PC
co2 <- sort(which((pct[-length(pct)] - pct[-1]) > 0.1), decreasing = T)[1] + 1
# last point where change of % of variation is more than 0.1%. -> co2
co2
[1] 16
# TEST-2
# get significant PCs
stdv <- L5[["pca"]]@stdev
sum.stdv <- sum(L5[["pca"]]@stdev)
percent.stdv <- (stdv / sum.stdv) * 100
cumulative <- cumsum(percent.stdv)
co1 <- which(cumulative > 90 & percent.stdv < 5)[1]
co2 <- sort(which((percent.stdv[1:length(percent.stdv) - 1] - 
                       percent.stdv[2:length(percent.stdv)]) > 0.1), 
              decreasing = T)[1] + 1
min.pc <- min(co1, co2)
min.pc
[1] 16
# Create a dataframe with values
plot_df <- data.frame(pct = percent.stdv, 
           cumu = cumulative, 
           rank = 1:length(percent.stdv))

# Elbow plot to visualize 
  ggplot(plot_df, aes(cumulative, percent.stdv, label = rank, color = rank > min.pc)) + 
  geom_text() + 
  geom_vline(xintercept = 90, color = "grey") + 
  geom_hline(yintercept = min(percent.stdv[percent.stdv > 5]), color = "grey") +
  theme_bw()

NA
NA
NA

6. Clustering

L5 <- FindNeighbors(L5, 
                    dims = 1:min.pc, 
                    verbose = FALSE)

# understanding resolution
L5 <- FindClusters(L5, 
                  resolution = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 
                                0.7,0.8, 0.9, 1, 1.1, 1.2))
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9374
Number of communities: 4
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.9031
Number of communities: 5
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8795
Number of communities: 7
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8603
Number of communities: 8
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8433
Number of communities: 8
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8264
Number of communities: 8
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.8111
Number of communities: 10
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7987
Number of communities: 12
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7886
Number of communities: 11
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7786
Number of communities: 12
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7702
Number of communities: 14
Elapsed time: 0 seconds
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 6022
Number of edges: 209855

Running Louvain algorithm...
0%   10   20   30   40   50   60   70   80   90   100%
[----|----|----|----|----|----|----|----|----|----|
**************************************************|
Maximum modularity in 10 random starts: 0.7618
Number of communities: 15
Elapsed time: 0 seconds

# non-linear dimensionality reduction --------------
L5 <- RunUMAP(L5, 
              dims = 1:min.pc,
              verbose = FALSE)
Avis : The default method for RunUMAP has changed from calling Python UMAP via reticulate to the R-native UWOT using the cosine metric
To use Python UMAP via reticulate, set umap.method to 'umap-learn' and metric to 'correlation'
This message will be shown once per session
                                  

# note that you can set `label = TRUE` or use the Label Clusters function to help label
# individual clusters
DimPlot(L5,group.by = "cell_line", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)



DimPlot(L5,
        group.by = "SCT_snn_res.0.1", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)


DimPlot(L5,
        group.by = "SCT_snn_res.0.2", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)


DimPlot(L5,
        group.by = "SCT_snn_res.0.3", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)


DimPlot(L5,
        group.by = "SCT_snn_res.0.4", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)



DimPlot(L5,
        group.by = "SCT_snn_res.0.5", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)


DimPlot(L5,
        group.by = "SCT_snn_res.0.6", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)


DimPlot(L5,
        group.by = "SCT_snn_res.0.7", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)


DimPlot(L5,
        group.by = "SCT_snn_res.0.8", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)

DimPlot(L5,
        group.by = "SCT_snn_res.0.9", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)

DimPlot(L5,
        group.by = "SCT_snn_res.1", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)

DimPlot(L5,
        group.by = "SCT_snn_res.1.1", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)

DimPlot(L5,
        group.by = "SCT_snn_res.1.2", 
        reduction = "umap",
        label.size = 3,
        repel = T,
        label = T, label.box = T)

7. clusTree

library(clustree)

clustree(L5, prefix = "SCT_snn_res.")

8. Save the Seurat object as an RDS-L5


saveRDS(L5, file = "../0-RDS_Cell_lines/L5_clustered.rds")
LS0tCnRpdGxlOiAiQ2VsbCBMaW5lIEw1IEFuYWx5c2lzLVJlY2x1c3RlcmluZyIKYXV0aG9yOiBOYXNpciBNYWhtb29kIEFiYmFzaQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDoKICAjIHBkZl9kb2N1bWVudDogZGVmYXVsdAogICMgd29yZF9kb2N1bWVudDogZGVmYXVsdAogICMgaHRtbF9kb2N1bWVudDogZGVmYXVsdAogICNybWRmb3JtYXRzOjpyZWFkdGhlZG93bgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogdHJ1ZQotLS0KCgojIDEuIGxvYWQgbGlicmFyaWVzCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQoKbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoU2V1cmF0T2JqZWN0KQpsaWJyYXJ5KFNldXJhdERhdGEpCmxpYnJhcnkocGF0Y2h3b3JrKQoKbGlicmFyeShkcGx5cikKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KFJDb2xvckJyZXdlcikKbGlicmFyeShtYWdyaXR0cikKbGlicmFyeShkYnBseXIpCmxpYnJhcnkocm1hcmtkb3duKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHRpbnl0ZXgpCiNBemltdXRoIEFubm90YXRpb24gbGlicmFyaWVzCmxpYnJhcnkoQXppbXV0aCkKI1Byb2plY1RpbHMgQW5ub3RhdGlvbiBsaWJyYXJpZXMKbGlicmFyeShTVEFDQVMpCmxpYnJhcnkoUHJvamVjVElMcykKI3NpbmdsZVIgQW5ub3RhdGlvbiBsaWJyYXJpZXMKbGlicmFyeShTaW5nbGVSKQpsaWJyYXJ5KGNlbGxkZXgpCmxpYnJhcnkoU2luZ2xlQ2VsbEV4cGVyaW1lbnQpCgpgYGAKIyAyLiBsb2FkIHNldXJhdCBvYmplY3QKYGBge3IgbG9hZF9zZXVyYXR9CgpBbGxfc2FtcGxlc19NZXJnZWQgPC0gcmVhZFJEUygiL2hvbWUvbmFiYmFzaS9pc2lsb24vUEhEXzNyZF9ZRUFSX0FuYWx5c2lzLzAtU2V1cmF0X1JEU19PQkpFQ1RfRklOQUwvQWxsX3NhbXBsZXNfTWVyZ2VkX0hhcm1vbnlfaW50ZWdyYXRlZF9DZWxsX2xpbmVfcmVuYW1lZF8wMy0wNy0yMDI1LnJkcyIpCgoKCmBgYAoKIyMgU3Vic2V0IEw1IGZyb20gTWVyZ2VkIE9iamVjdApgYGB7cn0KCiMgQXNzdW1pbmcgQWxsX3NhbXBsZXNfTWVyZ2VkIGlzIGFscmVhZHkgbG9hZGVkCkw1IDwtIHN1YnNldChBbGxfc2FtcGxlc19NZXJnZWQsIHN1YnNldCA9IGNlbGxfbGluZSA9PSAiTDUiKQoKTDUKCnJtKEFsbF9zYW1wbGVzX01lcmdlZCkKZ2MoKQpgYGAKCgojIDMuIFFDCmBgYHtyIFFDLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xMH0KIyBTZXQgaWRlbnRpdHkgY2xhc3NlcyB0byBhbiBleGlzdGluZyBjb2x1bW4gaW4gbWV0YSBkYXRhCklkZW50cyhvYmplY3QgPSBMNSkgPC0gImNlbGxfbGluZSIKCkw1W1sicGVyY2VudC5yYiJdXSA8LSBQZXJjZW50YWdlRmVhdHVyZVNldChMNSwgcGF0dGVybiA9ICJeUlBbU0xdIikKVmxuUGxvdChMNSwgZmVhdHVyZXMgPSBjKCJuRmVhdHVyZV9STkEiLCAibkNvdW50X1JOQSIsICJwZXJjZW50Lm10IiwgInBlcmNlbnQucmIiKSwKICAgICAgICBwdC5zaXplID0gMC4xLCBuY29sID0gNCkgJiB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCkpCgpGZWF0dXJlU2NhdHRlcihMNSwgZmVhdHVyZTEgPSAibkNvdW50X1JOQSIsIGZlYXR1cmUyID0gInBlcmNlbnQubXQiKSArIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpCkZlYXR1cmVTY2F0dGVyKEw1LCBmZWF0dXJlMSA9ICJuQ291bnRfUk5BIiwgZmVhdHVyZTIgPSAibkZlYXR1cmVfUk5BIikgKyBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iKQoKYGBgCgojIyBBc3NpZ24gQ2VsbC1DeWNsZSBTY29yZXMKYGBge3IgUmVncmVzcywgZWNobz1GQUxTRSwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CgojcmVtb3Rlczo6aW5zdGFsbF92ZXJzaW9uKCJtYXRyaXhTdGF0cyIsIHZlcnNpb249IjEuMS4wIikgKGlmIHlvdSBhcmUgcnVubmluZyBSIHNlcnZlciB1c2UgdGhpcyBmaXJzdCkKTDUgPC0gU0NUcmFuc2Zvcm0oTDUsIGRvLnNjYWxlPUZBTFNFLCBkby5jZW50ZXI9RkFMU0UpCgoKIyBBIGxpc3Qgb2YgY2VsbCBjeWNsZSBtYXJrZXJzLCBmcm9tIFRpcm9zaCBldCBhbCwgMjAxNSwgaXMgbG9hZGVkIHdpdGggU2V1cmF0LiAgV2UgY2FuCiMgc2VncmVnYXRlIHRoaXMgbGlzdCBpbnRvIG1hcmtlcnMgb2YgRzIvTSBwaGFzZSBhbmQgbWFya2VycyBvZiBTIHBoYXNlCnMuZ2VuZXMgPC0gY2MuZ2VuZXMkcy5nZW5lcwpnMm0uZ2VuZXMgPC0gY2MuZ2VuZXMkZzJtLmdlbmVzCgoKTDUgPC0gQ2VsbEN5Y2xlU2NvcmluZyhMNSwgcy5mZWF0dXJlcyA9IHMuZ2VuZXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBnMm0uZmVhdHVyZXMgPSBnMm0uZ2VuZXMsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQuaWRlbnQgPSBUUlVFKQoKRGVmYXVsdEFzc2F5KEw1KSA8LSAiUk5BIgoKTDUkQ0MuRGlmZmVyZW5jZSA8LSBMNSRTLlNjb3JlIC0gTDUkRzJNLlNjb3JlCgpgYGAKCiMgNC4gTm9ybWFsaXplIGRhdGEKYGBge3J9CgoKIyBBcHBseSBTQ1RyYW5zZm9ybQpMNSA8LSBTQ1RyYW5zZm9ybShMNSwgdmFycy50by5yZWdyZXNzID0gYygicGVyY2VudC5yYiIsInBlcmNlbnQubXQiLCAiQ0MuRGlmZmVyZW5jZSIpLCAKICAgICAgICAgICAgICAgICAgZG8uc2NhbGU9VFJVRSwgCiAgICAgICAgICAgICAgICAgIGRvLmNlbnRlcj1UUlVFLCAKICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IFRSVUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmBgYAoKCiMgNS4gUGVyZm9ybSBQQ0EKYGBge3IgUENBLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD02fQoKVmFyaWFibGVzX2dlbmVzIDwtIEw1QGFzc2F5cyRTQ1RAdmFyLmZlYXR1cmVzCgojIEV4Y2x1ZGUgZ2VuZXMgc3RhcnRpbmcgd2l0aCAiSExBLSIgQU5EICJYaXN0IiBBTkQgIlRSQlYsIFRSQVYiClZhcmlhYmxlc19nZW5lc19hZnRlcl9leGNsdXNpb24gPC0gVmFyaWFibGVzX2dlbmVzWyFncmVwbCgiXkhMQS18XlhJU1R8XlRSQlZ8XlRSQVYiLCBWYXJpYWJsZXNfZ2VuZXMpXQoKCiMgVGhlc2UgYXJlIG5vdyBzdGFuZGFyZCBzdGVwcyBpbiB0aGUgU2V1cmF0IHdvcmtmbG93IGZvciB2aXN1YWxpemF0aW9uIGFuZCBjbHVzdGVyaW5nCkw1IDwtIFJ1blBDQShMNSwKICAgICAgICAgICAgIGZlYXR1cmVzID0gVmFyaWFibGVzX2dlbmVzX2FmdGVyX2V4Y2x1c2lvbiwKICAgICAgICAgICAgIGRvLnByaW50ID0gVFJVRSwgCiAgICAgICAgICAgICBwY3MucHJpbnQgPSAxOjUsIAogICAgICAgICAgICAgZ2VuZXMucHJpbnQgPSAxNSwKICAgICAgICAgICAgIG5wY3MgPSA1MCkKCiMgZGV0ZXJtaW5lIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSBkYXRhCkVsYm93UGxvdChMNSwgbmRpbXMgPTUwKQoKCmBgYAojIFBlcmZvcm0gUENBIFRFU1QKYGBge3IgUENBLVRFU1QsIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTEwfQoKCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShSQ29sb3JCcmV3ZXIpICAKCiMgQXNzdW1pbmcgeW91IGhhdmUgMTAgZGlmZmVyZW50IGNlbGwgbGluZXMsIGdlbmVyYXRpbmcgYSBjb2xvciBwYWxldHRlIHdpdGggMTAgY29sb3JzCmNlbGxfbGluZV9jb2xvcnMgPC0gYnJld2VyLnBhbCgxMCwgIlNldDMiKQoKIyBBc3N1bWluZyBMNSRjZWxsX2xpbmUgaXMgYSBmYWN0b3Igb3IgY2hhcmFjdGVyIHZlY3RvciBjb250YWluaW5nIGNlbGwgbGluZSBuYW1lcwpkYXRhIDwtIGFzLmRhdGEuZnJhbWUodGFibGUoTDUkY2VsbF9saW5lKSkKY29sbmFtZXMoZGF0YSkgPC0gYygiY2VsbF9saW5lIiwgIm5VTUkiKSAgIyBDaGFuZ2UgY29sdW1uIG5hbWUgdG8gblVNSQoKbmNlbGxzIDwtIGdncGxvdChkYXRhLCBhZXMoeCA9IGNlbGxfbGluZSwgeSA9IG5VTUksIGZpbGwgPSBjZWxsX2xpbmUpKSArIAogIGdlb21fY29sKCkgKwogIHRoZW1lX2NsYXNzaWMoKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IG5VTUkpLCAKICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuOSksIAogICAgICAgICAgICB2anVzdCA9IC0wLjI1KSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY2VsbF9saW5lX2NvbG9ycykgKyAKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpLAogICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKSArICAjIEFkanVzdCB0aGUgdGl0bGUgcG9zaXRpb24KICBnZ3RpdGxlKCJGaWx0ZXJlZCBjZWxscyBwZXIgc2FtcGxlIikgKwogIHhsYWIoIkNlbGwgbGluZXMiKSArICAjIEFkanVzdCB4LWF4aXMgbGFiZWwKICB5bGFiKCJGcmVxdWVuY3kiKSAgICAjIEFkanVzdCB5LWF4aXMgbGFiZWwKCnByaW50KG5jZWxscykKCgoKIyBURVNULTEKIyBnaXZlbiB0aGF0IHRoZSBvdXRwdXQgb2YgUnVuUENBIGlzICJwY2EiCiMgcmVwbGFjZSAic28iIGJ5IHRoZSBuYW1lIG9mIHlvdXIgc2V1cmF0IG9iamVjdAoKcGN0IDwtIEw1W1sicGNhIl1dQHN0ZGV2IC8gc3VtKEw1W1sicGNhIl1dQHN0ZGV2KSAqIDEwMApjdW11IDwtIGN1bXN1bShwY3QpICMgQ2FsY3VsYXRlIGN1bXVsYXRpdmUgcGVyY2VudHMgZm9yIGVhY2ggUEMKIyBEZXRlcm1pbmUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB2YXJpYXRpb24gb2YgUEMgYW5kIHN1YnNlcXVlbnQgUEMKY28yIDwtIHNvcnQod2hpY2goKHBjdFstbGVuZ3RoKHBjdCldIC0gcGN0Wy0xXSkgPiAwLjEpLCBkZWNyZWFzaW5nID0gVClbMV0gKyAxCiMgbGFzdCBwb2ludCB3aGVyZSBjaGFuZ2Ugb2YgJSBvZiB2YXJpYXRpb24gaXMgbW9yZSB0aGFuIDAuMSUuIC0+IGNvMgpjbzIKCiMgVEVTVC0yCiMgZ2V0IHNpZ25pZmljYW50IFBDcwpzdGR2IDwtIEw1W1sicGNhIl1dQHN0ZGV2CnN1bS5zdGR2IDwtIHN1bShMNVtbInBjYSJdXUBzdGRldikKcGVyY2VudC5zdGR2IDwtIChzdGR2IC8gc3VtLnN0ZHYpICogMTAwCmN1bXVsYXRpdmUgPC0gY3Vtc3VtKHBlcmNlbnQuc3RkdikKY28xIDwtIHdoaWNoKGN1bXVsYXRpdmUgPiA5MCAmIHBlcmNlbnQuc3RkdiA8IDUpWzFdCmNvMiA8LSBzb3J0KHdoaWNoKChwZXJjZW50LnN0ZHZbMTpsZW5ndGgocGVyY2VudC5zdGR2KSAtIDFdIC0gCiAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudC5zdGR2WzI6bGVuZ3RoKHBlcmNlbnQuc3RkdildKSA+IDAuMSksIAogICAgICAgICAgICAgIGRlY3JlYXNpbmcgPSBUKVsxXSArIDEKbWluLnBjIDwtIG1pbihjbzEsIGNvMikKbWluLnBjCgojIENyZWF0ZSBhIGRhdGFmcmFtZSB3aXRoIHZhbHVlcwpwbG90X2RmIDwtIGRhdGEuZnJhbWUocGN0ID0gcGVyY2VudC5zdGR2LCAKICAgICAgICAgICBjdW11ID0gY3VtdWxhdGl2ZSwgCiAgICAgICAgICAgcmFuayA9IDE6bGVuZ3RoKHBlcmNlbnQuc3RkdikpCgojIEVsYm93IHBsb3QgdG8gdmlzdWFsaXplIAogIGdncGxvdChwbG90X2RmLCBhZXMoY3VtdWxhdGl2ZSwgcGVyY2VudC5zdGR2LCBsYWJlbCA9IHJhbmssIGNvbG9yID0gcmFuayA+IG1pbi5wYykpICsgCiAgZ2VvbV90ZXh0KCkgKyAKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSA5MCwgY29sb3IgPSAiZ3JleSIpICsgCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gbWluKHBlcmNlbnQuc3RkdltwZXJjZW50LnN0ZHYgPiA1XSksIGNvbG9yID0gImdyZXkiKSArCiAgdGhlbWVfYncoKQoKICAKCmBgYAoKIyA2LiBDbHVzdGVyaW5nCmBgYHtyIEMxLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD02fQpMNSA8LSBGaW5kTmVpZ2hib3JzKEw1LCAKICAgICAgICAgICAgICAgICAgICBkaW1zID0gMTptaW4ucGMsIAogICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBGQUxTRSkKCiMgdW5kZXJzdGFuZGluZyByZXNvbHV0aW9uCkw1IDwtIEZpbmRDbHVzdGVycyhMNSwgCiAgICAgICAgICAgICAgICAgIHJlc29sdXRpb24gPSBjKDAuMSwgMC4yLCAwLjMsIDAuNCwgMC41LCAwLjYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNywwLjgsIDAuOSwgMSwgMS4xLCAxLjIpKQoKCmBgYAoKCmBgYHtyIEMyLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD02fQoKIyBub24tbGluZWFyIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiAtLS0tLS0tLS0tLS0tLQpMNSA8LSBSdW5VTUFQKEw1LCAKICAgICAgICAgICAgICBkaW1zID0gMTptaW4ucGMsCiAgICAgICAgICAgICAgdmVyYm9zZSA9IEZBTFNFKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgojIG5vdGUgdGhhdCB5b3UgY2FuIHNldCBgbGFiZWwgPSBUUlVFYCBvciB1c2UgdGhlIExhYmVsIENsdXN0ZXJzIGZ1bmN0aW9uIHRvIGhlbHAgbGFiZWwKIyBpbmRpdmlkdWFsIGNsdXN0ZXJzCkRpbVBsb3QoTDUsZ3JvdXAuYnkgPSAiY2VsbF9saW5lIiwgCiAgICAgICAgcmVkdWN0aW9uID0gInVtYXAiLAogICAgICAgIGxhYmVsLnNpemUgPSAzLAogICAgICAgIHJlcGVsID0gVCwKICAgICAgICBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQpCgoKRGltUGxvdChMNSwKICAgICAgICBncm91cC5ieSA9ICJTQ1Rfc25uX3Jlcy4wLjEiLCAKICAgICAgICByZWR1Y3Rpb24gPSAidW1hcCIsCiAgICAgICAgbGFiZWwuc2l6ZSA9IDMsCiAgICAgICAgcmVwZWwgPSBULAogICAgICAgIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKCkRpbVBsb3QoTDUsCiAgICAgICAgZ3JvdXAuYnkgPSAiU0NUX3Nubl9yZXMuMC4yIiwgCiAgICAgICAgcmVkdWN0aW9uID0gInVtYXAiLAogICAgICAgIGxhYmVsLnNpemUgPSAzLAogICAgICAgIHJlcGVsID0gVCwKICAgICAgICBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQpCgpEaW1QbG90KEw1LAogICAgICAgIGdyb3VwLmJ5ID0gIlNDVF9zbm5fcmVzLjAuMyIsIAogICAgICAgIHJlZHVjdGlvbiA9ICJ1bWFwIiwKICAgICAgICBsYWJlbC5zaXplID0gMywKICAgICAgICByZXBlbCA9IFQsCiAgICAgICAgbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBUKQoKRGltUGxvdChMNSwKICAgICAgICBncm91cC5ieSA9ICJTQ1Rfc25uX3Jlcy4wLjQiLCAKICAgICAgICByZWR1Y3Rpb24gPSAidW1hcCIsCiAgICAgICAgbGFiZWwuc2l6ZSA9IDMsCiAgICAgICAgcmVwZWwgPSBULAogICAgICAgIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKCgpEaW1QbG90KEw1LAogICAgICAgIGdyb3VwLmJ5ID0gIlNDVF9zbm5fcmVzLjAuNSIsIAogICAgICAgIHJlZHVjdGlvbiA9ICJ1bWFwIiwKICAgICAgICBsYWJlbC5zaXplID0gMywKICAgICAgICByZXBlbCA9IFQsCiAgICAgICAgbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBUKQoKRGltUGxvdChMNSwKICAgICAgICBncm91cC5ieSA9ICJTQ1Rfc25uX3Jlcy4wLjYiLCAKICAgICAgICByZWR1Y3Rpb24gPSAidW1hcCIsCiAgICAgICAgbGFiZWwuc2l6ZSA9IDMsCiAgICAgICAgcmVwZWwgPSBULAogICAgICAgIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKCkRpbVBsb3QoTDUsCiAgICAgICAgZ3JvdXAuYnkgPSAiU0NUX3Nubl9yZXMuMC43IiwgCiAgICAgICAgcmVkdWN0aW9uID0gInVtYXAiLAogICAgICAgIGxhYmVsLnNpemUgPSAzLAogICAgICAgIHJlcGVsID0gVCwKICAgICAgICBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQpCgpEaW1QbG90KEw1LAogICAgICAgIGdyb3VwLmJ5ID0gIlNDVF9zbm5fcmVzLjAuOCIsIAogICAgICAgIHJlZHVjdGlvbiA9ICJ1bWFwIiwKICAgICAgICBsYWJlbC5zaXplID0gMywKICAgICAgICByZXBlbCA9IFQsCiAgICAgICAgbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBUKQpEaW1QbG90KEw1LAogICAgICAgIGdyb3VwLmJ5ID0gIlNDVF9zbm5fcmVzLjAuOSIsIAogICAgICAgIHJlZHVjdGlvbiA9ICJ1bWFwIiwKICAgICAgICBsYWJlbC5zaXplID0gMywKICAgICAgICByZXBlbCA9IFQsCiAgICAgICAgbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBUKQpEaW1QbG90KEw1LAogICAgICAgIGdyb3VwLmJ5ID0gIlNDVF9zbm5fcmVzLjEiLCAKICAgICAgICByZWR1Y3Rpb24gPSAidW1hcCIsCiAgICAgICAgbGFiZWwuc2l6ZSA9IDMsCiAgICAgICAgcmVwZWwgPSBULAogICAgICAgIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKRGltUGxvdChMNSwKICAgICAgICBncm91cC5ieSA9ICJTQ1Rfc25uX3Jlcy4xLjEiLCAKICAgICAgICByZWR1Y3Rpb24gPSAidW1hcCIsCiAgICAgICAgbGFiZWwuc2l6ZSA9IDMsCiAgICAgICAgcmVwZWwgPSBULAogICAgICAgIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKRGltUGxvdChMNSwKICAgICAgICBncm91cC5ieSA9ICJTQ1Rfc25uX3Jlcy4xLjIiLCAKICAgICAgICByZWR1Y3Rpb24gPSAidW1hcCIsCiAgICAgICAgbGFiZWwuc2l6ZSA9IDMsCiAgICAgICAgcmVwZWwgPSBULAogICAgICAgIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKCmBgYAoKIyA3LiBjbHVzVHJlZQpgYGB7ciBjbHVzVHJlZSwgZmlnLmhlaWdodD0xMiwgZmlnLndpZHRoPTEwfQpsaWJyYXJ5KGNsdXN0cmVlKQoKY2x1c3RyZWUoTDUsIHByZWZpeCA9ICJTQ1Rfc25uX3Jlcy4iKQoKYGBgCgojIDguIFNhdmUgdGhlIFNldXJhdCBvYmplY3QgYXMgYW4gUkRTLUw1CmBgYHtyIHNhdmVST0JKLCBlY2hvPVRSVUV9CgpzYXZlUkRTKEw1LCBmaWxlID0gIi4uLzAtUkRTX0NlbGxfbGluZXMvTDVfY2x1c3RlcmVkLnJkcyIpCgoKYGBgCgoKCgoKCgoKCgo=