J. Taroni 2018

Here, we’ll perform differential expression (of LV) analyses for the PBMC data from Cheadle C, Berger AE, Andrade F, et al. Transcription of PR3 and Related Myelopoiesis Genes in Peripheral Blood Mononuclear Cells in Active Wegener’s Granulomatosis. Arthritis & Rheumatism, 2010. doi: 10.1002/art.27398.

We’ll be comparing the healthy controls, the patients with a GPA signature (GPA-positive) and the patients without a GPA signature (GPA-negative). We’ll first need to project this data into the recount2 PLIER model latent space.

Functions and directory set up

`%>%` <- dplyr::`%>%` 
source(file.path("util", "test_LV_differences.R"))
source(file.path("util", "plier_util.R"))
# plot and result directory setup for this notebook
plot.dir <- file.path("plots", "19")
dir.create(plot.dir, recursive = TRUE, showWarnings = FALSE)
results.dir <- file.path("results", "19")
dir.create(results.dir, recursive = TRUE, showWarnings = FALSE)

Read in data

The GPA blood file is in the form of a GEO series matrix, which means the sample metadata is in what are essentially comment fields at the beginning of the file. Thus, some ugliness/wrangling will be necessary.

Expression data

series.mat.file <- file.path("data", "expression_data", 
                             "GSE18885_series_matrix.txt")
# expression matrix
gpa.ma.data <- 
  readr::read_delim(series.mat.file, 
                    delim = "\t", 
                    comment = "!",
                    col_names = TRUE, 
                    skip = 1)
Parsed with column specification:
cols(
  .default = col_double(),
  ID_REF = col_character()
)
See spec(...) for full column specifications.

|======                                                                                                                                               |   4%
|=======                                                                                                                                              |   4%
|=======                                                                                                                                      |   5%    1 MB
|=======                                                                                                                                      |   5%    1 MB
|========                                                                                                                                     |   5%    1 MB
|========                                                                                                                                     |   6%    1 MB
|=========                                                                                                                                    |   6%    1 MB
|=========                                                                                                                                    |   7%    1 MB
|==========                                                                                                                                   |   7%    1 MB
|==========                                                                                                                                   |   7%    1 MB
|===========                                                                                                                                  |   8%    1 MB
|===========                                                                                                                                  |   8%    1 MB
|============                                                                                                                                 |   8%    1 MB
|============                                                                                                                                 |   9%    1 MB
|=============                                                                                                                                |   9%    1 MB
|=============                                                                                                                                |   9%    1 MB
|==============                                                                                                                               |  10%    1 MB
|==============                                                                                                                               |  10%    2 MB
|===============                                                                                                                              |  10%    2 MB
|===============                                                                                                                              |  11%    2 MB
|================                                                                                                                             |  11%    2 MB
|================                                                                                                                             |  11%    2 MB
|=================                                                                                                                            |  12%    2 MB
|=================                                                                                                                            |  12%    2 MB
|==================                                                                                                                           |  13%    2 MB
|==================                                                                                                                           |  13%    2 MB
|===================                                                                                                                          |  13%    2 MB
|===================                                                                                                                          |  14%    2 MB
|====================                                                                                                                         |  14%    2 MB
|====================                                                                                                                         |  14%    2 MB
|=====================                                                                                                                        |  15%    2 MB
|=====================                                                                                                                        |  15%    2 MB
|======================                                                                                                                       |  15%    3 MB
|======================                                                                                                                       |  16%    3 MB
|=======================                                                                                                                      |  16%    3 MB
|=======================                                                                                                                      |  16%    3 MB
|========================                                                                                                                     |  17%    3 MB
|========================                                                                                                                     |  17%    3 MB
|=========================                                                                                                                    |  17%    3 MB
|=========================                                                                                                                    |  18%    3 MB
|==========================                                                                                                                   |  18%    3 MB
|==========================                                                                                                                   |  18%    3 MB
|===========================                                                                                                                  |  19%    3 MB
|===========================                                                                                                                  |  19%    3 MB
|============================                                                                                                                 |  20%    3 MB
|============================                                                                                                                 |  20%    3 MB
|=============================                                                                                                                |  20%    4 MB
|=============================                                                                                                                |  21%    4 MB
|==============================                                                                                                               |  21%    4 MB
|==============================                                                                                                               |  21%    4 MB
|===============================                                                                                                              |  22%    4 MB
|===============================                                                                                                              |  22%    4 MB
|================================                                                                                                             |  22%    4 MB
|================================                                                                                                             |  23%    4 MB
|=================================                                                                                                            |  23%    4 MB
|=================================                                                                                                            |  23%    4 MB
|==================================                                                                                                           |  24%    4 MB
|==================================                                                                                                           |  24%    4 MB
|===================================                                                                                                          |  24%    4 MB
|===================================                                                                                                          |  25%    4 MB
|====================================                                                                                                         |  25%    4 MB
|====================================                                                                                                         |  26%    5 MB
|=====================================                                                                                                        |  26%    5 MB
|=====================================                                                                                                        |  26%    5 MB
|======================================                                                                                                       |  27%    5 MB
|======================================                                                                                                       |  27%    5 MB
|=======================================                                                                                                      |  27%    5 MB
|=======================================                                                                                                      |  28%    5 MB
|========================================                                                                                                     |  28%    5 MB
|========================================                                                                                                     |  28%    5 MB
|=========================================                                                                                                    |  29%    5 MB
|=========================================                                                                                                    |  29%    5 MB
|==========================================                                                                                                   |  29%    5 MB
|==========================================                                                                                                   |  30%    5 MB
|===========================================                                                                                                  |  30%    5 MB
|===========================================                                                                                                  |  30%    5 MB
|============================================                                                                                                 |  31%    6 MB
|============================================                                                                                                 |  31%    6 MB
|=============================================                                                                                                |  31%    6 MB
|=============================================                                                                                                |  32%    6 MB
|==============================================                                                                                               |  32%    6 MB
|==============================================                                                                                               |  33%    6 MB
|===============================================                                                                                              |  33%    6 MB
|===============================================                                                                                              |  33%    6 MB
|================================================                                                                                             |  34%    6 MB
|================================================                                                                                             |  34%    6 MB
|=================================================                                                                                            |  34%    6 MB
|=================================================                                                                                            |  35%    6 MB
|==================================================                                                                                           |  35%    6 MB
|==================================================                                                                                           |  35%    6 MB
|===================================================                                                                                          |  36%    7 MB
|===================================================                                                                                          |  36%    7 MB
|====================================================                                                                                         |  36%    7 MB
|====================================================                                                                                         |  37%    7 MB
|=====================================================                                                                                        |  37%    7 MB
|=====================================================                                                                                        |  37%    7 MB
|======================================================                                                                                       |  38%    7 MB
|======================================================                                                                                       |  38%    7 MB
|=======================================================                                                                                      |  39%    7 MB
|=======================================================                                                                                      |  39%    7 MB
|========================================================                                                                                     |  39%    7 MB
|========================================================                                                                                     |  40%    7 MB
|=========================================================                                                                                    |  40%    7 MB
|=========================================================                                                                                    |  40%    7 MB
|==========================================================                                                                                   |  41%    7 MB
|==========================================================                                                                                   |  41%    8 MB
|===========================================================                                                                                  |  41%    8 MB
|===========================================================                                                                                  |  42%    8 MB
|============================================================                                                                                 |  42%    8 MB
|============================================================                                                                                 |  42%    8 MB
|=============================================================                                                                                |  43%    8 MB
|=============================================================                                                                                |  43%    8 MB
|==============================================================                                                                               |  43%    8 MB
|==============================================================                                                                               |  44%    8 MB
|===============================================================                                                                              |  44%    8 MB
|===============================================================                                                                              |  45%    8 MB
|================================================================                                                                             |  45%    8 MB
|================================================================                                                                             |  45%    8 MB
|=================================================================                                                                            |  46%    8 MB
|=================================================================                                                                            |  46%    8 MB
|==================================================================                                                                           |  46%    9 MB
|==================================================================                                                                           |  47%    9 MB
|===================================================================                                                                          |  47%    9 MB
|===================================================================                                                                          |  47%    9 MB
|====================================================================                                                                         |  48%    9 MB
|====================================================================                                                                         |  48%    9 MB
|=====================================================================                                                                        |  48%    9 MB
|=====================================================================                                                                        |  49%    9 MB
|======================================================================                                                                       |  49%    9 MB
|======================================================================                                                                       |  49%    9 MB
|=======================================================================                                                                      |  50%    9 MB
|=======================================================================                                                                      |  50%    9 MB
|========================================================================                                                                     |  51%    9 MB
|========================================================================                                                                     |  51%    9 MB
|=========================================================================                                                                    |  51%    9 MB
|=========================================================================                                                                    |  52%   10 MB
|==========================================================================                                                                   |  52%   10 MB
|==========================================================================                                                                   |  52%   10 MB
|===========================================================================                                                                  |  53%   10 MB
|===========================================================================                                                                  |  53%   10 MB
|============================================================================                                                                 |  53%   10 MB
|============================================================================                                                                 |  54%   10 MB
|=============================================================================                                                                |  54%   10 MB
|=============================================================================                                                                |  54%   10 MB
|==============================================================================                                                               |  55%   10 MB
|==============================================================================                                                               |  55%   10 MB
|===============================================================================                                                              |  55%   10 MB
|===============================================================================                                                              |  56%   10 MB
|================================================================================                                                             |  56%   10 MB
|================================================================================                                                             |  56%   11 MB
|=================================================================================                                                            |  57%   11 MB
|=================================================================================                                                            |  57%   11 MB
|==================================================================================                                                           |  58%   11 MB
|==================================================================================                                                           |  58%   11 MB
|===================================================================================                                                          |  58%   11 MB
|===================================================================================                                                          |  59%   11 MB
|====================================================================================                                                         |  59%   11 MB
|====================================================================================                                                         |  59%   11 MB
|=====================================================================================                                                        |  60%   11 MB
|=====================================================================================                                                        |  60%   11 MB
|======================================================================================                                                       |  60%   11 MB
|======================================================================================                                                       |  61%   11 MB
|=======================================================================================                                                      |  61%   11 MB
|=======================================================================================                                                      |  61%   11 MB
|========================================================================================                                                     |  62%   12 MB
|========================================================================================                                                     |  62%   12 MB
|=========================================================================================                                                    |  62%   12 MB
|=========================================================================================                                                    |  63%   12 MB
|==========================================================================================                                                   |  63%   12 MB
|==========================================================================================                                                   |  64%   12 MB
|===========================================================================================                                                  |  64%   12 MB
|===========================================================================================                                                  |  64%   12 MB
|============================================================================================                                                 |  65%   12 MB
|============================================================================================                                                 |  65%   12 MB
|=============================================================================================                                                |  65%   12 MB
|=============================================================================================                                                |  66%   12 MB
|==============================================================================================                                               |  66%   12 MB
|==============================================================================================                                               |  66%   12 MB
|===============================================================================================                                              |  67%   12 MB
|===============================================================================================                                              |  67%   13 MB
|================================================================================================                                             |  67%   13 MB
|================================================================================================                                             |  68%   13 MB
|=================================================================================================                                            |  68%   13 MB
|=================================================================================================                                            |  68%   13 MB
|==================================================================================================                                           |  69%   13 MB
|==================================================================================================                                           |  69%   13 MB
|===================================================================================================                                          |  70%   13 MB
|===================================================================================================                                          |  70%   13 MB
|====================================================================================================                                         |  70%   13 MB
|====================================================================================================                                         |  71%   13 MB
|=====================================================================================================                                        |  71%   13 MB
|=====================================================================================================                                        |  71%   13 MB
|======================================================================================================                                       |  72%   13 MB
|======================================================================================================                                       |  72%   14 MB
|=======================================================================================================                                      |  72%   14 MB
|=======================================================================================================                                      |  73%   14 MB
|========================================================================================================                                     |  73%   14 MB
|========================================================================================================                                     |  73%   14 MB
|=========================================================================================================                                    |  74%   14 MB
|=========================================================================================================                                    |  74%   14 MB
|==========================================================================================================                                   |  74%   14 MB
|==========================================================================================================                                   |  75%   14 MB
|===========================================================================================================                                  |  75%   14 MB
|===========================================================================================================                                  |  76%   14 MB
|============================================================================================================                                 |  76%   14 MB
|============================================================================================================                                 |  76%   14 MB
|=============================================================================================================                                |  77%   14 MB
|=============================================================================================================                                |  77%   14 MB
|==============================================================================================================                               |  77%   15 MB
|==============================================================================================================                               |  78%   15 MB
|===============================================================================================================                              |  78%   15 MB
|===============================================================================================================                              |  78%   15 MB
|================================================================================================================                             |  79%   15 MB
|================================================================================================================                             |  79%   15 MB
|=================================================================================================================                            |  79%   15 MB
|=================================================================================================================                            |  80%   15 MB
|==================================================================================================================                           |  80%   15 MB
|==================================================================================================================                           |  80%   15 MB
|===================================================================================================================                          |  81%   15 MB
|===================================================================================================================                          |  81%   15 MB
|====================================================================================================================                         |  82%   15 MB
|====================================================================================================================                         |  82%   15 MB
|=====================================================================================================================                        |  82%   15 MB
|=====================================================================================================================                        |  83%   16 MB
|======================================================================================================================                       |  83%   16 MB
|======================================================================================================================                       |  83%   16 MB
|=======================================================================================================================                      |  84%   16 MB
|=======================================================================================================================                      |  84%   16 MB
|========================================================================================================================                     |  84%   16 MB
|========================================================================================================================                     |  85%   16 MB
|=========================================================================================================================                    |  85%   16 MB
|=========================================================================================================================                    |  85%   16 MB
|==========================================================================================================================                   |  86%   16 MB
|==========================================================================================================================                   |  86%   16 MB
|===========================================================================================================================                  |  86%   16 MB
|===========================================================================================================================                  |  87%   16 MB
|============================================================================================================================                 |  87%   16 MB
|============================================================================================================================                 |  88%   17 MB
|=============================================================================================================================                |  88%   17 MB
|=============================================================================================================================                |  88%   17 MB
|==============================================================================================================================               |  89%   17 MB
|==============================================================================================================================               |  89%   17 MB
|===============================================================================================================================              |  89%   17 MB
|===============================================================================================================================              |  90%   17 MB
|================================================================================================================================             |  90%   17 MB
|================================================================================================================================             |  90%   17 MB
|=================================================================================================================================            |  91%   17 MB
|==================================================================================================================================           |  91%   17 MB
|==================================================================================================================================           |  91%   17 MB
|===================================================================================================================================          |  92%   17 MB
|===================================================================================================================================          |  92%   17 MB
|====================================================================================================================================         |  92%   17 MB
|====================================================================================================================================         |  93%   18 MB
|=====================================================================================================================================        |  93%   18 MB
|=====================================================================================================================================        |  94%   18 MB
|======================================================================================================================================       |  94%   18 MB
|======================================================================================================================================       |  94%   18 MB
|=======================================================================================================================================      |  95%   18 MB
|=======================================================================================================================================      |  95%   18 MB
|========================================================================================================================================     |  95%   18 MB
|========================================================================================================================================     |  96%   18 MB
|=========================================================================================================================================    |  96%   18 MB
|=========================================================================================================================================    |  96%   18 MB
|==========================================================================================================================================   |  97%   18 MB
|==========================================================================================================================================   |  97%   18 MB
|===========================================================================================================================================  |  97%   18 MB
|===========================================================================================================================================  |  98%   18 MB
|============================================================================================================================================ |  98%   19 MB
|============================================================================================================================================ |  98%   19 MB
|=============================================================================================================================================|  99%   19 MB
|=============================================================================================================================================|  99%   19 MB
|==============================================================================================================================================| 100%   19 MB
number of columns of result is not a multiple of vector length (arg 1)127 parsing failures.
row # A tibble: 5 x 5 col     row col       expected actual file                                              expected   <int> <chr>     <chr>    <chr>  <chr>                                             actual 1 13787 GSM468053 a double null   'data/expression_data/GSE18885_series_matrix.txt' file 2 13787 GSM468054 a double null   'data/expression_data/GSE18885_series_matrix.txt' row 3 13787 GSM468055 a double null   'data/expression_data/GSE18885_series_matrix.txt' col 4 13787 GSM468056 a double null   'data/expression_data/GSE18885_series_matrix.txt' expected 5 13787 GSM468057 a double null   'data/expression_data/GSE18885_series_matrix.txt'
... ................................. ... ................................................................................... ........ ................................................................................................................................................................................................................ ...... ..................................................................................................................... .... ..................................................................................................................... ... ..................................................................................................................... ... ..................................................................................................................... ........ .....................................................................................................................
See problems(...) for more details.
# this information about GPL6140 was downloaded on 15 Sept 2017, and reportedly
# last updated on 18 Jan 2013
gpl.from.geo <- readr::read_tsv(file.path("data", "expression_data", 
                                          "GPL6104-11576.txt"), comment = "#")
Parsed with column specification:
cols(
  .default = col_character(),
  Entrez_Gene_ID = col_integer(),
  GI = col_integer(),
  Array_Address_Id = col_integer(),
  Probe_Start = col_integer()
)
See spec(...) for full column specifications.
number of columns of result is not a multiple of vector length (arg 1)5 parsing failures.
row # A tibble: 5 x 5 col     row col   expected   actual     file                                     expected   <int> <chr> <chr>      <chr>      <chr>                                    actual 1  4208 NA    26 columns 25 columns 'data/expression_data/GPL6104-11576.txt' file 2 10177 NA    26 columns 25 columns 'data/expression_data/GPL6104-11576.txt' row 3 13164 NA    26 columns 25 columns 'data/expression_data/GPL6104-11576.txt' col 4 14653 NA    26 columns 25 columns 'data/expression_data/GPL6104-11576.txt' expected 5 19130 NA    26 columns 25 columns 'data/expression_data/GPL6104-11576.txt'
# use the gene symbols from the GPL file -- PLIER uses gene symbols
gpa.ma.annot <- gpl.from.geo %>%
  dplyr::select(c(ID, ILMN_Gene)) %>%
  dplyr::left_join(y = gpa.ma.data,
                   by = c("ID" = "ID_REF"))
colnames(gpa.ma.annot)[2] <- "Gene"
# are there any duplicates in the gene symbol column?
sum(duplicated(gpa.ma.annot$Gene))
[1] 3989
# aggregate & write to file
agg.ma.df <- PrepExpressionDF(dplyr::select(gpa.ma.annot, -ID))
readr::write_tsv(agg.ma.df,
                 path = file.path("data", "expression_data",
                                  "GSE18885_annotated_mean.pcl"))
# get expression matrix
exprs.mat <- as.matrix(dplyr::select(agg.ma.df, -Gene))
rownames(exprs.mat) <- agg.ma.df$Gene

Metadata

As mentioned above, metadata is also extracted from the series matrix file.

# get more information from the series matrix file
# line 41 has the sample names
conn <- file(series.mat.file)
open(conn)
smpl.name <- read.table(conn, skip = 41, nrow = 1)
close(conn)
# line 51 contains the WG signature status -- I'll call this GPA signature
# GPA-positive, GPA-negative to be in line with the current disease name
conn <- file(series.mat.file)
open(conn)
gpa.sig.status <- read.table(conn, skip = 51, nrow = 1)
close(conn)
# this is the GEO sample accession information
conn <- file(series.mat.file)
open(conn)
gsm.info <- read.table(conn, skip = 77, nrow = 1)
close(conn)
# get those lines into data.frame format
smpl.info.df <- as.data.frame(t(dplyr::bind_rows(gsm.info, 
                                                 smpl.name, 
                                                 gpa.sig.status))[-1, ])
Unequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorUnequal factor levels: coercing to characterbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vector
colnames(smpl.info.df) <- c("Sample", "Name", "GPA_signature")
# remove 1 row data.frames read in from the series matrix
rm(conn, gsm.info, smpl.name, gpa.sig.status)
# extract fraction ("cell type(s)") from sample names
smpl.info.df <- smpl.info.df %>%
                  dplyr::mutate(Cell_type = sub(".*\\ ", "", Name))
# recode the GPA signature bit
smpl.info.df <-
  smpl.info.df %>%
  dplyr::mutate(GPA_signature = dplyr::case_when(
                  grepl("control", GPA_signature) ~ "Control", 
                  grepl("WG Sig -", GPA_signature) ~ "GPAneg",
                  grepl("WG Sig +", GPA_signature) ~ "GPApos"
                ))
# write to file
readr::write_tsv(smpl.info.df, 
                 path = file.path("data", "sample_info",
                                  "GSE18885_sample_info.tsv"))
# remove data.frames that won't be needed
rm(agg.ma.df, gpa.ma.annot, gpa.ma.data, gpl.from.geo)

Apply recount2 model

# load model itself
recount.plier <- readRDS(file.path("data", "recount2_PLIER_data", 
                                   "recount_PLIER_model.RDS"))
# project
recount.b <- GetNewDataB(exprs.mat = as.matrix(exprs.mat),
                         plier.model = recount.plier)
Loading required package: PLIER
Loading required package: RColorBrewer
Loading required package: gplots

Attaching package: ‘gplots’

The following object is masked from ‘package:stats’:

    lowess

Loading required package: pheatmap
Loading required package: glmnet
Loading required package: Matrix
Loading required package: foreach
Loaded glmnet 2.0-13

Loading required package: knitr
Loading required package: rsvd
Loading required package: qvalue
# save B matrix to file
b.file <- file.path(results.dir, "GPA_blood_recount2_B.RDS")
saveRDS(recount.b, file = b.file)

Differential expression

PBMC only

We’re going to restrict our analyses to the peripheral blood mononuclear cell (PBMC) fraction.

# sample information
pbmc.df <- smpl.info.df %>%
  dplyr::filter(Cell_type == "PBMC")
# b matrix (latent variables)
pbmc.b <- recount.b[, pbmc.df$Sample]

Differential expression analysis itself

LVTestWrapper(b.matrix = pbmc.b,
              sample.info.df = pbmc.df,
              phenotype.col = "GPA_signature",
              file.lead = "GPA_blood_recount2_model",
              plot.dir = plot.dir,
              results.dir = results.dir)
Column `Sample` joining factors with different levels, coercing to character vector
$limma

$b.df
NA
LS0tCnRpdGxlOiAiR1BBIGJsb29kIGRpZmZlcmVudGlhbCBleHByZXNzaW9uIgpvdXRwdXQ6ICAgCiAgaHRtbF9ub3RlYm9vazogCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQotLS0KCioqSi4gVGFyb25pIDIwMTgqKgoKSGVyZSwgd2UnbGwgcGVyZm9ybSBkaWZmZXJlbnRpYWwgZXhwcmVzc2lvbiAob2YgTFYpIGFuYWx5c2VzIGZvciB0aGUgUEJNQyBkYXRhIApmcm9tIENoZWFkbGUgQywgQmVyZ2VyIEFFLCBBbmRyYWRlIEYsIGV0IGFsLiAKW1RyYW5zY3JpcHRpb24gb2YgUFIzIGFuZCBSZWxhdGVkIE15ZWxvcG9pZXNpcyBHZW5lcyBpbiBQZXJpcGhlcmFsIEJsb29kIE1vbm9udWNsZWFyIENlbGxzIGluIEFjdGl2ZSBXZWdlbmVy4oCZcyBHcmFudWxvbWF0b3Npc10oaHR0cHM6Ly9keC5kb2kub3JnLzEwLjEwMDIvYXJ0LjI3Mzk4KS4gCl9BcnRocml0aXMgJiBSaGV1bWF0aXNtXywgMjAxMC4gZG9pOiAxMC4xMDAyL2FydC4yNzM5OC4KCldlJ2xsIGJlIGNvbXBhcmluZyB0aGUgaGVhbHRoeSBjb250cm9scywgdGhlIHBhdGllbnRzIHdpdGggYSBHUEEgc2lnbmF0dXJlIAooR1BBLXBvc2l0aXZlKSBhbmQgdGhlIHBhdGllbnRzIHdpdGhvdXQgYSBHUEEgc2lnbmF0dXJlIChHUEEtbmVnYXRpdmUpLgpXZSdsbCBmaXJzdCBuZWVkIHRvIHByb2plY3QgdGhpcyBkYXRhIGludG8gdGhlIHJlY291bnQyIFBMSUVSIG1vZGVsIGxhdGVudCBzcGFjZS4KCiMjIEZ1bmN0aW9ucyBhbmQgZGlyZWN0b3J5IHNldCB1cAoKYGBge3J9CmAlPiVgIDwtIGRwbHlyOjpgJT4lYCAKc291cmNlKGZpbGUucGF0aCgidXRpbCIsICJ0ZXN0X0xWX2RpZmZlcmVuY2VzLlIiKSkKc291cmNlKGZpbGUucGF0aCgidXRpbCIsICJwbGllcl91dGlsLlIiKSkKYGBgCgpgYGB7cn0KIyBwbG90IGFuZCByZXN1bHQgZGlyZWN0b3J5IHNldHVwIGZvciB0aGlzIG5vdGVib29rCnBsb3QuZGlyIDwtIGZpbGUucGF0aCgicGxvdHMiLCAiMTkiKQpkaXIuY3JlYXRlKHBsb3QuZGlyLCByZWN1cnNpdmUgPSBUUlVFLCBzaG93V2FybmluZ3MgPSBGQUxTRSkKcmVzdWx0cy5kaXIgPC0gZmlsZS5wYXRoKCJyZXN1bHRzIiwgIjE5IikKZGlyLmNyZWF0ZShyZXN1bHRzLmRpciwgcmVjdXJzaXZlID0gVFJVRSwgc2hvd1dhcm5pbmdzID0gRkFMU0UpCmBgYAoKIyMgUmVhZCBpbiBkYXRhCgpUaGUgR1BBIGJsb29kIGZpbGUgaXMgaW4gdGhlIGZvcm0gb2YgYSBHRU8gc2VyaWVzIG1hdHJpeCwgd2hpY2ggbWVhbnMgdGhlIApzYW1wbGUgbWV0YWRhdGEgaXMgaW4gd2hhdCBhcmUgZXNzZW50aWFsbHkgY29tbWVudCBmaWVsZHMgYXQgdGhlIGJlZ2lubmluZyBvZiAKdGhlIGZpbGUuClRodXMsIHNvbWUgdWdsaW5lc3Mvd3JhbmdsaW5nIHdpbGwgYmUgbmVjZXNzYXJ5LgoKIyMjIEV4cHJlc3Npb24gZGF0YQoKYGBge3J9CnNlcmllcy5tYXQuZmlsZSA8LSBmaWxlLnBhdGgoImRhdGEiLCAiZXhwcmVzc2lvbl9kYXRhIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdTRTE4ODg1X3Nlcmllc19tYXRyaXgudHh0IikKCiMgZXhwcmVzc2lvbiBtYXRyaXgKZ3BhLm1hLmRhdGEgPC0gCiAgcmVhZHI6OnJlYWRfZGVsaW0oc2VyaWVzLm1hdC5maWxlLCAKICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICJcdCIsIAogICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSAiISIsCiAgICAgICAgICAgICAgICAgICAgY29sX25hbWVzID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgc2tpcCA9IDEpCgojIHRoaXMgaW5mb3JtYXRpb24gYWJvdXQgR1BMNjE0MCB3YXMgZG93bmxvYWRlZCBvbiAxNSBTZXB0IDIwMTcsIGFuZCByZXBvcnRlZGx5CiMgbGFzdCB1cGRhdGVkIG9uIDE4IEphbiAyMDEzCmdwbC5mcm9tLmdlbyA8LSByZWFkcjo6cmVhZF90c3YoZmlsZS5wYXRoKCJkYXRhIiwgImV4cHJlc3Npb25fZGF0YSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1BMNjEwNC0xMTU3Ni50eHQiKSwgY29tbWVudCA9ICIjIikKCiMgdXNlIHRoZSBnZW5lIHN5bWJvbHMgZnJvbSB0aGUgR1BMIGZpbGUgLS0gUExJRVIgdXNlcyBnZW5lIHN5bWJvbHMKZ3BhLm1hLmFubm90IDwtIGdwbC5mcm9tLmdlbyAlPiUKICBkcGx5cjo6c2VsZWN0KGMoSUQsIElMTU5fR2VuZSkpICU+JQogIGRwbHlyOjpsZWZ0X2pvaW4oeSA9IGdwYS5tYS5kYXRhLAogICAgICAgICAgICAgICAgICAgYnkgPSBjKCJJRCIgPSAiSURfUkVGIikpCmNvbG5hbWVzKGdwYS5tYS5hbm5vdClbMl0gPC0gIkdlbmUiCmBgYAoKYGBge3J9CiMgYXJlIHRoZXJlIGFueSBkdXBsaWNhdGVzIGluIHRoZSBnZW5lIHN5bWJvbCBjb2x1bW4/CnN1bShkdXBsaWNhdGVkKGdwYS5tYS5hbm5vdCRHZW5lKSkKYGBgCgpgYGB7cn0KIyBhZ2dyZWdhdGUgJiB3cml0ZSB0byBmaWxlCmFnZy5tYS5kZiA8LSBQcmVwRXhwcmVzc2lvbkRGKGRwbHlyOjpzZWxlY3QoZ3BhLm1hLmFubm90LCAtSUQpKQpyZWFkcjo6d3JpdGVfdHN2KGFnZy5tYS5kZiwKICAgICAgICAgICAgICAgICBwYXRoID0gZmlsZS5wYXRoKCJkYXRhIiwgImV4cHJlc3Npb25fZGF0YSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1NFMTg4ODVfYW5ub3RhdGVkX21lYW4ucGNsIikpCgojIGdldCBleHByZXNzaW9uIG1hdHJpeApleHBycy5tYXQgPC0gYXMubWF0cml4KGRwbHlyOjpzZWxlY3QoYWdnLm1hLmRmLCAtR2VuZSkpCnJvd25hbWVzKGV4cHJzLm1hdCkgPC0gYWdnLm1hLmRmJEdlbmUKYGBgCgojIyMgTWV0YWRhdGEKCkFzIG1lbnRpb25lZCBhYm92ZSwgbWV0YWRhdGEgaXMgYWxzbyBleHRyYWN0ZWQgZnJvbSB0aGUgc2VyaWVzIG1hdHJpeCBmaWxlLgoKYGBge3J9CiMgZ2V0IG1vcmUgaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VyaWVzIG1hdHJpeCBmaWxlCiMgbGluZSA0MSBoYXMgdGhlIHNhbXBsZSBuYW1lcwpjb25uIDwtIGZpbGUoc2VyaWVzLm1hdC5maWxlKQpvcGVuKGNvbm4pCnNtcGwubmFtZSA8LSByZWFkLnRhYmxlKGNvbm4sIHNraXAgPSA0MSwgbnJvdyA9IDEpCmNsb3NlKGNvbm4pCgojIGxpbmUgNTEgY29udGFpbnMgdGhlIFdHIHNpZ25hdHVyZSBzdGF0dXMgLS0gSSdsbCBjYWxsIHRoaXMgR1BBIHNpZ25hdHVyZQojIEdQQS1wb3NpdGl2ZSwgR1BBLW5lZ2F0aXZlIHRvIGJlIGluIGxpbmUgd2l0aCB0aGUgY3VycmVudCBkaXNlYXNlIG5hbWUKY29ubiA8LSBmaWxlKHNlcmllcy5tYXQuZmlsZSkKb3Blbihjb25uKQpncGEuc2lnLnN0YXR1cyA8LSByZWFkLnRhYmxlKGNvbm4sIHNraXAgPSA1MSwgbnJvdyA9IDEpCmNsb3NlKGNvbm4pCgojIHRoaXMgaXMgdGhlIEdFTyBzYW1wbGUgYWNjZXNzaW9uIGluZm9ybWF0aW9uCmNvbm4gPC0gZmlsZShzZXJpZXMubWF0LmZpbGUpCm9wZW4oY29ubikKZ3NtLmluZm8gPC0gcmVhZC50YWJsZShjb25uLCBza2lwID0gNzcsIG5yb3cgPSAxKQpjbG9zZShjb25uKQoKIyBnZXQgdGhvc2UgbGluZXMgaW50byBkYXRhLmZyYW1lIGZvcm1hdApzbXBsLmluZm8uZGYgPC0gYXMuZGF0YS5mcmFtZSh0KGRwbHlyOjpiaW5kX3Jvd3MoZ3NtLmluZm8sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21wbC5uYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwYS5zaWcuc3RhdHVzKSlbLTEsIF0pCmNvbG5hbWVzKHNtcGwuaW5mby5kZikgPC0gYygiU2FtcGxlIiwgIk5hbWUiLCAiR1BBX3NpZ25hdHVyZSIpCgojIHJlbW92ZSAxIHJvdyBkYXRhLmZyYW1lcyByZWFkIGluIGZyb20gdGhlIHNlcmllcyBtYXRyaXgKcm0oY29ubiwgZ3NtLmluZm8sIHNtcGwubmFtZSwgZ3BhLnNpZy5zdGF0dXMpCmBgYAoKYGBge3J9CiMgZXh0cmFjdCBmcmFjdGlvbiAoImNlbGwgdHlwZShzKSIpIGZyb20gc2FtcGxlIG5hbWVzCnNtcGwuaW5mby5kZiA8LSBzbXBsLmluZm8uZGYgJT4lCiAgICAgICAgICAgICAgICAgIGRwbHlyOjptdXRhdGUoQ2VsbF90eXBlID0gc3ViKCIuKlxcICIsICIiLCBOYW1lKSkKCiMgcmVjb2RlIHRoZSBHUEEgc2lnbmF0dXJlIGJpdApzbXBsLmluZm8uZGYgPC0KICBzbXBsLmluZm8uZGYgJT4lCiAgZHBseXI6Om11dGF0ZShHUEFfc2lnbmF0dXJlID0gZHBseXI6OmNhc2Vfd2hlbigKICAgICAgICAgICAgICAgICAgZ3JlcGwoImNvbnRyb2wiLCBHUEFfc2lnbmF0dXJlKSB+ICJDb250cm9sIiwgCiAgICAgICAgICAgICAgICAgIGdyZXBsKCJXRyBTaWcgLSIsIEdQQV9zaWduYXR1cmUpIH4gIkdQQW5lZyIsCiAgICAgICAgICAgICAgICAgIGdyZXBsKCJXRyBTaWcgKyIsIEdQQV9zaWduYXR1cmUpIH4gIkdQQXBvcyIKICAgICAgICAgICAgICAgICkpCgojIHdyaXRlIHRvIGZpbGUKcmVhZHI6OndyaXRlX3RzdihzbXBsLmluZm8uZGYsIAogICAgICAgICAgICAgICAgIHBhdGggPSBmaWxlLnBhdGgoImRhdGEiLCAic2FtcGxlX2luZm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdTRTE4ODg1X3NhbXBsZV9pbmZvLnRzdiIpKQpgYGAKCmBgYHtyfQojIHJlbW92ZSBkYXRhLmZyYW1lcyB0aGF0IHdvbid0IGJlIG5lZWRlZApybShhZ2cubWEuZGYsIGdwYS5tYS5hbm5vdCwgZ3BhLm1hLmRhdGEsIGdwbC5mcm9tLmdlbykKYGBgCgojIyBBcHBseSByZWNvdW50MiBtb2RlbAoKYGBge3J9CiMgbG9hZCBtb2RlbCBpdHNlbGYKcmVjb3VudC5wbGllciA8LSByZWFkUkRTKGZpbGUucGF0aCgiZGF0YSIsICJyZWNvdW50Ml9QTElFUl9kYXRhIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY291bnRfUExJRVJfbW9kZWwuUkRTIikpCiMgcHJvamVjdApyZWNvdW50LmIgPC0gR2V0TmV3RGF0YUIoZXhwcnMubWF0ID0gYXMubWF0cml4KGV4cHJzLm1hdCksCiAgICAgICAgICAgICAgICAgICAgICAgICBwbGllci5tb2RlbCA9IHJlY291bnQucGxpZXIpCmBgYAoKYGBge3J9CiMgc2F2ZSBCIG1hdHJpeCB0byBmaWxlCmIuZmlsZSA8LSBmaWxlLnBhdGgocmVzdWx0cy5kaXIsICJHUEFfYmxvb2RfcmVjb3VudDJfQi5SRFMiKQpzYXZlUkRTKHJlY291bnQuYiwgZmlsZSA9IGIuZmlsZSkKYGBgCgojIyBEaWZmZXJlbnRpYWwgZXhwcmVzc2lvbgoKIyMjIFBCTUMgb25seQoKV2UncmUgZ29pbmcgdG8gcmVzdHJpY3Qgb3VyIGFuYWx5c2VzIHRvIHRoZSBwZXJpcGhlcmFsIGJsb29kIG1vbm9udWNsZWFyIGNlbGwgCihQQk1DKSBmcmFjdGlvbi4KCmBgYHtyfQojIHNhbXBsZSBpbmZvcm1hdGlvbgpwYm1jLmRmIDwtIHNtcGwuaW5mby5kZiAlPiUKICBkcGx5cjo6ZmlsdGVyKENlbGxfdHlwZSA9PSAiUEJNQyIpCmBgYAoKYGBge3J9CiMgYiBtYXRyaXggKGxhdGVudCB2YXJpYWJsZXMpCnBibWMuYiA8LSByZWNvdW50LmJbLCBwYm1jLmRmJFNhbXBsZV0KYGBgCgojIyMgRGlmZmVyZW50aWFsIGV4cHJlc3Npb24gYW5hbHlzaXMgaXRzZWxmCgpgYGB7cn0KTFZUZXN0V3JhcHBlcihiLm1hdHJpeCA9IHBibWMuYiwKICAgICAgICAgICAgICBzYW1wbGUuaW5mby5kZiA9IHBibWMuZGYsCiAgICAgICAgICAgICAgcGhlbm90eXBlLmNvbCA9ICJHUEFfc2lnbmF0dXJlIiwKICAgICAgICAgICAgICBmaWxlLmxlYWQgPSAiR1BBX2Jsb29kX3JlY291bnQyX21vZGVsIiwKICAgICAgICAgICAgICBwbG90LmRpciA9IHBsb3QuZGlyLAogICAgICAgICAgICAgIHJlc3VsdHMuZGlyID0gcmVzdWx0cy5kaXIpCmBgYAo=