Day 1

Setting up the environment

Installing packages

In this section, we will install RnBeads package from Bioconductor, essential for analyzing Infinium methylation arrays.

# installing RnBeads 
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("FDb.InfiniumMethylation.hg19")

source("http://rnbeads.org/data/install.R")

Loading packages

we specify a list of essential R packages, including ggplot2, reshape2, RnBeads, and data.table, which are fundamental for data visualization and analysis in epigenetics studies. The lapply function is then used to load each package in the list, ensuring they are available for use in subsequent analyses.

packages_to_load <- c("ggplot2","reshape2","RnBeads","data.table","pheatmap","RColorBrewer","GOstats")
lapply(packages_to_load, require, character.only=TRUE)
[[1]]
[1] TRUE

[[2]]
[1] TRUE

[[3]]
[1] TRUE

[[4]]
[1] TRUE

[[5]]
[1] TRUE

[[6]]
[1] TRUE

[[7]]
[1] TRUE

Primary analysis

Data and samplesheet preparation

In this segment, we are setting up the file paths and directories necessary for handling DNA methylation data in our epigenetics workshop. The code defines the locations for the raw data (idat.dir), the output directory (report.dir), and the sample sheet (sample.annotation), preparing us to import and analyze the data effectively in subsequent steps.

# preparing sample sheet and data import for selected samples 

# set the working directory
setwd("D:/Work/Epigenetics/Workshops/2024_deNBI-DNA_methylation_design_to_discovery/")

# path to data.files
idat.dir <- file.path("idat/")

# outputPath
report.dir <- "analysis_v5/"

# samplesheet file path
sample.annotation <- file.path("20241202_SampleSheet_SelectedSamples.txt")

data.type<-"idat.dir"

We first use the help("rnb.options") function to display detailed information about configurable parameters available in the RnBeads package. Following this, we configure several RnBeads options, setting the genome assembly to “hg19,” specifying the identifiers column as “SampleID,” and defining the import table separator as a tab. Finally, we export these configurations to an XML format with improved readability using rnb.options2xml(pretty=TRUE). This setup ensures our RnBeads analyses are tailored to our specific dataset and preferences.

# get info on all available RnB parameters.
help("rnb.options") 

# setting rnbeads options
rnb.options(assembly = "hg19")
rnb.options(identifiers.column = "SampleID")
rnb.options(import.table.separator = "\t")
rnb.options2xml(pretty=TRUE)
[1] "<rnb.xml>\n\t<analysis.name null=\"null\"></analysis.name>\n\t<logging>true</logging>\n\t<email null=\"null\"></email>\n\t<assembly>hg19</assembly>\n\t<columns.pairing null=\"null\"></columns.pairing>\n\t<analyze.sites>true</analyze.sites>\n\t<region.types null=\"null\"></region.types>\n\t<region.aggregation>mean</region.aggregation>\n\t<region.subsegments>0</region.subsegments>\n\t<region.subsegments.types null=\"null\"></region.subsegments.types>\n\t<identifiers.column>SampleID</identifiers.column>\n\t<points.category>16,17,3,15,4,7,8</points.category>\n\t<colors.category>#1B9E77,#D95F02,#7570B3,#E7298A,#66A61E,#E6AB02,#A6761D,#666666</colors.category>\n\t<colors.gradient>#132B43,#56B1F7</colors.gradient>\n\t<min.group.size>2</min.group.size>\n\t<max.group.count null=\"null\"></max.group.count>\n\t<gz.large.files>false</gz.large.files>\n\t<strand.specific>false</strand.specific>\n\t<replicate.id.column null=\"null\"></replicate.id.column>\n\t<import>true</import>\n\t<import.default.data.type>idat.dir</import.default.data.type>\n\t<import.table.separator>\t</import.table.separator>\n\t<import.bed.style>bismarkCov</import.bed.style>\n\t<import.bed.columns names=\"chr,start,end,strand,meth,coverage\">1,2,3,6,4,5</import.bed.columns>\n\t<import.bed.frame.shift>1</import.bed.frame.shift>\n\t<import.bed.test>true</import.bed.test>\n\t<import.bed.test.only>false</import.bed.test.only>\n\t<import.skip.object.check>false</import.skip.object.check>\n\t<import.idat.chunk.size null=\"null\"></import.idat.chunk.size>\n\t<import.idat.platform>auto</import.idat.platform>\n\t<import.sex.prediction>true</import.sex.prediction>\n\t<import.dpval.method>controls</import.dpval.method>\n\t<qc>true</qc>\n\t<qc.boxplots>true</qc.boxplots>\n\t<qc.barplots>true</qc.barplots>\n\t<qc.negative.boxplot>true</qc.negative.boxplot>\n\t<qc.snp.heatmap>true</qc.snp.heatmap>\n\t<qc.snp.barplot>false</qc.snp.barplot>\n\t<qc.snp.boxplot>false</qc.snp.boxplot>\n\t<qc.snp.distances>true</qc.snp.distances>\n\t<qc.snp.purity>false</qc.snp.purity>\n\t<qc.coverage.plots>false</qc.coverage.plots>\n\t<qc.coverage.threshold.plot>1,2,3,4,5,6,7,8,9,10</qc.coverage.threshold.plot>\n\t<qc.coverage.histograms>true</qc.coverage.histograms>\n\t<qc.coverage.violins>true</qc.coverage.violins>\n\t<qc.sample.batch.size>500</qc.sample.batch.size>\n\t<qc.cnv>false</qc.cnv>\n\t<qc.cnv.refbased>false</qc.cnv.refbased>\n\t<preprocessing>true</preprocessing>\n\t<normalization null=\"null\"></normalization>\n\t<normalization.method>wm.dasen</normalization.method>\n\t<normalization.background.method>none</normalization.background.method>\n\t<normalization.plot.shifts>true</normalization.plot.shifts>\n\t<filtering.whitelist null=\"null\"></filtering.whitelist>\n\t<filtering.blacklist null=\"null\"></filtering.blacklist>\n\t<filtering.context.removal>CC,CAG,CAH,CTG,CTH,Other</filtering.context.removal>\n\t<filtering.snp>any</filtering.snp>\n\t<filtering.cross.reactive>true</filtering.cross.reactive>\n\t<filtering.greedycut null=\"null\"></filtering.greedycut>\n\t<filtering.greedycut.pvalue.threshold>0.05</filtering.greedycut.pvalue.threshold>\n\t<filtering.greedycut.rc.ties>row</filtering.greedycut.rc.ties>\n\t<filtering.sex.chromosomes.removal>true</filtering.sex.chromosomes.removal>\n\t<filtering.missing.value.quantile>0.5</filtering.missing.value.quantile>\n\t<filtering.coverage.threshold>5</filtering.coverage.threshold>\n\t<filtering.low.coverage.masking>false</filtering.low.coverage.masking>\n\t<filtering.high.coverage.outliers>false</filtering.high.coverage.outliers>\n\t<filtering.deviation.threshold>0</filtering.deviation.threshold>\n\t<imputation.method>none</imputation.method>\n\t<inference>false</inference>\n\t<inference.genome.methylation>Genome-wide methylation</inference.genome.methylation>\n\t<inference.targets.sva></inference.targets.sva>\n\t<inference.reference.methylome.column null=\"null\"></inference.reference.methylome.column>\n\t<inference.max.cell.type.markers>50000</inference.max.cell.type.markers>\n\t<inference.top.cell.type.markers>500</inference.top.cell.type.markers>\n\t<inference.sva.num.method>leek</inference.sva.num.method>\n\t<inference.age.column>age</inference.age.column>\n\t<inference.age.prediction>true</inference.age.prediction>\n\t<inference.age.prediction.training>false</inference.age.prediction.training>\n\t<inference.age.prediction.predictor null=\"null\"></inference.age.prediction.predictor>\n\t<inference.age.prediction.cv>false</inference.age.prediction.cv>\n\t<inference.immune.cells>true</inference.immune.cells>\n\t<exploratory>true</exploratory>\n\t<exploratory.columns null=\"null\"></exploratory.columns>\n\t<exploratory.top.dimensions>0</exploratory.top.dimensions>\n\t<exploratory.principal.components>8</exploratory.principal.components>\n\t<exploratory.correlation.pvalue.threshold>0.01</exploratory.correlation.pvalue.threshold>\n\t<exploratory.correlation.permutations>10000</exploratory.correlation.permutations>\n\t<exploratory.correlation.qc>true</exploratory.correlation.qc>\n\t<exploratory.beta.distribution>true</exploratory.beta.distribution>\n\t<exploratory.intersample>false</exploratory.intersample>\n\t<exploratory.deviation.plots>false</exploratory.deviation.plots>\n\t<exploratory.clustering>all</exploratory.clustering>\n\t<exploratory.clustering.top.sites>1000</exploratory.clustering.top.sites>\n\t<exploratory.clustering.heatmaps.pdf>false</exploratory.clustering.heatmaps.pdf>\n\t<exploratory.region.profiles></exploratory.region.profiles>\n\t<exploratory.gene.symbols null=\"null\"></exploratory.gene.symbols>\n\t<exploratory.custom.loci.bed null=\"null\"></exploratory.custom.loci.bed>\n\t<differential>true</differential>\n\t<differential.site.test.method>limma</differential.site.test.method>\n\t<differential.variability>false</differential.variability>\n\t<differential.variability.method>diffVar</differential.variability.method>\n\t<differential.permutations>0</differential.permutations>\n\t<differential.comparison.columns null=\"null\"></differential.comparison.columns>\n\t<differential.comparison.columns.all.pairwise null=\"null\"></differential.comparison.columns.all.pairwise>\n\t<covariate.adjustment.columns null=\"null\"></covariate.adjustment.columns>\n\t<differential.adjustment.sva>false</differential.adjustment.sva>\n\t<differential.adjustment.celltype>false</differential.adjustment.celltype>\n\t<differential.enrichment.go>false</differential.enrichment.go>\n\t<differential.enrichment.lola>false</differential.enrichment.lola>\n\t<differential.enrichment.lola.dbs>${LOLACore}</differential.enrichment.lola.dbs>\n\t<differential.report.sites>true</differential.report.sites>\n\t<export.to.bed>false</export.to.bed>\n\t<export.to.trackhub></export.to.trackhub>\n\t<export.to.csv>false</export.to.csv>\n\t<export.to.ewasher>false</export.to.ewasher>\n\t<export.types>sites</export.types>\n\t<colors.meth>#AD0021,#909090,#39278C</colors.meth>\n\t<colors.3.gradient>#832424,#FFFFFF,#3A3A98</colors.3.gradient>\n\t<logging.memory>true</logging.memory>\n\t<logging.disk>false</logging.disk>\n\t<logging.exit.on.error>false</logging.exit.on.error>\n\t<distribution.subsample>1000000</distribution.subsample>\n\t<disk.dump.big.matrices>true</disk.dump.big.matrices>\n\t<disk.dump.bigff>true</disk.dump.bigff>\n\t<disk.dump.bigff.finalizer>delete</disk.dump.bigff.finalizer>\n\t<enforce.memory.management>false</enforce.memory.management>\n\t<enforce.destroy.disk.dumps>false</enforce.destroy.disk.dumps>\n</rnb.xml>\n"

RnBeads set

The code initializes the RnBeads analysis by importing DNA methylation data and associated sample annotations from specified directories, subsequently storing the resulting RnBeads dataset object for further analysis.

# import rnbead set
rnbSet = rnb.run.import(data.source = c(idat.dir, sample.annotation), 
                        data.type = data.type,
                        dir.reports = report.dir)
Warning: 'memory.size()' is no longer supported
2026-01-14 17:25:36     Inf  STATUS         STARTED Loading Data
Warning: 'memory.size()' is no longer supported
2026-01-14 17:25:36     Inf    INFO             Number of cores: 1
Warning: 'memory.size()' is no longer supported
2026-01-14 17:25:36     Inf    INFO             Loading data of type "idat.dir"
Warning: 'memory.size()' is no longer supported
2026-01-14 17:25:36     Inf  STATUS             STARTED Loading Data from IDAT Files
Warning: 'memory.size()' is no longer supported
2026-01-14 17:25:36     Inf    INFO                 Added column barcode to the provided sample annotation table
Warning: 'memory.size()' is no longer supported
2026-01-14 17:25:36     Inf    INFO                 Detected platform: HumanMethylation450
Warning: 'memory.size()' is no longer supported
2026-01-14 17:26:20     Inf  STATUS             COMPLETED Loading Data from IDAT Files
Warning: 'memory.size()' is no longer supported
2026-01-14 17:29:30     Inf  STATUS             Loaded data from idat
Warning: 'memory.size()' is no longer supported
2026-01-14 17:29:33     Inf  STATUS             Predicted sex for the loaded samples
Warning: 'memory.size()' is no longer supported
2026-01-14 17:29:35     Inf  STATUS             Added data loading section to the report
Warning: 'memory.size()' is no longer supported
2026-01-14 17:29:35     Inf  STATUS             Loaded 64 samples and 485577 sites
Warning: 'memory.size()' is no longer supported
2026-01-14 17:29:35     Inf    INFO             Output object is of type RnBeadRawSet
Warning: 'memory.size()' is no longer supported
2026-01-14 17:29:35     Inf  STATUS         COMPLETED Loading Data
rnb = rnbSet$rnb.set

Features of RnBeads object

In this section, we explore key features of the RnBeads dataset to understand its structure and contents. The code first displays the top entries of the sample sheet using pheno(rnb), then extracts raw methylation values with meth(rnb), and finally visualizes the methylation distribution for a specific sample using a histogram. ##### Inspecting Dataset Features

# Let's inspect some features of our dataset

# View Sample Sheet
head(pheno(rnb))

# Retrieve Raw Methylation Values
mm <- meth(rnb)

# Plot Raw Methylation Values Histogram
hist(mm[,"Dnr13_F_77_CTRL_Glia"], col="steelblue", breaks=50)


# Check if Regions are Summarized and How
summarized.regions(rnb)
[1] "tiling"     "genes"      "promoters"  "cpgislands"
Working with Annotations
# Inspect Available Annotation for Probes
anno = rnb.annotation2data.frame(rnb.get.annotation("probes450"))
head(anno)

# View Annotation Available for Promoters
annot.promoters <- annotation(rnb, type="promoters")
head(annot.promoters)
Detailed Methylation Analysis
# get methylation for promoters (on a subset of samples and promoters just for illustration)
meth(rnb, type="promoters", row.names=TRUE, i=1:5, j=1:3)
                Dnr01_F_78_AD_Glia Dnr01_F_78_AD_Neuron Dnr02_M_76_AD_Glia
ENSG00000227232          0.1403972            0.1315872          0.1278670
ENSG00000243485          0.1403972            0.1315872          0.1278670
ENSG00000186092          0.4823335            0.4926567          0.6153535
ENSG00000239945          0.1836442            0.2376329          0.2308111
ENSG00000239664          0.8244361            0.8375767          0.8213666
# inspect coverage (number of beads per probe)
nbead <- covg(rnb, row.names=TRUE)
nbead[1:5,1:3]
           Dnr01_F_78_AD_Glia Dnr01_F_78_AD_Neuron Dnr02_M_76_AD_Glia
cg13869341                 10                   15                 15
cg14008030                 11                   14                 14
cg12045430                 13                    9                 16
cg20826792                 12                   12                  7
cg00381604                 15                   10                 10
# detection p-values
pvals <- dpval(rnb, row.names=TRUE)
Diagnostic Plots
# check control probes
rnb.plot.control.boxplot(rnb)
# some specific control
rnb.plot.control.boxplot(rnb, "BISULFITE CONVERSION I")

# Negative control boxplots are generated with the following command:
rnb.plot.negative.boxplot(rnb)

# barplot of a selected control probe
control.meta.data <- rnb.get.annotation("controls450")
ctrl.probe<-paste0(unique(control.meta.data[["Target"]])[2], ".1")
rnb.plot.control.barplot(rnb, ctrl.probe)

# access to full qc results
qc_data = qc(rnb)
Genotyping and Additional Analysis
#use some genotyping probes to check for genomic sample similarity
snp.probes = anno[grep("rs", rownames(anno)), ]

rnb.plot.snp.heatmap(rnb)

#rnb.plot.snp.barplot(dataset = rnb, probeID = rownames(snp.probes) [2], writeToFile = TRUE)

#set some options as desired before running the complete quality check module
rnb.options(qc.snp.boxplot=TRUE)
rnb.options(import.sex.prediction = TRUE)
rnb.options(qc.cnv = TRUE) # calculate copy number variations

Quality check

#see all available options
help("rnb.options") #get info on all available RnB parameters.

#run complete quality report with specific settings

#QC
rnb.options(qc.boxplots = TRUE)
rnb.options(qc.barplots = TRUE)
rnb.options(qc.negative.boxplot = TRUE)
rnb.options(qc.snp.distances = TRUE)
rnb.options(qc.snp.boxplot = TRUE)
rnb.options(qc.snp.barplot = TRUE)
rnb.options(qc.sample.batch.size = 50)
rnb.options(qc.coverage.plots = FALSE)
rnb.options(qc.coverage.threshold.plot = 1:10)
rnb.options(qc.coverage.histograms = FALSE)
rnb.options(qc.coverage.violins = FALSE)

rnb.run.qc(rnb.set = rnb, dir.reports = report.dir) #this will takes some minutes
Warning: 'memory.size()' is no longer supported
2026-01-14 17:31:37     Inf  STATUS         STARTED Quality Control
Warning: 'memory.size()' is no longer supported
2026-01-14 17:31:37     Inf    INFO             Number of cores: 1
Warning: 'memory.size()' is no longer supported
2026-01-14 17:31:37     Inf  STATUS             STARTED Quality Control Section
2026-01-14 17:31:55     Inf  STATUS                 Added quality control box plots
2026-01-14 17:35:09     Inf  STATUS                 Added quality control bar plots
2026-01-14 17:35:14     Inf  STATUS                 Added negative control boxplots
2026-01-14 17:35:14     Inf  STATUS             COMPLETED Quality Control Section
2026-01-14 17:35:14     Inf  STATUS             STARTED Visualizing SNP Probe Data
2026-01-14 17:35:14     Inf  STATUS                 STARTED Mixups Visualization Section
2026-01-14 17:35:21     Inf  STATUS                     Added SNP Heatmap
2026-01-14 17:37:27     Inf  STATUS                     Added SNP Bar Plots
2026-01-14 17:37:30     Inf  STATUS                     Added SNP Box Plot
2026-01-14 17:37:30     Inf  STATUS                     Calculated Manhattan distances between samples based on SNP probes
2026-01-14 17:37:31     Inf  STATUS                     Added SNP-based Distances
2026-01-14 17:37:31     Inf  STATUS                 COMPLETED Mixups Visualization Section
2026-01-14 17:37:31     Inf  STATUS             COMPLETED Visualizing SNP Probe Data
2026-01-14 17:37:39     Inf WARNING             CNV calling currently not supported due to dependency issues
2026-01-14 17:37:39     Inf  STATUS             STARTED Copy Number Variation
2026-01-14 17:37:39     Inf WARNING                 CNV calling currently not supported due to dependency issues
2026-01-14 17:37:39     Inf  STATUS             COMPLETED Copy Number Variation
2026-01-14 17:37:39     Inf  STATUS         COMPLETED Quality Control

Preprocessing

The following R code outlines the preprocessing steps for DNA methylation data using the RnBeads package. It begins by backing up the original unprocessed dataset. Various filtering techniques are then applied to remove undesirable data points based on criteria such as CpG context, SNP presence, and data quality (e.g., missing or low-variability values). Each filtering step concludes with a check on the remaining data, ensuring the refined dataset is ready for further analysis.

Filtering

# preprocessing typically includes filtering of undesired datapoints (mostly sites) and data normalization
rnb.unprocessed = rnb #first we store the unprocessed rnbeads object as a back-up
#save.rnb.set(rnb.unprocessed, "/projects/researchers/jil/projects/deNBI/20241129_WS24/analysis/rnb/rnbSet_Unprocessed", archive = TRUE)

nrow(meth(rnb.unprocessed)) # the number of sites in the unfiltered object
[1] 485577
#some examples of how sites to be removed from dataset
# Remove probes outside of CpG context
rnb.set.filtered <- rnb.execute.context.removal(rnb.set = rnb.unprocessed, contexts = NULL )$dataset
nrow(meth(rnb.set.filtered)) # the number of CpG sites in the unfiltered object
[1] 485577
# SNP filtering allowing no SNPs in the probe sequence (range 3 bp)
rnb.set.filtered <- rnb.execute.snp.removal(rnb.set = rnb.set.filtered, snp = "3")$dataset

# Removal of CpG sites in the unfiltered object
# that contain a SNP in the range of 3bp
nrow(meth(rnb.set.filtered))
[1] 475446
# Remove CpGs on sex chromosomes
rnb.set.filtered <- rnb.execute.sex.removal(rnb.set = rnb.set.filtered)$dataset
nrow(meth(rnb.set.filtered))
[1] 463881
# Remove probes and samples based on a greedycut approach
greedycut.results <- rnb.execute.greedycut(rnb.set = rnb.set.filtered, pval.threshold = 0.05)#$dataset
Warning: 'memory.size()' is no longer supported
2026-01-14 17:46:49     Inf    INFO         Working with a p-value threshold of 0.05
Warning: 'memory.size()' is no longer supported
2026-01-14 17:46:59     Inf  STATUS         Calculated a total of 2042 iterations
Warning: 'memory.size()' is no longer supported
2026-01-14 17:46:59     Inf    INFO         Optimal number of iterations is 2042
to_remove = rownames(meth(object = rnb.set.filtered, row.names = TRUE)) [greedycut.results[["sites"]]]
remove.sites(object = rnb.set.filtered, probelist = to_remove)
Object of class RnBeadRawSet
      64 samples
  461840 probes
    of which: 458833 CpG, 2950 CpH, and 57 rs
Region types:
      133353 regions of type tiling
       29825 regions of type genes
       29991 regions of type promoters
       25829 regions of type cpgislands
Intensity information is present
Detection p-values are present
Bead counts are present
Quality control information is present
Summary of normalization procedures:
    The methylation data was not normalized.
    No background correction was performed.
nrow(meth(rnb.set.filtered))
[1] 463881
# Remove probes containing NA for beta values
rnb.set.filtered <- rnb.execute.na.removal(rnb.set.filtered)$dataset
nrow(meth(rnb.set.filtered))
[1] 463881
# Remove probes for which the beta values have low standard deviation
rnb.set.filtered <- rnb.execute.variability.removal(rnb.set.filtered, 0.005)$dataset
nrow(meth(rnb.set.filtered))
[1] 463864
# we remove sites with any NA or negative values
mm = meth(rnb.set.filtered, row.names = TRUE)
mneg = apply(mm, 1, function(x) any(x <= 0))
mneg = is.na(mneg)
head(mm[mneg, 1:3],10)
           Dnr01_F_78_AD_Glia Dnr01_F_78_AD_Neuron Dnr02_M_76_AD_Glia
cg24598973          0.6037227           0.35977533         0.68252336
cg15988843                 NA           0.11211118         0.12834385
cg11103442                 NA           0.08739884         0.14370488
cg15703790                 NA           0.87636323         0.88330614
cg14171824                 NA           0.06192138         0.14825345
cg05706173          0.8849225           0.86287861         0.89148936
cg20664247          0.6185289           0.38474008         0.60286445
cg14655532          0.8582199           0.72876654         0.87436677
cg17826013          0.0324402                   NA         0.03648129
cg10982045          0.5719655           0.66639436         0.57617421
rnb.set.filtered = remove.sites(object = rnb.set.filtered, probelist = mneg)
nrow(meth(rnb.set.filtered))
[1] 462983
#save.rnb.set(rnb.set.filtered, "/projects/researchers/jil/projects/deNBI/20241129_WS24/analysis/rnb/rnbSet_Filtered", archive = TRUE)

Normalization

We now configure a series of RnBeads package options for filtering and normalization of DNA methylation data. It specifies parameters such as SNP filtering, cross-reactivity exclusion, and the handling of missing values and coverage thresholds. Additionally, it sets up normalization methods, including background correction and method adjustment. The final command executes the predefined preprocessing steps on the filtered dataset and stores the processed data in the rnb object for further analysis.

#preset some options and then run filtering/normalization with one command
# Set filtering and normalization options using a consolidated approach
rnb.options(filtering.whitelist = NULL)
rnb.options(filtering.blacklist = NULL)
rnb.options(filtering.snp = "3")
rnb.options(filtering.cross.reactive = FALSE)
rnb.options(filtering.greedycut = TRUE)
rnb.options(filtering.greedycut.pvalue.threshold = 0.05)
rnb.options(filtering.greedycut.rc.ties = "row")
rnb.options(filtering.sex.chromosomes.removal = TRUE)
rnb.options(filtering.missing.value.quantile = 0.8)
rnb.options(filtering.coverage.threshold = 3)
rnb.options(filtering.low.coverage.masking = FALSE)
rnb.options(filtering.high.coverage.outliers = FALSE)
rnb.options(filtering.deviation.threshold = 0)

rnb.options(normalization = NULL)
rnb.options(normalization.method = "bmiq")       #normalization method
rnb.options(normalization.background.method = "methylumi.noob")#background removal yes/no
rnb.options(normalization.plot.shifts = TRUE)



#rnb.set.norm <- rnb.execute.normalization(rnb.set.unfiltered, method="wm.dazen", bgcorr.method="methylumi.noob")
preprocessed = rnb.run.preprocessing(rnb.set = rnb.set.filtered, dir.reports = report.dir) 
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:03     Inf  STATUS         STARTED Preprocessing
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:03     Inf    INFO             Number of cores: 1
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:03     Inf  STATUS             STARTED Filtering Procedures I
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:03     Inf  STATUS                 STARTED Removal of SNP-enriched Sites
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:03     Inf  STATUS                     Removed 0 sites using SNP criterion "3"
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:03     Inf  STATUS                     Added a corresponding section to the report
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:03     Inf  STATUS                 COMPLETED Removal of SNP-enriched Sites
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:04     Inf    INFO                 Working with a p-value threshold of 0.05
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:04     Inf  STATUS                 STARTED Greedycut
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:12     Inf  STATUS                     Calculated a total of 1446 iterations
Warning: 'memory.size()' is no longer supported
2026-01-14 18:12:12     Inf    INFO                     Optimal number of iterations is 1446
2026-01-14 18:12:15     Inf  STATUS                     Created ROC plot
2026-01-14 18:12:17     Inf  STATUS                     Created line plots for matrix dimensions and other statistics
2026-01-14 18:12:17     Inf  STATUS                     Saved removed sites to D:\Work\Epigenetics\Workshops\2024_deNBI-DNA_methylation_design_to_discovery\analysis_v5\preprocessing_data/removed_sites_greedycut.csv
2026-01-14 18:12:17     Inf  STATUS                 COMPLETED Greedycut
2026-01-14 18:12:17     Inf  STATUS                 Retained 64 samples and 461538 sites
2026-01-14 18:12:17     Inf  STATUS             COMPLETED Filtering Procedures I
2026-01-14 18:12:17     Inf  STATUS             STARTED Summary of Filtering Procedures I
2026-01-14 18:12:19     Inf  STATUS                 Created summary table of removed sites, samples and unreliable measurements
2026-01-14 18:12:19     Inf  STATUS                 Added summary table of removed and retained items
2026-01-14 18:12:20     Inf    INFO                 Subsampling 462983 sites for plotting density distributions
2026-01-14 18:12:21     Inf  STATUS                 Constructed sequences of removed and retained methylation values
2026-01-14 18:12:25     Inf  STATUS                 Added comparison between removed and retained beta values
2026-01-14 18:12:25     Inf  STATUS             COMPLETED Summary of Filtering Procedures I
2026-01-14 18:12:25     Inf  STATUS             STARTED Manipulating the object
2026-01-14 18:15:19     Inf  STATUS                 Removed 1445 sites (probes)
2026-01-14 18:15:19     Inf    INFO                 Retained 461538 sites and 64 samples
2026-01-14 18:15:19     Inf  STATUS             COMPLETED Manipulating the object
2026-01-14 18:15:19     Inf  STATUS             STARTED Normalization Procedure
2026-01-14 18:20:00     Inf  STATUS                 Performed background subtraction with method methylumi.noob
2026-01-14 18:20:35     Inf  STATUS                 Normalized sample 1
2026-01-14 18:21:10     Inf  STATUS                 Normalized sample 2
2026-01-14 18:21:44     Inf  STATUS                 Normalized sample 3
2026-01-14 18:22:18     Inf  STATUS                 Normalized sample 4
2026-01-14 18:22:51     Inf  STATUS                 Normalized sample 5
2026-01-14 18:23:25     Inf  STATUS                 Normalized sample 6
2026-01-14 18:23:59     Inf  STATUS                 Normalized sample 7
2026-01-14 18:24:32     Inf  STATUS                 Normalized sample 8
2026-01-14 18:25:04     Inf  STATUS                 Normalized sample 9
2026-01-14 18:25:37     Inf  STATUS                 Normalized sample 10
2026-01-14 18:26:11     Inf  STATUS                 Normalized sample 11
2026-01-14 18:26:45     Inf  STATUS                 Normalized sample 12
2026-01-14 18:27:19     Inf  STATUS                 Normalized sample 13
2026-01-14 18:27:51     Inf  STATUS                 Normalized sample 14
2026-01-14 18:28:25     Inf  STATUS                 Normalized sample 15
2026-01-14 18:28:58     Inf  STATUS                 Normalized sample 16
2026-01-14 18:29:31     Inf  STATUS                 Normalized sample 17
2026-01-14 18:30:05     Inf  STATUS                 Normalized sample 18
2026-01-14 18:30:39     Inf  STATUS                 Normalized sample 19
2026-01-14 18:31:14     Inf  STATUS                 Normalized sample 20
2026-01-14 18:31:47     Inf  STATUS                 Normalized sample 21
2026-01-14 18:32:22     Inf  STATUS                 Normalized sample 22
2026-01-14 18:32:56     Inf  STATUS                 Normalized sample 23
2026-01-14 18:33:29     Inf  STATUS                 Normalized sample 24
2026-01-14 18:34:03     Inf  STATUS                 Normalized sample 25
2026-01-14 18:34:39     Inf  STATUS                 Normalized sample 26
2026-01-14 18:35:11     Inf  STATUS                 Normalized sample 27
2026-01-14 18:35:44     Inf  STATUS                 Normalized sample 28
2026-01-14 18:36:16     Inf  STATUS                 Normalized sample 29
2026-01-14 18:36:48     Inf  STATUS                 Normalized sample 30
2026-01-14 18:37:20     Inf  STATUS                 Normalized sample 31
2026-01-14 18:37:53     Inf  STATUS                 Normalized sample 32
2026-01-14 18:38:25     Inf  STATUS                 Normalized sample 33
2026-01-14 18:38:58     Inf  STATUS                 Normalized sample 34
2026-01-14 18:39:30     Inf  STATUS                 Normalized sample 35
2026-01-14 18:40:03     Inf  STATUS                 Normalized sample 36
2026-01-14 18:40:35     Inf  STATUS                 Normalized sample 37
2026-01-14 18:41:08     Inf  STATUS                 Normalized sample 38
2026-01-14 18:41:42     Inf  STATUS                 Normalized sample 39
2026-01-14 18:42:14     Inf  STATUS                 Normalized sample 40
2026-01-14 18:42:47     Inf  STATUS                 Normalized sample 41
2026-01-14 18:43:20     Inf  STATUS                 Normalized sample 42
2026-01-14 18:43:52     Inf  STATUS                 Normalized sample 43
2026-01-14 18:44:24     Inf  STATUS                 Normalized sample 44
2026-01-14 18:44:57     Inf  STATUS                 Normalized sample 45
2026-01-14 18:45:30     Inf  STATUS                 Normalized sample 46
2026-01-14 18:46:01     Inf  STATUS                 Normalized sample 47
2026-01-14 18:46:33     Inf  STATUS                 Normalized sample 48
2026-01-14 18:47:06     Inf  STATUS                 Normalized sample 49
2026-01-14 18:47:39     Inf  STATUS                 Normalized sample 50
2026-01-14 18:48:11     Inf  STATUS                 Normalized sample 51
2026-01-14 18:48:44     Inf  STATUS                 Normalized sample 52
2026-01-14 18:49:17     Inf  STATUS                 Normalized sample 53
2026-01-14 18:49:50     Inf  STATUS                 Normalized sample 54
2026-01-14 18:50:22     Inf  STATUS                 Normalized sample 55
2026-01-14 18:50:55     Inf  STATUS                 Normalized sample 56
2026-01-14 18:51:28     Inf  STATUS                 Normalized sample 57
2026-01-14 18:52:02     Inf  STATUS                 Normalized sample 58
2026-01-14 18:52:35     Inf  STATUS                 Normalized sample 59
2026-01-14 18:53:07     Inf  STATUS                 Normalized sample 60
2026-01-14 18:53:38     Inf  STATUS                 Normalized sample 61
2026-01-14 18:54:11     Inf  STATUS                 Normalized sample 62
2026-01-14 18:54:44     Inf  STATUS                 Normalized sample 63
2026-01-14 18:55:17     Inf  STATUS                 Normalized sample 64
2026-01-14 18:58:06     Inf  STATUS                 Performed normalization with method bmiq
2026-01-14 19:00:48     Inf  STATUS                 Performed normalization with method "bmiq"
2026-01-14 19:00:58     Inf  STATUS                 Added comparison between non-normalized and normalized beta values
2026-01-14 19:01:04     Inf  STATUS                 Added histogram of observed beta shifts (magnitude of correction)
2026-01-14 19:01:05     Inf  STATUS                 Added 2D histogram of observed beta values and shifts
2026-01-14 19:01:25     Inf  STATUS                 Added normalization section
2026-01-14 19:01:25     Inf  STATUS             COMPLETED Normalization Procedure
2026-01-14 19:01:25     Inf  STATUS             STARTED Filtering Procedures II
2026-01-14 19:01:26     Inf  STATUS                 STARTED Probe Context Removal
2026-01-14 19:01:26     Inf  STATUS                     Removed 3007 probe(s) having not acceptable context
2026-01-14 19:01:26     Inf  STATUS                     Saved removed sites to D:\Work\Epigenetics\Workshops\2024_deNBI-DNA_methylation_design_to_discovery\analysis_v5\preprocessing_data/removed_sites_context.csv
2026-01-14 19:01:26     Inf  STATUS                     Added a corresponding section to the report
2026-01-14 19:01:26     Inf  STATUS                 COMPLETED Probe Context Removal
2026-01-14 19:01:26     Inf  STATUS                 STARTED Removal of Sites on Sex Chromosomes
2026-01-14 19:01:26     Inf  STATUS                     Removed 0 site(s) on sex chromosomes
2026-01-14 19:01:26     Inf  STATUS                     Added a corresponding section to the report
2026-01-14 19:01:26     Inf  STATUS                 COMPLETED Removal of Sites on Sex Chromosomes
2026-01-14 19:01:26     Inf  STATUS                 STARTED Missing Value Removal
2026-01-14 19:01:26     Inf  STATUS                     Using a sample quantile threshold of 0.8
2026-01-14 19:01:26     Inf  STATUS                     Removed 0 site(s) with too many missing values
2026-01-14 19:01:26     Inf  STATUS                     Added a corresponding section to the report
2026-01-14 19:01:26     Inf  STATUS                 COMPLETED Missing Value Removal
2026-01-14 19:01:26     Inf  STATUS                 Retained 64 samples and 458531 sites
2026-01-14 19:01:26     Inf  STATUS             COMPLETED Filtering Procedures II
2026-01-14 19:01:27     Inf  STATUS             STARTED Summary of Filtering Procedures II
2026-01-14 19:01:29     Inf  STATUS                 Created summary table of removed sites, samples and unreliable measurements
2026-01-14 19:01:30     Inf  STATUS                 Added summary table of removed and retained items
2026-01-14 19:01:30     Inf    INFO                 Subsampling 461538 sites for plotting density distributions
2026-01-14 19:01:31     Inf  STATUS                 Constructed sequences of removed and retained methylation values
2026-01-14 19:01:35     Inf  STATUS                 Added comparison between removed and retained beta values
2026-01-14 19:01:35     Inf  STATUS             COMPLETED Summary of Filtering Procedures II
2026-01-14 19:01:35     Inf  STATUS             STARTED Manipulating the object
2026-01-14 19:04:45     Inf  STATUS                 Removed 3007 sites (probes)
2026-01-14 19:04:45     Inf    INFO                 Retained 458531 sites and 64 samples
2026-01-14 19:04:45     Inf  STATUS             COMPLETED Manipulating the object
2026-01-14 19:04:45     Inf    INFO             Imputation was skipped, data set may still contain missing methylation values
2026-01-14 19:04:45     Inf  STATUS         COMPLETED Preprocessing
rnb = preprocessed$rnb.set

Inference module

This block of R code performs several advanced analyses using the RnBeads package, starting with tissue deconvolution to estimate cell types via the Houseman algorithm and visualizing these estimates with a heatmap. It also evaluates immune cell content and predicts epigenetic age. The script then sets up various inference options to fine-tune the analysis parameters before running a comprehensive inference analysis. Lastly, it performs surrogate variable analysis (SVA) to adjust for potential confounders in the data, enhancing the accuracy of the results.

# Tissue deconvolution - reference based celltype estimation using houseman algorithm
ct <- rnb.execute.ct.estimation(rnb, cell.type.column="CellType", test.max.markers=10000, top.markers=500)
Warning: package ‘nlme’ was built under R version 4.3.3
rnb.plot.ct.heatmap(ct.obj = ct)
ct$contributions
                         Glia     Neuron
Ftl_RZ052_F82_AD5   0.7099187 0.42052342
Ftl_RZ055_M80_AD5   0.7244652 0.43086820
Ftl_RZ063_M73_AD6   0.5877664 0.59768527
Ftl_RZ065_F65_AD6   0.9050903 0.24538383
Ftl_RZ067_F67_AD6   0.7209265 0.43178780
Ftl_RZ068_F93_AD6   0.6973143 0.43113367
Ftl_RZ069_M74_AD6   0.8109431 0.32592661
Ftl_RZ070_M53_CTRL0 0.7254189 0.41816050
Ftl_RZ077_M57_CTRL1 0.8774025 0.18778171
Ftl_RZ082_F46_CTRL1 0.9230048 0.14387449
Ftl_RZ084_M50_CTRL0 0.8318920 0.29072863
Ftl_RZ085_M63_CTRL1 0.8239656 0.31139635
Ftl_RZ089_M53_CTRL0 0.8057000 0.27746612
Ftl_RZ099_F55_CTRL0 0.8249523 0.26114206
Ftl_RZ119_M75_AD6   0.8088943 0.31149248
Ftl_RZ121_M83_AD6   0.8948550 0.17529084
Ftl_RZ122_F82_AD6   0.7835898 0.34549182
Ftl_RZ145_F85_CTRL1 0.5133064 0.65680603
Ftl_RZ339_M60_CTRL0 0.8478684 0.21683224
Ftl_RZ342_F83_CTRL2 0.6974110 0.45961178
Tmp_RZ016_M83_AD6   0.7705902 0.31523839
Tmp_RZ052_F82_AD5   0.6566257 0.49171318
Tmp_RZ055_M80_AD5   0.9096774 0.18684516
Tmp_RZ063_M73_AD6   0.6957135 0.43077108
Tmp_RZ065_F65_AD6   0.8314093 0.23942099
Tmp_RZ067_F67_AD6   0.6682452 0.48064458
Tmp_RZ068_F93_AD6   0.8775926 0.22295394
Tmp_RZ069_M74_AD6   0.8521769 0.19865229
Tmp_RZ070_M53_CTRL0 0.6420405 0.50727530
Tmp_RZ077_M57_CTRL1 0.8561631 0.21770588
Tmp_RZ082_F46_CTRL1 0.8528254 0.23484437
Tmp_RZ084_M50_CTRL0 0.8332867 0.22402473
Tmp_RZ085_M63_CTRL1 0.8155648 0.28099846
Tmp_RZ089_M53_CTRL0 0.8951400 0.16996202
Tmp_RZ092_M71_CTRL1 0.8768424 0.23341724
Tmp_RZ099_F55_CTRL0 0.8326705 0.26359957
Tmp_RZ121_M83_AD6   0.7541040 0.44696917
Tmp_RZ122_F82_AD6   0.9620802 0.07590421
Tmp_RZ145_F85_CTRL1 0.6162535 0.61629975
Tmp_RZ342_F83_CTRL2 0.5541208 0.57212841
# immune cell content
immune.content <- rnb.execute.lump(rnb)

#calculate epigenetic age
rnb.execute.age.prediction(object = rnb)
Warning: 'memory.size()' is no longer supported
2026-01-14 19:10:14     Inf  STATUS         STARTED Performing Age Prediction
Warning: 'memory.size()' is no longer supported
2026-01-14 19:10:15     Inf  STATUS         COMPLETED Performing Age Prediction
Object of class RnBeadRawSet
      64 samples
  458531 probes
    of which: 458531 CpG, 0 CpH, and 0 rs
Region types:
      131197 regions of type tiling
       29754 regions of type genes
       29927 regions of type promoters
       25829 regions of type cpgislands
Intensity information is present
Detection p-values are present
Bead counts are present
Quality control information is present
Summary of normalization procedures:
    The methylation data was normalized with method bmiq.
    Background correction was performed with method methylumi.noob.
# preset some settings
rnb.options(inference.age.prediction = TRUE)
rnb.options(inference.age.column = "Age")
rnb.options(inference.age.prediction.training = FALSE)
rnb.options(inference.age.prediction.cv = FALSE)
rnb.options(inference.immune.cells = TRUE)
rnb.options(inference.genome.methylation = "Genome-wide methylation")
rnb.options(inference.targets.sva = character())
rnb.options(inference.reference.methylome.column = "CellType")
rnb.options(inference.max.cell.type.markers = 10000)
rnb.options(inference.top.cell.type.markers = 500)
rnb.options(inference.sva.num.method = "leek")

rnb_inference = rnb.run.inference(rnb.set = rnb, dir.reports = report.dir)
Warning: 'memory.size()' is no longer supported
2026-01-14 19:10:16     Inf  STATUS         STARTED Covariate Inference
Warning: 'memory.size()' is no longer supported
2026-01-14 19:10:16     Inf    INFO             Number of cores: 1
2026-01-14 19:10:18     Inf  STATUS             STARTED Age Prediction using predefined predictor
2026-01-14 19:10:19     Inf  STATUS             COMPLETED Age Prediction using predefined predictor
2026-01-14 19:10:19     Inf  STATUS             STARTED Adding Age Prediction Section to Report
2026-01-14 19:13:18     Inf  STATUS                 Added Comparison Plot
2026-01-14 19:13:21     Inf  STATUS                 Added Error Plot
2026-01-14 19:13:53     Inf  STATUS                 Added Stratification Plot
2026-01-14 19:13:53     Inf  STATUS             COMPLETED Adding Age Prediction Section to Report
2026-01-14 19:14:05     Inf  STATUS             Added Immune Stratification Plot
2026-01-14 19:14:05     Inf  STATUS             Calculated LUMP estimates
2026-01-14 19:14:05     Inf  STATUS             STARTED Estimation of the cell type heterogeneity effects
2026-01-14 19:14:05     Inf  STATUS                 STARTED Performing computations
2026-01-14 19:17:57     Inf  STATUS                 COMPLETED Performing computations
2026-01-14 19:17:57     Inf  STATUS                 STARTED Adding a section to the report
2026-01-14 19:18:00     Inf  STATUS                 COMPLETED Adding a section to the report
2026-01-14 19:18:00     Inf  STATUS             COMPLETED Estimation of the cell type heterogeneity effects
2026-01-14 19:18:00     Inf    INFO             Added cell type covariates to the RnBSet object
2026-01-14 19:18:00     Inf  STATUS         COMPLETED Covariate Inference

rnb = rnb_inference$rnb.set

# let's do the sva analysis as an addendum
sva.obj <- rnb.execute.sva(rnb, cmp.cols = "Group", numSVmethod="be")
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:00     Inf  STATUS         STARTED Conducting SVA analysis
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:00     Inf    INFO             Considering the following target variables: Group
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:00     Inf  STATUS             STARTED Preparing data
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:01     Inf    INFO                 Removed 0 sites without variation
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:01     Inf    INFO                 Removed 0 sites containing missing values
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:01     Inf  STATUS             COMPLETED Preparing data
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:01     Inf  STATUS             STARTED Computing components: SVA
Warning: 'memory.size()' is no longer supported
2026-01-14 19:18:01     Inf  STATUS                 STARTED Target variable: Group
Number of significant surrogate variables is:  12 
Iteration (out of 5 ):1  2  3  4  5  
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:28     Inf  STATUS                 COMPLETED Target variable: Group
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:28     Inf    INFO                 Found SVs for  1 comparisons
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:28     Inf  STATUS             COMPLETED Computing components: SVA
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:28     Inf  STATUS             STARTED Computing association of SVA with PCA and sample annotations
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:28     Inf  STATUS                 STARTED Computing components: PCA
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:41     Inf  STATUS                 COMPLETED Computing components: PCA
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:41     Inf  STATUS                 STARTED Target variable: Group
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:41     Inf  STATUS                 COMPLETED Target variable: Group
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:41     Inf  STATUS             COMPLETED Computing association of SVA with PCA and sample annotations
Warning: 'memory.size()' is no longer supported
2026-01-14 19:27:41     Inf  STATUS         COMPLETED Conducting SVA analysis
rnb <- set.covariates.sva(rnb, sva.obj)

Exploratory module

using RnBeads

This code block initiates an exploratory analysis, a process estimated to take approximately 3 hours. The function rnb.run.exploratory is called to perform a comprehensive exploration of the RnBeads dataset (containg all samples), generating a detailed report. After the analysis, the dataset is saved with archival settings for future access.

Suggestion for Participants: It’s advisable to run this analysis during the evening or early morning. This ensures that the lengthy processing completes overnight or before the workshop resumes the next day, avoiding any delays in continuing with the planned activities. If there are any issues in running the analysis or if it does not complete, a processed dataset will be provided to ensure no interruption in the workshop progress.

 #  Takes roughly 3 hours 
rnb.run.exploratory(rnb.set = rnb, dir.reports = report.dir)
Warning: 'memory.size()' is no longer supported
2026-01-14 20:06:37     Inf  STATUS         STARTED Exploratory Analysis
Warning: 'memory.size()' is no longer supported
2026-01-14 20:06:37     Inf    INFO             Number of cores: 1
Warning: 'memory.size()' is no longer supported
2026-01-14 20:06:37     Inf  STATUS             Designed color mappings for probe type and CGI status
2026-01-14 20:07:02     Inf  STATUS             STARTED Dimension Reduction Techniques
2026-01-14 20:07:09     Inf  STATUS                 STARTED MDS
2026-01-14 20:07:31     Inf  STATUS                     Calculated MDS coordinates using manhattan distance
2026-01-14 20:07:47     Inf  STATUS                     Calculated MDS coordinates using euclidean distance
2026-01-14 20:07:47     Inf  STATUS                 COMPLETED MDS
2026-01-14 20:07:47     Inf  STATUS                 STARTED PCA
2026-01-14 20:08:00     Inf  STATUS                 COMPLETED PCA
2026-01-14 20:08:01     Inf  STATUS                 STARTED MDS
2026-01-14 20:08:05     Inf  STATUS                     Calculated MDS coordinates using manhattan distance
2026-01-14 20:08:09     Inf  STATUS                     Calculated MDS coordinates using euclidean distance
2026-01-14 20:08:09     Inf  STATUS                 COMPLETED MDS
2026-01-14 20:08:09     Inf  STATUS                 STARTED PCA
2026-01-14 20:08:12     Inf  STATUS                 COMPLETED PCA
2026-01-14 20:08:13     Inf  STATUS                 STARTED MDS
2026-01-14 20:08:14     Inf  STATUS                     Calculated MDS coordinates using manhattan distance
2026-01-14 20:08:15     Inf  STATUS                     Calculated MDS coordinates using euclidean distance
2026-01-14 20:08:15     Inf  STATUS                 COMPLETED MDS
2026-01-14 20:08:15     Inf  STATUS                 STARTED PCA
2026-01-14 20:08:16     Inf  STATUS                 COMPLETED PCA
2026-01-14 20:08:16     Inf  STATUS                 STARTED MDS
2026-01-14 20:08:17     Inf  STATUS                     Calculated MDS coordinates using manhattan distance
2026-01-14 20:08:18     Inf  STATUS                     Calculated MDS coordinates using euclidean distance
2026-01-14 20:08:18     Inf  STATUS                 COMPLETED MDS
2026-01-14 20:08:18     Inf  STATUS                 STARTED PCA
2026-01-14 20:08:19     Inf  STATUS                 COMPLETED PCA
2026-01-14 20:08:19     Inf  STATUS                 STARTED MDS
2026-01-14 20:08:21     Inf  STATUS                     Calculated MDS coordinates using manhattan distance
2026-01-14 20:08:22     Inf  STATUS                     Calculated MDS coordinates using euclidean distance
2026-01-14 20:08:22     Inf  STATUS                 COMPLETED MDS
2026-01-14 20:08:22     Inf  STATUS                 STARTED PCA
2026-01-14 20:08:24     Inf  STATUS                 COMPLETED PCA
2026-01-14 20:08:24     Inf    INFO                 Mapping 13 traits to point colors and types
2026-01-14 21:05:32     Inf    INFO                 Principal components that explain at least 95 % of the total variance: 33
2026-01-14 21:05:32     Inf    INFO                 Saved percentage of total variance to pca_variance_explained_1.csv
2026-01-14 21:05:33     Inf    INFO                 Principal components that explain at least 95 % of the total variance: 31
2026-01-14 21:05:33     Inf    INFO                 Saved percentage of total variance to pca_variance_explained_2.csv
2026-01-14 21:05:34     Inf    INFO                 Principal components that explain at least 95 % of the total variance: 30
2026-01-14 21:05:34     Inf    INFO                 Saved percentage of total variance to pca_variance_explained_3.csv
2026-01-14 21:05:34     Inf    INFO                 Principal components that explain at least 95 % of the total variance: 31
2026-01-14 21:05:34     Inf    INFO                 Saved percentage of total variance to pca_variance_explained_4.csv
2026-01-14 21:05:35     Inf    INFO                 Principal components that explain at least 95 % of the total variance: 30
2026-01-14 21:05:35     Inf    INFO                 Saved percentage of total variance to pca_variance_explained_5.csv
2026-01-14 21:05:36     Inf  STATUS                 Created scatter plots and CDFs summarizing the reduced dimensional representations
2026-01-14 21:05:36     Inf  STATUS             COMPLETED Dimension Reduction Techniques
2026-01-14 21:05:36     Inf  STATUS             STARTED Tests for Associations
2026-01-14 21:05:36     Inf    INFO                 Testing the following traits for associations: DonorID; Sex; Age; Type; CellType; Tissue; Diagnosis; Group; stage; Sentrix_ID; Sentrix_Position; AD_vs_CTRL_Neuron; AD_vs_CTRL_Glia; AD_vs_CTRL_FC; AD_vs_CTRL_TC; Predicted Male Probability; Predicted Sex; Genome-wide methylation; predicted_ages; age_increase; Immune Cell Content (LUMP)
2026-01-14 21:05:36     Inf  STATUS                 Created 10000 sample permutations
2026-01-14 21:07:22     Inf  STATUS                 Computed correlations between principal components and traits.
2026-01-14 21:07:37     Inf  STATUS                 Computed pairwise correlations between traits.
2026-01-14 21:07:37     Inf  STATUS             COMPLETED Tests for Associations
2026-01-14 21:07:48     Inf  STATUS             STARTED Quality-associated Batch Effects
2026-01-14 21:08:49     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion I for sites
2026-01-14 21:09:09     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion II for sites
2026-01-14 21:09:29     Inf  STATUS                 Computed associations between 8 principal component(s) and extension for sites
2026-01-14 21:09:44     Inf  STATUS                 Computed associations between 8 principal component(s) and hybridization for sites
2026-01-14 21:10:04     Inf  STATUS                 Computed associations between 8 principal component(s) and non-polymorphic for sites
2026-01-14 21:11:05     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity I for sites
2026-01-14 21:11:23     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity II for sites
2026-01-14 21:11:42     Inf  STATUS                 Computed associations between 8 principal component(s) and staining for sites
2026-01-14 21:11:52     Inf  STATUS                 Computed associations between 8 principal component(s) and target removal for sites
2026-01-14 21:12:52     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion I for tiling
2026-01-14 21:13:12     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion II for tiling
2026-01-14 21:13:32     Inf  STATUS                 Computed associations between 8 principal component(s) and extension for tiling
2026-01-14 21:13:47     Inf  STATUS                 Computed associations between 8 principal component(s) and hybridization for tiling
2026-01-14 21:14:08     Inf  STATUS                 Computed associations between 8 principal component(s) and non-polymorphic for tiling
2026-01-14 21:15:09     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity I for tiling
2026-01-14 21:15:24     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity II for tiling
2026-01-14 21:15:44     Inf  STATUS                 Computed associations between 8 principal component(s) and staining for tiling
2026-01-14 21:15:54     Inf  STATUS                 Computed associations between 8 principal component(s) and target removal for tiling
2026-01-14 21:16:59     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion I for genes
2026-01-14 21:17:20     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion II for genes
2026-01-14 21:17:42     Inf  STATUS                 Computed associations between 8 principal component(s) and extension for genes
2026-01-14 21:17:57     Inf  STATUS                 Computed associations between 8 principal component(s) and hybridization for genes
2026-01-14 21:18:18     Inf  STATUS                 Computed associations between 8 principal component(s) and non-polymorphic for genes
2026-01-14 21:19:19     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity I for genes
2026-01-14 21:19:35     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity II for genes
2026-01-14 21:19:56     Inf  STATUS                 Computed associations between 8 principal component(s) and staining for genes
2026-01-14 21:20:06     Inf  STATUS                 Computed associations between 8 principal component(s) and target removal for genes
2026-01-14 21:21:09     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion I for promoters
2026-01-14 21:21:30     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion II for promoters
2026-01-14 21:21:50     Inf  STATUS                 Computed associations between 8 principal component(s) and extension for promoters
2026-01-14 21:22:08     Inf  STATUS                 Computed associations between 8 principal component(s) and hybridization for promoters
2026-01-14 21:22:31     Inf  STATUS                 Computed associations between 8 principal component(s) and non-polymorphic for promoters
2026-01-14 21:23:33     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity I for promoters
2026-01-14 21:23:49     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity II for promoters
2026-01-14 21:24:10     Inf  STATUS                 Computed associations between 8 principal component(s) and staining for promoters
2026-01-14 21:24:20     Inf  STATUS                 Computed associations between 8 principal component(s) and target removal for promoters
2026-01-14 21:25:22     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion I for cpgislands
2026-01-14 21:25:44     Inf  STATUS                 Computed associations between 8 principal component(s) and bisulfite conversion II for cpgislands
2026-01-14 21:26:05     Inf  STATUS                 Computed associations between 8 principal component(s) and extension for cpgislands
2026-01-14 21:26:20     Inf  STATUS                 Computed associations between 8 principal component(s) and hybridization for cpgislands
2026-01-14 21:26:40     Inf  STATUS                 Computed associations between 8 principal component(s) and non-polymorphic for cpgislands
2026-01-14 21:27:39     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity I for cpgislands
2026-01-14 21:27:54     Inf  STATUS                 Computed associations between 8 principal component(s) and specificity II for cpgislands
2026-01-14 21:28:14     Inf  STATUS                 Computed associations between 8 principal component(s) and staining for cpgislands
2026-01-14 21:28:24     Inf  STATUS                 Computed associations between 8 principal component(s) and target removal for cpgislands
2026-01-14 21:30:36     Inf  STATUS                 Added heatmaps of correlation between principal components and signal levels of Q probes
2026-01-14 21:30:36     Inf  STATUS             COMPLETED Quality-associated Batch Effects
2026-01-14 21:30:39     Inf  STATUS             STARTED Methylation Value Distributions - Sample Groups
2026-01-14 21:30:39     Inf    INFO                 processing beta_density_samples_1_1
2026-01-14 21:30:39     Inf    INFO                 Density estimation ( all samples--sites ): Groupwise retained observations after missing value removal: all:29345984/29345984
2026-01-14 21:30:40     Inf    INFO                 Density estimation ( all samples--sites ): Groupwise retained observations after subsampling: all:1000000/29345984
2026-01-14 21:30:41     Inf    INFO                 processing beta_density_samples_1_2
2026-01-14 21:30:42     Inf    INFO                 Density estimation ( all samples--tiling ): Groupwise retained observations after missing value removal: all:8396608/8396608
2026-01-14 21:30:42     Inf    INFO                 Density estimation ( all samples--tiling ): Groupwise retained observations after subsampling: all:1000000/8396608
2026-01-14 21:30:43     Inf    INFO                 processing beta_density_samples_1_3
2026-01-14 21:30:43     Inf    INFO                 Density estimation ( all samples--genes ): Groupwise retained observations after missing value removal: all:1904256/1904256
2026-01-14 21:30:44     Inf    INFO                 Density estimation ( all samples--genes ): Groupwise retained observations after subsampling: all:1000000/1904256
2026-01-14 21:30:46     Inf    INFO                 processing beta_density_samples_1_4
2026-01-14 21:30:46     Inf    INFO                 Density estimation ( all samples--promoters ): Groupwise retained observations after missing value removal: all:1915328/1915328
2026-01-14 21:30:46     Inf    INFO                 Density estimation ( all samples--promoters ): Groupwise retained observations after subsampling: all:1000000/1915328
2026-01-14 21:30:48     Inf    INFO                 processing beta_density_samples_1_5
2026-01-14 21:30:48     Inf    INFO                 Density estimation ( all samples--cpgislands ): Groupwise retained observations after missing value removal: all:1653056/1653056
2026-01-14 21:30:48     Inf    INFO                 Density estimation ( all samples--cpgislands ): Groupwise retained observations after subsampling: all:1000000/1653056
2026-01-14 21:30:50     Inf    INFO                 processing beta_density_samples_2_1
2026-01-14 21:30:50     Inf    INFO                 Density estimation ( Sex--sites ): Groupwise retained observations after missing value removal: F:13755930/13755930; M:15590054/15590054
2026-01-14 21:30:51     Inf    INFO                 Density estimation ( Sex--sites ): Groupwise retained observations after subsampling: F:937500/13755930; M:1062500/15590054
2026-01-14 21:30:54     Inf    INFO                 processing beta_density_samples_2_2
2026-01-14 21:30:54     Inf    INFO                 Density estimation ( Sex--tiling ): Groupwise retained observations after missing value removal: F:3935910/3935910; M:4460698/4460698
2026-01-14 21:30:55     Inf    INFO                 Density estimation ( Sex--tiling ): Groupwise retained observations after subsampling: F:937500/3935910; M:1062500/4460698
2026-01-14 21:30:58     Inf    INFO                 processing beta_density_samples_2_3
2026-01-14 21:30:58     Inf    INFO                 Density estimation ( Sex--genes ): Groupwise retained observations after missing value removal: F:892620/892620; M:1011636/1011636
2026-01-14 21:31:01     Inf    INFO                 processing beta_density_samples_2_4
2026-01-14 21:31:01     Inf    INFO                 Density estimation ( Sex--promoters ): Groupwise retained observations after missing value removal: F:897810/897810; M:1017518/1017518
2026-01-14 21:31:03     Inf    INFO                 processing beta_density_samples_2_5
2026-01-14 21:31:03     Inf    INFO                 Density estimation ( Sex--cpgislands ): Groupwise retained observations after missing value removal: F:774870/774870; M:878186/878186
2026-01-14 21:31:06     Inf    INFO                 processing beta_density_samples_3_1
2026-01-14 21:31:07     Inf    INFO                 Density estimation ( Type--sites ): Groupwise retained observations after missing value removal: Sorted:11004744/11004744; Tissue:18341240/18341240
2026-01-14 21:31:07     Inf    INFO                 Density estimation ( Type--sites ): Groupwise retained observations after subsampling: Sorted:750000/11004744; Tissue:1250000/18341240
2026-01-14 21:31:10     Inf    INFO                 processing beta_density_samples_3_2
2026-01-14 21:31:10     Inf    INFO                 Density estimation ( Type--tiling ): Groupwise retained observations after missing value removal: Sorted:3148728/3148728; Tissue:5247880/5247880
2026-01-14 21:31:11     Inf    INFO                 Density estimation ( Type--tiling ): Groupwise retained observations after subsampling: Sorted:750000/3148728; Tissue:1250000/5247880
2026-01-14 21:31:13     Inf    INFO                 processing beta_density_samples_3_3
2026-01-14 21:31:13     Inf    INFO                 Density estimation ( Type--genes ): Groupwise retained observations after missing value removal: Sorted:714096/714096; Tissue:1190160/1190160
2026-01-14 21:31:16     Inf    INFO                 processing beta_density_samples_3_4
2026-01-14 21:31:16     Inf    INFO                 Density estimation ( Type--promoters ): Groupwise retained observations after missing value removal: Sorted:718248/718248; Tissue:1197080/1197080
2026-01-14 21:31:22     Inf    INFO                 processing beta_density_samples_3_5
2026-01-14 21:31:22     Inf    INFO                 Density estimation ( Type--cpgislands ): Groupwise retained observations after missing value removal: Sorted:619896/619896; Tissue:1033160/1033160
2026-01-14 21:31:24     Inf    INFO                 processing beta_density_samples_4_1
2026-01-14 21:31:25     Inf    INFO                 Density estimation ( CellType--sites ): Groupwise retained observations after missing value removal: Glia:5502372/5502372; Neuron:5502372/5502372
2026-01-14 21:31:25     Inf    INFO                 Density estimation ( CellType--sites ): Groupwise retained observations after subsampling: Glia:1000000/5502372; Neuron:1000000/5502372
2026-01-14 21:31:28     Inf    INFO                 processing beta_density_samples_4_2
2026-01-14 21:31:28     Inf    INFO                 Density estimation ( CellType--tiling ): Groupwise retained observations after missing value removal: Glia:1574364/1574364; Neuron:1574364/1574364
2026-01-14 21:31:29     Inf    INFO                 Density estimation ( CellType--tiling ): Groupwise retained observations after subsampling: Glia:1000000/1574364; Neuron:1000000/1574364
2026-01-14 21:31:31     Inf    INFO                 processing beta_density_samples_4_3
2026-01-14 21:31:31     Inf    INFO                 Density estimation ( CellType--genes ): Groupwise retained observations after missing value removal: Glia:357048/357048; Neuron:357048/357048
2026-01-14 21:31:33     Inf    INFO                 processing beta_density_samples_4_4
2026-01-14 21:31:33     Inf    INFO                 Density estimation ( CellType--promoters ): Groupwise retained observations after missing value removal: Glia:359124/359124; Neuron:359124/359124
2026-01-14 21:31:34     Inf    INFO                 processing beta_density_samples_4_5
2026-01-14 21:31:34     Inf    INFO                 Density estimation ( CellType--cpgislands ): Groupwise retained observations after missing value removal: Glia:309948/309948; Neuron:309948/309948
2026-01-14 21:31:35     Inf    INFO                 processing beta_density_samples_5_1
2026-01-14 21:31:35     Inf    INFO                 Density estimation ( Tissue--sites ): Groupwise retained observations after missing value removal: FrontalCortex:9170620/9170620; TemporalCortex:9170620/9170620
2026-01-14 21:31:36     Inf    INFO                 Density estimation ( Tissue--sites ): Groupwise retained observations after subsampling: FrontalCortex:1000000/9170620; TemporalCortex:1000000/9170620
2026-01-14 21:31:39     Inf    INFO                 processing beta_density_samples_5_2
2026-01-14 21:31:39     Inf    INFO                 Density estimation ( Tissue--tiling ): Groupwise retained observations after missing value removal: FrontalCortex:2623940/2623940; TemporalCortex:2623940/2623940
2026-01-14 21:31:39     Inf    INFO                 Density estimation ( Tissue--tiling ): Groupwise retained observations after subsampling: FrontalCortex:1000000/2623940; TemporalCortex:1000000/2623940
2026-01-14 21:31:42     Inf    INFO                 processing beta_density_samples_5_3
2026-01-14 21:31:42     Inf    INFO                 Density estimation ( Tissue--genes ): Groupwise retained observations after missing value removal: FrontalCortex:595080/595080; TemporalCortex:595080/595080
2026-01-14 21:31:44     Inf    INFO                 processing beta_density_samples_5_4
2026-01-14 21:31:44     Inf    INFO                 Density estimation ( Tissue--promoters ): Groupwise retained observations after missing value removal: FrontalCortex:598540/598540; TemporalCortex:598540/598540
2026-01-14 21:31:46     Inf    INFO                 processing beta_density_samples_5_5
2026-01-14 21:31:46     Inf    INFO                 Density estimation ( Tissue--cpgislands ): Groupwise retained observations after missing value removal: FrontalCortex:516580/516580; TemporalCortex:516580/516580
2026-01-14 21:31:47     Inf    INFO                 processing beta_density_samples_6_1
2026-01-14 21:31:48     Inf    INFO                 Density estimation ( Diagnosis--sites ): Groupwise retained observations after missing value removal: AD:14672992/14672992; CTRL:14672992/14672992
2026-01-14 21:31:48     Inf    INFO                 Density estimation ( Diagnosis--sites ): Groupwise retained observations after subsampling: AD:1000000/14672992; CTRL:1000000/14672992
2026-01-14 21:31:51     Inf    INFO                 processing beta_density_samples_6_2
2026-01-14 21:31:51     Inf    INFO                 Density estimation ( Diagnosis--tiling ): Groupwise retained observations after missing value removal: AD:4198304/4198304; CTRL:4198304/4198304
2026-01-14 21:31:51     Inf    INFO                 Density estimation ( Diagnosis--tiling ): Groupwise retained observations after subsampling: AD:1000000/4198304; CTRL:1000000/4198304
2026-01-14 21:31:54     Inf    INFO                 processing beta_density_samples_6_3
2026-01-14 21:31:54     Inf    INFO                 Density estimation ( Diagnosis--genes ): Groupwise retained observations after missing value removal: AD:952128/952128; CTRL:952128/952128
2026-01-14 21:31:56     Inf    INFO                 processing beta_density_samples_6_4
2026-01-14 21:31:56     Inf    INFO                 Density estimation ( Diagnosis--promoters ): Groupwise retained observations after missing value removal: AD:957664/957664; CTRL:957664/957664
2026-01-14 21:32:00     Inf    INFO                 processing beta_density_samples_6_5
2026-01-14 21:32:00     Inf    INFO                 Density estimation ( Diagnosis--cpgislands ): Groupwise retained observations after missing value removal: AD:826528/826528; CTRL:826528/826528
2026-01-14 21:32:03     Inf    INFO                 processing beta_density_samples_7_1
2026-01-14 21:32:03     Inf    INFO                 Density estimation ( Group--sites ): Groupwise retained observations after missing value removal: FrontalCortex_AD:4585310/4585310; FrontalCortex_CTRL:4585310/4585310; Glia_AD:2751186/2751186; Glia_CTRL:2751186/2751186; Neuron_AD:2751186/2751186; Neuron_CTRL:2751186/2751186; TemporalCortex_AD:4585310/4585310; TemporalCortex_CTRL:4585310/4585310
2026-01-14 21:32:04     Inf    INFO                 Density estimation ( Group--sites ): Groupwise retained observations after subsampling: FrontalCortex_AD:1250000/4585310; FrontalCortex_CTRL:1250000/4585310; Glia_AD:750000/2751186; Glia_CTRL:750000/2751186; Neuron_AD:750000/2751186; Neuron_CTRL:750000/2751186; TemporalCortex_AD:1250000/4585310; TemporalCortex_CTRL:1250000/4585310
2026-01-14 21:32:15     Inf    INFO                 processing beta_density_samples_7_2
2026-01-14 21:32:15     Inf    INFO                 Density estimation ( Group--tiling ): Groupwise retained observations after missing value removal: FrontalCortex_AD:1311970/1311970; FrontalCortex_CTRL:1311970/1311970; Glia_AD:787182/787182; Glia_CTRL:787182/787182; Neuron_AD:787182/787182; Neuron_CTRL:787182/787182; TemporalCortex_AD:1311970/1311970; TemporalCortex_CTRL:1311970/1311970
2026-01-14 21:32:16     Inf    INFO                 Density estimation ( Group--tiling ): Groupwise retained observations after subsampling: FrontalCortex_AD:1250000/1311970; FrontalCortex_CTRL:1250000/1311970; Glia_AD:750000/787182; Glia_CTRL:750000/787182; Neuron_AD:750000/787182; Neuron_CTRL:750000/787182; TemporalCortex_AD:1250000/1311970; TemporalCortex_CTRL:1250000/1311970
2026-01-14 21:32:26     Inf    INFO                 processing beta_density_samples_7_3
2026-01-14 21:32:26     Inf    INFO                 Density estimation ( Group--genes ): Groupwise retained observations after missing value removal: FrontalCortex_AD:297540/297540; FrontalCortex_CTRL:297540/297540; Glia_AD:178524/178524; Glia_CTRL:178524/178524; Neuron_AD:178524/178524; Neuron_CTRL:178524/178524; TemporalCortex_AD:297540/297540; TemporalCortex_CTRL:297540/297540
2026-01-14 21:32:29     Inf    INFO                 processing beta_density_samples_7_4
2026-01-14 21:32:30     Inf    INFO                 Density estimation ( Group--promoters ): Groupwise retained observations after missing value removal: FrontalCortex_AD:299270/299270; FrontalCortex_CTRL:299270/299270; Glia_AD:179562/179562; Glia_CTRL:179562/179562; Neuron_AD:179562/179562; Neuron_CTRL:179562/179562; TemporalCortex_AD:299270/299270; TemporalCortex_CTRL:299270/299270
2026-01-14 21:32:33     Inf    INFO                 processing beta_density_samples_7_5
2026-01-14 21:32:33     Inf    INFO                 Density estimation ( Group--cpgislands ): Groupwise retained observations after missing value removal: FrontalCortex_AD:258290/258290; FrontalCortex_CTRL:258290/258290; Glia_AD:154974/154974; Glia_CTRL:154974/154974; Neuron_AD:154974/154974; Neuron_CTRL:154974/154974; TemporalCortex_AD:258290/258290; TemporalCortex_CTRL:258290/258290
2026-01-14 21:32:37     Inf    INFO                 processing beta_density_samples_8_1
2026-01-14 21:32:37     Inf    INFO                 Density estimation ( stage--sites ): Groupwise retained observations after missing value removal: 0:9629151/9629151; 1:4126779/4126779; 2:917062/917062; 5:1834124/1834124; 6:12838868/12838868
2026-01-14 21:32:38     Inf    INFO                 Density estimation ( stage--sites ): Groupwise retained observations after subsampling: 0:1640625/9629151; 1:703125/4126779; 2:156250/917062; 5:312500/1834124; 6:2187500/12838868
2026-01-14 21:32:45     Inf    INFO                 processing beta_density_samples_8_2
2026-01-14 21:32:46     Inf    INFO                 Density estimation ( stage--tiling ): Groupwise retained observations after missing value removal: 0:2755137/2755137; 1:1180773/1180773; 2:262394/262394; 5:524788/524788; 6:3673516/3673516
2026-01-14 21:32:47     Inf    INFO                 Density estimation ( stage--tiling ): Groupwise retained observations after subsampling: 0:1640625/2755137; 1:703125/1180773; 2:156250/262394; 5:312500/524788; 6:2187500/3673516
2026-01-14 21:32:53     Inf    INFO                 processing beta_density_samples_8_3
2026-01-14 21:32:53     Inf    INFO                 Density estimation ( stage--genes ): Groupwise retained observations after missing value removal: 0:624834/624834; 1:267786/267786; 2:59508/59508; 5:119016/119016; 6:833112/833112
2026-01-14 21:32:56     Inf    INFO                 processing beta_density_samples_8_4
2026-01-14 21:32:56     Inf    INFO                 Density estimation ( stage--promoters ): Groupwise retained observations after missing value removal: 0:628467/628467; 1:269343/269343; 2:59854/59854; 5:119708/119708; 6:837956/837956
2026-01-14 21:32:59     Inf    INFO                 processing beta_density_samples_8_5
2026-01-14 21:32:59     Inf    INFO                 Density estimation ( stage--cpgislands ): Groupwise retained observations after missing value removal: 0:542409/542409; 1:232461/232461; 2:51658/51658; 5:103316/103316; 6:723212/723212
2026-01-14 21:33:02     Inf    INFO                 processing beta_density_samples_9_1
2026-01-14 21:33:02     Inf    INFO                 Density estimation ( Sentrix_Position--sites ): Groupwise retained observations after missing value removal: R01C01:2751186/2751186; R01C02:2292655/2292655; R02C01:1834124/1834124; R02C02:2751186/2751186; R03C01:2751186/2751186; R03C02:2292655/2292655; R04C01:3209717/3209717; R04C02:2751186/2751186; R05C01:1375593/1375593; R05C02:2292655/2292655; R06C01:2292655/2292655; R06C02:2751186/2751186
2026-01-14 21:33:04     Inf    INFO                 Density estimation ( Sentrix_Position--sites ): Groupwise retained observations after subsampling: R01C01:1125000/2751186; R01C02:937500/2292655; R02C01:750000/1834124; R02C02:1125000/2751186; R03C01:1125000/2751186; R03C02:937500/2292655; R04C01:1312500/3209717; R04C02:1125000/2751186; R05C01:562500/1375593; R05C02:937500/2292655; R06C01:937500/2292655; R06C02:1125000/2751186
2026-01-14 21:33:18     Inf    INFO                 processing beta_density_samples_9_2
2026-01-14 21:33:18     Inf    INFO                 Density estimation ( Sentrix_Position--tiling ): Groupwise retained observations after missing value removal: R01C01:787182/787182; R01C02:655985/655985; R02C01:524788/524788; R02C02:787182/787182; R03C01:787182/787182; R03C02:655985/655985; R04C01:918379/918379; R04C02:787182/787182; R05C01:393591/393591; R05C02:655985/655985; R06C01:655985/655985; R06C02:787182/787182
2026-01-14 21:33:29     Inf    INFO                 processing beta_density_samples_9_3
2026-01-14 21:33:29     Inf    INFO                 Density estimation ( Sentrix_Position--genes ): Groupwise retained observations after missing value removal: R01C01:178524/178524; R01C02:148770/148770; R02C01:119016/119016; R02C02:178524/178524; R03C01:178524/178524; R03C02:148770/148770; R04C01:208278/208278; R04C02:178524/178524; R05C01:89262/89262; R05C02:148770/148770; R06C01:148770/148770; R06C02:178524/178524
2026-01-14 21:33:33     Inf    INFO                 processing beta_density_samples_9_4
2026-01-14 21:33:33     Inf    INFO                 Density estimation ( Sentrix_Position--promoters ): Groupwise retained observations after missing value removal: R01C01:179562/179562; R01C02:149635/149635; R02C01:119708/119708; R02C02:179562/179562; R03C01:179562/179562; R03C02:149635/149635; R04C01:209489/209489; R04C02:179562/179562; R05C01:89781/89781; R05C02:149635/149635; R06C01:149635/149635; R06C02:179562/179562
2026-01-14 21:33:37     Inf    INFO                 processing beta_density_samples_9_5
2026-01-14 21:33:37     Inf    INFO                 Density estimation ( Sentrix_Position--cpgislands ): Groupwise retained observations after missing value removal: R01C01:154974/154974; R01C02:129145/129145; R02C01:103316/103316; R02C02:154974/154974; R03C01:154974/154974; R03C02:129145/129145; R04C01:180803/180803; R04C02:154974/154974; R05C01:77487/77487; R05C02:129145/129145; R06C01:129145/129145; R06C02:154974/154974
2026-01-14 21:33:41     Inf    INFO                 processing beta_density_samples_10_1
2026-01-14 21:33:42     Inf    INFO                 Density estimation ( AD_vs_CTRL_Neuron--sites ): Groupwise retained observations after missing value removal: Neuron_AD:2751186/2751186; Neuron_CTRL:2751186/2751186
2026-01-14 21:33:42     Inf    INFO                 Density estimation ( AD_vs_CTRL_Neuron--sites ): Groupwise retained observations after subsampling: Neuron_AD:1000000/2751186; Neuron_CTRL:1000000/2751186
2026-01-14 21:33:45     Inf    INFO                 processing beta_density_samples_10_2
2026-01-14 21:33:45     Inf    INFO                 Density estimation ( AD_vs_CTRL_Neuron--tiling ): Groupwise retained observations after missing value removal: Neuron_AD:787182/787182; Neuron_CTRL:787182/787182
2026-01-14 21:33:47     Inf    INFO                 processing beta_density_samples_10_3
2026-01-14 21:33:47     Inf    INFO                 Density estimation ( AD_vs_CTRL_Neuron--genes ): Groupwise retained observations after missing value removal: Neuron_AD:178524/178524; Neuron_CTRL:178524/178524
2026-01-14 21:33:49     Inf    INFO                 processing beta_density_samples_10_4
2026-01-14 21:33:49     Inf    INFO                 Density estimation ( AD_vs_CTRL_Neuron--promoters ): Groupwise retained observations after missing value removal: Neuron_AD:179562/179562; Neuron_CTRL:179562/179562
2026-01-14 21:33:50     Inf    INFO                 processing beta_density_samples_10_5
2026-01-14 21:33:50     Inf    INFO                 Density estimation ( AD_vs_CTRL_Neuron--cpgislands ): Groupwise retained observations after missing value removal: Neuron_AD:154974/154974; Neuron_CTRL:154974/154974
2026-01-14 21:33:51     Inf    INFO                 processing beta_density_samples_11_1
2026-01-14 21:33:51     Inf    INFO                 Density estimation ( AD_vs_CTRL_Glia--sites ): Groupwise retained observations after missing value removal: Glia_AD:2751186/2751186; Glia_CTRL:2751186/2751186
2026-01-14 21:33:52     Inf    INFO                 Density estimation ( AD_vs_CTRL_Glia--sites ): Groupwise retained observations after subsampling: Glia_AD:1000000/2751186; Glia_CTRL:1000000/2751186
2026-01-14 21:33:54     Inf    INFO                 processing beta_density_samples_11_2
2026-01-14 21:33:55     Inf    INFO                 Density estimation ( AD_vs_CTRL_Glia--tiling ): Groupwise retained observations after missing value removal: Glia_AD:787182/787182; Glia_CTRL:787182/787182
2026-01-14 21:33:57     Inf    INFO                 processing beta_density_samples_11_3
2026-01-14 21:33:57     Inf    INFO                 Density estimation ( AD_vs_CTRL_Glia--genes ): Groupwise retained observations after missing value removal: Glia_AD:178524/178524; Glia_CTRL:178524/178524
2026-01-14 21:33:58     Inf    INFO                 processing beta_density_samples_11_4
2026-01-14 21:33:58     Inf    INFO                 Density estimation ( AD_vs_CTRL_Glia--promoters ): Groupwise retained observations after missing value removal: Glia_AD:179562/179562; Glia_CTRL:179562/179562
2026-01-14 21:33:59     Inf    INFO                 processing beta_density_samples_11_5
2026-01-14 21:33:59     Inf    INFO                 Density estimation ( AD_vs_CTRL_Glia--cpgislands ): Groupwise retained observations after missing value removal: Glia_AD:154974/154974; Glia_CTRL:154974/154974
2026-01-14 21:34:00     Inf    INFO                 processing beta_density_samples_12_1
2026-01-14 21:34:00     Inf    INFO                 Density estimation ( AD_vs_CTRL_FC--sites ): Groupwise retained observations after missing value removal: FrontalCortex_AD:4585310/4585310; FrontalCortex_CTRL:4585310/4585310
2026-01-14 21:34:01     Inf    INFO                 Density estimation ( AD_vs_CTRL_FC--sites ): Groupwise retained observations after subsampling: FrontalCortex_AD:1000000/4585310; FrontalCortex_CTRL:1000000/4585310
2026-01-14 21:34:04     Inf    INFO                 processing beta_density_samples_12_2
2026-01-14 21:34:04     Inf    INFO                 Density estimation ( AD_vs_CTRL_FC--tiling ): Groupwise retained observations after missing value removal: FrontalCortex_AD:1311970/1311970; FrontalCortex_CTRL:1311970/1311970
2026-01-14 21:34:04     Inf    INFO                 Density estimation ( AD_vs_CTRL_FC--tiling ): Groupwise retained observations after subsampling: FrontalCortex_AD:1000000/1311970; FrontalCortex_CTRL:1000000/1311970
2026-01-14 21:34:07     Inf    INFO                 processing beta_density_samples_12_3
2026-01-14 21:34:07     Inf    INFO                 Density estimation ( AD_vs_CTRL_FC--genes ): Groupwise retained observations after missing value removal: FrontalCortex_AD:297540/297540; FrontalCortex_CTRL:297540/297540
2026-01-14 21:34:08     Inf    INFO                 processing beta_density_samples_12_4
2026-01-14 21:34:08     Inf    INFO                 Density estimation ( AD_vs_CTRL_FC--promoters ): Groupwise retained observations after missing value removal: FrontalCortex_AD:299270/299270; FrontalCortex_CTRL:299270/299270
2026-01-14 21:34:10     Inf    INFO                 processing beta_density_samples_12_5
2026-01-14 21:34:10     Inf    INFO                 Density estimation ( AD_vs_CTRL_FC--cpgislands ): Groupwise retained observations after missing value removal: FrontalCortex_AD:258290/258290; FrontalCortex_CTRL:258290/258290
2026-01-14 21:34:11     Inf    INFO                 processing beta_density_samples_13_1
2026-01-14 21:34:11     Inf    INFO                 Density estimation ( AD_vs_CTRL_TC--sites ): Groupwise retained observations after missing value removal: TemporalCortex_AD:4585310/4585310; TemporalCortex_CTRL:4585310/4585310
2026-01-14 21:34:12     Inf    INFO                 Density estimation ( AD_vs_CTRL_TC--sites ): Groupwise retained observations after subsampling: TemporalCortex_AD:1000000/4585310; TemporalCortex_CTRL:1000000/4585310
2026-01-14 21:34:14     Inf    INFO                 processing beta_density_samples_13_2
2026-01-14 21:34:15     Inf    INFO                 Density estimation ( AD_vs_CTRL_TC--tiling ): Groupwise retained observations after missing value removal: TemporalCortex_AD:1311970/1311970; TemporalCortex_CTRL:1311970/1311970
2026-01-14 21:34:15     Inf    INFO                 Density estimation ( AD_vs_CTRL_TC--tiling ): Groupwise retained observations after subsampling: TemporalCortex_AD:1000000/1311970; TemporalCortex_CTRL:1000000/1311970
2026-01-14 21:34:17     Inf    INFO                 processing beta_density_samples_13_3
2026-01-14 21:34:17     Inf    INFO                 Density estimation ( AD_vs_CTRL_TC--genes ): Groupwise retained observations after missing value removal: TemporalCortex_AD:297540/297540; TemporalCortex_CTRL:297540/297540
2026-01-14 21:34:18     Inf    INFO                 processing beta_density_samples_13_4
2026-01-14 21:34:18     Inf    INFO                 Density estimation ( AD_vs_CTRL_TC--promoters ): Groupwise retained observations after missing value removal: TemporalCortex_AD:299270/299270; TemporalCortex_CTRL:299270/299270
2026-01-14 21:34:20     Inf    INFO                 processing beta_density_samples_13_5
2026-01-14 21:34:20     Inf    INFO                 Density estimation ( AD_vs_CTRL_TC--cpgislands ): Groupwise retained observations after missing value removal: TemporalCortex_AD:258290/258290; TemporalCortex_CTRL:258290/258290
2026-01-14 21:34:21     Inf    INFO                 processing beta_density_samples_14_1
2026-01-14 21:34:21     Inf    INFO                 Density estimation ( Predicted Sex--sites ): Groupwise retained observations after missing value removal: female:13755930/13755930; male:15590054/15590054
2026-01-14 21:34:22     Inf    INFO                 Density estimation ( Predicted Sex--sites ): Groupwise retained observations after subsampling: female:937500/13755930; male:1062500/15590054
2026-01-14 21:34:25     Inf    INFO                 processing beta_density_samples_14_2
2026-01-14 21:34:25     Inf    INFO                 Density estimation ( Predicted Sex--tiling ): Groupwise retained observations after missing value removal: female:3935910/3935910; male:4460698/4460698
2026-01-14 21:34:25     Inf    INFO                 Density estimation ( Predicted Sex--tiling ): Groupwise retained observations after subsampling: female:937500/3935910; male:1062500/4460698
2026-01-14 21:34:28     Inf    INFO                 processing beta_density_samples_14_3
2026-01-14 21:34:28     Inf    INFO                 Density estimation ( Predicted Sex--genes ): Groupwise retained observations after missing value removal: female:892620/892620; male:1011636/1011636
2026-01-14 21:34:31     Inf    INFO                 processing beta_density_samples_14_4
2026-01-14 21:34:31     Inf    INFO                 Density estimation ( Predicted Sex--promoters ): Groupwise retained observations after missing value removal: female:897810/897810; male:1017518/1017518
2026-01-14 21:34:33     Inf    INFO                 processing beta_density_samples_14_5
2026-01-14 21:34:34     Inf    INFO                 Density estimation ( Predicted Sex--cpgislands ): Groupwise retained observations after missing value removal: female:774870/774870; male:878186/878186
2026-01-14 21:34:36     Inf  STATUS             COMPLETED Methylation Value Distributions - Sample Groups
2026-01-14 21:34:36     Inf  STATUS             STARTED Methylation Value Distributions - Probe Categories
2026-01-14 21:34:36     Inf    INFO                 Density estimation ( CGI Relation--all samples ): Groupwise retained observations after missing value removal: Open Sea:10550208/10550208; Shelf:2836352/2836352; Shore:6800128/6800128; Island:9159296/9159296
2026-01-14 21:34:37     Inf    INFO                 Density estimation ( CGI Relation--all samples ): Groupwise retained observations after subsampling: Open Sea:1438045/10550208; Shelf:386609/2836352; Shore:926890/6800128; Island:1248456/9159296
2026-01-14 21:34:43     Inf    INFO                 Density estimation ( Design--all samples ): Groupwise retained observations after missing value removal: I:8257024/8257024; II:21088960/21088960
2026-01-14 21:34:44     Inf    INFO                 Density estimation ( Design--all samples ): Groupwise retained observations after subsampling: I:562736/8257024; II:1437264/21088960
2026-01-14 21:34:47     Inf    INFO                 Density estimation ( CGI Relation--F (based on Sex) ): Groupwise retained observations after missing value removal: Open Sea:4945410/4945410; Shelf:1329540/1329540; Shore:3187560/3187560; Island:4293420/4293420
2026-01-14 21:34:48     Inf    INFO                 Density estimation ( CGI Relation--F (based on Sex) ): Groupwise retained observations after subsampling: Open Sea:1438045/4945410; Shelf:386609/1329540; Shore:926890/3187560; Island:1248456/4293420
2026-01-14 21:34:53     Inf    INFO                 Density estimation ( Design--F (based on Sex) ): Groupwise retained observations after missing value removal: I:3870480/3870480; II:9885450/9885450
2026-01-14 21:34:53     Inf    INFO                 Density estimation ( Design--F (based on Sex) ): Groupwise retained observations after subsampling: I:562736/3870480; II:1437264/9885450
2026-01-14 21:34:57     Inf    INFO                 Density estimation ( CGI Relation--M (based on Sex) ): Groupwise retained observations after missing value removal: Open Sea:5604798/5604798; Shelf:1506812/1506812; Shore:3612568/3612568; Island:4865876/4865876
2026-01-14 21:34:58     Inf    INFO                 Density estimation ( CGI Relation--M (based on Sex) ): Groupwise retained observations after subsampling: Open Sea:1438045/5604798; Shelf:386609/1506812; Shore:926890/3612568; Island:1248456/4865876
2026-01-14 21:35:03     Inf    INFO                 Density estimation ( Design--M (based on Sex) ): Groupwise retained observations after missing value removal: I:4386544/4386544; II:11203510/11203510
2026-01-14 21:35:04     Inf    INFO                 Density estimation ( Design--M (based on Sex) ): Groupwise retained observations after subsampling: I:562736/4386544; II:1437264/11203510
2026-01-14 21:35:07     Inf    INFO                 Density estimation ( CGI Relation--Sorted (based on Type) ): Groupwise retained observations after missing value removal: Open Sea:3956328/3956328; Shelf:1063632/1063632; Shore:2550048/2550048; Island:3434736/3434736
2026-01-14 21:35:08     Inf    INFO                 Density estimation ( CGI Relation--Sorted (based on Type) ): Groupwise retained observations after subsampling: Open Sea:1438045/3956328; Shelf:386609/1063632; Shore:926890/2550048; Island:1248456/3434736
2026-01-14 21:35:13     Inf    INFO                 Density estimation ( Design--Sorted (based on Type) ): Groupwise retained observations after missing value removal: I:3096384/3096384; II:7908360/7908360
2026-01-14 21:35:13     Inf    INFO                 Density estimation ( Design--Sorted (based on Type) ): Groupwise retained observations after subsampling: I:562736/3096384; II:1437264/7908360
2026-01-14 21:35:16     Inf    INFO                 Density estimation ( CGI Relation--Tissue (based on Type) ): Groupwise retained observations after missing value removal: Open Sea:6593880/6593880; Shelf:1772720/1772720; Shore:4250080/4250080; Island:5724560/5724560
2026-01-14 21:35:17     Inf    INFO                 Density estimation ( CGI Relation--Tissue (based on Type) ): Groupwise retained observations after subsampling: Open Sea:1438045/6593880; Shelf:386609/1772720; Shore:926890/4250080; Island:1248456/5724560
2026-01-14 21:35:23     Inf    INFO                 Density estimation ( Design--Tissue (based on Type) ): Groupwise retained observations after missing value removal: I:5160640/5160640; II:13180600/13180600
2026-01-14 21:35:23     Inf    INFO                 Density estimation ( Design--Tissue (based on Type) ): Groupwise retained observations after subsampling: I:562736/5160640; II:1437264/13180600
2026-01-14 21:35:29     Inf    INFO                 Density estimation ( CGI Relation--Glia (based on CellType) ): Groupwise retained observations after missing value removal: Open Sea:1978164/1978164; Shelf:531816/531816; Shore:1275024/1275024; Island:1717368/1717368
2026-01-14 21:35:30     Inf    INFO                 Density estimation ( CGI Relation--Glia (based on CellType) ): Groupwise retained observations after subsampling: Open Sea:1438045/1978164; Shelf:386609/531816; Shore:926890/1275024; Island:1248456/1717368
2026-01-14 21:35:35     Inf    INFO                 Density estimation ( Design--Glia (based on CellType) ): Groupwise retained observations after missing value removal: I:1548192/1548192; II:3954180/3954180
2026-01-14 21:35:35     Inf    INFO                 Density estimation ( Design--Glia (based on CellType) ): Groupwise retained observations after subsampling: I:562736/1548192; II:1437264/3954180
2026-01-14 21:35:38     Inf    INFO                 Density estimation ( CGI Relation--Neuron (based on CellType) ): Groupwise retained observations after missing value removal: Open Sea:1978164/1978164; Shelf:531816/531816; Shore:1275024/1275024; Island:1717368/1717368
2026-01-14 21:35:38     Inf    INFO                 Density estimation ( CGI Relation--Neuron (based on CellType) ): Groupwise retained observations after subsampling: Open Sea:1438045/1978164; Shelf:386609/531816; Shore:926890/1275024; Island:1248456/1717368
2026-01-14 21:35:43     Inf    INFO                 Density estimation ( Design--Neuron (based on CellType) ): Groupwise retained observations after missing value removal: I:1548192/1548192; II:3954180/3954180
2026-01-14 21:35:44     Inf    INFO                 Density estimation ( Design--Neuron (based on CellType) ): Groupwise retained observations after subsampling: I:562736/1548192; II:1437264/3954180
2026-01-14 21:35:47     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex (based on Tissue) ): Groupwise retained observations after missing value removal: Open Sea:3296940/3296940; Shelf:886360/886360; Shore:2125040/2125040; Island:2862280/2862280
2026-01-14 21:35:47     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex (based on Tissue) ): Groupwise retained observations after subsampling: Open Sea:1438045/3296940; Shelf:386609/886360; Shore:926890/2125040; Island:1248456/2862280
2026-01-14 21:35:53     Inf    INFO                 Density estimation ( Design--FrontalCortex (based on Tissue) ): Groupwise retained observations after missing value removal: I:2580320/2580320; II:6590300/6590300
2026-01-14 21:35:53     Inf    INFO                 Density estimation ( Design--FrontalCortex (based on Tissue) ): Groupwise retained observations after subsampling: I:562736/2580320; II:1437264/6590300
2026-01-14 21:35:56     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex (based on Tissue) ): Groupwise retained observations after missing value removal: Open Sea:3296940/3296940; Shelf:886360/886360; Shore:2125040/2125040; Island:2862280/2862280
2026-01-14 21:35:57     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex (based on Tissue) ): Groupwise retained observations after subsampling: Open Sea:1438045/3296940; Shelf:386609/886360; Shore:926890/2125040; Island:1248456/2862280
2026-01-14 21:36:02     Inf    INFO                 Density estimation ( Design--TemporalCortex (based on Tissue) ): Groupwise retained observations after missing value removal: I:2580320/2580320; II:6590300/6590300
2026-01-14 21:36:03     Inf    INFO                 Density estimation ( Design--TemporalCortex (based on Tissue) ): Groupwise retained observations after subsampling: I:562736/2580320; II:1437264/6590300
2026-01-14 21:36:06     Inf    INFO                 Density estimation ( CGI Relation--AD (based on Diagnosis) ): Groupwise retained observations after missing value removal: Open Sea:5275104/5275104; Shelf:1418176/1418176; Shore:3400064/3400064; Island:4579648/4579648
2026-01-14 21:36:06     Inf    INFO                 Density estimation ( CGI Relation--AD (based on Diagnosis) ): Groupwise retained observations after subsampling: Open Sea:1438045/5275104; Shelf:386609/1418176; Shore:926890/3400064; Island:1248456/4579648
2026-01-14 21:36:11     Inf    INFO                 Density estimation ( Design--AD (based on Diagnosis) ): Groupwise retained observations after missing value removal: I:4128512/4128512; II:10544480/10544480
2026-01-14 21:36:12     Inf    INFO                 Density estimation ( Design--AD (based on Diagnosis) ): Groupwise retained observations after subsampling: I:562736/4128512; II:1437264/10544480
2026-01-14 21:36:15     Inf    INFO                 Density estimation ( CGI Relation--CTRL (based on Diagnosis) ): Groupwise retained observations after missing value removal: Open Sea:5275104/5275104; Shelf:1418176/1418176; Shore:3400064/3400064; Island:4579648/4579648
2026-01-14 21:36:16     Inf    INFO                 Density estimation ( CGI Relation--CTRL (based on Diagnosis) ): Groupwise retained observations after subsampling: Open Sea:1438045/5275104; Shelf:386609/1418176; Shore:926890/3400064; Island:1248456/4579648
2026-01-14 21:36:21     Inf    INFO                 Density estimation ( Design--CTRL (based on Diagnosis) ): Groupwise retained observations after missing value removal: I:4128512/4128512; II:10544480/10544480
2026-01-14 21:36:22     Inf    INFO                 Density estimation ( Design--CTRL (based on Diagnosis) ): Groupwise retained observations after subsampling: I:562736/4128512; II:1437264/10544480
2026-01-14 21:36:25     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_AD (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:36:25     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_AD (based on Group) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:36:30     Inf    INFO                 Density estimation ( Design--FrontalCortex_AD (based on Group) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:36:30     Inf    INFO                 Density estimation ( Design--FrontalCortex_AD (based on Group) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:36:33     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_CTRL (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:36:34     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_CTRL (based on Group) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:36:39     Inf    INFO                 Density estimation ( Design--FrontalCortex_CTRL (based on Group) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:36:39     Inf    INFO                 Density estimation ( Design--FrontalCortex_CTRL (based on Group) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:36:42     Inf    INFO                 Density estimation ( CGI Relation--Glia_AD (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:36:46     Inf    INFO                 Density estimation ( Design--Glia_AD (based on Group) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:36:46     Inf    INFO                 Density estimation ( Design--Glia_AD (based on Group) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:36:49     Inf    INFO                 Density estimation ( CGI Relation--Glia_CTRL (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:36:53     Inf    INFO                 Density estimation ( Design--Glia_CTRL (based on Group) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:36:53     Inf    INFO                 Density estimation ( Design--Glia_CTRL (based on Group) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:36:55     Inf    INFO                 Density estimation ( CGI Relation--Neuron_AD (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:36:59     Inf    INFO                 Density estimation ( Design--Neuron_AD (based on Group) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:36:59     Inf    INFO                 Density estimation ( Design--Neuron_AD (based on Group) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:37:03     Inf    INFO                 Density estimation ( CGI Relation--Neuron_CTRL (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:37:07     Inf    INFO                 Density estimation ( Design--Neuron_CTRL (based on Group) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:37:07     Inf    INFO                 Density estimation ( Design--Neuron_CTRL (based on Group) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:37:10     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_AD (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:37:11     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_AD (based on Group) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:37:15     Inf    INFO                 Density estimation ( Design--TemporalCortex_AD (based on Group) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:37:16     Inf    INFO                 Density estimation ( Design--TemporalCortex_AD (based on Group) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:37:18     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_CTRL (based on Group) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:37:19     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_CTRL (based on Group) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:37:24     Inf    INFO                 Density estimation ( Design--TemporalCortex_CTRL (based on Group) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:37:24     Inf    INFO                 Density estimation ( Design--TemporalCortex_CTRL (based on Group) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:37:27     Inf    INFO                 Density estimation ( CGI Relation--0 (based on stage) ): Groupwise retained observations after missing value removal: Open Sea:3461787/3461787; Shelf:930678/930678; Shore:2231292/2231292; Island:3005394/3005394
2026-01-14 21:37:28     Inf    INFO                 Density estimation ( CGI Relation--0 (based on stage) ): Groupwise retained observations after subsampling: Open Sea:1438045/3461787; Shelf:386609/930678; Shore:926890/2231292; Island:1248456/3005394
2026-01-14 21:37:33     Inf    INFO                 Density estimation ( Design--0 (based on stage) ): Groupwise retained observations after missing value removal: I:2709336/2709336; II:6919815/6919815
2026-01-14 21:37:33     Inf    INFO                 Density estimation ( Design--0 (based on stage) ): Groupwise retained observations after subsampling: I:562736/2709336; II:1437264/6919815
2026-01-14 21:37:36     Inf    INFO                 Density estimation ( CGI Relation--1 (based on stage) ): Groupwise retained observations after missing value removal: Open Sea:1483623/1483623; Shelf:398862/398862; Shore:956268/956268; Island:1288026/1288026
2026-01-14 21:37:37     Inf    INFO                 Density estimation ( CGI Relation--1 (based on stage) ): Groupwise retained observations after subsampling: Open Sea:1438045/1483623; Shelf:386609/398862; Shore:926890/956268; Island:1248456/1288026
2026-01-14 21:37:42     Inf    INFO                 Density estimation ( Design--1 (based on stage) ): Groupwise retained observations after missing value removal: I:1161144/1161144; II:2965635/2965635
2026-01-14 21:37:43     Inf    INFO                 Density estimation ( Design--1 (based on stage) ): Groupwise retained observations after subsampling: I:562736/1161144; II:1437264/2965635
2026-01-14 21:37:45     Inf    INFO                 Density estimation ( CGI Relation--2 (based on stage) ): Groupwise retained observations after missing value removal: Open Sea:329694/329694; Shelf:88636/88636; Shore:212504/212504; Island:286228/286228
2026-01-14 21:37:47     Inf    INFO                 Density estimation ( Design--2 (based on stage) ): Groupwise retained observations after missing value removal: I:258032/258032; II:659030/659030
2026-01-14 21:37:49     Inf    INFO                 Density estimation ( CGI Relation--5 (based on stage) ): Groupwise retained observations after missing value removal: Open Sea:659388/659388; Shelf:177272/177272; Shore:425008/425008; Island:572456/572456
2026-01-14 21:37:51     Inf    INFO                 Density estimation ( Design--5 (based on stage) ): Groupwise retained observations after missing value removal: I:516064/516064; II:1318060/1318060
2026-01-14 21:37:54     Inf    INFO                 Density estimation ( CGI Relation--6 (based on stage) ): Groupwise retained observations after missing value removal: Open Sea:4615716/4615716; Shelf:1240904/1240904; Shore:2975056/2975056; Island:4007192/4007192
2026-01-14 21:37:55     Inf    INFO                 Density estimation ( CGI Relation--6 (based on stage) ): Groupwise retained observations after subsampling: Open Sea:1438045/4615716; Shelf:386609/1240904; Shore:926890/2975056; Island:1248456/4007192
2026-01-14 21:38:00     Inf    INFO                 Density estimation ( Design--6 (based on stage) ): Groupwise retained observations after missing value removal: I:3612448/3612448; II:9226420/9226420
2026-01-14 21:38:01     Inf    INFO                 Density estimation ( Design--6 (based on stage) ): Groupwise retained observations after subsampling: I:562736/3612448; II:1437264/9226420
2026-01-14 21:38:04     Inf    INFO                 Density estimation ( CGI Relation--R01C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:38:08     Inf    INFO                 Density estimation ( Design--R01C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:38:08     Inf    INFO                 Density estimation ( Design--R01C01 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:38:10     Inf    INFO                 Density estimation ( CGI Relation--R01C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:824235/824235; Shelf:221590/221590; Shore:531260/531260; Island:715570/715570
2026-01-14 21:38:14     Inf    INFO                 Density estimation ( Design--R01C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:645080/645080; II:1647575/1647575
2026-01-14 21:38:14     Inf    INFO                 Density estimation ( Design--R01C02 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/645080; II:1437264/1647575
2026-01-14 21:38:17     Inf    INFO                 Density estimation ( CGI Relation--R02C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:659388/659388; Shelf:177272/177272; Shore:425008/425008; Island:572456/572456
2026-01-14 21:38:19     Inf    INFO                 Density estimation ( Design--R02C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:516064/516064; II:1318060/1318060
2026-01-14 21:38:22     Inf    INFO                 Density estimation ( CGI Relation--R02C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:38:26     Inf    INFO                 Density estimation ( Design--R02C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:38:26     Inf    INFO                 Density estimation ( Design--R02C02 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:38:28     Inf    INFO                 Density estimation ( CGI Relation--R03C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:38:32     Inf    INFO                 Density estimation ( Design--R03C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:38:32     Inf    INFO                 Density estimation ( Design--R03C01 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:38:35     Inf    INFO                 Density estimation ( CGI Relation--R03C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:824235/824235; Shelf:221590/221590; Shore:531260/531260; Island:715570/715570
2026-01-14 21:38:39     Inf    INFO                 Density estimation ( Design--R03C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:645080/645080; II:1647575/1647575
2026-01-14 21:38:39     Inf    INFO                 Density estimation ( Design--R03C02 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/645080; II:1437264/1647575
2026-01-14 21:38:42     Inf    INFO                 Density estimation ( CGI Relation--R04C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:1153929/1153929; Shelf:310226/310226; Shore:743764/743764; Island:1001798/1001798
2026-01-14 21:38:46     Inf    INFO                 Density estimation ( Design--R04C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:903112/903112; II:2306605/2306605
2026-01-14 21:38:46     Inf    INFO                 Density estimation ( Design--R04C01 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/903112; II:1437264/2306605
2026-01-14 21:38:49     Inf    INFO                 Density estimation ( CGI Relation--R04C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:38:55     Inf    INFO                 Density estimation ( Design--R04C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:38:55     Inf    INFO                 Density estimation ( Design--R04C02 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:38:58     Inf    INFO                 Density estimation ( CGI Relation--R05C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:494541/494541; Shelf:132954/132954; Shore:318756/318756; Island:429342/429342
2026-01-14 21:39:00     Inf    INFO                 Density estimation ( Design--R05C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:387048/387048; II:988545/988545
2026-01-14 21:39:02     Inf    INFO                 Density estimation ( CGI Relation--R05C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:824235/824235; Shelf:221590/221590; Shore:531260/531260; Island:715570/715570
2026-01-14 21:39:05     Inf    INFO                 Density estimation ( Design--R05C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:645080/645080; II:1647575/1647575
2026-01-14 21:39:05     Inf    INFO                 Density estimation ( Design--R05C02 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/645080; II:1437264/1647575
2026-01-14 21:39:08     Inf    INFO                 Density estimation ( CGI Relation--R06C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:824235/824235; Shelf:221590/221590; Shore:531260/531260; Island:715570/715570
2026-01-14 21:39:11     Inf    INFO                 Density estimation ( Design--R06C01 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:645080/645080; II:1647575/1647575
2026-01-14 21:39:11     Inf    INFO                 Density estimation ( Design--R06C01 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/645080; II:1437264/1647575
2026-01-14 21:39:14     Inf    INFO                 Density estimation ( CGI Relation--R06C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:39:18     Inf    INFO                 Density estimation ( Design--R06C02 (based on Sentrix_Position) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:39:18     Inf    INFO                 Density estimation ( Design--R06C02 (based on Sentrix_Position) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:39:21     Inf    INFO                 Density estimation ( CGI Relation--Neuron_AD (based on AD_vs_CTRL_Neuron) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:39:24     Inf    INFO                 Density estimation ( Design--Neuron_AD (based on AD_vs_CTRL_Neuron) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:39:24     Inf    INFO                 Density estimation ( Design--Neuron_AD (based on AD_vs_CTRL_Neuron) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:39:27     Inf    INFO                 Density estimation ( CGI Relation--Neuron_CTRL (based on AD_vs_CTRL_Neuron) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:39:31     Inf    INFO                 Density estimation ( Design--Neuron_CTRL (based on AD_vs_CTRL_Neuron) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:39:31     Inf    INFO                 Density estimation ( Design--Neuron_CTRL (based on AD_vs_CTRL_Neuron) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:39:34     Inf    INFO                 Density estimation ( CGI Relation--Glia_AD (based on AD_vs_CTRL_Glia) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:39:37     Inf    INFO                 Density estimation ( Design--Glia_AD (based on AD_vs_CTRL_Glia) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:39:38     Inf    INFO                 Density estimation ( Design--Glia_AD (based on AD_vs_CTRL_Glia) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:39:40     Inf    INFO                 Density estimation ( CGI Relation--Glia_CTRL (based on AD_vs_CTRL_Glia) ): Groupwise retained observations after missing value removal: Open Sea:989082/989082; Shelf:265908/265908; Shore:637512/637512; Island:858684/858684
2026-01-14 21:39:44     Inf    INFO                 Density estimation ( Design--Glia_CTRL (based on AD_vs_CTRL_Glia) ): Groupwise retained observations after missing value removal: I:774096/774096; II:1977090/1977090
2026-01-14 21:39:44     Inf    INFO                 Density estimation ( Design--Glia_CTRL (based on AD_vs_CTRL_Glia) ): Groupwise retained observations after subsampling: I:562736/774096; II:1437264/1977090
2026-01-14 21:39:47     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_AD (based on AD_vs_CTRL_FC) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:39:47     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_AD (based on AD_vs_CTRL_FC) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:39:53     Inf    INFO                 Density estimation ( Design--FrontalCortex_AD (based on AD_vs_CTRL_FC) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:39:53     Inf    INFO                 Density estimation ( Design--FrontalCortex_AD (based on AD_vs_CTRL_FC) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:39:55     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_CTRL (based on AD_vs_CTRL_FC) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:39:56     Inf    INFO                 Density estimation ( CGI Relation--FrontalCortex_CTRL (based on AD_vs_CTRL_FC) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:40:01     Inf    INFO                 Density estimation ( Design--FrontalCortex_CTRL (based on AD_vs_CTRL_FC) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:40:01     Inf    INFO                 Density estimation ( Design--FrontalCortex_CTRL (based on AD_vs_CTRL_FC) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:40:04     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_AD (based on AD_vs_CTRL_TC) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:40:05     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_AD (based on AD_vs_CTRL_TC) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:40:10     Inf    INFO                 Density estimation ( Design--TemporalCortex_AD (based on AD_vs_CTRL_TC) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:40:10     Inf    INFO                 Density estimation ( Design--TemporalCortex_AD (based on AD_vs_CTRL_TC) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:40:13     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_CTRL (based on AD_vs_CTRL_TC) ): Groupwise retained observations after missing value removal: Open Sea:1648470/1648470; Shelf:443180/443180; Shore:1062520/1062520; Island:1431140/1431140
2026-01-14 21:40:13     Inf    INFO                 Density estimation ( CGI Relation--TemporalCortex_CTRL (based on AD_vs_CTRL_TC) ): Groupwise retained observations after subsampling: Open Sea:1438045/1648470; Shelf:386609/443180; Shore:926890/1062520; Island:1248456/1431140
2026-01-14 21:40:18     Inf    INFO                 Density estimation ( Design--TemporalCortex_CTRL (based on AD_vs_CTRL_TC) ): Groupwise retained observations after missing value removal: I:1290160/1290160; II:3295150/3295150
2026-01-14 21:40:19     Inf    INFO                 Density estimation ( Design--TemporalCortex_CTRL (based on AD_vs_CTRL_TC) ): Groupwise retained observations after subsampling: I:562736/1290160; II:1437264/3295150
2026-01-14 21:40:21     Inf    INFO                 Density estimation ( CGI Relation--female (based on Predicted Sex) ): Groupwise retained observations after missing value removal: Open Sea:4945410/4945410; Shelf:1329540/1329540; Shore:3187560/3187560; Island:4293420/4293420
2026-01-14 21:40:22     Inf    INFO                 Density estimation ( CGI Relation--female (based on Predicted Sex) ): Groupwise retained observations after subsampling: Open Sea:1438045/4945410; Shelf:386609/1329540; Shore:926890/3187560; Island:1248456/4293420
2026-01-14 21:40:28     Inf    INFO                 Density estimation ( Design--female (based on Predicted Sex) ): Groupwise retained observations after missing value removal: I:3870480/3870480; II:9885450/9885450
2026-01-14 21:40:28     Inf    INFO                 Density estimation ( Design--female (based on Predicted Sex) ): Groupwise retained observations after subsampling: I:562736/3870480; II:1437264/9885450
2026-01-14 21:40:31     Inf    INFO                 Density estimation ( CGI Relation--male (based on Predicted Sex) ): Groupwise retained observations after missing value removal: Open Sea:5604798/5604798; Shelf:1506812/1506812; Shore:3612568/3612568; Island:4865876/4865876
2026-01-14 21:40:32     Inf    INFO                 Density estimation ( CGI Relation--male (based on Predicted Sex) ): Groupwise retained observations after subsampling: Open Sea:1438045/5604798; Shelf:386609/1506812; Shore:926890/3612568; Island:1248456/4865876
2026-01-14 21:40:37     Inf    INFO                 Density estimation ( Design--male (based on Predicted Sex) ): Groupwise retained observations after missing value removal: I:4386544/4386544; II:11203510/11203510
2026-01-14 21:40:38     Inf    INFO                 Density estimation ( Design--male (based on Predicted Sex) ): Groupwise retained observations after subsampling: I:562736/4386544; II:1437264/11203510
2026-01-14 21:40:40     Inf  STATUS             COMPLETED Methylation Value Distributions - Probe Categories
2026-01-14 21:40:40     Inf  STATUS             STARTED Sample Clustering
2026-01-14 21:40:40     Inf  STATUS                 STARTED Agglomerative Hierarchical Clustering
2026-01-14 21:40:47     Inf  STATUS                     Performed clustering on sites using correlation as a distance metric
2026-01-14 21:40:57     Inf  STATUS                     Performed clustering on sites using manhattan as a distance metric
2026-01-14 21:41:10     Inf  STATUS                     Performed clustering on sites using euclidean as a distance metric
2026-01-14 21:41:12     Inf  STATUS                     Performed clustering on tiling using correlation as a distance metric
2026-01-14 21:41:14     Inf  STATUS                     Performed clustering on tiling using manhattan as a distance metric
2026-01-14 21:41:18     Inf  STATUS                     Performed clustering on tiling using euclidean as a distance metric
2026-01-14 21:41:18     Inf  STATUS                     Performed clustering on genes using correlation as a distance metric
2026-01-14 21:41:19     Inf  STATUS                     Performed clustering on genes using manhattan as a distance metric
2026-01-14 21:41:20     Inf  STATUS                     Performed clustering on genes using euclidean as a distance metric
2026-01-14 21:41:20     Inf  STATUS                     Performed clustering on promoters using correlation as a distance metric
2026-01-14 21:41:21     Inf  STATUS                     Performed clustering on promoters using manhattan as a distance metric
2026-01-14 21:41:22     Inf  STATUS                     Performed clustering on promoters using euclidean as a distance metric
2026-01-14 21:41:22     Inf  STATUS                     Performed clustering on cpgislands using correlation as a distance metric
2026-01-14 21:41:23     Inf  STATUS                     Performed clustering on cpgislands using manhattan as a distance metric
2026-01-14 21:41:24     Inf  STATUS                     Performed clustering on cpgislands using euclidean as a distance metric
2026-01-14 21:41:24     Inf  STATUS                 COMPLETED Agglomerative Hierarchical Clustering
2026-01-14 21:41:24     Inf  STATUS                 STARTED Clustering Section
2026-01-14 21:41:27     Inf  STATUS                     STARTED Generating Heatmaps
2026-01-14 21:41:27     Inf  STATUS                         STARTED Region type: sites
2026-01-14 22:04:12     Inf  STATUS                         COMPLETED Region type: sites
2026-01-14 22:04:12     Inf  STATUS                         STARTED Region type: tiling
2026-01-14 22:27:22     Inf  STATUS                         COMPLETED Region type: tiling
2026-01-14 22:27:22     Inf  STATUS                         STARTED Region type: genes
2026-01-14 22:50:23     Inf  STATUS                         COMPLETED Region type: genes
2026-01-14 22:50:23     Inf  STATUS                         STARTED Region type: promoters
2026-01-14 23:13:20     Inf  STATUS                         COMPLETED Region type: promoters
2026-01-14 23:13:20     Inf  STATUS                         STARTED Region type: cpgislands
2026-01-14 23:36:18     Inf  STATUS                         COMPLETED Region type: cpgislands
2026-01-14 23:36:18     Inf  STATUS                         Created 2340 heatmaps based on the clustering results
2026-01-14 23:36:18     Inf  STATUS                     COMPLETED Generating Heatmaps
2026-01-14 23:36:18     Inf  STATUS                     STARTED Adding Color Legends
2026-01-14 23:40:06     Inf  STATUS                     COMPLETED Adding Color Legends
2026-01-14 23:40:06     Inf  STATUS                     STARTED Estimating Optimal Numbers of Clusters
2026-01-14 23:40:18     Inf  STATUS                         Estimated number of clusters based on mean silhouette value
2026-01-14 23:40:18     Inf  STATUS                     COMPLETED Estimating Optimal Numbers of Clusters
2026-01-14 23:40:18     Inf  STATUS                     STARTED Overlapping Clusters with Sample Traits
2026-01-14 23:40:18     Inf  STATUS                         Computed adjusted rand indices and saved to exploratory_analysis_data/adjusted_rand_indices_1.csv
2026-01-14 23:40:18     Inf  STATUS                         Computed adjusted rand indices and saved to exploratory_analysis_data/adjusted_rand_indices_2.csv
2026-01-14 23:40:18     Inf  STATUS                         Computed adjusted rand indices and saved to exploratory_analysis_data/adjusted_rand_indices_3.csv
2026-01-14 23:40:18     Inf  STATUS                         Computed adjusted rand indices and saved to exploratory_analysis_data/adjusted_rand_indices_4.csv
2026-01-14 23:40:18     Inf  STATUS                         Computed adjusted rand indices and saved to exploratory_analysis_data/adjusted_rand_indices_5.csv
2026-01-14 23:40:29     Inf  STATUS                     COMPLETED Overlapping Clusters with Sample Traits
2026-01-14 23:40:29     Inf  STATUS                 COMPLETED Clustering Section
2026-01-14 23:40:29     Inf  STATUS             COMPLETED Sample Clustering
2026-01-14 23:40:29     Inf  STATUS         COMPLETED Exploratory Analysis

using R

This R code block involves several steps to analyze and visualize DNA methylation data using the RnBeads package. Initially, it extracts methylation data (mmEx) and filters out samples labeled as “Glia” or “Neuron” to focus on other tissue samples. It then computes a correlation matrix (sampleCorMatrix) among these tissue samples using Pearson’s method. This matrix is visualized using a heatmap, enhanced with annotations for sex and diagnosis, and colored gradients.

Subsequently, the code performs Principal Component Analysis (PCA) on the transposed filtered methylation data to explore variability and patterns in the high-dimensional dataset. PCA results are plotted using ggplot2, distinguishing samples by sex and diagnosis with different colors and shapes.

Finally, the code identifies and visualizes the most variable probes within the “Glia” and “Neuron” samples using another heatmap. This includes extracting methylation data for these cell types, computing variance for each probe, and then focusing on the top 10,000 most variable probes for the heatmap visualization. Annotations in the heatmap include additional details such as cell type, enhancing the interpretability of the results.

# loading exploratory analysis 
rnbEx <- rnb 
mmEx = meth(rnbEx)

# Let's correlate the methylomes of all tissue samples
mmExTissue = mmEx[ , !grepl("Glia|Neuron", colnames(mmEx))]

sampleCor = cor( x = mmExTissue , method =  "p")
sampleCorMatrix = as.matrix( sampleCor )

anno = data.frame(pheno(rnbEx)[ , c("Sex","Age","Diagnosis")])
annoCol = list(Sex = c("M" = "#0570b0", "F" = "#ae017e"),
               Diagnosis = c("CTRL" = "#f0f0f0", "AD" = "#feb24c"))

colors = colorRampPalette( colors = brewer.pal(9, "OrRd"))(50)

pheatmap(sampleCorMatrix,
         clustering_distance_rows = "euclidean",
         clustering_distance_cols = "euclidean",
         col = colors,
         annotation_col = anno,
         annotation_colors = annoCol,
         cellwidth = 10,
         cellheight = 10
)

Let’s explore the high dimensional methylomes in a principle component analysis

# Let's explore the high dimensional methylomes in a principle component analysis
pcaRes <- prcomp(t(mmExTissue), center = TRUE, scale. = TRUE)

pcaData <- as.data.frame(pcaRes$x)
pcaData$SampleID = rownames(pcaData)
pcaData = merge(x = pcaData, y = pheno(rnbEx), by = "SampleID")

ggplot(pcaData, aes(x = PC1, y = PC2, color = Sex, shape = Diagnosis)) +
  geom_point(size = 3) +
  scale_color_manual(values = c("#ae017e", "#0570b0")) +
  scale_shape_manual(values = c(8, 1))+
  theme_minimal() +
  labs(title = "PCA Plot")

Investigate the most varibale probes in the cell type samples


mmExCell = mmEx[ , grepl("Glia|Neuron", colnames(mmEx))]
rowVars <- apply(mmExCell, 1, var)

mmMostVar = mmExCell[ order(rowVars, decreasing = T)[1:10000] , ]

anno = data.frame(pheno(rnbEx)[ , c("Sex","Age","Diagnosis","CellType")])
annoCol = list(Sex = c("M" = "#0570b0", "F" = "#ae017e"),
               Diagnosis = c("CTRL" = "#f0f0f0", "AD" = "#feb24c"),
               CellType = c("Glia" = "white","Neuron" = "#969696"))

pheatmap(mmMostVar,
         clustering_distance_rows = "euclidean",
         clustering_distance_cols = "euclidean",
         col = colors,
         annotation_col = anno,
         annotation_colors = annoCol,
         show_colnames = F,
         show_rownames = F,
         cellwidth = 10
         #cellheight = 10
)

RnBeads sets

In order to save time for analysis which can take sometime hours of wait. We have already have some objects ready for you. You will have the option later on to use these objects and at the same time also create your own objects in case you have enough time at the end of each session.

rnbUnp <- load.rnb.set("d:/Work/Epigenetics/Workshops/2024_deNBI-DNA_methylation_design_to_discovery/analysis/rnbSet_Unprocessed.zip")

rnbFilt <- load.rnb.set("d:/Work/Epigenetics/Workshops/2024_deNBI-DNA_methylation_design_to_discovery/analysis/rnbSet_Filtered.zip")

rnbEx <- load.rnb.set("d:/Work/Epigenetics/Workshops/2024_deNBI-DNA_methylation_design_to_discovery/analysis/rnbSet_exploratoryAnalysis.zip")
LS0tDQp0aXRsZS1ibG9jay1iYW5uZXItY29sb3I6ICIjNjk3ZGRkIg0KdGl0bGU6ICJETkEgbWV0aHlsYXRpb24gZGVzaW5nIHRvIGRpc2NvdmVyeSAyMDI2Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQphdXRob3I6IERyLiBHaWxsZXMgR2FzcGFyb25pLCBMdWthcyBMYXVmZXIsIE5paGl0IEFnZ2Fyd2FsDQpudW1iZXItc2VjdGlvbnM6IHRydWUNCmZvcm1hdDoNCiAgaHRtbDoNCiAgICB0b2M6IHRydWUNCiAgICBlbWJlZC1yZXNvdXJjZXM6IHRydWUNCiAgICB0b2MtbG9jYXRpb246IHJpZ2h0DQogICAgbnVtYmVyLXNlY3Rpb25zOiB0cnVlDQotLS0NCg0KIyMgRGF5IDENCg0KIyMjIFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50DQoNCiMjIyMgSW5zdGFsbGluZyBwYWNrYWdlcw0KDQpJbiB0aGlzIHNlY3Rpb24sIHdlIHdpbGwgaW5zdGFsbCBSbkJlYWRzIHBhY2thZ2UgZnJvbSBCaW9jb25kdWN0b3IsIGVzc2VudGlhbCBmb3IgYW5hbHl6aW5nIEluZmluaXVtIG1ldGh5bGF0aW9uIGFycmF5cy4NCg0KYGBge3IsZXZhbD1GQUxTRX0NCiMgaW5zdGFsbGluZyBSbkJlYWRzIA0KaWYgKCFyZXF1aXJlTmFtZXNwYWNlKCJCaW9jTWFuYWdlciIsIHF1aWV0bHkgPSBUUlVFKSkNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJCaW9jTWFuYWdlciIpDQpCaW9jTWFuYWdlcjo6aW5zdGFsbCgiRkRiLkluZmluaXVtTWV0aHlsYXRpb24uaGcxOSIpDQoNCnNvdXJjZSgiaHR0cDovL3JuYmVhZHMub3JnL2RhdGEvaW5zdGFsbC5SIikNCmBgYA0KDQojIyMjIExvYWRpbmcgcGFja2FnZXMNCg0Kd2Ugc3BlY2lmeSBhIGxpc3Qgb2YgZXNzZW50aWFsIFIgcGFja2FnZXMsIGluY2x1ZGluZyBnZ3Bsb3QyLCByZXNoYXBlMiwgUm5CZWFkcywgYW5kIGRhdGEudGFibGUsIHdoaWNoIGFyZSBmdW5kYW1lbnRhbCBmb3IgZGF0YSB2aXN1YWxpemF0aW9uIGFuZCBhbmFseXNpcyBpbiBlcGlnZW5ldGljcyBzdHVkaWVzLiBUaGUgbGFwcGx5IGZ1bmN0aW9uIGlzIHRoZW4gdXNlZCB0byBsb2FkIGVhY2ggcGFja2FnZSBpbiB0aGUgbGlzdCwgZW5zdXJpbmcgdGhleSBhcmUgYXZhaWxhYmxlIGZvciB1c2UgaW4gc3Vic2VxdWVudCBhbmFseXNlcy4NCg0KYGBge3J9DQpwYWNrYWdlc190b19sb2FkIDwtIGMoImdncGxvdDIiLCJyZXNoYXBlMiIsIlJuQmVhZHMiLCJkYXRhLnRhYmxlIiwicGhlYXRtYXAiLCJSQ29sb3JCcmV3ZXIiLCJHT3N0YXRzIikNCmxhcHBseShwYWNrYWdlc190b19sb2FkLCByZXF1aXJlLCBjaGFyYWN0ZXIub25seT1UUlVFKQ0KDQpgYGANCg0KIyMjIFByaW1hcnkgYW5hbHlzaXMNCg0KIyMjIyBEYXRhIGFuZCBzYW1wbGVzaGVldCBwcmVwYXJhdGlvbg0KDQpJbiB0aGlzIHNlZ21lbnQsIHdlIGFyZSBzZXR0aW5nIHVwIHRoZSBmaWxlIHBhdGhzIGFuZCBkaXJlY3RvcmllcyBuZWNlc3NhcnkgZm9yIGhhbmRsaW5nIEROQSBtZXRoeWxhdGlvbiBkYXRhIGluIG91ciBlcGlnZW5ldGljcyB3b3Jrc2hvcC4gVGhlIGNvZGUgZGVmaW5lcyB0aGUgbG9jYXRpb25zIGZvciB0aGUgcmF3IGRhdGEgKGBpZGF0LmRpcmApLCB0aGUgb3V0cHV0IGRpcmVjdG9yeSAoYHJlcG9ydC5kaXJgKSwgYW5kIHRoZSBzYW1wbGUgc2hlZXQgKGBzYW1wbGUuYW5ub3RhdGlvbmApLCBwcmVwYXJpbmcgdXMgdG8gaW1wb3J0IGFuZCBhbmFseXplIHRoZSBkYXRhIGVmZmVjdGl2ZWx5IGluIHN1YnNlcXVlbnQgc3RlcHMuDQoNCmBgYHtyfQ0KIyBwcmVwYXJpbmcgc2FtcGxlIHNoZWV0IGFuZCBkYXRhIGltcG9ydCBmb3Igc2VsZWN0ZWQgc2FtcGxlcyANCg0KIyBzZXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5DQpzZXR3ZCgiRDovV29yay9FcGlnZW5ldGljcy9Xb3Jrc2hvcHMvMjAyNF9kZU5CSS1ETkFfbWV0aHlsYXRpb25fZGVzaWduX3RvX2Rpc2NvdmVyeS8iKQ0KDQojIHBhdGggdG8gZGF0YS5maWxlcw0KaWRhdC5kaXIgPC0gZmlsZS5wYXRoKCJpZGF0LyIpDQoNCiMgb3V0cHV0UGF0aA0KcmVwb3J0LmRpciA8LSAiYW5hbHlzaXNfdjUvIg0KDQojIHNhbXBsZXNoZWV0IGZpbGUgcGF0aA0Kc2FtcGxlLmFubm90YXRpb24gPC0gZmlsZS5wYXRoKCIyMDI0MTIwMl9TYW1wbGVTaGVldF9TZWxlY3RlZFNhbXBsZXMudHh0IikNCg0KZGF0YS50eXBlPC0iaWRhdC5kaXIiDQoNCmBgYA0KDQpXZSBmaXJzdCB1c2UgdGhlIGBoZWxwKCJybmIub3B0aW9ucyIpYCBmdW5jdGlvbiB0byBkaXNwbGF5IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIGF2YWlsYWJsZSBpbiB0aGUgUm5CZWFkcyBwYWNrYWdlLiBGb2xsb3dpbmcgdGhpcywgd2UgY29uZmlndXJlIHNldmVyYWwgUm5CZWFkcyBvcHRpb25zLCBzZXR0aW5nIHRoZSBnZW5vbWUgYXNzZW1ibHkgdG8gImhnMTksIiBzcGVjaWZ5aW5nIHRoZSBpZGVudGlmaWVycyBjb2x1bW4gYXMgIlNhbXBsZUlELCIgYW5kIGRlZmluaW5nIHRoZSBpbXBvcnQgdGFibGUgc2VwYXJhdG9yIGFzIGEgdGFiLiBGaW5hbGx5LCB3ZSBleHBvcnQgdGhlc2UgY29uZmlndXJhdGlvbnMgdG8gYW4gWE1MIGZvcm1hdCB3aXRoIGltcHJvdmVkIHJlYWRhYmlsaXR5IHVzaW5nIGBybmIub3B0aW9uczJ4bWwocHJldHR5PVRSVUUpYC4gVGhpcyBzZXR1cCBlbnN1cmVzIG91ciBSbkJlYWRzIGFuYWx5c2VzIGFyZSB0YWlsb3JlZCB0byBvdXIgc3BlY2lmaWMgZGF0YXNldCBhbmQgcHJlZmVyZW5jZXMuDQoNCmBgYHtyfQ0KIyBnZXQgaW5mbyBvbiBhbGwgYXZhaWxhYmxlIFJuQiBwYXJhbWV0ZXJzLg0KaGVscCgicm5iLm9wdGlvbnMiKSANCg0KIyBzZXR0aW5nIHJuYmVhZHMgb3B0aW9ucw0Kcm5iLm9wdGlvbnMoYXNzZW1ibHkgPSAiaGcxOSIpDQpybmIub3B0aW9ucyhpZGVudGlmaWVycy5jb2x1bW4gPSAiU2FtcGxlSUQiKQ0Kcm5iLm9wdGlvbnMoaW1wb3J0LnRhYmxlLnNlcGFyYXRvciA9ICJcdCIpDQpybmIub3B0aW9uczJ4bWwocHJldHR5PVRSVUUpDQpgYGANCg0KIyMjIyBSbkJlYWRzIHNldA0KDQpUaGUgY29kZSBpbml0aWFsaXplcyB0aGUgUm5CZWFkcyBhbmFseXNpcyBieSBpbXBvcnRpbmcgRE5BIG1ldGh5bGF0aW9uIGRhdGEgYW5kIGFzc29jaWF0ZWQgc2FtcGxlIGFubm90YXRpb25zIGZyb20gc3BlY2lmaWVkIGRpcmVjdG9yaWVzLCBzdWJzZXF1ZW50bHkgc3RvcmluZyB0aGUgcmVzdWx0aW5nIFJuQmVhZHMgZGF0YXNldCBvYmplY3QgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuDQoNCmBgYHtyfQ0KIyBpbXBvcnQgcm5iZWFkIHNldA0Kcm5iU2V0ID0gcm5iLnJ1bi5pbXBvcnQoZGF0YS5zb3VyY2UgPSBjKGlkYXQuZGlyLCBzYW1wbGUuYW5ub3RhdGlvbiksIA0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS50eXBlID0gZGF0YS50eXBlLA0KICAgICAgICAgICAgICAgICAgICAgICAgZGlyLnJlcG9ydHMgPSByZXBvcnQuZGlyKQ0Kcm5iID0gcm5iU2V0JHJuYi5zZXQNCmBgYA0KDQojIyMjIEZlYXR1cmVzIG9mIFJuQmVhZHMgb2JqZWN0DQoNCkluIHRoaXMgc2VjdGlvbiwgd2UgZXhwbG9yZSBrZXkgZmVhdHVyZXMgb2YgdGhlIFJuQmVhZHMgZGF0YXNldCB0byB1bmRlcnN0YW5kIGl0cyBzdHJ1Y3R1cmUgYW5kIGNvbnRlbnRzLiBUaGUgY29kZSBmaXJzdCBkaXNwbGF5cyB0aGUgdG9wIGVudHJpZXMgb2YgdGhlIHNhbXBsZSBzaGVldCB1c2luZyBgcGhlbm8ocm5iKWAsIHRoZW4gZXh0cmFjdHMgcmF3IG1ldGh5bGF0aW9uIHZhbHVlcyB3aXRoIGBtZXRoKHJuYilgLCBhbmQgZmluYWxseSB2aXN1YWxpemVzIHRoZSBtZXRoeWxhdGlvbiBkaXN0cmlidXRpb24gZm9yIGEgc3BlY2lmaWMgc2FtcGxlIHVzaW5nIGEgaGlzdG9ncmFtLiBcIyMjIyMgSW5zcGVjdGluZyBEYXRhc2V0IEZlYXR1cmVzDQoNCmBgYHtyfQ0KIyBMZXQncyBpbnNwZWN0IHNvbWUgZmVhdHVyZXMgb2Ygb3VyIGRhdGFzZXQNCg0KIyBWaWV3IFNhbXBsZSBTaGVldA0KaGVhZChwaGVubyhybmIpKQ0KDQojIFJldHJpZXZlIFJhdyBNZXRoeWxhdGlvbiBWYWx1ZXMNCm1tIDwtIG1ldGgocm5iKQ0KDQojIFBsb3QgUmF3IE1ldGh5bGF0aW9uIFZhbHVlcyBIaXN0b2dyYW0NCmhpc3QobW1bLCJEbnIxM19GXzc3X0NUUkxfR2xpYSJdLCBjb2w9InN0ZWVsYmx1ZSIsIGJyZWFrcz01MCkNCg0KIyBDaGVjayBpZiBSZWdpb25zIGFyZSBTdW1tYXJpemVkIGFuZCBIb3cNCnN1bW1hcml6ZWQucmVnaW9ucyhybmIpDQoNCmBgYA0KDQojIyMjIyBXb3JraW5nIHdpdGggQW5ub3RhdGlvbnMNCg0KYGBge3J9DQojIEluc3BlY3QgQXZhaWxhYmxlIEFubm90YXRpb24gZm9yIFByb2Jlcw0KYW5ubyA9IHJuYi5hbm5vdGF0aW9uMmRhdGEuZnJhbWUocm5iLmdldC5hbm5vdGF0aW9uKCJwcm9iZXM0NTAiKSkNCmhlYWQoYW5ubykNCg0KIyBWaWV3IEFubm90YXRpb24gQXZhaWxhYmxlIGZvciBQcm9tb3RlcnMNCmFubm90LnByb21vdGVycyA8LSBhbm5vdGF0aW9uKHJuYiwgdHlwZT0icHJvbW90ZXJzIikNCmhlYWQoYW5ub3QucHJvbW90ZXJzKQ0KYGBgDQoNCiMjIyMjIERldGFpbGVkIE1ldGh5bGF0aW9uIEFuYWx5c2lzDQoNCmBgYHtyfQ0KIyBnZXQgbWV0aHlsYXRpb24gZm9yIHByb21vdGVycyAob24gYSBzdWJzZXQgb2Ygc2FtcGxlcyBhbmQgcHJvbW90ZXJzIGp1c3QgZm9yIGlsbHVzdHJhdGlvbikNCm1ldGgocm5iLCB0eXBlPSJwcm9tb3RlcnMiLCByb3cubmFtZXM9VFJVRSwgaT0xOjUsIGo9MTozKQ0KDQojIGluc3BlY3QgY292ZXJhZ2UgKG51bWJlciBvZiBiZWFkcyBwZXIgcHJvYmUpDQpuYmVhZCA8LSBjb3ZnKHJuYiwgcm93Lm5hbWVzPVRSVUUpDQpuYmVhZFsxOjUsMTozXQ0KDQojIGRldGVjdGlvbiBwLXZhbHVlcw0KcHZhbHMgPC0gZHB2YWwocm5iLCByb3cubmFtZXM9VFJVRSkNCg0KYGBgDQoNCiMjIyMjIERpYWdub3N0aWMgUGxvdHMNCg0KYGBge3J9DQojIGNoZWNrIGNvbnRyb2wgcHJvYmVzDQpybmIucGxvdC5jb250cm9sLmJveHBsb3Qocm5iKQ0KYGBgDQoNCmBgYHtyIGVjaG89VFJVRSwgd2FybmluZz1GQUxTRX0NCiMgc29tZSBzcGVjaWZpYyBjb250cm9sDQpybmIucGxvdC5jb250cm9sLmJveHBsb3Qocm5iLCAiQklTVUxGSVRFIENPTlZFUlNJT04gSSIpDQoNCiMgTmVnYXRpdmUgY29udHJvbCBib3hwbG90cyBhcmUgZ2VuZXJhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kOg0Kcm5iLnBsb3QubmVnYXRpdmUuYm94cGxvdChybmIpDQoNCiMgYmFycGxvdCBvZiBhIHNlbGVjdGVkIGNvbnRyb2wgcHJvYmUNCmNvbnRyb2wubWV0YS5kYXRhIDwtIHJuYi5nZXQuYW5ub3RhdGlvbigiY29udHJvbHM0NTAiKQ0KY3RybC5wcm9iZTwtcGFzdGUwKHVuaXF1ZShjb250cm9sLm1ldGEuZGF0YVtbIlRhcmdldCJdXSlbMl0sICIuMSIpDQpybmIucGxvdC5jb250cm9sLmJhcnBsb3Qocm5iLCBjdHJsLnByb2JlKQ0KDQojIGFjY2VzcyB0byBmdWxsIHFjIHJlc3VsdHMNCnFjX2RhdGEgPSBxYyhybmIpDQpgYGANCg0KIyMjIyMgR2Vub3R5cGluZyBhbmQgQWRkaXRpb25hbCBBbmFseXNpcw0KDQpgYGB7cn0NCiN1c2Ugc29tZSBnZW5vdHlwaW5nIHByb2JlcyB0byBjaGVjayBmb3IgZ2Vub21pYyBzYW1wbGUgc2ltaWxhcml0eQ0Kc25wLnByb2JlcyA9IGFubm9bZ3JlcCgicnMiLCByb3duYW1lcyhhbm5vKSksIF0NCg0Kcm5iLnBsb3Quc25wLmhlYXRtYXAocm5iKQ0KI3JuYi5wbG90LnNucC5iYXJwbG90KGRhdGFzZXQgPSBybmIsIHByb2JlSUQgPSByb3duYW1lcyhzbnAucHJvYmVzKSBbMl0sIHdyaXRlVG9GaWxlID0gVFJVRSkNCg0KI3NldCBzb21lIG9wdGlvbnMgYXMgZGVzaXJlZCBiZWZvcmUgcnVubmluZyB0aGUgY29tcGxldGUgcXVhbGl0eSBjaGVjayBtb2R1bGUNCnJuYi5vcHRpb25zKHFjLnNucC5ib3hwbG90PVRSVUUpDQpybmIub3B0aW9ucyhpbXBvcnQuc2V4LnByZWRpY3Rpb24gPSBUUlVFKQ0Kcm5iLm9wdGlvbnMocWMuY252ID0gVFJVRSkgIyBjYWxjdWxhdGUgY29weSBudW1iZXIgdmFyaWF0aW9ucw0KYGBgDQoNCiMjIyMgUXVhbGl0eSBjaGVjaw0KDQpgYGB7cn0NCiNzZWUgYWxsIGF2YWlsYWJsZSBvcHRpb25zDQpoZWxwKCJybmIub3B0aW9ucyIpICNnZXQgaW5mbyBvbiBhbGwgYXZhaWxhYmxlIFJuQiBwYXJhbWV0ZXJzLg0KDQojcnVuIGNvbXBsZXRlIHF1YWxpdHkgcmVwb3J0IHdpdGggc3BlY2lmaWMgc2V0dGluZ3MNCg0KI1FDDQpybmIub3B0aW9ucyhxYy5ib3hwbG90cyA9IFRSVUUpDQpybmIub3B0aW9ucyhxYy5iYXJwbG90cyA9IFRSVUUpDQpybmIub3B0aW9ucyhxYy5uZWdhdGl2ZS5ib3hwbG90ID0gVFJVRSkNCnJuYi5vcHRpb25zKHFjLnNucC5kaXN0YW5jZXMgPSBUUlVFKQ0Kcm5iLm9wdGlvbnMocWMuc25wLmJveHBsb3QgPSBUUlVFKQ0Kcm5iLm9wdGlvbnMocWMuc25wLmJhcnBsb3QgPSBUUlVFKQ0Kcm5iLm9wdGlvbnMocWMuc2FtcGxlLmJhdGNoLnNpemUgPSA1MCkNCnJuYi5vcHRpb25zKHFjLmNvdmVyYWdlLnBsb3RzID0gRkFMU0UpDQpybmIub3B0aW9ucyhxYy5jb3ZlcmFnZS50aHJlc2hvbGQucGxvdCA9IDE6MTApDQpybmIub3B0aW9ucyhxYy5jb3ZlcmFnZS5oaXN0b2dyYW1zID0gRkFMU0UpDQpybmIub3B0aW9ucyhxYy5jb3ZlcmFnZS52aW9saW5zID0gRkFMU0UpDQoNCnJuYi5ydW4ucWMocm5iLnNldCA9IHJuYiwgZGlyLnJlcG9ydHMgPSByZXBvcnQuZGlyKSAjdGhpcyB3aWxsIHRha2VzIHNvbWUgbWludXRlcw0KYGBgDQoNCiMjIyBQcmVwcm9jZXNzaW5nDQoNClRoZSBmb2xsb3dpbmcgUiBjb2RlIG91dGxpbmVzIHRoZSBwcmVwcm9jZXNzaW5nIHN0ZXBzIGZvciBETkEgbWV0aHlsYXRpb24gZGF0YSB1c2luZyB0aGUgUm5CZWFkcyBwYWNrYWdlLiBJdCBiZWdpbnMgYnkgYmFja2luZyB1cCB0aGUgb3JpZ2luYWwgdW5wcm9jZXNzZWQgZGF0YXNldC4gVmFyaW91cyBmaWx0ZXJpbmcgdGVjaG5pcXVlcyBhcmUgdGhlbiBhcHBsaWVkIHRvIHJlbW92ZSB1bmRlc2lyYWJsZSBkYXRhIHBvaW50cyBiYXNlZCBvbiBjcml0ZXJpYSBzdWNoIGFzIENwRyBjb250ZXh0LCBTTlAgcHJlc2VuY2UsIGFuZCBkYXRhIHF1YWxpdHkgKGUuZy4sIG1pc3Npbmcgb3IgbG93LXZhcmlhYmlsaXR5IHZhbHVlcykuIEVhY2ggZmlsdGVyaW5nIHN0ZXAgY29uY2x1ZGVzIHdpdGggYSBjaGVjayBvbiB0aGUgcmVtYWluaW5nIGRhdGEsIGVuc3VyaW5nIHRoZSByZWZpbmVkIGRhdGFzZXQgaXMgcmVhZHkgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuDQoNCiMjIyMgRmlsdGVyaW5nDQoNCmBgYHtyfQ0KIyBwcmVwcm9jZXNzaW5nIHR5cGljYWxseSBpbmNsdWRlcyBmaWx0ZXJpbmcgb2YgdW5kZXNpcmVkIGRhdGFwb2ludHMgKG1vc3RseSBzaXRlcykgYW5kIGRhdGEgbm9ybWFsaXphdGlvbg0Kcm5iLnVucHJvY2Vzc2VkID0gcm5iICNmaXJzdCB3ZSBzdG9yZSB0aGUgdW5wcm9jZXNzZWQgcm5iZWFkcyBvYmplY3QgYXMgYSBiYWNrLXVwDQojc2F2ZS5ybmIuc2V0KHJuYi51bnByb2Nlc3NlZCwgIi9wcm9qZWN0cy9yZXNlYXJjaGVycy9qaWwvcHJvamVjdHMvZGVOQkkvMjAyNDExMjlfV1MyNC9hbmFseXNpcy9ybmIvcm5iU2V0X1VucHJvY2Vzc2VkIiwgYXJjaGl2ZSA9IFRSVUUpDQoNCm5yb3cobWV0aChybmIudW5wcm9jZXNzZWQpKSAjIHRoZSBudW1iZXIgb2Ygc2l0ZXMgaW4gdGhlIHVuZmlsdGVyZWQgb2JqZWN0DQoNCiNzb21lIGV4YW1wbGVzIG9mIGhvdyBzaXRlcyB0byBiZSByZW1vdmVkIGZyb20gZGF0YXNldA0KIyBSZW1vdmUgcHJvYmVzIG91dHNpZGUgb2YgQ3BHIGNvbnRleHQNCnJuYi5zZXQuZmlsdGVyZWQgPC0gcm5iLmV4ZWN1dGUuY29udGV4dC5yZW1vdmFsKHJuYi5zZXQgPSBybmIudW5wcm9jZXNzZWQsIGNvbnRleHRzID0gTlVMTCApJGRhdGFzZXQNCm5yb3cobWV0aChybmIuc2V0LmZpbHRlcmVkKSkgIyB0aGUgbnVtYmVyIG9mIENwRyBzaXRlcyBpbiB0aGUgdW5maWx0ZXJlZCBvYmplY3QNCg0KIyBTTlAgZmlsdGVyaW5nIGFsbG93aW5nIG5vIFNOUHMgaW4gdGhlIHByb2JlIHNlcXVlbmNlIChyYW5nZSAzIGJwKQ0Kcm5iLnNldC5maWx0ZXJlZCA8LSBybmIuZXhlY3V0ZS5zbnAucmVtb3ZhbChybmIuc2V0ID0gcm5iLnNldC5maWx0ZXJlZCwgc25wID0gIjMiKSRkYXRhc2V0DQoNCiMgUmVtb3ZhbCBvZiBDcEcgc2l0ZXMgaW4gdGhlIHVuZmlsdGVyZWQgb2JqZWN0DQojIHRoYXQgY29udGFpbiBhIFNOUCBpbiB0aGUgcmFuZ2Ugb2YgM2JwDQpucm93KG1ldGgocm5iLnNldC5maWx0ZXJlZCkpDQoNCiMgUmVtb3ZlIENwR3Mgb24gc2V4IGNocm9tb3NvbWVzDQpybmIuc2V0LmZpbHRlcmVkIDwtIHJuYi5leGVjdXRlLnNleC5yZW1vdmFsKHJuYi5zZXQgPSBybmIuc2V0LmZpbHRlcmVkKSRkYXRhc2V0DQpucm93KG1ldGgocm5iLnNldC5maWx0ZXJlZCkpDQoNCiMgUmVtb3ZlIHByb2JlcyBhbmQgc2FtcGxlcyBiYXNlZCBvbiBhIGdyZWVkeWN1dCBhcHByb2FjaA0KZ3JlZWR5Y3V0LnJlc3VsdHMgPC0gcm5iLmV4ZWN1dGUuZ3JlZWR5Y3V0KHJuYi5zZXQgPSBybmIuc2V0LmZpbHRlcmVkLCBwdmFsLnRocmVzaG9sZCA9IDAuMDUpIyRkYXRhc2V0DQp0b19yZW1vdmUgPSByb3duYW1lcyhtZXRoKG9iamVjdCA9IHJuYi5zZXQuZmlsdGVyZWQsIHJvdy5uYW1lcyA9IFRSVUUpKSBbZ3JlZWR5Y3V0LnJlc3VsdHNbWyJzaXRlcyJdXV0NCnJlbW92ZS5zaXRlcyhvYmplY3QgPSBybmIuc2V0LmZpbHRlcmVkLCBwcm9iZWxpc3QgPSB0b19yZW1vdmUpDQpucm93KG1ldGgocm5iLnNldC5maWx0ZXJlZCkpDQoNCiMgUmVtb3ZlIHByb2JlcyBjb250YWluaW5nIE5BIGZvciBiZXRhIHZhbHVlcw0Kcm5iLnNldC5maWx0ZXJlZCA8LSBybmIuZXhlY3V0ZS5uYS5yZW1vdmFsKHJuYi5zZXQuZmlsdGVyZWQpJGRhdGFzZXQNCm5yb3cobWV0aChybmIuc2V0LmZpbHRlcmVkKSkNCg0KIyBSZW1vdmUgcHJvYmVzIGZvciB3aGljaCB0aGUgYmV0YSB2YWx1ZXMgaGF2ZSBsb3cgc3RhbmRhcmQgZGV2aWF0aW9uDQpybmIuc2V0LmZpbHRlcmVkIDwtIHJuYi5leGVjdXRlLnZhcmlhYmlsaXR5LnJlbW92YWwocm5iLnNldC5maWx0ZXJlZCwgMC4wMDUpJGRhdGFzZXQNCm5yb3cobWV0aChybmIuc2V0LmZpbHRlcmVkKSkNCg0KIyB3ZSByZW1vdmUgc2l0ZXMgd2l0aCBhbnkgTkEgb3IgbmVnYXRpdmUgdmFsdWVzDQptbSA9IG1ldGgocm5iLnNldC5maWx0ZXJlZCwgcm93Lm5hbWVzID0gVFJVRSkNCm1uZWcgPSBhcHBseShtbSwgMSwgZnVuY3Rpb24oeCkgYW55KHggPD0gMCkpDQptbmVnID0gaXMubmEobW5lZykNCmhlYWQobW1bbW5lZywgMTozXSwxMCkNCnJuYi5zZXQuZmlsdGVyZWQgPSByZW1vdmUuc2l0ZXMob2JqZWN0ID0gcm5iLnNldC5maWx0ZXJlZCwgcHJvYmVsaXN0ID0gbW5lZykNCm5yb3cobWV0aChybmIuc2V0LmZpbHRlcmVkKSkNCiNzYXZlLnJuYi5zZXQocm5iLnNldC5maWx0ZXJlZCwgIi9wcm9qZWN0cy9yZXNlYXJjaGVycy9qaWwvcHJvamVjdHMvZGVOQkkvMjAyNDExMjlfV1MyNC9hbmFseXNpcy9ybmIvcm5iU2V0X0ZpbHRlcmVkIiwgYXJjaGl2ZSA9IFRSVUUpDQpgYGANCg0KIyMjIyBOb3JtYWxpemF0aW9uDQoNCldlIG5vdyBjb25maWd1cmUgYSBzZXJpZXMgb2YgUm5CZWFkcyBwYWNrYWdlIG9wdGlvbnMgZm9yIGZpbHRlcmluZyBhbmQgbm9ybWFsaXphdGlvbiBvZiBETkEgbWV0aHlsYXRpb24gZGF0YS4gSXQgc3BlY2lmaWVzIHBhcmFtZXRlcnMgc3VjaCBhcyBTTlAgZmlsdGVyaW5nLCBjcm9zcy1yZWFjdGl2aXR5IGV4Y2x1c2lvbiwgYW5kIHRoZSBoYW5kbGluZyBvZiBtaXNzaW5nIHZhbHVlcyBhbmQgY292ZXJhZ2UgdGhyZXNob2xkcy4gQWRkaXRpb25hbGx5LCBpdCBzZXRzIHVwIG5vcm1hbGl6YXRpb24gbWV0aG9kcywgaW5jbHVkaW5nIGJhY2tncm91bmQgY29ycmVjdGlvbiBhbmQgbWV0aG9kIGFkanVzdG1lbnQuIFRoZSBmaW5hbCBjb21tYW5kIGV4ZWN1dGVzIHRoZSBwcmVkZWZpbmVkIHByZXByb2Nlc3Npbmcgc3RlcHMgb24gdGhlIGZpbHRlcmVkIGRhdGFzZXQgYW5kIHN0b3JlcyB0aGUgcHJvY2Vzc2VkIGRhdGEgaW4gdGhlIGBybmJgIG9iamVjdCBmb3IgZnVydGhlciBhbmFseXNpcy4NCg0KYGBge3J9DQojcHJlc2V0IHNvbWUgb3B0aW9ucyBhbmQgdGhlbiBydW4gZmlsdGVyaW5nL25vcm1hbGl6YXRpb24gd2l0aCBvbmUgY29tbWFuZA0KIyBTZXQgZmlsdGVyaW5nIGFuZCBub3JtYWxpemF0aW9uIG9wdGlvbnMgdXNpbmcgYSBjb25zb2xpZGF0ZWQgYXBwcm9hY2gNCnJuYi5vcHRpb25zKGZpbHRlcmluZy53aGl0ZWxpc3QgPSBOVUxMKQ0Kcm5iLm9wdGlvbnMoZmlsdGVyaW5nLmJsYWNrbGlzdCA9IE5VTEwpDQpybmIub3B0aW9ucyhmaWx0ZXJpbmcuc25wID0gIjMiKQ0Kcm5iLm9wdGlvbnMoZmlsdGVyaW5nLmNyb3NzLnJlYWN0aXZlID0gRkFMU0UpDQpybmIub3B0aW9ucyhmaWx0ZXJpbmcuZ3JlZWR5Y3V0ID0gVFJVRSkNCnJuYi5vcHRpb25zKGZpbHRlcmluZy5ncmVlZHljdXQucHZhbHVlLnRocmVzaG9sZCA9IDAuMDUpDQpybmIub3B0aW9ucyhmaWx0ZXJpbmcuZ3JlZWR5Y3V0LnJjLnRpZXMgPSAicm93IikNCnJuYi5vcHRpb25zKGZpbHRlcmluZy5zZXguY2hyb21vc29tZXMucmVtb3ZhbCA9IFRSVUUpDQpybmIub3B0aW9ucyhmaWx0ZXJpbmcubWlzc2luZy52YWx1ZS5xdWFudGlsZSA9IDAuOCkNCnJuYi5vcHRpb25zKGZpbHRlcmluZy5jb3ZlcmFnZS50aHJlc2hvbGQgPSAzKQ0Kcm5iLm9wdGlvbnMoZmlsdGVyaW5nLmxvdy5jb3ZlcmFnZS5tYXNraW5nID0gRkFMU0UpDQpybmIub3B0aW9ucyhmaWx0ZXJpbmcuaGlnaC5jb3ZlcmFnZS5vdXRsaWVycyA9IEZBTFNFKQ0Kcm5iLm9wdGlvbnMoZmlsdGVyaW5nLmRldmlhdGlvbi50aHJlc2hvbGQgPSAwKQ0KDQpybmIub3B0aW9ucyhub3JtYWxpemF0aW9uID0gTlVMTCkNCnJuYi5vcHRpb25zKG5vcm1hbGl6YXRpb24ubWV0aG9kID0gImJtaXEiKSAgICAgICAjbm9ybWFsaXphdGlvbiBtZXRob2QNCnJuYi5vcHRpb25zKG5vcm1hbGl6YXRpb24uYmFja2dyb3VuZC5tZXRob2QgPSAibWV0aHlsdW1pLm5vb2IiKSNiYWNrZ3JvdW5kIHJlbW92YWwgeWVzL25vDQpybmIub3B0aW9ucyhub3JtYWxpemF0aW9uLnBsb3Quc2hpZnRzID0gVFJVRSkNCg0KDQoNCiNybmIuc2V0Lm5vcm0gPC0gcm5iLmV4ZWN1dGUubm9ybWFsaXphdGlvbihybmIuc2V0LnVuZmlsdGVyZWQsIG1ldGhvZD0id20uZGF6ZW4iLCBiZ2NvcnIubWV0aG9kPSJtZXRoeWx1bWkubm9vYiIpDQpwcmVwcm9jZXNzZWQgPSBybmIucnVuLnByZXByb2Nlc3Npbmcocm5iLnNldCA9IHJuYi5zZXQuZmlsdGVyZWQsIGRpci5yZXBvcnRzID0gcmVwb3J0LmRpcikgDQpybmIgPSBwcmVwcm9jZXNzZWQkcm5iLnNldA0KYGBgDQoNCiMjIyMgSW5mZXJlbmNlIG1vZHVsZQ0KDQpUaGlzIGJsb2NrIG9mIFIgY29kZSBwZXJmb3JtcyBzZXZlcmFsIGFkdmFuY2VkIGFuYWx5c2VzIHVzaW5nIHRoZSBSbkJlYWRzIHBhY2thZ2UsIHN0YXJ0aW5nIHdpdGggdGlzc3VlIGRlY29udm9sdXRpb24gdG8gZXN0aW1hdGUgY2VsbCB0eXBlcyB2aWEgdGhlIEhvdXNlbWFuIGFsZ29yaXRobSBhbmQgdmlzdWFsaXppbmcgdGhlc2UgZXN0aW1hdGVzIHdpdGggYSBoZWF0bWFwLiBJdCBhbHNvIGV2YWx1YXRlcyBpbW11bmUgY2VsbCBjb250ZW50IGFuZCBwcmVkaWN0cyBlcGlnZW5ldGljIGFnZS4gVGhlIHNjcmlwdCB0aGVuIHNldHMgdXAgdmFyaW91cyBpbmZlcmVuY2Ugb3B0aW9ucyB0byBmaW5lLXR1bmUgdGhlIGFuYWx5c2lzIHBhcmFtZXRlcnMgYmVmb3JlIHJ1bm5pbmcgYSBjb21wcmVoZW5zaXZlIGluZmVyZW5jZSBhbmFseXNpcy4gTGFzdGx5LCBpdCBwZXJmb3JtcyBzdXJyb2dhdGUgdmFyaWFibGUgYW5hbHlzaXMgKFNWQSkgdG8gYWRqdXN0IGZvciBwb3RlbnRpYWwgY29uZm91bmRlcnMgaW4gdGhlIGRhdGEsIGVuaGFuY2luZyB0aGUgYWNjdXJhY3kgb2YgdGhlIHJlc3VsdHMuDQoNCmBgYHtyfQ0KIyBUaXNzdWUgZGVjb252b2x1dGlvbiAtIHJlZmVyZW5jZSBiYXNlZCBjZWxsdHlwZSBlc3RpbWF0aW9uIHVzaW5nIGhvdXNlbWFuIGFsZ29yaXRobQ0KY3QgPC0gcm5iLmV4ZWN1dGUuY3QuZXN0aW1hdGlvbihybmIsIGNlbGwudHlwZS5jb2x1bW49IkNlbGxUeXBlIiwgdGVzdC5tYXgubWFya2Vycz0xMDAwMCwgdG9wLm1hcmtlcnM9NTAwKQ0Kcm5iLnBsb3QuY3QuaGVhdG1hcChjdC5vYmogPSBjdCkNCmN0JGNvbnRyaWJ1dGlvbnMNCg0KIyBpbW11bmUgY2VsbCBjb250ZW50DQppbW11bmUuY29udGVudCA8LSBybmIuZXhlY3V0ZS5sdW1wKHJuYikNCg0KI2NhbGN1bGF0ZSBlcGlnZW5ldGljIGFnZQ0Kcm5iLmV4ZWN1dGUuYWdlLnByZWRpY3Rpb24ob2JqZWN0ID0gcm5iKQ0KDQojIHByZXNldCBzb21lIHNldHRpbmdzDQpybmIub3B0aW9ucyhpbmZlcmVuY2UuYWdlLnByZWRpY3Rpb24gPSBUUlVFKQ0Kcm5iLm9wdGlvbnMoaW5mZXJlbmNlLmFnZS5jb2x1bW4gPSAiQWdlIikNCnJuYi5vcHRpb25zKGluZmVyZW5jZS5hZ2UucHJlZGljdGlvbi50cmFpbmluZyA9IEZBTFNFKQ0Kcm5iLm9wdGlvbnMoaW5mZXJlbmNlLmFnZS5wcmVkaWN0aW9uLmN2ID0gRkFMU0UpDQpybmIub3B0aW9ucyhpbmZlcmVuY2UuaW1tdW5lLmNlbGxzID0gVFJVRSkNCnJuYi5vcHRpb25zKGluZmVyZW5jZS5nZW5vbWUubWV0aHlsYXRpb24gPSAiR2Vub21lLXdpZGUgbWV0aHlsYXRpb24iKQ0Kcm5iLm9wdGlvbnMoaW5mZXJlbmNlLnRhcmdldHMuc3ZhID0gY2hhcmFjdGVyKCkpDQpybmIub3B0aW9ucyhpbmZlcmVuY2UucmVmZXJlbmNlLm1ldGh5bG9tZS5jb2x1bW4gPSAiQ2VsbFR5cGUiKQ0Kcm5iLm9wdGlvbnMoaW5mZXJlbmNlLm1heC5jZWxsLnR5cGUubWFya2VycyA9IDEwMDAwKQ0Kcm5iLm9wdGlvbnMoaW5mZXJlbmNlLnRvcC5jZWxsLnR5cGUubWFya2VycyA9IDUwMCkNCnJuYi5vcHRpb25zKGluZmVyZW5jZS5zdmEubnVtLm1ldGhvZCA9ICJsZWVrIikNCg0Kcm5iX2luZmVyZW5jZSA9IHJuYi5ydW4uaW5mZXJlbmNlKHJuYi5zZXQgPSBybmIsIGRpci5yZXBvcnRzID0gcmVwb3J0LmRpcikNCnJuYiA9IHJuYl9pbmZlcmVuY2Ukcm5iLnNldA0KDQojIGxldCdzIGRvIHRoZSBzdmEgYW5hbHlzaXMgYXMgYW4gYWRkZW5kdW0NCnN2YS5vYmogPC0gcm5iLmV4ZWN1dGUuc3ZhKHJuYiwgY21wLmNvbHMgPSAiR3JvdXAiLCBudW1TVm1ldGhvZD0iYmUiKQ0Kcm5iIDwtIHNldC5jb3ZhcmlhdGVzLnN2YShybmIsIHN2YS5vYmopDQoNCmBgYA0KDQojIyMjIEV4cGxvcmF0b3J5IG1vZHVsZQ0KDQojIyMjIyB1c2luZyBSbkJlYWRzDQoNClRoaXMgY29kZSBibG9jayBpbml0aWF0ZXMgYW4gZXhwbG9yYXRvcnkgYW5hbHlzaXMsIGEgcHJvY2VzcyBlc3RpbWF0ZWQgdG8gdGFrZSBhcHByb3hpbWF0ZWx5IDMgaG91cnMuIFRoZSBmdW5jdGlvbiBgcm5iLnJ1bi5leHBsb3JhdG9yeWAgaXMgY2FsbGVkIHRvIHBlcmZvcm0gYSBjb21wcmVoZW5zaXZlIGV4cGxvcmF0aW9uIG9mIHRoZSBSbkJlYWRzIGRhdGFzZXQgKGNvbnRhaW5nIGFsbCBzYW1wbGVzKSwgZ2VuZXJhdGluZyBhIGRldGFpbGVkIHJlcG9ydC4gQWZ0ZXIgdGhlIGFuYWx5c2lzLCB0aGUgZGF0YXNldCBpcyBzYXZlZCB3aXRoIGFyY2hpdmFsIHNldHRpbmdzIGZvciBmdXR1cmUgYWNjZXNzLg0KDQoqKlN1Z2dlc3Rpb24gZm9yIFBhcnRpY2lwYW50czoqKiBJdCdzIGFkdmlzYWJsZSB0byBydW4gdGhpcyBhbmFseXNpcyBkdXJpbmcgdGhlIGV2ZW5pbmcgb3IgZWFybHkgbW9ybmluZy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGxlbmd0aHkgcHJvY2Vzc2luZyBjb21wbGV0ZXMgb3Zlcm5pZ2h0IG9yIGJlZm9yZSB0aGUgd29ya3Nob3AgcmVzdW1lcyB0aGUgbmV4dCBkYXksIGF2b2lkaW5nIGFueSBkZWxheXMgaW4gY29udGludWluZyB3aXRoIHRoZSBwbGFubmVkIGFjdGl2aXRpZXMuIElmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIGluIHJ1bm5pbmcgdGhlIGFuYWx5c2lzIG9yIGlmIGl0IGRvZXMgbm90IGNvbXBsZXRlLCBhIHByb2Nlc3NlZCBkYXRhc2V0IHdpbGwgYmUgcHJvdmlkZWQgdG8gZW5zdXJlIG5vIGludGVycnVwdGlvbiBpbiB0aGUgd29ya3Nob3AgcHJvZ3Jlc3MuDQoNCmBgYHtyfQ0KICMgIFRha2VzIHJvdWdobHkgMyBob3VycyANCnJuYi5ydW4uZXhwbG9yYXRvcnkocm5iLnNldCA9IHJuYiwgZGlyLnJlcG9ydHMgPSByZXBvcnQuZGlyKQ0KDQojIFN5cy5zZXRlbnYoIlJfWklQQ01EIj0iL3Vzci9iaW4vemlwIikNCiMgc2F2ZS5ybmIuc2V0KHJuYiwgIi9wcm9qZWN0cy9yZXNlYXJjaGVycy9qaWwvcHJvamVjdHMvZGVOQkkvMjAyNDExMjlfV1MyNC9hbmFseXNpcy9ybmIvcm5iU2V0X2V4cGxvcmF0b3J5QW5hbHlzaXMiLCBhcmNoaXZlID0gVFJVRSkNCg0KYGBgDQoNCiMjIyMjIHVzaW5nIFINCg0KVGhpcyBSIGNvZGUgYmxvY2sgaW52b2x2ZXMgc2V2ZXJhbCBzdGVwcyB0byBhbmFseXplIGFuZCB2aXN1YWxpemUgRE5BIG1ldGh5bGF0aW9uIGRhdGEgdXNpbmcgdGhlIFJuQmVhZHMgcGFja2FnZS4gSW5pdGlhbGx5LCBpdCBleHRyYWN0cyBtZXRoeWxhdGlvbiBkYXRhIChgbW1FeGApIGFuZCBmaWx0ZXJzIG91dCBzYW1wbGVzIGxhYmVsZWQgYXMgIkdsaWEiIG9yICJOZXVyb24iIHRvIGZvY3VzIG9uIG90aGVyIHRpc3N1ZSBzYW1wbGVzLiBJdCB0aGVuIGNvbXB1dGVzIGEgY29ycmVsYXRpb24gbWF0cml4IChgc2FtcGxlQ29yTWF0cml4YCkgYW1vbmcgdGhlc2UgdGlzc3VlIHNhbXBsZXMgdXNpbmcgUGVhcnNvbidzIG1ldGhvZC4gVGhpcyBtYXRyaXggaXMgdmlzdWFsaXplZCB1c2luZyBhIGhlYXRtYXAsIGVuaGFuY2VkIHdpdGggYW5ub3RhdGlvbnMgZm9yIHNleCBhbmQgZGlhZ25vc2lzLCBhbmQgY29sb3JlZCBncmFkaWVudHMuDQoNClN1YnNlcXVlbnRseSwgdGhlIGNvZGUgcGVyZm9ybXMgUHJpbmNpcGFsIENvbXBvbmVudCBBbmFseXNpcyAoUENBKSBvbiB0aGUgdHJhbnNwb3NlZCBmaWx0ZXJlZCBtZXRoeWxhdGlvbiBkYXRhIHRvIGV4cGxvcmUgdmFyaWFiaWxpdHkgYW5kIHBhdHRlcm5zIGluIHRoZSBoaWdoLWRpbWVuc2lvbmFsIGRhdGFzZXQuIFBDQSByZXN1bHRzIGFyZSBwbG90dGVkIHVzaW5nIGdncGxvdDIsIGRpc3Rpbmd1aXNoaW5nIHNhbXBsZXMgYnkgc2V4IGFuZCBkaWFnbm9zaXMgd2l0aCBkaWZmZXJlbnQgY29sb3JzIGFuZCBzaGFwZXMuDQoNCkZpbmFsbHksIHRoZSBjb2RlIGlkZW50aWZpZXMgYW5kIHZpc3VhbGl6ZXMgdGhlIG1vc3QgdmFyaWFibGUgcHJvYmVzIHdpdGhpbiB0aGUgIkdsaWEiIGFuZCAiTmV1cm9uIiBzYW1wbGVzIHVzaW5nIGFub3RoZXIgaGVhdG1hcC4gVGhpcyBpbmNsdWRlcyBleHRyYWN0aW5nIG1ldGh5bGF0aW9uIGRhdGEgZm9yIHRoZXNlIGNlbGwgdHlwZXMsIGNvbXB1dGluZyB2YXJpYW5jZSBmb3IgZWFjaCBwcm9iZSwgYW5kIHRoZW4gZm9jdXNpbmcgb24gdGhlIHRvcCAxMCwwMDAgbW9zdCB2YXJpYWJsZSBwcm9iZXMgZm9yIHRoZSBoZWF0bWFwIHZpc3VhbGl6YXRpb24uIEFubm90YXRpb25zIGluIHRoZSBoZWF0bWFwIGluY2x1ZGUgYWRkaXRpb25hbCBkZXRhaWxzIHN1Y2ggYXMgY2VsbCB0eXBlLCBlbmhhbmNpbmcgdGhlIGludGVycHJldGFiaWxpdHkgb2YgdGhlIHJlc3VsdHMuDQoNCmBgYHtyfQ0KIyBsb2FkaW5nIGV4cGxvcmF0b3J5IGFuYWx5c2lzIA0Kcm5iRXggPC0gcm5iIA0KbW1FeCA9IG1ldGgocm5iRXgpDQoNCiMgTGV0J3MgY29ycmVsYXRlIHRoZSBtZXRoeWxvbWVzIG9mIGFsbCB0aXNzdWUgc2FtcGxlcw0KbW1FeFRpc3N1ZSA9IG1tRXhbICwgIWdyZXBsKCJHbGlhfE5ldXJvbiIsIGNvbG5hbWVzKG1tRXgpKV0NCg0Kc2FtcGxlQ29yID0gY29yKCB4ID0gbW1FeFRpc3N1ZSAsIG1ldGhvZCA9ICAicCIpDQpzYW1wbGVDb3JNYXRyaXggPSBhcy5tYXRyaXgoIHNhbXBsZUNvciApDQoNCmFubm8gPSBkYXRhLmZyYW1lKHBoZW5vKHJuYkV4KVsgLCBjKCJTZXgiLCJBZ2UiLCJEaWFnbm9zaXMiKV0pDQphbm5vQ29sID0gbGlzdChTZXggPSBjKCJNIiA9ICIjMDU3MGIwIiwgIkYiID0gIiNhZTAxN2UiKSwNCiAgICAgICAgICAgICAgIERpYWdub3NpcyA9IGMoIkNUUkwiID0gIiNmMGYwZjAiLCAiQUQiID0gIiNmZWIyNGMiKSkNCg0KY29sb3JzID0gY29sb3JSYW1wUGFsZXR0ZSggY29sb3JzID0gYnJld2VyLnBhbCg5LCAiT3JSZCIpKSg1MCkNCg0KcGhlYXRtYXAoc2FtcGxlQ29yTWF0cml4LA0KICAgICAgICAgY2x1c3RlcmluZ19kaXN0YW5jZV9yb3dzID0gImV1Y2xpZGVhbiIsDQogICAgICAgICBjbHVzdGVyaW5nX2Rpc3RhbmNlX2NvbHMgPSAiZXVjbGlkZWFuIiwNCiAgICAgICAgIGNvbCA9IGNvbG9ycywNCiAgICAgICAgIGFubm90YXRpb25fY29sID0gYW5ubywNCiAgICAgICAgIGFubm90YXRpb25fY29sb3JzID0gYW5ub0NvbCwNCiAgICAgICAgIGNlbGx3aWR0aCA9IDEwLA0KICAgICAgICAgY2VsbGhlaWdodCA9IDEwDQopDQpgYGANCg0KTGV0J3MgZXhwbG9yZSB0aGUgaGlnaCBkaW1lbnNpb25hbCBtZXRoeWxvbWVzIGluIGEgcHJpbmNpcGxlIGNvbXBvbmVudCBhbmFseXNpcw0KDQpgYGB7cn0NCiMgTGV0J3MgZXhwbG9yZSB0aGUgaGlnaCBkaW1lbnNpb25hbCBtZXRoeWxvbWVzIGluIGEgcHJpbmNpcGxlIGNvbXBvbmVudCBhbmFseXNpcw0KcGNhUmVzIDwtIHByY29tcCh0KG1tRXhUaXNzdWUpLCBjZW50ZXIgPSBUUlVFLCBzY2FsZS4gPSBUUlVFKQ0KDQpwY2FEYXRhIDwtIGFzLmRhdGEuZnJhbWUocGNhUmVzJHgpDQpwY2FEYXRhJFNhbXBsZUlEID0gcm93bmFtZXMocGNhRGF0YSkNCnBjYURhdGEgPSBtZXJnZSh4ID0gcGNhRGF0YSwgeSA9IHBoZW5vKHJuYkV4KSwgYnkgPSAiU2FtcGxlSUQiKQ0KDQpnZ3Bsb3QocGNhRGF0YSwgYWVzKHggPSBQQzEsIHkgPSBQQzIsIGNvbG9yID0gU2V4LCBzaGFwZSA9IERpYWdub3NpcykpICsNCiAgZ2VvbV9wb2ludChzaXplID0gMykgKw0KICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiI2FlMDE3ZSIsICIjMDU3MGIwIikpICsNCiAgc2NhbGVfc2hhcGVfbWFudWFsKHZhbHVlcyA9IGMoOCwgMSkpKw0KICB0aGVtZV9taW5pbWFsKCkgKw0KICBsYWJzKHRpdGxlID0gIlBDQSBQbG90IikNCg0KYGBgDQoNCkludmVzdGlnYXRlIHRoZSBtb3N0IHZhcmliYWxlIHByb2JlcyBpbiB0aGUgY2VsbCB0eXBlIHNhbXBsZXMNCg0KYGBge3J9DQoNCm1tRXhDZWxsID0gbW1FeFsgLCBncmVwbCgiR2xpYXxOZXVyb24iLCBjb2xuYW1lcyhtbUV4KSldDQpyb3dWYXJzIDwtIGFwcGx5KG1tRXhDZWxsLCAxLCB2YXIpDQoNCm1tTW9zdFZhciA9IG1tRXhDZWxsWyBvcmRlcihyb3dWYXJzLCBkZWNyZWFzaW5nID0gVClbMToxMDAwMF0gLCBdDQoNCmFubm8gPSBkYXRhLmZyYW1lKHBoZW5vKHJuYkV4KVsgLCBjKCJTZXgiLCJBZ2UiLCJEaWFnbm9zaXMiLCJDZWxsVHlwZSIpXSkNCmFubm9Db2wgPSBsaXN0KFNleCA9IGMoIk0iID0gIiMwNTcwYjAiLCAiRiIgPSAiI2FlMDE3ZSIpLA0KICAgICAgICAgICAgICAgRGlhZ25vc2lzID0gYygiQ1RSTCIgPSAiI2YwZjBmMCIsICJBRCIgPSAiI2ZlYjI0YyIpLA0KICAgICAgICAgICAgICAgQ2VsbFR5cGUgPSBjKCJHbGlhIiA9ICJ3aGl0ZSIsIk5ldXJvbiIgPSAiIzk2OTY5NiIpKQ0KDQpwaGVhdG1hcChtbU1vc3RWYXIsDQogICAgICAgICBjbHVzdGVyaW5nX2Rpc3RhbmNlX3Jvd3MgPSAiZXVjbGlkZWFuIiwNCiAgICAgICAgIGNsdXN0ZXJpbmdfZGlzdGFuY2VfY29scyA9ICJldWNsaWRlYW4iLA0KICAgICAgICAgY29sID0gY29sb3JzLA0KICAgICAgICAgYW5ub3RhdGlvbl9jb2wgPSBhbm5vLA0KICAgICAgICAgYW5ub3RhdGlvbl9jb2xvcnMgPSBhbm5vQ29sLA0KICAgICAgICAgc2hvd19jb2xuYW1lcyA9IEYsDQogICAgICAgICBzaG93X3Jvd25hbWVzID0gRiwNCiAgICAgICAgIGNlbGx3aWR0aCA9IDEwDQogICAgICAgICAjY2VsbGhlaWdodCA9IDEwDQopDQpgYGANCg0KIyMjIFJuQmVhZHMgc2V0cw0KDQpJbiBvcmRlciB0byBzYXZlIHRpbWUgZm9yIGFuYWx5c2lzIHdoaWNoIGNhbiB0YWtlIHNvbWV0aW1lIGhvdXJzIG9mIHdhaXQuIFdlIGhhdmUgYWxyZWFkeSBoYXZlIHNvbWUgb2JqZWN0cyByZWFkeSBmb3IgeW91LiBZb3Ugd2lsbCBoYXZlIHRoZSBvcHRpb24gbGF0ZXIgb24gdG8gdXNlIHRoZXNlIG9iamVjdHMgYW5kIGF0IHRoZSBzYW1lIHRpbWUgYWxzbyBjcmVhdGUgeW91ciBvd24gb2JqZWN0cyBpbiBjYXNlIHlvdSBoYXZlIGVub3VnaCB0aW1lIGF0IHRoZSBlbmQgb2YgZWFjaCBzZXNzaW9uLg0KDQpgYGB7cn0NCnJuYlVucCA8LSBsb2FkLnJuYi5zZXQoImQ6L1dvcmsvRXBpZ2VuZXRpY3MvV29ya3Nob3BzLzIwMjRfZGVOQkktRE5BX21ldGh5bGF0aW9uX2Rlc2lnbl90b19kaXNjb3ZlcnkvYW5hbHlzaXMvcm5iU2V0X1VucHJvY2Vzc2VkLnppcCIpDQoNCnJuYkZpbHQgPC0gbG9hZC5ybmIuc2V0KCJkOi9Xb3JrL0VwaWdlbmV0aWNzL1dvcmtzaG9wcy8yMDI0X2RlTkJJLUROQV9tZXRoeWxhdGlvbl9kZXNpZ25fdG9fZGlzY292ZXJ5L2FuYWx5c2lzL3JuYlNldF9GaWx0ZXJlZC56aXAiKQ0KDQpybmJFeCA8LSBsb2FkLnJuYi5zZXQoImQ6L1dvcmsvRXBpZ2VuZXRpY3MvV29ya3Nob3BzLzIwMjRfZGVOQkktRE5BX21ldGh5bGF0aW9uX2Rlc2lnbl90b19kaXNjb3ZlcnkvYW5hbHlzaXMvcm5iU2V0X2V4cGxvcmF0b3J5QW5hbHlzaXMuemlwIikNCmBgYA0K