Source: https://github.com/markziemann/asd_meth

Introduction

Here we are analysing blood methylation in 9 twin pairs.

baseDir=getwd()
dataDir=paste(baseDir,"/ASD_EPIC_DATA",sep="")

suppressPackageStartupMessages({
  library("missMethyl")
  library("limma")
  library("minfi")
  library("IlluminaHumanMethylation450kanno.ilmn12.hg19")
  library("IlluminaHumanMethylationEPICanno.ilm10b2.hg19")
  library("ruv")
  library("RColorBrewer")
  library("matrixStats")
  library("gplots")
  library("WGCNA")
  library("FlowSorted.Blood.450k")
  library("reshape2")
  library("ggplot2")
  library("missMethyl")
  library("DMRcate")
  library("FlowSorted.Blood.EPIC")
  library("mitch")
  library("kableExtra")
})

source("meth_functions.R")

Load data

Load the annotation data and the Epic methylation data.

This analysis is to be conducted on Ubuntu with R4.

ann = getAnnotation(IlluminaHumanMethylationEPICanno.ilm10b2.hg19)

ann_sub = ann[,c("chr","pos","strand","Name","Islands_Name",
    "Relation_to_Island","UCSC_RefGene_Name","UCSC_RefGene_Group")]

targets_gen = read.metharray.sheet(dataDir, pattern = "ASD_blood_summarysheet.csv")
## [read.metharray.sheet] Found the following CSV files:
## [1] "/home/mdz/projects/asd_meth/ASD_EPIC_DATA/ASD_blood_summarysheet.csv"
#targets$ID = paste(targets$Sample_Group,targets_gen$Sample_Name,sep=".")
rgSet = read.metharray.exp(targets = targets_gen)
sampleNames(rgSet) = targets_gen$SampleID

Testing MZ status

snpBetas = getSnpBeta(rgSet)
## Loading required package: IlluminaHumanMethylationEPICmanifest
d = dist(t(snpBetas))
hr = hclust(d, method = "complete", members=NULL)
plot(hr)

Quality control

detP = detectionP(rgSet)
qcReport(rgSet, sampNames = targets_gen$Sample_Name,
  pdf="qc-report_ASD_blood_nov27.pdf")
## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE

## Warning in type.convert.default(X[[i]], ...): 'as.is' should be specified by
## the caller; using TRUE
## png 
##   2
cols=brewer.pal(4,"Set1")

barplot(apply(detP,2,mean),
  col=as.numeric(factor(targets_gen$Sample_Name)),
  las=2,cex.names= 0.8, cex.axis=0.75,
  main="Mean detection p-values of probe signals",
  ylab="Mean detection p-value")

barplot(apply(detP,2,mean),
  col=as.numeric(factor(targets_gen$Sample_Name)),
  las=2,cex.names= 0.8, cex.axis=0.75,ylim=c(0,0.010),
  main="Mean detection p-values of probe signals",
  ylab="Mean detection p-value")

Preprocessing

mset.raw = preprocessRaw(rgSet)

Data exploration

Using Multi-dimensional scaling (MDS) plots before filtering.

mdsPlot(mset.raw, sampGroups = targets_gen$Sample_Name, 
  sampNames=targets_gen$Social_interaction_on_ADOS,legendPos="bottom")

mdsPlot(mset.raw, sampGroups = targets_gen$Sex, 
  sampNames=targets_gen$SampleID,legendPos="bottom")

Cell type composition analysis

Need to consider using estimatecellcounts2.

rgSet$Slide <- as.numeric(rgSet$Slide)
rgSet$Sex<- as.character(rgSet$Sex)
rgSet$Sample_Name<- as.character(rgSet$Sample_Name)

cellCounts_new <- estimateCellCounts(rgSet, compositeCellType = "Blood", 
  processMethod = "auto", probeSelect = "auto", 
  cellTypes = c("CD8T","CD4T", "NK","Bcell","Mono","Gran"),
  referencePlatform = c("IlluminaHumanMethylation450k"),
  returnAll = FALSE, meanPlot = TRUE)
## Loading required package: IlluminaHumanMethylation450kmanifest
## [estimateCellCounts] Combining user data with reference (flow sorted) data.
## Warning in DataFrame(sampleNames = c(colnames(rgSet),
## colnames(referenceRGset)), : 'stringsAsFactors' is ignored
## [estimateCellCounts] Processing user and reference data together.
## [preprocessQuantile] Mapping to genome.
## [preprocessQuantile] Fixing outliers.
## [preprocessQuantile] Quantile normalizing.
## [estimateCellCounts] Picking probes for composition estimation.
## [estimateCellCounts] Estimating composition.

#plot cell type composition by sample group
a = cellCounts_new[targets_gen$Diagnosis == "0",]
b = cellCounts_new[targets_gen$Diagnosis == "1",]
c = cellCounts_new[targets_gen$Diagnosis == "2",]
age.pal <- brewer.pal(8,"Set1")

cellCounts_long <- melt(cellCounts_new, id = "celltype")

cellCounts_long$Var1 <- targets_gen[match(cellCounts_long$Var1, 
  targets_gen$SampleID),"Diagnosis"]

colnames(cellCounts_long) <- c("diagnosis","celltype","value")

ggplot(cellCounts_long, aes(x = factor(celltype), y = value, fill = factor(diagnosis))) + 
  geom_boxplot() 

wx <- lapply(1:ncol(cellCounts_new) , function(i) {
  wilcox.test(a[,i],c[,i], paired=FALSE)
} )
## Warning in wilcox.test.default(a[, i], c[, i], paired = FALSE): cannot compute
## exact p-value with ties
names(wx) <- colnames(cellCounts_new)
wx
## $CD8T
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 12, p-value = 0.6923
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $CD4T
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 13, p-value = 0.8112
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $NK
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  a[, i] and c[, i]
## W = 16, p-value = 0.9317
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $Bcell
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 18, p-value = 0.6923
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $Mono
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 23, p-value = 0.2168
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $Gran
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 15, p-value = 1
## alternative hypothesis: true location shift is not equal to 0

Try estimatecellcounts2.

cells <- estimateCellCounts2(rgSet, referencePlatform= "IlluminaHumanMethylationEPIC", 
  returnAll = TRUE)
## snapshotDate(): 2022-10-31
## snapshotDate(): 2022-10-31
## see ?FlowSorted.Blood.EPIC and browseVignettes('FlowSorted.Blood.EPIC') for documentation
## loading from cache
## [estimateCellCounts2] Combining user data with reference (flow sorted) data.
## Warning in asMethod(object): NAs introduced by coercion
## [estimateCellCounts2] Processing user and reference data together.
## [estimateCellCounts2] Using IDOL L-DMR probes for composition estimation.
## [estimateCellCounts2] Estimating proportion composition (prop), if you provide cellcounts those will be provided as counts in the composition estimation.
mset <- cells$normalizedData

cellCounts_new <- cells[[1]]
#plot cell type composition by sample group
a = cellCounts_new[targets_gen$Diagnosis == "0",]
b = cellCounts_new[targets_gen$Diagnosis == "1",]
c = cellCounts_new[targets_gen$Diagnosis == "2",]
age.pal <- brewer.pal(8,"Set1")

cellCounts_long <- melt(cellCounts_new, id = "celltype")

cellCounts_long$Var1 <- targets_gen[match(cellCounts_long$Var1,  targets_gen$SampleID),"Diagnosis"]

colnames(cellCounts_long) <- c("diagnosis","celltype","value")

ggplot(cellCounts_long, aes(x = factor(celltype), y = value, fill = factor(diagnosis))) + 
  geom_boxplot()

pdf("cells_blood.pdf")

par(mar=c(3,8,2,2))

ggplot(cellCounts_long, aes(x = factor(celltype), y = value, fill = factor(diagnosis))) +
  geom_boxplot()

dev.off()
## png 
##   2
wx <- lapply(1:ncol(cellCounts_new) , function(i) {
  wilcox.test(a[,i],c[,i], paired=FALSE)
} )
names(wx) <- colnames(cellCounts_new)
wx
## $CD8T
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 14, p-value = 0.9371
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $CD4T
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 13, p-value = 0.8112
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $NK
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 17, p-value = 0.8112
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $Bcell
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 18, p-value = 0.6923
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $Mono
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 26, p-value = 0.07692
## alternative hypothesis: true location shift is not equal to 0
## 
## 
## $Neu
## 
##  Wilcoxon rank sum exact test
## 
## data:  a[, i] and c[, i]
## W = 14, p-value = 0.9371
## alternative hypothesis: true location shift is not equal to 0

Filtering

None of the p-values are less than 0.05.

Now filter for high detection p-value and overlap with SNP.

Need to get a copy of the Xreact probes from Namitha. In the mean time I have downloaded from github - link below.

detP <- detectionP(rgSet)
keep <- rowSums(detP < 0.01) == ncol(rgSet)
mset <- mset[keep,]
gmset <- mapToGenome(mset)

#remove SNPs
gmset_flt = dropLociWithSnps(gmset, snps = c("CpG", "SBE"))

#Removing cross-reactive probes
XURL="https://raw.githubusercontent.com/sirselim/illumina450k_filtering/master/EPIC/13059_2016_1066_MOESM1_ESM.csv"
Xreact <- read.csv(XURL)

#Xreact = read.csv(file="/group/canc2/puumba/Data/InfiniumData/NamithaData/Rprojects/Autism/Analysis_Sept11/EPIC_850k_crossreactiveProbes.csv", stringsAsFactors=FALSE)
#Xreact = read.csv(file="~/48639-non-specific-probes-Illumina450k.csv", stringsAsFactors=FALSE)
noXreact <-  !(featureNames(gmset) %in% Xreact$X)

gmset <- gmset[noXreact,]

#Removing probes on X and Y chromosomes
autosomes <- !(featureNames(gmset) %in% ann$Name[ann$chr %in% c("chrX","chrY")])
gmset_flt <- gmset[autosomes,]

#Relative log expression (RLE plot)
mvals = getM(gmset_flt)
medSq = apply(mvals, 1, median)
YSq = mvals - medSq

boxplot(YSq,outline=FALSE,ylim=c(-1.5,1.5), 
  ylab="Relative Log Methylation Value", 
  cols=as.character(factor(targets_gen$Social_interaction_on_ADOS,)) )

MDS plots generation after filtering

pal = brewer.pal(8, "Dark2")
mds1Sq = plotMDS(mvals, top=1000, gene.selection="common",dim.plot=c(1,2))

mds2Sq = plotMDS(mvals, top=1000, gene.selection="common",dim.plot=c(1,3))

mds3Sq = plotMDS(mvals, top=1000, gene.selection="common",dim.plot=c(2,3))

mds4Sq = plotMDS(mvals, top=1000, gene.selection="common",dim.plot=c(3,4))

plotMDS(mds1Sq, xlab="Dimension 1", ylab="Dimension 2",
  col=pal[as.factor(targets_gen$Diagnosis)],
  dim=c(1,2), labels=targets_gen$Sample_Name)
legend("bottomright",bg="white",col=pal,cex=.7,pch=1,legend=0:1)

plotMDS(mds2Sq, xlab="Dimension 1", ylab="Dimension 3",
  col=pal[as.factor(targets_gen$Diagnosis)],dim=c(1,3),
  labels=targets_gen$Sample_Name)
legend("bottomright",bg="white",col=pal,cex=.7,pch=1,legend=0:1)

plotMDS(mds3Sq, xlab="Dimension 2", ylab="Dimension 3",
  col=pal[as.factor(targets_gen$Diagnosis)],dim=c(2,3),
  labels=targets_gen$Sample_Name)
legend("bottomright",bg="white",col=pal,cex=.7,pch=1,legend=0:1)

plotMDS(mds4Sq, xlab="Dimension 3", ylab="Dimension 4",
  col=pal[as.factor(targets_gen$Diagnosis)],dim=c(3,4),
  labels=targets_gen$Sample_Name)
legend("bottomright",bg="white",col=pal,cex=.7,pch=1,legend=0:1)

Principal Component Analysis (PCA)

fit <- prcomp(t(mvals),center = TRUE, scale = TRUE,retx=TRUE)
loadings = fit$x
plot(fit,type="lines")

nGenes = nrow(mvals)
nSamples = ncol(mvals)
datTraits = targets_gen[,7:15]
moduleTraitCor = cor(loadings[,1:6], datTraits, use = "p")
moduleTraitPvalue = corPvalueStudent(moduleTraitCor, nSamples)
par(cex=0.75, mar = c(6, 8.5, 3, 3))
textMatrix = paste(signif(moduleTraitCor, 2), "\n(", 
  signif(moduleTraitPvalue, 1), ")", sep = "");
dim(textMatrix) = dim(moduleTraitCor)

labeledHeatmap(Matrix = t(moduleTraitCor), 
  xLabels = colnames(loadings)[1:ncol(t(moduleTraitCor))],
  yLabels = names(datTraits), colorLabels = FALSE, colors = blueWhiteRed(6),
  textMatrix = t(textMatrix), setStdMargins = FALSE, cex.text = 0.5,
  cex.lab.y = 0.6, zlim = c(-1,1), 
  main = paste("PCA-trait relationships: Top principal components"))

pdf("pca_blood.pdf")

par(mar=c(3,8,2,2))

labeledHeatmap(Matrix = t(moduleTraitCor), 
  xLabels = colnames(loadings)[1:ncol(t(moduleTraitCor))],
  yLabels = names(datTraits), colorLabels = FALSE, colors = blueWhiteRed(6),
  textMatrix = t(textMatrix), setStdMargins = FALSE, cex.text = 0.5,
  cex.lab.y = 0.6, zlim = c(-1,1), 
  main = paste("PCA-trait relationships: Top principal components"))

dev.off()
## png 
##   2

Regression analysis - within twin pair on ADOS

ADOS is the outcome variable (continuous)

Twin_Group <- factor(targets_gen$Family_ID)
ADOS <- targets_gen$Social_interaction_on_ADOS
names(ADOS) <- targets_gen$SampleID
motor <- targets_gen$Motor_skills
diagnosis <- targets_gen$Diagnosis
SRS<- targets_gen$SRS_social_scores
iiq <- 1/targets_gen$IQ
# fix infinite
iiq[iiq==Inf] <- 0.025
iiq <- as.vector(scale(iiq))
ilanguage <- as.vector(scale(1/targets_gen$language))

#ADOS
design_tw <- model.matrix(~ Twin_Group + ADOS )
fit_tw <- lmFit(mvals, design_tw)
fit2_tw <- eBayes(fit_tw)
summary(decideTests(fit2_tw))
##        (Intercept) Twin_Group2 Twin_Group3 Twin_Group4 Twin_Group6 Twin_Group7
## Down        245472        8632        4657        5582        3441        3896
## NotSig       42797      762396      793722      790564      793202      795941
## Up          514378       31619        4268        6501        6004        2810
##        Twin_Group8 Twin_Group12 Twin_Group13   ADOS
## Down          2567         3672         7139      0
## NotSig      796786       795931       791579 802647
## Up            3294         3044         3929      0
top <- topTable(fit2_tw,coef="ADOS",num=Inf, sort.by = "P")
nsig <- sum(top$adj.P.Val < 0.05)
sum(top$P.Value< 0.05)
## [1] 30545
output <-merge(ann_sub,top,by.x="Name",by.y="row.names")
output <- output[order(output$P.Value),]
write.csv(output, file="limma_blood_ADOS.csv",row.names=FALSE)
output <- subset(output,P.Value<1e-4)
head(output,30) %>% kbl() %>% kable_paper("hover", full_width = F)
Name chr pos strand Islands_Name Relation_to_Island UCSC_RefGene_Name UCSC_RefGene_Group logFC AveExpr t P.Value adj.P.Val B
cg07655025 chr19 12835001
chr19:12833104-12833574 S_Shore TNPO2 TSS200 -0.0854949 -4.3361600 -6.706650 2.28e-05 0.8764716 3.048127
cg18253799 chr17 78069191
OpenSea CCDC40 Body 0.1005063 4.6851023 5.976848 6.70e-05 0.8764716 2.036801
cg25032595 chr13 96204978
chr13:96204691-96205496 Island CLDN10;CLDN10;CLDN10;CLDN10 5’UTR;1stExon;Body;Body -0.0705806 -4.5040270 -5.801969 8.77e-05 0.8764716 1.781885
cg16956665 chr11 125479362
OpenSea STT3A Body 0.1228970 0.6660224 5.770674 9.21e-05 0.8764716 1.735749
saveRDS(design_tw, "bl_design_ados.rds")
saveRDS(mvals, "bl_mvals.rds")

Other models:

  • motor skills impairment

  • diagnosis

  • SRS

  • inverse IQ

  • inverse langguage

Regression analysis - within twin pair on motor skills

#motor:820,1.053055e-12
design_tw <- model.matrix(~ Twin_Group + motor )
fit_tw <- lmFit(mvals, design_tw)
fit2_tw <- eBayes(fit_tw)
summary(decideTests(fit2_tw))
##        (Intercept) Twin_Group2 Twin_Group3 Twin_Group4 Twin_Group6 Twin_Group7
## Down        229684        4434        3653        1755        1453        5029
## NotSig       83474      788381      796338      799389      799771      794382
## Up          489489        9832        2656        1503        1423        3236
##        Twin_Group8 Twin_Group12 Twin_Group13  motor
## Down          4104         1623         1628      3
## NotSig      793202       799776       799910 802643
## Up            5341         1248         1109      1
top <- topTable(fit2_tw,coef="motor",num=Inf, sort.by = "P")
nsig <- sum(top$adj.P.Val < 0.05)
sum(top$P.Value< 0.05)
## [1] 13734
output <-merge(ann_sub,top,by.x="Name",by.y="row.names")
output <- output[order(output$P.Value),]
write.csv(output,file="limma_blood_motor.csv",row.names=FALSE)
head(output,30) %>% kbl(caption="motor") %>% kable_paper("hover", full_width = F)
motor
Name chr pos strand Islands_Name Relation_to_Island UCSC_RefGene_Name UCSC_RefGene_Group logFC AveExpr t P.Value adj.P.Val B
cg06210070 chr6 33085063
chr6:33084740-33084995 S_Shore HLA-DPB2 Body 2.1349589 -1.243178 13.270789 0.0000000 0.0158546 -3.115049
cg16853842 chr12 56390939
OpenSea SUOX;SUOX;SUOX TSS200;TSS200;TSS200 -1.8492659 -3.316265 -12.453699 0.0000000 0.0159779 -3.130500
cg08638320 chr1 47900265
chr1:47899661-47900385 Island FOXD2;MGC12982 TSS1500;Body -2.3455882 -1.387550 -11.823209 0.0000001 0.0188119 -3.144416
cg26848940 chr6 37787530
chr6:37786707-37788114 Island ZFAND3;ZFAND3 5’UTR;1stExon -2.1854214 -5.339348 -10.553508 0.0000002 0.0481955 -3.179286
cg03896436 chr5 141082572
chr5:141082245-141082592 Island -1.0547315 -3.970117 -8.670124 0.0000019 0.3041140 -3.256077
cg10013356 chr6 150244295
chr6:150243902-150244210 S_Shore RAET1G TSS200 2.1354039 -3.707090 7.593191 0.0000072 0.9670964 -3.321246
cg22401197 chr2 219261843
chr2:219263098-219265556 N_Shore CTDSP1 TSS1500 1.0215084 -5.424140 7.108057 0.0000138 0.9999765 -3.357991
cg19820070 chr3 48595777
chr3:48594022-48594853 S_Shore 0.9966580 -4.814164 6.864147 0.0000193 0.9999765 -3.378599
cg08857348 chr17 40760642
chr17:40761059-40761761 N_Shore TUBG1;FAM134C;FAM134C TSS1500;Body;Body -1.0571880 -4.778048 -6.861185 0.0000194 0.9999765 -3.378859
cg03122453 chr10 18940666
chr10:18940528-18940765 Island NSUN6 TSS200 0.8626666 -4.730919 6.509986 0.0000319 0.9999765 -3.411414
cg05905482 chr16 22207553
OpenSea -0.8705145 -4.380715 -6.361905 0.0000396 0.9999765 -3.426244
cg06753055 chr15 40228656
chr15:40226210-40226631 S_Shelf EIF2AK4 Body 0.8532322 1.588910 6.287176 0.0000442 0.9999765 -3.433993
cg27179327 chr22 51066859
chr22:51066107-51067051 Island ARSA;ARSA;ARSA;ARSA;ARSA TSS1500;TSS1500;TSS1500;TSS1500;TSS1500 -0.8623289 -5.720339 -6.275171 0.0000450 0.9999765 -3.435255
cg15407916 chr18 5133225
OpenSea -1.0635897 3.550668 -6.224045 0.0000485 0.9999765 -3.440683
cg22188917 chr6 43138180
chr6:43138711-43140292 N_Shore SRF TSS1500 -1.0633309 -3.701277 -6.179868 0.0000518 0.9999765 -3.445444
cg20850829 chr2 55646538
chr2:55646621-55647329 N_Shore CCDC88A;CCDC88A;CCDC88A;CCDC88A;CCDC88A;CCDC88A 1stExon;1stExon;1stExon;5’UTR;5’UTR;5’UTR 0.9471775 -5.105669 6.059595 0.0000620 0.9999765 -3.458750
cg11858249 chr21 45079790
chr21:45077671-45079821 Island HSF2BP;RRP1B TSS1500;Body 0.7795903 -4.933768 6.039472 0.0000639 0.9999765 -3.461026
cg00786952 chr1 21763130
chr1:21763070-21763416 Island 1.1501735 -4.475003 6.021161 0.0000656 0.9999765 -3.463110
cg00140914 chr17 44859215
OpenSea WNT3 Body -1.0902420 1.783406 -6.020199 0.0000657 0.9999765 -3.463220
cg24326130 chr6 32811997
chr6:32811494-32811839 S_Shore PSMB8;PSMB8 Body;TSS200 0.7980946 -4.711303 5.955631 0.0000725 0.9999765 -3.470667
cg24985071 chr1 185126361
chr1:185125850-185126705 Island SWT1;TRMT1L;SWT1;SWT1;TRMT1L 5’UTR;TSS200;1stExon;5’UTR;TSS1500 -0.9618703 -5.273609 -5.943504 0.0000738 0.9999765 -3.472083
cg08344081 chr6 41339785
chr6:41339236-41340027 Island -0.7355960 -5.824034 -5.894639 0.0000795 0.9999765 -3.477844
cg07751341 chr19 12848092
chr19:12848278-12848586 N_Shore ASNA1 TSS1500 -1.1036569 -4.558074 -5.856010 0.0000844 0.9999765 -3.482463
cg23561766 chr14 50998480
chr14:50998577-50999711 N_Shore MAP4K5;MAP4K5;ATL1 Body;Body;TSS1500 -0.8288611 -4.271157 -5.843770 0.0000860 0.9999765 -3.483938
cg05240976 chr2 54787135
chr2:54785026-54785969 S_Shore SPTBN1;SPTBN1 Body;Body -0.8814228 -5.412744 -5.696999 0.0001078 0.9999765 -3.502085
cg03546814 chr1 12498784
OpenSea VPS13D;VPS13D Body;Body 1.1694721 -3.098589 5.633903 0.0001189 0.9999765 -3.510152
cg13445358 chr12 53661749
chr12:53661928-53662429 N_Shore ESPL1 TSS1500 -0.8170765 -4.198784 -5.609503 0.0001236 0.9999765 -3.513316
cg09666237 chr17 18128581
chr17:18128577-18128821 Island LLGL1 TSS1500 -0.6334495 -4.535014 -5.591907 0.0001270 0.9999765 -3.515613
cg02085891 chr1 9256865
chr1:9258565-9258956 N_Shore -0.7945559 -5.127125 -5.478465 0.0001519 0.9999765 -3.530736
cg18933904 chr3 187461439
chr3:187461974-187462197 N_Shore BCL6 5’UTR -0.7941410 -4.615164 -5.460913 0.0001562 0.9999765 -3.533125
saveRDS(design_tw, "bl_design_motor.rds")

Regression analysis - within twin pair on diagnosis

#diagnosis:0,3.080605e-05
design_tw <- model.matrix(~ Twin_Group + diagnosis )
fit_tw <- lmFit(mvals, design_tw)
fit2_tw <- eBayes(fit_tw)
summary(decideTests(fit2_tw))
##        (Intercept) Twin_Group2 Twin_Group3 Twin_Group4 Twin_Group6 Twin_Group7
## Down        247391        9532        5404        5422        3987        4134
## NotSig       39652      759118      792733      790954      791606      795732
## Up          515604       33997        4510        6271        7054        2781
##        Twin_Group8 Twin_Group12 Twin_Group13 diagnosis
## Down          3593         4886         6461         0
## NotSig      794321       794189       792486    802647
## Up            4733         3572         3700         0
top <- topTable(fit2_tw,coef="diagnosis",num=Inf, sort.by = "P")
nsig <- sum(top$adj.P.Val < 0.05)
sum(top$P.Value< 0.05)
## [1] 14778
output <-merge(ann_sub,top,by.x="Name",by.y="row.names")
output <- output[order(output$P.Value),]
write.csv(output,file="limma_blood_diagnosis.csv",row.names=FALSE)
head(output,30) %>% kbl(caption="diagnosis") %>% kable_paper("hover", full_width = F)
diagnosis
Name chr pos strand Islands_Name Relation_to_Island UCSC_RefGene_Name UCSC_RefGene_Group logFC AveExpr t P.Value adj.P.Val B
cg03643559 chr10 124757121
OpenSea IKZF5 Body 0.4071168 0.4238158 5.399880 0.0001754 0.9999989 -2.119538
cg13620413 chr1 212235894
OpenSea DTL;DTL;DTL 5’UTR;Body;Body -0.3446894 3.5177546 -5.255890 0.0002207 0.9999989 -2.174991
cg09119495 chr5 90252465
OpenSea ADGRV1;ADGRV1 Body;Body 0.4023156 -1.4703628 5.177953 0.0002503 0.9999989 -2.205961
cg09809932 chr1 6515597
chr1:6514108-6516325 Island ESPN Body -0.4251736 -5.4865756 -5.168133 0.0002544 0.9999989 -2.209912
cg15980797 chr6 137813648
chr6:137814355-137815202 N_Shore OLIG3;OLIG3 1stExon;3’UTR 0.4830796 -3.5461377 5.138311 0.0002670 0.9999989 -2.221977
cg05608508 chr16 15140886
OpenSea NTAN1 Body 0.4911798 4.9277255 5.113885 0.0002778 0.9999989 -2.231934
cg23272193 chr13 77901449
chr13:77903398-77903872 N_Shore MYCBP2 TSS1500 0.4929036 -5.2686441 5.111727 0.0002788 0.9999989 -2.232817
cg19088141 chr1 113056151
chr1:113050813-113052301 S_Shelf WNT2B;WNT2B Body;Body 0.3418715 3.0113422 5.098103 0.0002850 0.9999989 -2.238404
cg08481520 chr3 110789352
chr3:110790149-110791401 N_Shore PVRL3-AS1;PVRL3;PVRL3 TSS1500;TSS1500;TSS1500 0.4070263 -4.7221702 5.032268 0.0003175 0.9999989 -2.265704
cg16956665 chr11 125479362
OpenSea STT3A Body 0.6696878 0.6660224 5.023038 0.0003223 0.9999989 -2.269572
cg11006267 chr5 139017424
chr5:139017133-139017668 Island 0.4351828 -5.9444345 5.014290 0.0003270 0.9999989 -2.273247
cg03062264 chr7 134354807
OpenSea BPGM;BPGM;BPGM Body;Body;Body 0.3103958 -4.0944066 5.005887 0.0003315 0.9999989 -2.276786
cg26240231 chr7 1148101
chr7:1149179-1150306 N_Shore C7orf50;C7orf50;C7orf50 Body;Body;Body -0.3485023 3.2237614 -4.968365 0.0003526 0.9999989 -2.292687
cg04406808 chr11 43702245
chr11:43702016-43702597 Island HSD17B12;HSD17B12 5’UTR;1stExon -0.4750830 -4.8290504 -4.863746 0.0004194 0.9999989 -2.337910
cg00830735 chr10 93393238
chr10:93392667-93393147 S_Shore PPP1R3C TSS1500 -0.3070775 -3.2560593 -4.837906 0.0004378 0.9999989 -2.349282
cg10764907 chr7 158886532
chr7:158886367-158886595 Island VIPR2 Body 0.4184330 2.8988197 4.834167 0.0004406 0.9999989 -2.350934
cg02733698 chr1 208084824
chr1:208084098-208084513 S_Shore CD34;CD34 TSS200;TSS200 0.2886961 -3.7135497 4.822465 0.0004492 0.9999989 -2.356116
cg25032595 chr13 96204978
chr13:96204691-96205496 Island CLDN10;CLDN10;CLDN10;CLDN10 5’UTR;1stExon;Body;Body -0.3770303 -4.5040270 -4.773131 0.0004879 0.9999989 -2.378147
cg04324167 chr11 129842470
OpenSea PRDM10;PRDM10 5’UTR;5’UTR -0.5488210 1.0338084 -4.757719 0.0005007 0.9999989 -2.385091
cg07655025 chr19 12835001
chr19:12833104-12833574 S_Shore TNPO2 TSS200 -0.4410381 -4.3361600 -4.750070 0.0005071 0.9999989 -2.388548
cg19074669 chr2 8260068
OpenSea LINC00299 Body -0.4037790 1.8878291 -4.716698 0.0005364 0.9999989 -2.403715
cg13365972 chr11 1629275
OpenSea HCCA2;KRTAP5-3 Body;1stExon 0.2935409 0.8693092 4.712810 0.0005399 0.9999989 -2.405491
cg23146534 chr7 99149191
chr7:99149508-99149807 N_Shore C7orf38 5’UTR 0.3568616 -3.7440973 4.695541 0.0005559 0.9999989 -2.413402
cg05012902 chr17 8065517
chr17:8065909-8066494 N_Shore VAMP2 Body 0.4978009 -3.3075049 4.675448 0.0005750 0.9999989 -2.422654
cg00905457 chr10 98015413
OpenSea BLNK;BLNK;BLNK;BLNK;BLNK;BLNK;BLNK;BLNK;BLNK Body;Body;Body;Body;Body;Body;Body;Body;Body -0.5439586 1.1262740 -4.663317 0.0005870 0.9999989 -2.428264
cg18253799 chr17 78069191
OpenSea CCDC40 Body 0.5289079 4.6851023 4.654237 0.0005960 0.9999989 -2.432475
cg06979656 chr7 116409579
OpenSea MET;MET Body;Body -0.3182983 3.3518182 -4.645955 0.0006045 0.9999989 -2.436325
cg09115762 chr1 228591111
chr1:228593811-228594713 N_Shelf TRIM11 Body -0.3274110 4.0106091 -4.644123 0.0006063 0.9999989 -2.437178
cg21498965 chr19 12863540
chr19:12865419-12865825 N_Shore BEST2 1stExon -0.3621138 2.6455151 -4.643169 0.0006073 0.9999989 -2.437622
cg01919488 chr2 71558589
chr2:71558723-71559525 N_Shore ZNF638;ZNF638 TSS1500;TSS1500 -0.3119749 -3.4363917 -4.594476 0.0006596 0.9999989 -2.460450
saveRDS(design_tw, "bl_design_diagnosis.rds")

Regression analysis - within twin pair on SRS

#SRS:0,1.895198e-07
design_tw <- model.matrix(~ Twin_Group + SRS )
fit_tw <- lmFit(mvals, design_tw)
fit2_tw <- eBayes(fit_tw)
summary(decideTests(fit2_tw))
##        (Intercept) Twin_Group2 Twin_Group3 Twin_Group4 Twin_Group6 Twin_Group7
## Down        215912        4732        5776        2996        4794        5816
## NotSig      111628      787424      792699      796948      789217      793429
## Up          475107       10491        4172        2703        8636        3402
##        Twin_Group8 Twin_Group12 Twin_Group13    SRS
## Down          4594         3420         2438      0
## NotSig      791812       797045       799034 802647
## Up            6241         2182         1175      0
top <- topTable(fit2_tw,coef="SRS",num=Inf, sort.by = "P")
head(top)
##                  logFC   AveExpr         t      P.Value adj.P.Val        B
## cg21058391 -0.02879180  1.171893 -7.095354 1.116883e-05  0.381132 2.986096
## cg23996714 -0.02957017 -3.834259 -6.884670 1.508379e-05  0.381132 2.669287
## cg03715919 -0.02491278  4.010281 -6.494544 2.671957e-05  0.381132 2.067037
## cg21549639 -0.02858546 -2.903668 -6.480119 2.730112e-05  0.381132 2.044375
## cg12093819 -0.01999452  3.134778 -6.337027 3.385323e-05  0.381132 1.818043
## cg25724515 -0.02123326  3.783982 -6.295747 3.603923e-05  0.381132 1.752231
nsig <- sum(top$adj.P.Val < 0.05)
sum(top$P.Value< 0.05)
## [1] 105055
output <-merge(ann_sub,top,by.x="Name",by.y="row.names")
output <- output[order(output$P.Value),]
write.csv(output,file="limma_blood_SRS.csv",row.names=FALSE)
head(output,30) %>% kbl(caption="SRS score") %>% kable_paper("hover", full_width = F)
SRS score
Name chr pos strand Islands_Name Relation_to_Island UCSC_RefGene_Name UCSC_RefGene_Group logFC AveExpr t P.Value adj.P.Val B
cg21058391 chr4 160027487
chr4:160023787-160025437 S_Shelf -0.0287918 1.171893 -7.095354 1.12e-05 0.381132 2.9860959
cg23996714 chr8 103666229
chr8:103666157-103668861 Island KLF10;KLF10;KLF10;KLF10 Body;TSS200;TSS200;TSS200 -0.0295702 -3.834259 -6.884670 1.51e-05 0.381132 2.6692871
cg03715919 chr22 41605644
OpenSea L3MBTL2 Body -0.0249128 4.010281 -6.494544 2.67e-05 0.381132 2.0670373
cg21549639 chr19 45394156
chr19:45393833-45394992 Island TOMM40;TOMM40;TOMM40 TSS1500;TSS1500;TSS1500 -0.0285855 -2.903668 -6.480119 2.73e-05 0.381132 2.0443749
cg12093819 chr21 30118661
OpenSea -0.0199945 3.134778 -6.337027 3.39e-05 0.381132 1.8180434
cg25724515 chr11 131926464
OpenSea NTM;NTM;NTM;NTM Body;Body;Body;Body -0.0212333 3.783981 -6.295746 3.60e-05 0.381132 1.7522306
cg09331760 chr9 132926455
OpenSea -0.0254694 3.079046 -6.220647 4.04e-05 0.381132 1.6319035
cg25859812 chr15 99441745
OpenSea IGF1R Body -0.0214454 3.350382 -6.164398 4.40e-05 0.381132 1.5412739
cg14500206 chr7 131223393
OpenSea PODXL;PODXL Body;Body -0.0245284 3.926922 -6.127991 4.66e-05 0.381132 1.4823827
cg03860992 chr5 161273013
OpenSea GABRA1 TSS1500 -0.0371557 2.070269 -6.067546 5.11e-05 0.381132 1.3842081
cg03627896 chr16 30934334
chr16:30933637-30935774 Island NCRNA00095 Body -0.0318163 -3.501236 -6.026692 5.45e-05 0.381132 1.3175691
cg06833636 chr12 12659232
OpenSea DUSP16 Body -0.0365255 1.229402 -6.012294 5.57e-05 0.381132 1.2940293
cg25247582 chr2 22754866
OpenSea -0.0213127 3.216373 -5.998832 5.69e-05 0.381132 1.2719947
cg11911679 chr2 182520919
chr2:182521221-182521927 N_Shore CERKL;CERKL;CERKL;CERKL;CERKL;CERKL;CERKL Body;Body;Body;Body;Body;Body;Body -0.0192322 2.487683 -5.974525 5.91e-05 0.381132 1.2321443
cg25073705 chr11 1008290
chr11:1007921-1008343 Island AP2A2 Body -0.0287487 4.987648 -5.970697 5.95e-05 0.381132 1.2258627
cg10014923 chr9 131597992
OpenSea CCBL1;CCBL1;CCBL1;CCBL1;CCBL1 Body;Body;Body;Body;Body -0.0205366 3.575841 -5.946456 6.18e-05 0.381132 1.1860281
cg25349621 chr10 65185619
OpenSea JMJD1C Body -0.0219793 2.924361 -5.926093 6.38e-05 0.381132 1.1525032
cg24796554 chr11 128565519
chr11:128562671-128565011 S_Shore FLI1;FLI1 Body;5’UTR -0.0258670 -4.685528 -5.901892 6.62e-05 0.381132 1.1125874
cg02609271 chr15 92398726
chr15:92396013-92397682 S_Shore SLCO3A1;SLCO3A1 Body;Body -0.0194659 2.966990 -5.866407 7.01e-05 0.381132 1.0539133
cg02576920 chr4 76996888
OpenSea ART3;ART3;ART3 5’UTR;5’UTR;5’UTR -0.0263779 2.264277 -5.840509 7.30e-05 0.381132 1.0109838
cg03034673 chr7 106670287
OpenSea -0.0214507 2.281965 -5.811119 7.65e-05 0.381132 0.9621551
cg24793746 chr8 1252864
OpenSea -0.0186354 4.729247 -5.792388 7.88e-05 0.381132 0.9309724
cg10125291 chr4 4139916
OpenSea -0.0385878 2.929353 -5.780874 8.02e-05 0.381132 0.9117822
cg22011526 chr6 36857605
chr6:36853590-36853927 S_Shelf C6orf89 Body -0.0370114 2.015564 -5.749296 8.44e-05 0.381132 0.8590557
cg05303408 chr6 20534748
OpenSea CDKAL1;CDKAL1 1stExon;5’UTR 0.0236652 -4.661956 5.731876 8.67e-05 0.381132 0.8299123
cg26817186 chr1 188340817
OpenSea -0.0238569 2.750575 -5.720987 8.83e-05 0.381132 0.8116734
cg19963546 chr6 148449297
OpenSea -0.0198382 3.362010 -5.710127 8.98e-05 0.381132 0.7934669
cg12066726 chr1 35297677
OpenSea -0.0170382 3.595962 -5.681247 9.41e-05 0.381132 0.7449733
cg01424561 chr7 106481485
OpenSea -0.0214755 4.455325 -5.675229 9.50e-05 0.381132 0.7348527
cg12173308 chr7 47390824
OpenSea TNS3 Body -0.0237873 3.260284 -5.669683 9.58e-05 0.381132 0.7255228
saveRDS(design_tw, "bl_design_srs.rds")

Regression analysis - within twin pair on inverse IQ

#iiq:0,1.326967e-05
design_tw <- model.matrix(~ Twin_Group + iiq )
fit_tw <- lmFit(mvals, design_tw)
fit2_tw <- eBayes(fit_tw)
summary(decideTests(fit2_tw))
##        (Intercept) Twin_Group2 Twin_Group3 Twin_Group4 Twin_Group6 Twin_Group7
## Down        248598       10008       12858       11360        5968        8335
## NotSig       32816      771176      782303      777593      784202      789527
## Up          521233       21463        7486       13694       12477        4785
##        Twin_Group8 Twin_Group12 Twin_Group13    iiq
## Down          6657        41852       158158  97403
## NotSig      784214       747025       624450 690484
## Up           11776        13770        20039  14760
top <- topTable(fit2_tw,coef="iiq",num=Inf, sort.by = "P")
head(top)
##                 logFC   AveExpr         t      P.Value  adj.P.Val        B
## cg04468444 -0.9134611  1.823403 -9.471934 3.478678e-07 0.03696148 6.265245
## cg24575266 -0.7229819  1.090382 -8.890445 7.133129e-07 0.03696148 5.717139
## cg23438384 -0.6267848  0.159518 -8.656717 9.614420e-07 0.03696148 5.484546
## cg02894209 -0.6930069 -3.599365 -8.651787 9.675755e-07 0.03696148 5.479562
## cg22557012 -0.7919297  1.045933 -8.614486 1.015359e-06 0.03696148 5.441740
## cg17257934  0.5566920  2.853856  8.214053 1.720148e-06 0.03696148 5.023644
nsig <- sum(top$adj.P.Val < 0.05)
sum(top$P.Value< 0.05)
## [1] 265932
output <-merge(ann_sub,top,by.x="Name",by.y="row.names")
output <- output[order(output$P.Value),]
write.csv(output,file="limma_blood_iIQ.csv",row.names=FALSE)
head(output,30) %>% kbl(caption="inverse IQ") %>% kable_paper("hover", full_width = F)
inverse IQ
Name chr pos strand Islands_Name Relation_to_Island UCSC_RefGene_Name UCSC_RefGene_Group logFC AveExpr t P.Value adj.P.Val B
cg04468444 chr3 124354566
OpenSea KALRN;KALRN Body;Body -0.9134611 1.8234031 -9.471934 3.0e-07 0.0369615 6.265245
cg24575266 chr5 38559733
chr5:38556222-38557563 S_Shelf LIFR-AS1;LIFR;LIFR-AS1 Body;5’UTR;Body -0.7229819 1.0903824 -8.890446 7.0e-07 0.0369615 5.717139
cg23438384 chr6 12050022
OpenSea HIVEP1 Body -0.6267848 0.1595180 -8.656717 1.0e-06 0.0369615 5.484546
cg02894209 chr15 43028463
chr15:43028413-43029346 Island CDAN1 Body -0.6930069 -3.5993655 -8.651787 1.0e-06 0.0369615 5.479562
cg22557012 chr17 67138792
OpenSea ABCA6 TSS1500 -0.7919297 1.0459327 -8.614486 1.0e-06 0.0369615 5.441740
cg17257934 chr12 131690459
OpenSea LINC01257 Body 0.5566920 2.8538564 8.214053 1.7e-06 0.0369615 5.023644
cg14552672 chr2 111752564
OpenSea ACOXL Body -0.7051687 0.9782751 -8.208317 1.7e-06 0.0369615 5.017492
cg21250898 chr8 12652814
OpenSea LOC340357;LINC00681 Body;Body -0.7957907 1.4895465 -8.152590 1.9e-06 0.0369615 4.957473
cg06250511 chr8 126231813
OpenSea NSMCE2 Body -0.7063101 0.6481511 -7.889909 2.7e-06 0.0369615 4.668501
cg22222965 chr14 91948818
OpenSea PPP4R3A;PPP4R3A Body;Body -0.9378657 0.9602483 -7.883407 2.7e-06 0.0369615 4.661219
cg17312424 chr4 95517497
OpenSea PDLIM5;PDLIM5;PDLIM5;PDLIM5;PDLIM5;PDLIM5 Body;5’UTR;Body;Body;Body;Body -0.8858171 1.3814562 -7.856026 2.8e-06 0.0369615 4.630487
cg12443616 chr12 7959662
OpenSea 0.5282220 -4.9272362 7.848517 2.8e-06 0.0369615 4.622041
cg07250516 chr18 52275086
OpenSea -0.5992332 2.8193183 -7.834423 2.9e-06 0.0369615 4.606163
cg26286934 chr3 181417051
chr3:181413014-181414022 S_Shelf SOX2-OT;SOX2-OT;SOX2-OT;SOX2-OT;SOX2-OT;SOX2-OT Body;Body;Body;Body;Body;Body -0.6359582 1.6015191 -7.817897 3.0e-06 0.0369615 4.587507
cg08568736 chr20 1757780
chr20:1757779-1758134 Island -0.5132923 -3.8137235 -7.686918 3.5e-06 0.0369615 4.438201
cg08341589 chr15 59971009
chr15:59968889-59969096 S_Shore BNIP2 Body -0.7603199 0.0753735 -7.681287 3.6e-06 0.0369615 4.431725
cg24837026 chr3 155607265
OpenSea GMPS Body -0.5741611 4.3566518 -7.669545 3.6e-06 0.0369615 4.418204
cg27608402 chr3 152787564
OpenSea -0.8036066 0.6518530 -7.649644 3.7e-06 0.0369615 4.395239
cg25104558 chr1 21872684
OpenSea ALPL;ALPL;ALPL 5’UTR;5’UTR;5’UTR -0.8786846 0.8985256 -7.575218 4.1e-06 0.0369615 4.308819
cg19889859 chr1 67672609
OpenSea IL23R;IL23R ExonBnd;Body -0.5604408 2.9833920 -7.569380 4.2e-06 0.0369615 4.302005
cg19561774 chr6 160679690
chr6:160679377-160679701 Island SLC22A2 1stExon -0.4301370 4.0257152 -7.516633 4.5e-06 0.0369615 4.240197
cg01068931 chr17 70460238
OpenSea LINC00673 Body 0.4933991 2.7541635 7.495424 4.6e-06 0.0369615 4.215223
cg19178585 chr12 109971145
OpenSea UBE3B;UBE3B Body;Body -0.5313279 2.8843057 -7.475270 4.8e-06 0.0369615 4.191427
cg05434396 chr8 12652932
OpenSea LOC340357;LINC00681 Body;Body -0.7076171 1.8078986 -7.421156 5.2e-06 0.0369615 4.127224
cg16253870 chr12 68959172
OpenSea -0.7887365 1.7549876 -7.383071 5.5e-06 0.0369615 4.081764
cg14551152 chr1 246271438
OpenSea SMYD3;SMYD3 Body;Body -0.8289026 0.8391214 -7.380123 5.5e-06 0.0369615 4.078236
cg21602651 chr1 220397618
OpenSea RAB3GAP2 Body -0.6727089 1.0222872 -7.349104 5.7e-06 0.0369615 4.041029
cg12058390 chr7 4885521
OpenSea RADIL Body -0.4618408 -2.9685392 -7.327176 5.9e-06 0.0369615 4.014634
cg12667941 chr1 8450904
OpenSea RERE;RERE;RERE 5’UTR;Body;Body -0.7574051 0.2086911 -7.326099 5.9e-06 0.0369615 4.013336
cg02438517 chr1 167523547
chr1:167522469-167523070 S_Shore CREG1 TSS1500 -0.4740406 -2.8724274 -7.310770 6.1e-06 0.0369615 3.994838
saveRDS(design_tw, "bl_design_iiq.rds")

Regression analysis - within twin pair on inverse language skills

#ilanguage:0,9.149182e-08
design_tw <- model.matrix(~ Twin_Group + ilanguage )
fit_tw <- lmFit(mvals, design_tw)
fit2_tw <- eBayes(fit_tw)
summary(decideTests(fit2_tw))
##        (Intercept) Twin_Group2 Twin_Group3 Twin_Group4 Twin_Group6 Twin_Group7
## Down        249393       15379       20367       15499        6781        8973
## NotSig       31334      757149      770300      767557      781353      788514
## Up          521920       30119       11980       19591       14513        5160
##        Twin_Group8 Twin_Group12 Twin_Group13 ilanguage
## Down          8683       106282        94082    140108
## NotSig      776403       669094       694176    635625
## Up           17561        27271        14389     26914
top <- topTable(fit2_tw,coef="ilanguage",num=Inf, sort.by = "P")
head(top)
##                 logFC  AveExpr          t      P.Value  adj.P.Val        B
## cg16452467 -0.7352017 1.981872 -11.027956 5.632419e-08 0.01611082 8.073587
## cg19797280 -0.6465954 2.690812  -9.816791 2.200096e-07 0.01611082 6.996977
## cg23802117 -0.6488990 3.721327  -9.683595 2.576273e-07 0.01611082 6.868711
## cg04924454 -0.5897079 1.658075  -9.389367 3.673146e-07 0.01611082 6.577938
## cg00317081 -0.6541627 1.151801  -9.342842 3.888068e-07 0.01611082 6.531003
## cg08441285 -0.7674833 2.256906  -9.303528 4.080133e-07 0.01611082 6.491137
nsig <- sum(top$adj.P.Val < 0.05)
sum(top$P.Value< 0.05)
## [1] 289985
output <-merge(ann_sub,top,by.x="Name",by.y="row.names")
output <- output[order(output$P.Value),]
write.csv(output,file="limma_blood_ilanguage.csv",row.names=FALSE)
head(output,30) %>% kbl(caption="inverse language") %>% kable_paper("hover", full_width = F)
inverse language
Name chr pos strand Islands_Name Relation_to_Island UCSC_RefGene_Name UCSC_RefGene_Group logFC AveExpr t P.Value adj.P.Val B
cg16452467 chr1 46509145
OpenSea PIK3R3;PIK3R3;PIK3R3;PIK3R3;PIK3R3 3’UTR;3’UTR;3’UTR;3’UTR;3’UTR -0.7352017 1.981872 -11.027956 1.0e-07 0.0161108 8.073587
cg19797280 chr5 132009731
OpenSea IL4;IL4;IL4;IL4 5’UTR;5’UTR;1stExon;1stExon -0.6465954 2.690812 -9.816791 2.0e-07 0.0161108 6.996977
cg23802117 chr1 26625392
OpenSea UBXN11;UBXN11;UBXN11 Body;Body;Body -0.6488990 3.721327 -9.683595 3.0e-07 0.0161108 6.868711
cg04924454 chr7 26327799
chr7:26331463-26331944 N_Shelf -0.5897079 1.658075 -9.389367 4.0e-07 0.0161108 6.577938
cg00317081 chr7 38182566
OpenSea -0.6541627 1.151801 -9.342842 4.0e-07 0.0161108 6.531003
cg08441285 chr7 37741388
OpenSea -0.7674833 2.256906 -9.303528 4.0e-07 0.0161108 6.491137
cg25926652 chr2 201810588
OpenSea ORC2L Body -0.7397377 2.450556 -9.259294 4.0e-07 0.0161108 6.446052
cg04765650 chr10 50717412
OpenSea ERCC6 Body -1.0424272 1.979610 -9.222028 5.0e-07 0.0161108 6.407882
cg22171706 chr15 91158378
OpenSea CRTC3;CRTC3 Body;Body -0.7518183 2.613924 -9.149102 5.0e-07 0.0161108 6.332685
cg21550248 chr12 123011757
chr12:123011261-123011765 Island RSRC2;KNTC1;RSRC2;RSRC2 TSS1500;TSS200;TSS1500;TSS1500 -0.8617833 -4.224074 -9.140566 5.0e-07 0.0161108 6.323839
cg07958316 chr17 67853145
OpenSea LINC01483;LINC01483 Body;Body 0.5905435 2.416168 9.093584 5.0e-07 0.0161108 6.274991
cg17312424 chr4 95517497
OpenSea PDLIM5;PDLIM5;PDLIM5;PDLIM5;PDLIM5;PDLIM5 Body;5’UTR;Body;Body;Body;Body -0.8755778 1.381456 -8.895919 7.0e-07 0.0161108 6.066393
cg12108564 chr4 104454891
OpenSea -0.6682651 3.100187 -8.864030 7.0e-07 0.0161108 6.032269
cg04468444 chr3 124354566
OpenSea KALRN;KALRN Body;Body -0.8759047 1.823403 -8.739686 8.0e-07 0.0161108 5.897941
cg22611504 chr10 52750754
chr10:52750956-52751765 N_Shore PRKG1 TSS200 -0.5961863 -3.929255 -8.725293 8.0e-07 0.0161108 5.882262
cg23452498 chr5 144889607
OpenSea -0.5558488 3.506532 -8.620379 1.0e-06 0.0161108 5.767137
cg02873783 chr11 110225729
OpenSea -0.5898812 2.203426 -8.602360 1.0e-06 0.0161108 5.747217
cg09399225 chr9 123007911
OpenSea MIR147 TSS1500 0.4759751 2.301524 8.594000 1.0e-06 0.0161108 5.737960
cg02595886 chr6 37270436
OpenSea TBC1D22B;TBC1D22B Body;Body -0.8495480 2.512721 -8.579342 1.0e-06 0.0161108 5.721706
cg15027446 chr4 56484062
OpenSea NMU;NMU;NMU;NMU Body;Body;Body;Body 0.5092146 1.967602 8.511648 1.1e-06 0.0161108 5.646267
cg10409831 chr8 30469883
OpenSea GTF2E2 Body -0.6877905 4.251862 -8.510512 1.1e-06 0.0161108 5.644996
cg23412299 chr11 127813919
OpenSea 0.5737846 1.719428 8.498057 1.1e-06 0.0161108 5.631046
cg24485437 chr6 139265331
OpenSea REPS1;REPS1;REPS1;REPS1 Body;Body;Body;Body -0.9074396 1.984342 -8.477866 1.2e-06 0.0161108 5.608388
cg21639114 chr6 130687884
chr6:130686414-130687736 S_Shore -0.7108508 -2.495998 -8.373044 1.3e-06 0.0161108 5.489862
cg21486250 chr6 147478688
OpenSea STXBP5-AS1 Body -0.5010170 2.716102 -8.330417 1.4e-06 0.0161108 5.441230
cg07453055 chr1 11786594
OpenSea -0.5922369 2.107664 -8.327145 1.4e-06 0.0161108 5.437486
cg25684961 chr10 75761004
chr10:75757484-75758227 S_Shelf VCL;VCL Body;Body -0.5727379 3.359333 -8.283647 1.5e-06 0.0161108 5.387580
cg07426802 chr8 60885377
OpenSea 0.5294140 1.173708 8.283313 1.5e-06 0.0161108 5.387196
cg25291613 chr6 145569051
OpenSea 0.5217365 1.685947 8.275394 1.5e-06 0.0161108 5.378082
cg19178585 chr12 109971145
OpenSea UBE3B;UBE3B Body;Body -0.5236255 2.884306 -8.265678 1.5e-06 0.0161108 5.366888
saveRDS(design_tw, "bl_design_ilanguage.rds")

Converting to beta from M values

bDat = ilogit2(mvals)
bDat_new = getBeta(gmset_flt)
#View(bDat)
write.csv(bDat,file="ASD_blood_beta_onADOS_withintw_Nov27.csv",row.names=TRUE)

Plotting effect sizes of top DMPs

res <- read.csv("limma_blood_ADOS.csv")
TOPPROBES <- head(res$Name,9)
par(mfrow=c(3,3))
sapply(TOPPROBES,effect_plot)

## $cg07655025
## NULL
## 
## $cg18253799
## NULL
## 
## $cg25032595
## NULL
## 
## $cg16956665
## NULL
## 
## $cg06705930
## NULL
## 
## $cg18845598
## NULL
## 
## $cg13069346
## NULL
## 
## $cg12322146
## NULL
## 
## $cg11568374
## NULL
pdf("effect_blood.pdf")
par(mfrow=c(3,3))
sapply(TOPPROBES,effect_plot)
## $cg07655025
## NULL
## 
## $cg18253799
## NULL
## 
## $cg25032595
## NULL
## 
## $cg16956665
## NULL
## 
## $cg06705930
## NULL
## 
## $cg18845598
## NULL
## 
## $cg13069346
## NULL
## 
## $cg12322146
## NULL
## 
## $cg11568374
## NULL
dev.off()
## png 
##   2
par(mfrow=c(1,1))

Gene ontology of top DMPs LIMMA data

Gene Ontology analysis (gometh): top 1000 probes (limma data).

sigCpGs_1k = res$Name[1:1000]

sigCpGs_1k = as.character(sigCpGs_1k)
all = res$Name
length(all)

# kegg
gometh_kegg <- gometh(sig.cpg = sigCpGs_1k, all.cpg = all, collection = "KEGG", prior.prob=TRUE)
gometh_kegg <- subset(gometh_kegg,DE>2)
gometh_kegg$FDR <- p.adjust(gometh_kegg$P.DE)
gometh_kegg <- gometh_kegg[order(gometh_kegg$P.DE),]
head( gometh_kegg , 20)

# GO terms
gometh_go <- gometh(sig.cpg = sigCpGs_1k, all.cpg = all, collection = "GO" , prior.prob=TRUE)
gometh_go <- subset(gometh_go,DE>2)
gometh_go$FDR <- p.adjust(gometh_go$P.DE)
gometh_go <- gometh_go[order(gometh_go$P.DE),]
head( gometh_go , 20)

Now specifically analyse hypermethylated probes

res2 <- subset(res,logFC>0)
sigCpGs_1k = res2$Name[1:1000]
sigCpGs_1k = as.character(sigCpGs_1k)

# kegg
gometh_kegg <- gometh(sig.cpg = sigCpGs_1k, all.cpg = all, collection = "KEGG", prior.prob=TRUE)
gometh_kegg <- subset(gometh_kegg,DE>2)
gometh_kegg$FDR <- p.adjust(gometh_kegg$P.DE)
gometh_kegg <- gometh_kegg[order(gometh_kegg$P.DE),]
head( gometh_kegg , 20)

# GO terms
gometh_go <- gometh(sig.cpg = sigCpGs_1k, all.cpg = all, collection = "GO" , prior.prob=TRUE)
gometh_go <- subset(gometh_go,DE>2)
gometh_go$FDR <- p.adjust(gometh_go$P.DE)
gometh_go <- gometh_go[order(gometh_go$P.DE),]
head( gometh_go , 20)

Now specifically analyse hypomethylated probes

res2 <- subset(res,logFC<0)
sigCpGs_1k = res2$Name[1:1000]
sigCpGs_1k = as.character(sigCpGs_1k)

# kegg
gometh_kegg <- gometh(sig.cpg = sigCpGs_1k, all.cpg = all, collection = "KEGG", prior.prob=TRUE)
gometh_kegg <- subset(gometh_kegg,DE>2)
gometh_kegg$FDR <- p.adjust(gometh_kegg$P.DE)
gometh_kegg <- gometh_kegg[order(gometh_kegg$P.DE),]
head( gometh_kegg , 20)

# GO terms
gometh_go <- gometh(sig.cpg = sigCpGs_1k, all.cpg = all, collection = "GO" , prior.prob=TRUE)
gometh_go <- subset(gometh_go,DE>2)
gometh_go$FDR <- p.adjust(gometh_go$P.DE)
gometh_go <- gometh_go[order(gometh_go$P.DE),]
head( gometh_go , 20)

DMRCate - differentially methylated region analysis

#design matrix in regression 
design_tw <- model.matrix(~ADOS+Twin_Group)
design_tw_dmrc <- model.matrix(~ADOS)
#myannotation <- cpg.annotate("array", mDat, analysis.type="differential", design=design_tw, coef=2, fdr=1)
myannotation <- cpg.annotate("array", mvals, what = "M", 
  arraytype = "EPIC", analysis.type="differential", design_tw, coef=2)
## Your contrast returned no individually significant probes. Try increasing the fdr. Alternatively, set pcutoff manually in dmrcate() to return DMRs, but be warned there is an increased risk of Type I errors.
dmrcoutput <- dmrcate(myannotation, lambda=1000, C=2, pcutoff=0.001)
## Fitting chr1...
## Fitting chr2...
## Fitting chr3...
## Fitting chr4...
## Fitting chr5...
## Fitting chr6...
## Fitting chr7...
## Fitting chr8...
## Fitting chr9...
## Fitting chr10...
## Fitting chr11...
## Fitting chr12...
## Fitting chr13...
## Fitting chr14...
## Fitting chr15...
## Fitting chr16...
## Fitting chr17...
## Fitting chr18...
## Fitting chr19...
## Fitting chr20...
## Fitting chr21...
## Fitting chr22...
## Demarcating regions...
## Done!
results.ranges <- data.frame(extractRanges(dmrcoutput, genome = "hg19") )
## snapshotDate(): 2022-10-31
## see ?DMRcatedata and browseVignettes('DMRcatedata') for documentation
## loading from cache
head(results.ranges, 20)
##   seqnames     start       end width strand no.cpgs min_smoothed_fdr  Stouffer
## 1     chr7 143746413 143746594   182      *       2     0.0003779910 0.9491839
## 2    chr11 125479352 125479362    11      *       2     0.0003779910 0.9491839
## 3    chr13  66437490  66437506    17      *       2     0.0008880616 0.9491839
## 4     chr1   4794912   4795114   203      *       3     0.0003779910 0.9775130
## 5     chr6  28945189  28945507   319      *       7     0.0003779910 0.9994569
## 6    chr19  12834767  12835206   440      *       8     0.0003779910 0.9999513
##       HMFDR    Fisher      maxdiff     meandiff overlapping.genes
## 1 0.8764716 0.9707790 -0.005090061 -0.003658126              <NA>
## 2 0.8764716 0.9707790  0.008347445  0.001441863             STT3A
## 3 0.8764716 0.9707790 -0.006440248 -0.004821590              <NA>
## 4 0.8764716 0.9923100 -0.009478235 -0.005155469             AJAP1
## 5 0.8869317 0.9999725 -0.006123642 -0.003685261         RN7SL471P
## 6 0.9017439 0.9999975 -0.007879880 -0.001744387             TNPO2
write.csv(results.ranges, file = "dmrcoutput.csv", row.names = TRUE)

Session information

sessionInfo()
## R version 4.2.2 Patched (2022-11-10 r83330)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.2 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] parallel  stats4    stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] DMRcatedata_2.16.0                                 
##  [2] IlluminaHumanMethylation450kmanifest_0.4.0         
##  [3] IlluminaHumanMethylationEPICmanifest_0.3.0         
##  [4] kableExtra_1.3.4                                   
##  [5] mitch_1.10.0                                       
##  [6] FlowSorted.Blood.EPIC_2.2.0                        
##  [7] ExperimentHub_2.6.0                                
##  [8] AnnotationHub_3.6.0                                
##  [9] BiocFileCache_2.6.0                                
## [10] dbplyr_2.3.1                                       
## [11] DMRcate_2.12.0                                     
## [12] ggplot2_3.4.1                                      
## [13] reshape2_1.4.4                                     
## [14] FlowSorted.Blood.450k_1.36.0                       
## [15] WGCNA_1.72-1                                       
## [16] fastcluster_1.2.3                                  
## [17] dynamicTreeCut_1.63-1                              
## [18] gplots_3.1.3                                       
## [19] RColorBrewer_1.1-3                                 
## [20] ruv_0.9.7.1                                        
## [21] IlluminaHumanMethylationEPICanno.ilm10b2.hg19_0.6.0
## [22] limma_3.54.0                                       
## [23] missMethyl_1.32.0                                  
## [24] IlluminaHumanMethylationEPICanno.ilm10b4.hg19_0.6.0
## [25] IlluminaHumanMethylation450kanno.ilmn12.hg19_0.6.1 
## [26] minfi_1.44.0                                       
## [27] bumphunter_1.40.0                                  
## [28] locfit_1.5-9.7                                     
## [29] iterators_1.0.14                                   
## [30] foreach_1.5.2                                      
## [31] Biostrings_2.66.0                                  
## [32] XVector_0.38.0                                     
## [33] SummarizedExperiment_1.28.0                        
## [34] Biobase_2.58.0                                     
## [35] MatrixGenerics_1.10.0                              
## [36] matrixStats_0.63.0                                 
## [37] GenomicRanges_1.50.2                               
## [38] GenomeInfoDb_1.34.6                                
## [39] IRanges_2.32.0                                     
## [40] S4Vectors_0.36.1                                   
## [41] BiocGenerics_0.44.0                                
## 
## loaded via a namespace (and not attached):
##   [1] rappdirs_0.3.3                rtracklayer_1.58.0           
##   [3] GGally_2.1.2                  R.methodsS3_1.8.2            
##   [5] tidyr_1.3.0                   bit64_4.0.5                  
##   [7] knitr_1.42                    DelayedArray_0.24.0          
##   [9] R.utils_2.12.2                data.table_1.14.8            
##  [11] rpart_4.1.19                  KEGGREST_1.38.0              
##  [13] RCurl_1.98-1.10               GEOquery_2.66.0              
##  [15] AnnotationFilter_1.22.0       doParallel_1.0.17            
##  [17] generics_0.1.3                GenomicFeatures_1.50.3       
##  [19] preprocessCore_1.60.2         RSQLite_2.3.0                
##  [21] bit_4.0.5                     tzdb_0.3.0                   
##  [23] webshot_0.5.4                 xml2_1.3.3                   
##  [25] httpuv_1.6.9                  xfun_0.37                    
##  [27] hms_1.1.2                     jquerylib_0.1.4              
##  [29] evaluate_0.20                 promises_1.2.0.1             
##  [31] fansi_1.0.4                   restfulr_0.0.15              
##  [33] scrime_1.3.5                  progress_1.2.2               
##  [35] readxl_1.4.2                  caTools_1.18.2               
##  [37] DBI_1.1.3                     htmlwidgets_1.6.2            
##  [39] reshape_0.8.9                 purrr_1.0.1                  
##  [41] ellipsis_0.3.2                dplyr_1.1.0                  
##  [43] backports_1.4.1               permute_0.9-7                
##  [45] annotate_1.76.0               biomaRt_2.54.0               
##  [47] deldir_1.0-6                  sparseMatrixStats_1.10.0     
##  [49] vctrs_0.6.0                   ensembldb_2.22.0             
##  [51] cachem_1.0.7                  withr_2.5.0                  
##  [53] Gviz_1.42.0                   BSgenome_1.66.2              
##  [55] checkmate_2.1.0               GenomicAlignments_1.34.0     
##  [57] prettyunits_1.1.1             mclust_6.0.0                 
##  [59] svglite_2.1.1                 cluster_2.1.4                
##  [61] lazyeval_0.2.2                crayon_1.5.2                 
##  [63] genefilter_1.80.3             labeling_0.4.2               
##  [65] edgeR_3.40.2                  pkgconfig_2.0.3              
##  [67] nlme_3.1-162                  ProtGenerics_1.30.0          
##  [69] nnet_7.3-18                   rlang_1.1.0                  
##  [71] lifecycle_1.0.3               filelock_1.0.2               
##  [73] dichromat_2.0-0.1             cellranger_1.1.0             
##  [75] rngtools_1.5.2                base64_2.0.1                 
##  [77] Matrix_1.5-3                  Rhdf5lib_1.20.0              
##  [79] base64enc_0.1-3               beeswarm_0.4.0               
##  [81] viridisLite_0.4.1             png_0.1-8                    
##  [83] rjson_0.2.21                  bitops_1.0-7                 
##  [85] R.oo_1.25.0                   KernSmooth_2.23-20           
##  [87] rhdf5filters_1.10.0           blob_1.2.4                   
##  [89] DelayedMatrixStats_1.20.0     doRNG_1.8.6                  
##  [91] stringr_1.5.0                 nor1mix_1.3-0                
##  [93] readr_2.1.4                   jpeg_0.1-10                  
##  [95] scales_1.2.1                  memoise_2.0.1                
##  [97] magrittr_2.0.3                plyr_1.8.8                   
##  [99] zlibbioc_1.44.0               compiler_4.2.2               
## [101] BiocIO_1.8.0                  illuminaio_0.40.0            
## [103] Rsamtools_2.14.0              cli_3.6.0                    
## [105] DSS_2.46.0                    htmlTable_2.4.1              
## [107] Formula_1.2-5                 MASS_7.3-58.3                
## [109] tidyselect_1.2.0              stringi_1.7.12               
## [111] highr_0.10                    yaml_2.3.7                   
## [113] askpass_1.1                   latticeExtra_0.6-30          
## [115] grid_4.2.2                    sass_0.4.5                   
## [117] VariantAnnotation_1.44.0      tools_4.2.2                  
## [119] rstudioapi_0.14               foreign_0.8-84               
## [121] bsseq_1.34.0                  gridExtra_2.3                
## [123] farver_2.1.1                  digest_0.6.31                
## [125] BiocManager_1.30.20           shiny_1.7.4                  
## [127] quadprog_1.5-8                Rcpp_1.0.10                  
## [129] siggenes_1.72.0               BiocVersion_3.16.0           
## [131] later_1.3.0                   org.Hs.eg.db_3.16.0          
## [133] httr_1.4.5                    AnnotationDbi_1.60.0         
## [135] biovizBase_1.46.0             colorspace_2.1-0             
## [137] rvest_1.0.3                   XML_3.99-0.13                
## [139] splines_4.2.2                 statmod_1.5.0                
## [141] multtest_2.54.0               systemfonts_1.0.4            
## [143] xtable_1.8-4                  jsonlite_1.8.4               
## [145] R6_2.5.1                      echarts4r_0.4.4              
## [147] Hmisc_5.0-1                   pillar_1.8.1                 
## [149] htmltools_0.5.4               mime_0.12                    
## [151] glue_1.6.2                    fastmap_1.1.1                
## [153] BiocParallel_1.32.5           interactiveDisplayBase_1.36.0
## [155] beanplot_1.3.1                codetools_0.2-19             
## [157] utf8_1.2.3                    lattice_0.20-45              
## [159] bslib_0.4.2                   tibble_3.2.0                 
## [161] curl_5.0.0                    gtools_3.9.4                 
## [163] GO.db_3.16.0                  openssl_2.0.6                
## [165] interp_1.1-3                  survival_3.5-5               
## [167] rmarkdown_2.20                munsell_0.5.0                
## [169] rhdf5_2.42.0                  GenomeInfoDbData_1.2.9       
## [171] HDF5Array_1.26.0              impute_1.72.3                
## [173] gtable_0.3.2