1. load libraries

2. Load Seurat Object and visualize harmonyintegrated_UMAP


#Load Seurat Object merged from cell lines and a control(PBMC) after filtration
load("../../../0-IMP-OBJECTS/Harmony_integrated_All_samples_Merged_with_PBMC10x.Robj")

All_samples_Merged
An object of class Seurat 
64169 features across 59355 samples within 6 assays 
Active assay: SCT (27417 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
 6 dimensional reductions calculated: integrated_dr, ref.umap, pca, umap, harmony, umap.harmony
DimPlot(All_samples_Merged, reduction = "umap.harmony", group.by = "cell_line",label = T, label.box = T)

3. UMAP visualization and Harmony Integration-1 Visualization



DimPlot(All_samples_Merged, reduction = "umap", group.by = "cell_line", label = T, label.box = T)


DimPlot(All_samples_Merged, reduction = "umap.harmony", group.by = "cell_line",label = T, label.box = T)

Harmony Visualization-2

library(harmony)
library(clustree)
Le chargement a nécessité le package : ggraph

Attachement du package : 'ggraph'

L'objet suivant est masqué depuis 'package:sp':

    geometry
# Ensure the Harmony reduction is present
if (!"harmony" %in% Reductions(All_samples_Merged)) {
  stop("Harmony reduction not found. Please run RunHarmony() first.")
}

# Run clustering using Harmony embeddings
All_samples_Merged <- FindNeighbors(All_samples_Merged, reduction = "harmony", dims = 1:22)
Computing nearest neighbor graph
Registered S3 method overwritten by 'rmarkdown':
  method         from
  print.paged_df     
Computing SNN
# Create a sequence of resolutions from 0.1 to 2 with 0.1 increments
resolutions <- seq(0.1, 2, by = 0.1)

# Loop through the resolutions
for (res in resolutions) {
  # Find clusters for the current resolution using Harmony embeddings
  All_samples_Merged <- FindClusters(All_samples_Merged, resolution = res)
  
  # Create a new column for Harmony-based clustering
  new_col_name <- paste0("Harmony_snn_res.", res)
  All_samples_Merged[[new_col_name]] <- All_samples_Merged$seurat_clusters  # Store cluster results here
  
  # Create the plot for each resolution
  plot <- DimPlot(All_samples_Merged,
                  group.by = new_col_name,
                  reduction = "umap.harmony",
                  label.size = 3,
                  repel = TRUE,
                  label = TRUE,
                  label.box = TRUE) +
          ggtitle(paste("Harmony-based Clustering, Resolution:", res))
  
  # Display the plot directly in the notebook
  print(plot)
}
Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

Number of nodes: 59355
Number of edges: 1882456

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

# Optionally, create a plot for a specific resolution (e.g., 0.5)
seurat_plot <- DimPlot(All_samples_Merged,
                       group.by = "Harmony_snn_res.0.9",
                       reduction = "umap.harmony",
                       label.size = 3,
                       repel = TRUE,
                       label = TRUE,
                       label.box = TRUE) +
                ggtitle("Harmony-based Seurat Clusters (Resolution: 0.9)")

# Display the specific resolution plot
print(seurat_plot)

Harmony Visualization-3


# Combine clusters and cell lines for visualization
All_samples_Merged$Cluster_CellLine <- paste(All_samples_Merged$Harmony_snn_res.0.7, All_samples_Merged$cell_line, sep = "_")

# Plot with combined information
DimPlot(All_samples_Merged, group.by = "Cluster_CellLine", reduction = "umap.harmony", label = TRUE, label.size = 3) +
  ggtitle("Clusters and Cell Lines on UMAP") + theme(legend.position = "none")



# Plot with combined information
DimPlot(All_samples_Merged, group.by = "Cluster_CellLine", reduction = "umap.harmony", label = TRUE, label.size = 3, label.box = T) +
  ggtitle("Clusters and Cell Lines on UMAP") + theme(legend.position = "none")



p1 <- DimPlot(All_samples_Merged, 
              group.by = "Harmony_snn_res.0.7", 
              reduction = "umap.harmony", 
              label = TRUE, 
              repel = TRUE,
              label.box = TRUE,
              pt.size = 0.5) +
  ggtitle("Clusters on UMAP") +
  NoLegend()

p2 <- DimPlot(All_samples_Merged, 
              group.by = "cell_line", 
              reduction = "umap.harmony", 
              label = TRUE, 
              repel = TRUE,
              label.box = TRUE,
              pt.size = 0.5) +
  ggtitle("Cell Lines on UMAP") +
  NoLegend()

# Display plots side by side
p1 | p2


DimPlot(All_samples_Merged,
        group.by = "predicted.celltype.l1",
        reduction = "umap.harmony",
        label.size = 3,
        repel = T, 
        label = T, label.box = T)


DimPlot(All_samples_Merged,
        group.by = "predicted.celltype.l2",
        reduction = "umap.harmony",
        label.size = 3,
        repel = T, 
        label = T, label.box = T)


DimPlot(All_samples_Merged,
        group.by = "predicted.celltype.l3",
        reduction = "umap.harmony",
        label.size = 3,
        repel = T, 
        label = T, label.box = T)

NA
NA
NA
NA
NA

Harmony Visualization-4


# Set identity classes to an existing column in meta data
Idents(object = All_samples_Merged) <- "Harmony_snn_res.0.7"

cluster_table <- table(Idents(All_samples_Merged))


table(All_samples_Merged$predicted.celltype.l2, All_samples_Merged$Harmony_snn_res.0.5)
                   
                        0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17
  ASDC                  0     0     0     0     0     0     3     0     0     0     0     0     0     0     0     0     0     0
  B intermediate        0     1     0     0     0     0     3     0   664     1    17     4     0     2     2     2     0     0
  B memory              7     3     0     7    14     0     3   205   261     0     2     4     0    13     1     2     1     0
  B naive               0     1     0     0     0     0     4     0  1170     1     2    13     0     0     1     0     0     0
  CD14 Mono             3     1     8     0     0    20  2595    39     0     0   814   327     6     0     0     7     3     0
  CD16 Mono             1     0     0     0     0     0     4     0     0     0   120     1     0     0     0     0     0     0
  CD4 CTL               0     0     0     0     0     0     0     0     0    16     0     1     0     0     0     0     0     0
  CD4 Naive             0  1989     0     0     0     0     0     0     7     0     0     6     0     0    40     0     0     1
  CD4 Proliferating 10573     8  4839  6254  5489   412     1   738     2     1     0    23    48   490   132     1     0     0
  CD4 TCM             909  5922   335   115   212  2649    18  1293    65    38    32   398   579    43   256     3     0    11
  CD4 TEM               0    80     0     0     0     1     0     0     0    10     0     3     0     0     0     0     0     0
  CD8 Naive             0  1330     0     0     0     0     0     0     2     1     1    20     1     0    17     0     1     0
  CD8 Proliferating     0     0     0     0     0     0     0     2     0     0     0     0     0     0     0     0     0     0
  CD8 TCM               1   370     9     0     0     0     0     0     2    80     0     6     7     0     1     0     0     1
  CD8 TEM               0    64     6     0     1     0     1     6     1   305     0     0     0     0     7     0     0     0
  cDC1                  0     0     0     0     0     0    13     5     0     0     0     0     0     2     1    21     0     0
  cDC2                  0     0     1     1     2     0   123    45     0     0     1     0     0     3     0    53     0     0
  dnT                   0    31     0     0     0     1     0     7     2     0     3    17     0     0    20     0     0     1
  gdT                   0    15     0     0     0     0     0     0     0    78     0     0     0     0     0     0     0     0
  HSPC                 55     0     0  1429   258     3     6    11     1     1     0     3     6    38     7     4     7     5
  ILC                   0     0     0     0     0     0     0     0     1     4     0     1     0     0     1     0     0     0
  MAIT                  0     9     0     0     0     0     0     0     0   227     0     3     0     0     3     0     0     0
  NK                    0     0     0     0     0     0     0     0     1   523     1     7     0     0     2     0     0     0
  NK Proliferating     24     0  2818    15   254     0     0     6     0     2     0     4     0    11    32     0     1     0
  NK_CD56bright         0     0     0     0     0     0     0     0     0    14     0     0     0     0     2     0     0     0
  pDC                   0     0     0     0     0     0    56     0     0     0     0     0     0     0     0     0     0     0
  Plasmablast           0     0     0     0     0     0     5     0    13     0     0     0     0     0     1     0     0     0
  Platelet              0     0     0     0     0     0     1     0     0     0     1     0     0     0     0     0    30     0
  Treg                  0   258     1     0     0     0     0     9     5     0     0    40     0     0    39     1     0     0
table(All_samples_Merged$predicted.celltype.l2, All_samples_Merged$Harmony_snn_res.0.6)
                   
                        0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18
  ASDC                  0     0     0     0     0     0     0     0     3     0     0     0     0     0     0     0     0     0     0
  B intermediate        0     0     0     0     0     0     1     0     3   664     1    17     4     0     2     2     2     0     0
  B memory              7     1     0     1   219     6     2     0     3   261     0     2     4     0    13     1     2     1     0
  B naive               0     0     0     0     0     0     1     0     4  1170     1     2    13     0     0     1     0     0     0
  CD14 Mono             3     0     8     0    39     0     1    20  2521     0     0   818   397     6     0     0     7     3     0
  CD16 Mono             1     0     0     0     0     0     0     0     4     0     0   120     1     0     0     0     0     0     0
  CD4 CTL               0     0     0     0     0     0     0     0     0     0    16     0     1     0     0     0     0     0     0
  CD4 Naive             0     0     0  1957     0     0    33     0     0     7     0     0     5     0     0    40     0     0     1
  CD4 Proliferating 10573  6721  4472     1  2719  3039     8   775     1     2     1     0    26    48   492   132     1     0     0
  CD4 TCM             913    91   305  2662  1469    55  3257  2674    18    65    47    32   394   583    44   256     2     0    11
  CD4 TEM               0     0     0     6     0     0    68     1     0     0    16     0     3     0     0     0     0     0     0
  CD8 Naive             0     0     0  1316     0     0    13     0     0     2     2     1    20     1     0    17     0     1     0
  CD8 Proliferating     0     0     0     0     2     0     0     0     0     0     0     0     0     0     0     0     0     0     0
  CD8 TCM               1     0     9   128     0     0   221     0     0     2   101     0     6     7     0     1     0     0     1
  CD8 TEM               0     0     6     5     7     0    44     0     1     1   321     0     0     0     0     6     0     0     0
  cDC1                  0     0     0     0     5     0     0     0    13     0     0     0     0     0     2     1    21     0     0
  cDC2                  0     1     1     0    47     0     0     0   121     0     0     1     2     0     3     0    53     0     0
  dnT                   0     0     0     7     7     0    24     1     0     2     0     3    17     0     0    20     0     0     1
  gdT                   0     0     0     9     0     0     6     0     0     0    78     0     0     0     0     0     0     0     0
  HSPC                 55   905     0     0    34   759     0     3     6     1     1     0     3     6    38     7     4     7     5
  ILC                   0     0     0     0     0     0     0     0     0     1     4     0     1     0     0     1     0     0     0
  MAIT                  0     0     0     0     0     0     8     0     0     0   228     0     3     0     0     3     0     0     0
  NK                    0     0     0     0     0     0     0     0     0     1   523     1     7     0     0     2     0     0     0
  NK Proliferating     24   220  2813     0    49     6     0     4     0     0     2     0     5     0    11    32     0     1     0
  NK_CD56bright         0     0     0     0     0     0     0     0     0     0    14     0     0     0     0     2     0     0     0
  pDC                   0     0     0     0     0     0     0     0    56     0     0     0     0     0     0     0     0     0     0
  Plasmablast           0     0     0     0     0     0     0     0     5    13     0     0     0     0     0     1     0     0     0
  Platelet              0     0     0     0     0     0     0     0     1     0     0     1     0     0     0     0     0    30     0
  Treg                  0     0     0    94     9     0   164     0     0     5     0     0    41     0     0    39     1     0     0
table(All_samples_Merged$predicted.celltype.l2, All_samples_Merged$Harmony_snn_res.0.7)
                   
                       0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22
  ASDC                 0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    3    0    0    0
  B intermediate       0    0    0    5    0    0    0    0    0    0    3  664    0    1   17    0    2    2    0    0    0    2    0
  B memory             6    1    0    6    0  219    0    6    1    0    1  261    1    0    2    0   13    1    0    2    0    2    1
  B naive              0    0    0    7    0    0    0    0    0    0    4 1170    0    1    0    0    0    1    7    0    2    0    0
  CD14 Mono            3    0    0   17    0   39    9    0    0   20 2593    0    0    0  809    6    0    0  310    2    5    7    3
  CD16 Mono            1    0    0    0    0    0    0    0    0    0    4    0    0    0   18    0    0    0    1    0  102    0    0
  CD4 CTL              0    0    0    0    0    0    0    0    0    0    0    0    0   16    0    0    0    0    1    0    0    0    0
  CD4 Naive            0 1957    0   37    0    0    0    0    0    0    0    7    0    0    0    0    0   40    1    0    0    0    0
  CD4 Proliferating 8798    1 4328   32 1810 2035 3106 2941 3172  331    1    2 1781    1    0   49  493  129    0    0    0    1    0
  CD4 TCM            827 2658   89 3632    7 1474  339   51    1 2629   18   65   87   47   32  588   42  257   21    0    0    3    0
  CD4 TEM              0    6    0   72    0    0    0    0    0    1    0    0    0   15    0    0    0    0    0    0    0    0    0
  CD8 Naive            0 1316    0   32    0    0    0    0    0    0    0    2    0    1    1    1    0   17    2    0    0    0    1
  CD8 Proliferating    0    0    0    0    0    2    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
  CD8 TCM              1  124    0  248    0    0    9    0    0    0    0    2    0   84    0    7    0    1    0    0    0    0    0
  CD8 TEM              0    5    0   45    1    7    5    0    0    0    1    1    0  320    0    0    0    6    0    0    0    0    0
  cDC1                 0    0    0    0    0    5    0    0    0    0    0    0    0    0    0    0    2    1    0   13    0   21    0
  cDC2                 0    0    1    0    0   47    1    0    0    0   56    0    0    0    0    0    3    0    0   67    1   53    0
  dnT                  0    7    0   41    0    7    0    0    0    1    0    2    0    0    3    0    0   20    0    0    0    0    0
  gdT                  0    9    0    6    0    0    0    0    0    0    0    0    0   78    0    0    0    0    0    0    0    0    0
  HSPC                55    0  808    3    0   40    0  752   97    3    4    1    0    1    0    6   39    7    0    2    0    4    7
  ILC                  0    0    0    1    0    0    0    0    0    0    0    1    0    4    0    0    0    1    0    0    0    0    0
  MAIT                 0    0    0    9    0    0    0    0    0    0    0    0    0  228    0    0    0    3    2    0    0    0    0
  NK                   0    0    0    0    0    0    0    0    0    0    0    1    0  523    1    0    0    2    7    0    0    0    0
  NK Proliferating     9    0   13    5 2401   10  416    6  246    0    0    0   15    2    0    0   11   32    0    0    0    0    1
  NK_CD56bright        0    0    0    0    0    0    0    0    0    0    0    0    0   14    0    0    0    2    0    0    0    0    0
  pDC                  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0   56    0    0    0
  Plasmablast          0    0    0    0    0    0    0    0    0    0    0   13    0    0    0    0    0    1    0    5    0    0    0
  Platelet             0    0    0    0    0    0    0    0    0    0    1    0    0    0    1    0    0    0    0    0    0    0   30
  Treg                 0   94    0  203    0    9    1    0    0    0    0    5    0    0    0    0    0   39    1    0    0    1    0
                   
                      23
  ASDC                 0
  B intermediate       0
  B memory             0
  B naive              0
  CD14 Mono            0
  CD16 Mono            0
  CD4 CTL              0
  CD4 Naive            1
  CD4 Proliferating    0
  CD4 TCM             11
  CD4 TEM              0
  CD8 Naive            0
  CD8 Proliferating    0
  CD8 TCM              1
  CD8 TEM              0
  cDC1                 0
  cDC2                 0
  dnT                  1
  gdT                  0
  HSPC                 5
  ILC                  0
  MAIT                 0
  NK                   0
  NK Proliferating     0
  NK_CD56bright        0
  pDC                  0
  Plasmablast          0
  Platelet             0
  Treg                 0
table(All_samples_Merged$predicted.celltype.l2, All_samples_Merged$Harmony_snn_res.0.8)
                   
                       0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22
  ASDC                 0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    3    0    0    0
  B intermediate       0    0    0    0    0    0    1    0    0    3    0  664    0    1    4   17    0    2    2    0    0    2    0
  B memory             6    1    0    1    7  218    2    0    0    1    0  261    1    0    4    2    0   13    1    2    0    2    1
  B naive              0    0    0    0    0    0    1    0    0    4    0 1170    0    1   13    0    0    0    1    0    2    0    0
  CD14 Mono            3    0    0    0    0   39    1    0   20 2590    9    0    0    0  326  812    6    0    0    2    5    7    3
  CD16 Mono            1    0    0    0    0    0    0    0    0    4    0    0    0    0    1   18    0    0    0    0  102    0    0
  CD4 CTL              0    0    0    0    0    0    0    0    0    0    0    0    0   16    1    0    0    0    0    0    0    0    0
  CD4 Naive            0 1965    0    0    0    0   23    0    0    0    0    7    0    0    7    0    0    0   40    0    0    0    0
  CD4 Proliferating 8955    1 2561 4213 3123 2096    4 3049  395    1 2290    2 1613    1   29    0   50  495  132    0    0    1    0
  CD4 TCM            838 2727   37   74   59 1428 3159   53 2638   18  303   65   75   45  430   32  584   43  256    0    0    3    0
  CD4 TEM              0    6    0    0    0    0   71    0    1    0    0    0    0   13    3    0    0    0    0    0    0    0    0
  CD8 Naive            0 1315    0    0    0    0   13    0    0    0    0    2    0    1   22    1    1    0   17    0    0    0    1
  CD8 Proliferating    0    0    0    0    0    2    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
  CD8 TCM              1  124    0    0    0    0  244    0    0    0    9    2    0   82    6    0    7    0    1    0    0    0    0
  CD8 TEM              0    5    1    0    0    7   55    0    0    1    5    1    0  309    0    0    0    0    7    0    0    0    0
  cDC1                 0    0    0    0    0    5    0    0    0    0    0    0    0    0    0    0    0    2    1   13    0   21    0
  cDC2                 0    0    0    0    0   47    0    1    0   56    1    0    0    0    0    0    0    3    0   67    1   53    0
  dnT                  0    7    0    0    0    7   24    0    1    0    0    2    0    0   17    3    0    0   20    0    0    0    0
  gdT                  0    9    0    0    0    0    6    0    0    0    0    0    0   77    0    0    0    0    1    0    0    0    0
  HSPC                55    0    0  256  782   21    0  639    3    4    0    1    0    1    3    0    6   38    7    2    0    4    7
  ILC                  0    0    0    0    0    0    0    0    0    0    0    1    0    4    1    0    0    0    1    0    0    0    0
  MAIT                 0    1    0    0    0    0    5    0    0    0    0    0    0  230    3    0    0    0    3    0    0    0    0
  NK                   0    0    0    0    0    0    0    0    0    0    0    1    0  518    7    1    0    0    7    0    0    0    0
  NK Proliferating    11    0 2755  218    6   47    0    4    0    0   62    0   13    2    5    0    0   11   32    0    0    0    1
  NK_CD56bright        0    0    0    0    0    0    0    0    0    0    0    0    0   14    0    0    0    0    2    0    0    0    0
  pDC                  0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0   56    0    0    0
  Plasmablast          0    0    0    0    0    0    0    0    0    0    0   13    0    0    0    0    0    0    1    5    0    0    0
  Platelet             0    0    0    0    0    0    0    0    0    1    0    0    0    0    0    1    0    0    0    0    0    0   30
  Treg                 0   93    0    0    0    9  161    0    0    0    1    5    0    0   44    0    0    0   39    0    0    1    0
                   
                      23
  ASDC                 0
  B intermediate       0
  B memory             0
  B naive              0
  CD14 Mono            0
  CD16 Mono            0
  CD4 CTL              0
  CD4 Naive            1
  CD4 Proliferating    0
  CD4 TCM             11
  CD4 TEM              0
  CD8 Naive            0
  CD8 Proliferating    0
  CD8 TCM              1
  CD8 TEM              0
  cDC1                 0
  cDC2                 0
  dnT                  1
  gdT                  0
  HSPC                 5
  ILC                  0
  MAIT                 0
  NK                   0
  NK Proliferating     0
  NK_CD56bright        0
  pDC                  0
  Plasmablast          0
  Platelet             0
  Treg                 0
table(All_samples_Merged$predicted.celltype.l2, All_samples_Merged$Harmony_snn_res.0.9)
                   
                       0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22
  ASDC                 0    0    0    0    0    0    0    0    0    0    0    3    0    0    0    0    0    0    0    0    0    0    0
  B intermediate       0    0    0    0    0    1    0    0    0    0    0    3  664    0    1   17    0    4    0    2    2    0    2
  B memory             1    5    1    0    0    2  218    7    0    0    0    3  260    1    0    2    1    5    0   13    1    0    2
  B naive              0    0    0    0    0    1    0    0    0    0    0    7 1170    0    1    0    0    6    0    0    1    6    0
  CD14 Mono            0    1    2    0    0    1   38    0    9    0   20 2522    0    1    0  812    0  218    6    0    0  183    7
  CD16 Mono            0    1    0    0    0    0    0    0    0    0    0  105    0    0    0   19    0    0    0    0    0    1    0
  CD4 CTL              0    0    0    0    0    0    0    0    0    0    0    0    0    0   16    0    0    0    0    0    0    1    0
  CD4 Naive         1953    0    0    0    0   35    0    0    0    0    0    0    7    0    0    0    0    6    0    0   40    1    0
  CD4 Proliferating    1 4409 4338 1901 3476    6 1977 2989 2946 3183  402    1    2 1846    1    0  825   28   48  498  133    0    1
  CD4 TCM           2606  805   19    8   69 3290 1458   52  331   15 2643   18   65  107   53   32    1  392  580   44  256   20    3
  CD4 TEM              6    0    0    0    0   69    0    0    0    0    1    0    0    0   15    0    0    3    0    0    0    0    0
  CD8 Naive         1315    0    0    0    0   15    0    0    0    0    0    0    2    0    1    1    0   18    1    0   17    2    0
  CD8 Proliferating    0    0    0    0    0    0    2    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
  CD8 TCM            121    1    0    0    0  237    0    0    9    0    0    0    2    0   92    0    0    6    7    0    1    0    0
  CD8 TEM              5    0    0    1    0   40    7    0    5    0    0    1    1    0  324    0    0    0    0    0    7    0    0
  cDC1                 0    0    0    0    0    0    5    0    0    0    0   13    0    0    0    0    0    0    0    2    1    0   21
  cDC2                 0    0    0    0    1    0   47    0    1    0    0  122    0    0    0    0    0    0    0    3    0    2   53
  dnT                  7    0    0    0    0   24    7    0    0    0    1    0    2    0    0    3    0   17    0    0   20    0    0
  gdT                  9    0    0    0    0    6    0    0    0    0    0    0    0    0   77    0    0    0    0    0    1    0    0
  HSPC                 0    1   54    0  705    0   37  757    0  197    3    6    1    0    1    0    1    3    6   39    7    0    4
  ILC                  0    0    0    0    0    0    0    0    0    0    0    0    1    0    4    0    0    1    0    0    1    0    0
  MAIT                 0    0    0    0    0    8    0    0    0    0    0    0    0    0  228    0    0    1    0    0    3    2    0
  NK                   0    0    0    0    0    0    0    0    0    0    0    0    1    0  518    1    0    1    0    0    7    6    0
  NK Proliferating     0    0    9 2374    5    0    8    6  443  218    0    0    0   15    2    0   38    5    0   11   32    0    0
  NK_CD56bright        0    0    0    0    0    0    0    0    0    0    0    0    0    0   14    0    0    0    0    0    2    0    0
  pDC                  0    0    0    0    0    0    0    0    0    0    0   56    0    0    0    0    0    0    0    0    0    0    0
  Plasmablast          0    0    0    0    0    0    0    0    0    0    0    5   11    0    0    0    0    2    0    0    1    0    0
  Platelet             0    0    0    0    0    0    0    0    0    0    0    1    0    0    0    1    0    0    0    0    0    0    0
  Treg                90    0    0    0    0  166    9    0    1    0    0    0    5    0    0    0    0   41    0    0   39    1    1
                   
                      23   24
  ASDC                 0    0
  B intermediate       0    0
  B memory             1    0
  B naive              0    0
  CD14 Mono            3    0
  CD16 Mono            0    0
  CD4 CTL              0    0
  CD4 Naive            0    1
  CD4 Proliferating    0    0
  CD4 TCM              0   11
  CD4 TEM              0    0
  CD8 Naive            1    0
  CD8 Proliferating    0    0
  CD8 TCM              0    1
  CD8 TEM              0    0
  cDC1                 0    0
  cDC2                 0    0
  dnT                  0    1
  gdT                  0    0
  HSPC                 7    5
  ILC                  0    0
  MAIT                 0    0
  NK                   0    0
  NK Proliferating     1    0
  NK_CD56bright        0    0
  pDC                  0    0
  Plasmablast          0    0
  Platelet            30    0
  Treg                 0    0
table(All_samples_Merged$cell_line, All_samples_Merged$Harmony_snn_res.0.8)
          
              0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23
  L1          0    2  224    0    1    0    0    0 3026   16 1919    0    0    0   25    1  599    0   12    0    0    0    0    0
  L2          2    0 5130    0    1    2    0    0    9    0  750    0    0    0    8    0   22    0   11    0    0    0    0    0
  L3       6174    2    0    0    0   37    1    0    1    0    0    4   95    0    6    1    1   68   36    0    0    0    2    0
  L4       3671    0    0    0    4  588    3    0    2    6    0  158 1607    1   18   12    2   57   18    1    0    2    0    0
  L5          1    1    0  388 3049  448    4 1781    0    0    0    0    0    0   13    0    3  316   17    0    0    1    0    0
  L6         14    1    0 3166  118 1225    2  326    0    0    0    0    0    1   23    0    8  106  158    0    0    0    0    0
  L7          3    1    0 1208  804 1565    4 1639    0    0    0    0    0    0   19    0    2   57   29    0    0    0    0    0
  PBMC        1 2796    0    0    0   24 2577    0    6   43    4 1097    0  401  449  743    2    3   81    8    3   91    6   19
  PBMC_10x    4 3451    0    0    0   37 1179    0   14 2618    7  938    0  912  365  130   15    0  209  141  107    0   35    0

Harmony Visualization-5



clustree(All_samples_Merged, prefix = "Harmony_snn_res.")

Harmony Visualization-6


# Function to create and save tables for a given variable
create_and_save_tables <- function(variable_name) {
  # Loop through resolutions from 0.5 to 1.2 with a step of 0.1
  for (res in seq(0.5, 1.2, by = 0.1)) {
    # Create the column name for the current resolution
    col_name <- paste0("Harmony_snn_res.", res)
    
    # Create the cross-tabulation
    table_res <- table(All_samples_Merged[[variable_name]], All_samples_Merged[[col_name]])
    
    # Create a filename for the current resolution
    filename <- paste0(variable_name, "_vs_resolution_", res, ".csv")
    
    # Save the table to CSV
    write.csv(table_res, filename)
    
    # Print a message to confirm the file was saved
    print(paste("Saved:", filename))
  }
}

# Create and save tables for predicted cell types
create_and_save_tables("predicted.celltype.l2")
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_0.5.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_0.6.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_0.7.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_0.8.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_0.9.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_1.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_1.1.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: predicted.celltype.l2_vs_resolution_1.2.csv"
# Create and save tables for cell lines
create_and_save_tables("cell_line")
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_0.5.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_0.6.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_0.7.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_0.8.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_0.9.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_1.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_1.1.csv"
Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)Avis : impossible d’utiliser xtfrm sur un tableau de données (data frame)
[1] "Saved: cell_line_vs_resolution_1.2.csv"

4. Save the Seurat object as an Robj file


#save(All_samples_Merged, file = "../../../0-IMP-OBJECTS/Harmony_integrated_All_samples_Merged_with_PBMC10x.Robj")
LS0tCnRpdGxlOiAiSGFybW9ueV9JbnRlcmdyYXRpb25zX2FuZF92aXN1YWxpemF0aW9uX29mX1BCTUMtMTB4LiIKYXV0aG9yOiBOYXNpciBNYWhtb29kIEFiYmFzaQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCm91dHB1dDoKICAjcm1kZm9ybWF0czo6cmVhZHRoZWRvd24KICBodG1sX25vdGVib29rOgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIHRvY19jb2xsYXBzZWQ6IHRydWUKLS0tCgoKIyAxLiBsb2FkIGxpYnJhcmllcwpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoU2V1cmF0V3JhcHBlcnMpCmxpYnJhcnkoU2V1cmF0T2JqZWN0KQpsaWJyYXJ5KFNldXJhdERhdGEpCmxpYnJhcnkocGF0Y2h3b3JrKQpsaWJyYXJ5KGhhcm1vbnkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShyZXRpY3VsYXRlKQpsaWJyYXJ5KEF6aW11dGgpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoUnRzbmUpCmxpYnJhcnkoaGFybW9ueSkKCm9wdGlvbnMoZnV0dXJlLmdsb2JhbHMubWF4U2l6ZSA9IDFlOSkKCmBgYAoKCgoKIyAyLiBMb2FkIFNldXJhdCBPYmplY3QgYW5kIHZpc3VhbGl6ZSBoYXJtb255aW50ZWdyYXRlZF9VTUFQCmBgYHtyIGxvYWRfc2V1cmF0fQoKI0xvYWQgU2V1cmF0IE9iamVjdCBtZXJnZWQgZnJvbSBjZWxsIGxpbmVzIGFuZCBhIGNvbnRyb2woUEJNQykgYWZ0ZXIgZmlsdHJhdGlvbgpsb2FkKCIuLi8uLi8uLi8wLUlNUC1PQkpFQ1RTL0hhcm1vbnlfaW50ZWdyYXRlZF9BbGxfc2FtcGxlc19NZXJnZWRfd2l0aF9QQk1DMTB4LlJvYmoiKQoKQWxsX3NhbXBsZXNfTWVyZ2VkCgpEaW1QbG90KEFsbF9zYW1wbGVzX01lcmdlZCwgcmVkdWN0aW9uID0gInVtYXAuaGFybW9ueSIsIGdyb3VwLmJ5ID0gImNlbGxfbGluZSIsbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBUKQoKYGBgCgoKCiMgMy4gVU1BUCB2aXN1YWxpemF0aW9uIGFuZCBIYXJtb255IEludGVncmF0aW9uLTEgVmlzdWFsaXphdGlvbgpgYGB7ciBkYXRhMSwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTJ9CgoKRGltUGxvdChBbGxfc2FtcGxlc19NZXJnZWQsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnkgPSAiY2VsbF9saW5lIiwgbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBUKQoKRGltUGxvdChBbGxfc2FtcGxlc19NZXJnZWQsIHJlZHVjdGlvbiA9ICJ1bWFwLmhhcm1vbnkiLCBncm91cC5ieSA9ICJjZWxsX2xpbmUiLGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKCmBgYAoKIyMgIEhhcm1vbnkgVmlzdWFsaXphdGlvbi0yCmBgYHtyIGhhcm1vbnktdmlzdWFsaXphdGlvbjIsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEyfQpsaWJyYXJ5KGhhcm1vbnkpCmxpYnJhcnkoY2x1c3RyZWUpCgojIEVuc3VyZSB0aGUgSGFybW9ueSByZWR1Y3Rpb24gaXMgcHJlc2VudAppZiAoISJoYXJtb255IiAlaW4lIFJlZHVjdGlvbnMoQWxsX3NhbXBsZXNfTWVyZ2VkKSkgewogIHN0b3AoIkhhcm1vbnkgcmVkdWN0aW9uIG5vdCBmb3VuZC4gUGxlYXNlIHJ1biBSdW5IYXJtb255KCkgZmlyc3QuIikKfQoKIyBSdW4gY2x1c3RlcmluZyB1c2luZyBIYXJtb255IGVtYmVkZGluZ3MKQWxsX3NhbXBsZXNfTWVyZ2VkIDwtIEZpbmROZWlnaGJvcnMoQWxsX3NhbXBsZXNfTWVyZ2VkLCByZWR1Y3Rpb24gPSAiaGFybW9ueSIsIGRpbXMgPSAxOjIyKQoKIyBDcmVhdGUgYSBzZXF1ZW5jZSBvZiByZXNvbHV0aW9ucyBmcm9tIDAuMSB0byAyIHdpdGggMC4xIGluY3JlbWVudHMKcmVzb2x1dGlvbnMgPC0gc2VxKDAuMSwgMiwgYnkgPSAwLjEpCgojIExvb3AgdGhyb3VnaCB0aGUgcmVzb2x1dGlvbnMKZm9yIChyZXMgaW4gcmVzb2x1dGlvbnMpIHsKICAjIEZpbmQgY2x1c3RlcnMgZm9yIHRoZSBjdXJyZW50IHJlc29sdXRpb24gdXNpbmcgSGFybW9ueSBlbWJlZGRpbmdzCiAgQWxsX3NhbXBsZXNfTWVyZ2VkIDwtIEZpbmRDbHVzdGVycyhBbGxfc2FtcGxlc19NZXJnZWQsIHJlc29sdXRpb24gPSByZXMpCiAgCiAgIyBDcmVhdGUgYSBuZXcgY29sdW1uIGZvciBIYXJtb255LWJhc2VkIGNsdXN0ZXJpbmcKICBuZXdfY29sX25hbWUgPC0gcGFzdGUwKCJIYXJtb255X3Nubl9yZXMuIiwgcmVzKQogIEFsbF9zYW1wbGVzX01lcmdlZFtbbmV3X2NvbF9uYW1lXV0gPC0gQWxsX3NhbXBsZXNfTWVyZ2VkJHNldXJhdF9jbHVzdGVycyAgIyBTdG9yZSBjbHVzdGVyIHJlc3VsdHMgaGVyZQogIAogICMgQ3JlYXRlIHRoZSBwbG90IGZvciBlYWNoIHJlc29sdXRpb24KICBwbG90IDwtIERpbVBsb3QoQWxsX3NhbXBsZXNfTWVyZ2VkLAogICAgICAgICAgICAgICAgICBncm91cC5ieSA9IG5ld19jb2xfbmFtZSwKICAgICAgICAgICAgICAgICAgcmVkdWN0aW9uID0gInVtYXAuaGFybW9ueSIsCiAgICAgICAgICAgICAgICAgIGxhYmVsLnNpemUgPSAzLAogICAgICAgICAgICAgICAgICByZXBlbCA9IFRSVUUsCiAgICAgICAgICAgICAgICAgIGxhYmVsID0gVFJVRSwKICAgICAgICAgICAgICAgICAgbGFiZWwuYm94ID0gVFJVRSkgKwogICAgICAgICAgZ2d0aXRsZShwYXN0ZSgiSGFybW9ueS1iYXNlZCBDbHVzdGVyaW5nLCBSZXNvbHV0aW9uOiIsIHJlcykpCiAgCiAgIyBEaXNwbGF5IHRoZSBwbG90IGRpcmVjdGx5IGluIHRoZSBub3RlYm9vawogIHByaW50KHBsb3QpCn0KCiMgT3B0aW9uYWxseSwgY3JlYXRlIGEgcGxvdCBmb3IgYSBzcGVjaWZpYyByZXNvbHV0aW9uIChlLmcuLCAwLjUpCnNldXJhdF9wbG90IDwtIERpbVBsb3QoQWxsX3NhbXBsZXNfTWVyZ2VkLAogICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmJ5ID0gIkhhcm1vbnlfc25uX3Jlcy4wLjkiLAogICAgICAgICAgICAgICAgICAgICAgIHJlZHVjdGlvbiA9ICJ1bWFwLmhhcm1vbnkiLAogICAgICAgICAgICAgICAgICAgICAgIGxhYmVsLnNpemUgPSAzLAogICAgICAgICAgICAgICAgICAgICAgIHJlcGVsID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwuYm94ID0gVFJVRSkgKwogICAgICAgICAgICAgICAgZ2d0aXRsZSgiSGFybW9ueS1iYXNlZCBTZXVyYXQgQ2x1c3RlcnMgKFJlc29sdXRpb246IDAuOSkiKQoKIyBEaXNwbGF5IHRoZSBzcGVjaWZpYyByZXNvbHV0aW9uIHBsb3QKcHJpbnQoc2V1cmF0X3Bsb3QpCmBgYAoKCiMjICBIYXJtb255IFZpc3VhbGl6YXRpb24tMwpgYGB7ciBoYXJtb255LXZpc3VhbGl6YXRpb24zLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMn0KCiMgQ29tYmluZSBjbHVzdGVycyBhbmQgY2VsbCBsaW5lcyBmb3IgdmlzdWFsaXphdGlvbgpBbGxfc2FtcGxlc19NZXJnZWQkQ2x1c3Rlcl9DZWxsTGluZSA8LSBwYXN0ZShBbGxfc2FtcGxlc19NZXJnZWQkSGFybW9ueV9zbm5fcmVzLjAuNywgQWxsX3NhbXBsZXNfTWVyZ2VkJGNlbGxfbGluZSwgc2VwID0gIl8iKQoKIyBQbG90IHdpdGggY29tYmluZWQgaW5mb3JtYXRpb24KRGltUGxvdChBbGxfc2FtcGxlc19NZXJnZWQsIGdyb3VwLmJ5ID0gIkNsdXN0ZXJfQ2VsbExpbmUiLCByZWR1Y3Rpb24gPSAidW1hcC5oYXJtb255IiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5zaXplID0gMykgKwogIGdndGl0bGUoIkNsdXN0ZXJzIGFuZCBDZWxsIExpbmVzIG9uIFVNQVAiKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikKCgojIFBsb3Qgd2l0aCBjb21iaW5lZCBpbmZvcm1hdGlvbgpEaW1QbG90KEFsbF9zYW1wbGVzX01lcmdlZCwgZ3JvdXAuYnkgPSAiQ2x1c3Rlcl9DZWxsTGluZSIsIHJlZHVjdGlvbiA9ICJ1bWFwLmhhcm1vbnkiLCBsYWJlbCA9IFRSVUUsIGxhYmVsLnNpemUgPSAzLCBsYWJlbC5ib3ggPSBUKSArCiAgZ2d0aXRsZSgiQ2x1c3RlcnMgYW5kIENlbGwgTGluZXMgb24gVU1BUCIpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKCnAxIDwtIERpbVBsb3QoQWxsX3NhbXBsZXNfTWVyZ2VkLCAKICAgICAgICAgICAgICBncm91cC5ieSA9ICJIYXJtb255X3Nubl9yZXMuMC43IiwgCiAgICAgICAgICAgICAgcmVkdWN0aW9uID0gInVtYXAuaGFybW9ueSIsIAogICAgICAgICAgICAgIGxhYmVsID0gVFJVRSwgCiAgICAgICAgICAgICAgcmVwZWwgPSBUUlVFLAogICAgICAgICAgICAgIGxhYmVsLmJveCA9IFRSVUUsCiAgICAgICAgICAgICAgcHQuc2l6ZSA9IDAuNSkgKwogIGdndGl0bGUoIkNsdXN0ZXJzIG9uIFVNQVAiKSArCiAgTm9MZWdlbmQoKQoKcDIgPC0gRGltUGxvdChBbGxfc2FtcGxlc19NZXJnZWQsIAogICAgICAgICAgICAgIGdyb3VwLmJ5ID0gImNlbGxfbGluZSIsIAogICAgICAgICAgICAgIHJlZHVjdGlvbiA9ICJ1bWFwLmhhcm1vbnkiLCAKICAgICAgICAgICAgICBsYWJlbCA9IFRSVUUsIAogICAgICAgICAgICAgIHJlcGVsID0gVFJVRSwKICAgICAgICAgICAgICBsYWJlbC5ib3ggPSBUUlVFLAogICAgICAgICAgICAgIHB0LnNpemUgPSAwLjUpICsKICBnZ3RpdGxlKCJDZWxsIExpbmVzIG9uIFVNQVAiKSArCiAgTm9MZWdlbmQoKQoKIyBEaXNwbGF5IHBsb3RzIHNpZGUgYnkgc2lkZQpwMSB8IHAyCgpEaW1QbG90KEFsbF9zYW1wbGVzX01lcmdlZCwKICAgICAgICBncm91cC5ieSA9ICJwcmVkaWN0ZWQuY2VsbHR5cGUubDEiLAogICAgICAgIHJlZHVjdGlvbiA9ICJ1bWFwLmhhcm1vbnkiLAogICAgICAgIGxhYmVsLnNpemUgPSAzLAogICAgICAgIHJlcGVsID0gVCwgCiAgICAgICAgbGFiZWwgPSBULCBsYWJlbC5ib3ggPSBUKQoKRGltUGxvdChBbGxfc2FtcGxlc19NZXJnZWQsCiAgICAgICAgZ3JvdXAuYnkgPSAicHJlZGljdGVkLmNlbGx0eXBlLmwyIiwKICAgICAgICByZWR1Y3Rpb24gPSAidW1hcC5oYXJtb255IiwKICAgICAgICBsYWJlbC5zaXplID0gMywKICAgICAgICByZXBlbCA9IFQsIAogICAgICAgIGxhYmVsID0gVCwgbGFiZWwuYm94ID0gVCkKCkRpbVBsb3QoQWxsX3NhbXBsZXNfTWVyZ2VkLAogICAgICAgIGdyb3VwLmJ5ID0gInByZWRpY3RlZC5jZWxsdHlwZS5sMyIsCiAgICAgICAgcmVkdWN0aW9uID0gInVtYXAuaGFybW9ueSIsCiAgICAgICAgbGFiZWwuc2l6ZSA9IDMsCiAgICAgICAgcmVwZWwgPSBULCAKICAgICAgICBsYWJlbCA9IFQsIGxhYmVsLmJveCA9IFQpCgoKCgoKYGBgCgojIyAgSGFybW9ueSBWaXN1YWxpemF0aW9uLTQKYGBge3IgaGFybW9ueS12aXN1YWxpemF0aW9uNCwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTJ9CgojIFNldCBpZGVudGl0eSBjbGFzc2VzIHRvIGFuIGV4aXN0aW5nIGNvbHVtbiBpbiBtZXRhIGRhdGEKSWRlbnRzKG9iamVjdCA9IEFsbF9zYW1wbGVzX01lcmdlZCkgPC0gIkhhcm1vbnlfc25uX3Jlcy4wLjciCgpjbHVzdGVyX3RhYmxlIDwtIHRhYmxlKElkZW50cyhBbGxfc2FtcGxlc19NZXJnZWQpKQoKCnRhYmxlKEFsbF9zYW1wbGVzX01lcmdlZCRwcmVkaWN0ZWQuY2VsbHR5cGUubDIsIEFsbF9zYW1wbGVzX01lcmdlZCRIYXJtb255X3Nubl9yZXMuMC41KQp0YWJsZShBbGxfc2FtcGxlc19NZXJnZWQkcHJlZGljdGVkLmNlbGx0eXBlLmwyLCBBbGxfc2FtcGxlc19NZXJnZWQkSGFybW9ueV9zbm5fcmVzLjAuNikKdGFibGUoQWxsX3NhbXBsZXNfTWVyZ2VkJHByZWRpY3RlZC5jZWxsdHlwZS5sMiwgQWxsX3NhbXBsZXNfTWVyZ2VkJEhhcm1vbnlfc25uX3Jlcy4wLjcpCnRhYmxlKEFsbF9zYW1wbGVzX01lcmdlZCRwcmVkaWN0ZWQuY2VsbHR5cGUubDIsIEFsbF9zYW1wbGVzX01lcmdlZCRIYXJtb255X3Nubl9yZXMuMC44KQp0YWJsZShBbGxfc2FtcGxlc19NZXJnZWQkcHJlZGljdGVkLmNlbGx0eXBlLmwyLCBBbGxfc2FtcGxlc19NZXJnZWQkSGFybW9ueV9zbm5fcmVzLjAuOSkKCnRhYmxlKEFsbF9zYW1wbGVzX01lcmdlZCRjZWxsX2xpbmUsIEFsbF9zYW1wbGVzX01lcmdlZCRIYXJtb255X3Nubl9yZXMuMC44KQoKYGBgCgoKIyMgIEhhcm1vbnkgVmlzdWFsaXphdGlvbi01CmBgYHtyIGhhcm1vbnktdmlzdWFsaXphdGlvbjUsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEyfQoKCmNsdXN0cmVlKEFsbF9zYW1wbGVzX01lcmdlZCwgcHJlZml4ID0gIkhhcm1vbnlfc25uX3Jlcy4iKQoKYGBgCiMjICBIYXJtb255IFZpc3VhbGl6YXRpb24tNgpgYGB7ciBoYXJtb255LXZpc3VhbGl6YXRpb242LCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMn0KCiMgRnVuY3Rpb24gdG8gY3JlYXRlIGFuZCBzYXZlIHRhYmxlcyBmb3IgYSBnaXZlbiB2YXJpYWJsZQpjcmVhdGVfYW5kX3NhdmVfdGFibGVzIDwtIGZ1bmN0aW9uKHZhcmlhYmxlX25hbWUpIHsKICAjIExvb3AgdGhyb3VnaCByZXNvbHV0aW9ucyBmcm9tIDAuNSB0byAxLjIgd2l0aCBhIHN0ZXAgb2YgMC4xCiAgZm9yIChyZXMgaW4gc2VxKDAuNSwgMS4yLCBieSA9IDAuMSkpIHsKICAgICMgQ3JlYXRlIHRoZSBjb2x1bW4gbmFtZSBmb3IgdGhlIGN1cnJlbnQgcmVzb2x1dGlvbgogICAgY29sX25hbWUgPC0gcGFzdGUwKCJIYXJtb255X3Nubl9yZXMuIiwgcmVzKQogICAgCiAgICAjIENyZWF0ZSB0aGUgY3Jvc3MtdGFidWxhdGlvbgogICAgdGFibGVfcmVzIDwtIHRhYmxlKEFsbF9zYW1wbGVzX01lcmdlZFtbdmFyaWFibGVfbmFtZV1dLCBBbGxfc2FtcGxlc19NZXJnZWRbW2NvbF9uYW1lXV0pCiAgICAKICAgICMgQ3JlYXRlIGEgZmlsZW5hbWUgZm9yIHRoZSBjdXJyZW50IHJlc29sdXRpb24KICAgIGZpbGVuYW1lIDwtIHBhc3RlMCh2YXJpYWJsZV9uYW1lLCAiX3ZzX3Jlc29sdXRpb25fIiwgcmVzLCAiLmNzdiIpCiAgICAKICAgICMgU2F2ZSB0aGUgdGFibGUgdG8gQ1NWCiAgICB3cml0ZS5jc3YodGFibGVfcmVzLCBmaWxlbmFtZSkKICAgIAogICAgIyBQcmludCBhIG1lc3NhZ2UgdG8gY29uZmlybSB0aGUgZmlsZSB3YXMgc2F2ZWQKICAgIHByaW50KHBhc3RlKCJTYXZlZDoiLCBmaWxlbmFtZSkpCiAgfQp9CgojIENyZWF0ZSBhbmQgc2F2ZSB0YWJsZXMgZm9yIHByZWRpY3RlZCBjZWxsIHR5cGVzCmNyZWF0ZV9hbmRfc2F2ZV90YWJsZXMoInByZWRpY3RlZC5jZWxsdHlwZS5sMiIpCgojIENyZWF0ZSBhbmQgc2F2ZSB0YWJsZXMgZm9yIGNlbGwgbGluZXMKY3JlYXRlX2FuZF9zYXZlX3RhYmxlcygiY2VsbF9saW5lIikKCgoKCmBgYAoKCiMgNC4gU2F2ZSB0aGUgU2V1cmF0IG9iamVjdCBhcyBhbiBSb2JqIGZpbGUKYGBge3Igc2F2ZVJPQkp9Cgojc2F2ZShBbGxfc2FtcGxlc19NZXJnZWQsIGZpbGUgPSAiLi4vLi4vLi4vMC1JTVAtT0JKRUNUUy9IYXJtb255X2ludGVncmF0ZWRfQWxsX3NhbXBsZXNfTWVyZ2VkX3dpdGhfUEJNQzEweC5Sb2JqIikKCmBgYAoKCgoK