Bulk RNAseq: 1,210 unique samples | Single-nuclei RNAseq: 424 unique samples (subset) | Brain region: DLPFC | ROSMAP cohort

# This R object was created during test T016
# Character vector containing gene symbols from expressed genes in bulk data
file_path <- file.path("C:/Users/beker/OneDrive/Documentos/Mestrado/GitHub/Cytokines/bulk_RNAseq/T016/list_expr_bulk_T016.RData")
# Load object
load(file_path)
# This R object was created during test T018
# List of gene symbols for expressed genes in each cell type of single nuclei data
file_path <- file.path("C:/Users/beker/OneDrive/Documentos/Mestrado/GitHub/Cytokines/sn_RNAseq_DLPFC/T018/list_expr_sn_T018.RData")
# Load object
load(file_path)

Upset plot

Expressed cytokines genes in the DLPFC region using bulk and single nuclei RNA-seq data

# Upset plot
upset_plot <- upset(
  fromList(list_expr_merged), 
  order.by = "freq", 
  sets.bar.color = 5, 
  nsets = 8, 
  text.scale = 1.3
)

print(upset_plot)

Analysis

Cortex

The following cytokines were expressed in the cortex (bulk + sn) of ROSMAP participants:

merged_list <- unlist(list_expr_merged)
cytokines_unique <- unique(merged_list)
total_cytokines_cortex <- length(cytokines_unique)
print(total_cytokines_cortex)
## [1] 49
print(cytokines_unique)
##  [1] "CX3CL1"   "IL32"     "DCN"      "IGF1"     "HGF"      "KITLG"   
##  [7] "CXCL2"    "THPO"     "FLT3LG"   "IL11"     "TNFSF13B" "EBI3"    
## [13] "TGFB1"    "C5"       "CCL2"     "VEGFA"    "TNFSF4"   "SPP1"    
## [19] "TNFSF10"  "IL1B"     "PSPN"     "TNFSF9"   "C3"       "IL33"    
## [25] "FGF2"     "EGF"      "CXCL14"   "CTF1"     "IL18"     "CCL28"   
## [31] "IL34"     "TNFSF13"  "CXCL5"    "IL15"     "GDNF"     "IL12A"   
## [37] "CXCL8"    "IL16"     "IL17D"    "NOG"      "CSF1"     "TNFSF12" 
## [43] "CXCL13"   "IL7"      "CXCL17"   "IL1A"     "TNFSF8"   "IFNA13"  
## [49] "IFNA2"

Bulk data

The following cytokines were exclusively expressed in the bulk data and do not appear in the single nuclei list:

# Getting unique genes expressed in bulk data
bulk_unique_genes <- setdiff(list_expr_merged$Bulk, unlist(list_expr_merged[-1]))
print(bulk_unique_genes)
## [1] "CXCL2" "IL11"  "CCL2"  "CXCL5" "IL12A" "CXCL8"

Bulk and single nuclei

The following cytokines are expressed both in the bulk and single nuclei data (at least one cell type):

# Expressed genes in bulk data
genes_bulk <- list_expr_merged$Bulk
# Genes expressed in at least one cell type in single nuclei data.
genes_cell_type <- unlist(list_expr_merged[-1])
# Intersection of genes expressed in bulk RNAseq and single nuclei RNAseq datasets
genes_bulk_and_cell_type <- intersect(genes_bulk, genes_cell_type)
# Expressed genes both at bulk and single nuclei data
print (genes_bulk_and_cell_type)
##  [1] "CX3CL1"   "IL32"     "DCN"      "IGF1"     "HGF"      "KITLG"   
##  [7] "THPO"     "FLT3LG"   "TNFSF13B" "EBI3"     "TGFB1"    "C5"      
## [13] "VEGFA"    "TNFSF4"   "SPP1"     "TNFSF10"  "IL1B"     "PSPN"    
## [19] "TNFSF9"   "C3"       "IL33"     "FGF2"     "EGF"      "CXCL14"  
## [25] "CTF1"     "IL18"     "CCL28"    "IL34"     "TNFSF13"  "IL15"    
## [31] "GDNF"     "IL16"     "IL17D"    "NOG"      "CSF1"     "TNFSF12"

Only single nuclei

The following cytokines were exclusively expressed in the single nuclei data and do not appear in the bulk list:

# Genes expressed in at least one cell type
genes_cell_type <- unlist(list_expr_merged[-1])

# Expressed genes in bulk data
genes_bulk <- list_expr_merged$Bulk

# Obtain genes exclusively expressed in the cell types and not in the bulk
sn_unique_genes <- setdiff(genes_cell_type, genes_bulk)

print(sn_unique_genes)
## [1] "CXCL13" "IL7"    "CXCL17" "IL1A"   "TNFSF8" "IFNA13" "IFNA2"

All cell types and bulk

The following cytokines are expressed by all cell types:

genes_microglia <- list_expr_merged$Microglia
genes_excitatory_neurons <- list_expr_merged$"Excitatory neurons"
genes_inhibitory_neurons <- list_expr_merged$"Inhibitory neurons"
genes_astrocytes <- list_expr_merged$Astrocytes
genes_opc_cells <- list_expr_merged$"OPC cells"
genes_endothelial_cells <- list_expr_merged$"Endothelial cells"
genes_oligodendrocytes <- list_expr_merged$"Oligodendrocytes"

# Intersection
expr_all_data <- Reduce(intersect, list(genes_microglia, genes_excitatory_neurons, genes_inhibitory_neurons, genes_astrocytes, genes_opc_cells, genes_endothelial_cells, genes_oligodendrocytes))

print(expr_all_data)
## [1] "SPP1"    "FGF2"    "KITLG"   "CX3CL1"  "TNFSF12" "TGFB1"

Only in oligodendrocytes

The following cytokines were exclusively expressed in oligodendrocytes:

# Get genes expressed in oligodendrocytes
genes_oligodendrocytes <- list_expr_merged$"Oligodendrocytes"

# Filter to get genes expressed without oli
filtered_data <- unlist(list_expr_merged[-which(names(list_expr_merged) == "Oligodendrocytes")])

# Get genes expressed exclusively in oligodendrocytes
vip_cytokines_oli <- setdiff(genes_oligodendrocytes, filtered_data)

print(vip_cytokines_oli)
## [1] "IFNA13" "IFNA2"

Only in microglia

The following cytokines were exclusively expressed in microglia:

# Get expressed genes on microglia
genes_microglia <- list_expr_merged$Microglia

# Filter data to get all the expressed genes without microglia
filtered_genes <- unlist(list_expr_merged[-which(names(list_expr_merged) == "Microglia")])

# Get only the expressed genes on mic
vip_cytokines_mic <- setdiff(genes_microglia, filtered_genes)

print(vip_cytokines_mic)
## [1] "IL1A"   "TNFSF8"

Only in neurons

The following cytokines were exclusively expressed in excitatory and inhibitory neurons:

# Get expressed genes in ext
genes_excitatory_neurons <- list_expr_merged$"Excitatory neurons"

# Get expressed genes in inh
genes_inhibitory_neurons <- list_expr_merged$"Inhibitory neurons"

# Filter data without ext, inh
filtered_data <- unlist(list_expr_merged[-which(names(list_expr_merged) %in% c("Excitatory neurons", "Inhibitory neurons"))])

# Get expressed genes only expressed in neurons
vip_cytokines_neurons <- setdiff(intersect(genes_excitatory_neurons, genes_inhibitory_neurons), filtered_data)

print(vip_cytokines_neurons)
## [1] "CXCL13"

Bulk and excitatory neurons

The following cytokines were exclusively expressed in the bulk and excitatory neurons:

# Get expressed genes in bulk
genes_bulk <- list_expr_merged$Bulk

# Get expressed genes in ext
genes_excitatory_neurons <- list_expr_merged$"Excitatory neurons"

# Intersection btw ext and bulk
cytokines_bulk_ext <- intersect(genes_bulk, genes_excitatory_neurons)

# Filter to remove other cell types
vip_cytokines_bulk_ext <- setdiff(cytokines_bulk_ext, unlist(list_expr_merged[-which(names(list_expr_merged) %in% c("Excitatory neurons", "Bulk"))]))

print(vip_cytokines_bulk_ext)
## [1] "THPO"  "CCL28"

Bulk and inhibitory neurons

The following cytokines were exclusively expressed in the bulk and inhibitory neurons:

# Get expressed genes in bulk
genes_bulk <- list_expr_merged$Bulk

# Get expressed genes in inh
genes_inhibitory_neurons <- list_expr_merged$"Inhibitory neurons"

# Get expressed genes bulk and inh
cytokines_bulk_inh <- intersect(genes_bulk, genes_inhibitory_neurons)

# Filter to remove other cell types
vip_cytokines_bulk_inh <- setdiff(cytokines_bulk_inh, unlist(list_expr_merged[-which(names(list_expr_merged) %in% c("Inhibitory neurons", "Bulk"))]))

print(vip_cytokines_bulk_inh)
## [1] "NOG"

Bulk and microglia

The following cytokines were exclusively expressed in the bulk and microglia:

# Get expressed bulk genes
genes_bulk <- list_expr_merged$Bulk

# Get expressed genes in mic
genes_microglia <- list_expr_merged$Microglia

# Intersection bulk and mic
cytokines_bulk_mic <- intersect(genes_bulk, genes_microglia)

# Filter to remove other cell types
vip_cytokines_bulk_mic <- setdiff(cytokines_bulk_mic, unlist(list_expr_merged[-which(names(list_expr_merged) %in% c("Microglia", "Bulk"))]))

print(vip_cytokines_bulk_mic)
## [1] "EBI3" "IL1B"

Bulk and astrocytes

The following cytokines were exclusively expressed in the bulk and astrocytes:

# Get expressed bulk genes
genes_bulk <- list_expr_merged$Bulk

# Get expressed astrocytes genes
genes_astrocytes <- list_expr_merged$Astrocytes

# Intersection btw ast and bulk
cytokines_bulk_ast <- intersect(genes_bulk, genes_astrocytes)

# filter to remove the expression from other cell types
vip_cytokines_bulk_ast <- setdiff(cytokines_bulk_ast, unlist(list_expr_merged[-which(names(list_expr_merged) %in% c("Astrocytes", "Bulk"))]))

print(vip_cytokines_bulk_ast)
## [1] "IL33" "CTF1"

Bulk and endothelial cells

The following cytokines were exclusively expressed in the bulk and endothelial cells:

# Get the genes expressed in bulk
genes_bulk <- list_expr_merged$Bulk

# Get the genes expressed in endothelial cells
genes_endothelial_cells <- list_expr_merged$"Endothelial cells"

# Find the intersection of the sets of genes expressed in bulk and endothelial cells
cytokines_bulk_end <- intersect(genes_bulk, genes_endothelial_cells)

# Filter the intersection to remove genes expressed in other cell types.
vip_cytokines_bulk_end <- setdiff(cytokines_bulk_end, unlist(list_expr_merged[-which(names(list_expr_merged) %in% c("Endothelial cells", "Bulk"))]))

print(vip_cytokines_bulk_end)
## [1] "IL32"

Session info

sessionInfo()
## R version 4.3.2 (2023-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 11 x64 (build 26100)
## 
## Matrix products: default
## 
## 
## locale:
## [1] LC_COLLATE=Portuguese_Brazil.utf8  LC_CTYPE=Portuguese_Brazil.utf8   
## [3] LC_MONETARY=Portuguese_Brazil.utf8 LC_NUMERIC=C                      
## [5] LC_TIME=Portuguese_Brazil.utf8    
## 
## time zone: America/Sao_Paulo
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] UpSetR_1.4.0    lubridate_1.9.3 forcats_1.0.0   stringr_1.5.1  
##  [5] purrr_1.0.2     readr_2.1.5     tidyr_1.3.1     tibble_3.2.1   
##  [9] tidyverse_2.0.0 ggplot2_3.5.0   dplyr_1.1.4    
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.9        utf8_1.2.4        generics_0.1.3    stringi_1.8.3    
##  [5] hms_1.1.3         digest_0.6.36     magrittr_2.0.3    evaluate_0.24.0  
##  [9] grid_4.3.2        timechange_0.3.0  fastmap_1.2.0     plyr_1.8.9       
## [13] jsonlite_1.8.8    gridExtra_2.3     fansi_1.0.6       scales_1.3.0     
## [17] jquerylib_0.1.4   cli_3.6.2         rlang_1.1.3       munsell_0.5.1    
## [21] withr_3.0.1       cachem_1.1.0      yaml_2.3.10       tools_4.3.2      
## [25] tzdb_0.4.0        colorspace_2.1-0  vctrs_0.6.5       R6_2.5.1         
## [29] lifecycle_1.0.4   pkgconfig_2.0.3   pillar_1.9.0      bslib_0.8.0      
## [33] gtable_0.3.5      glue_1.7.0        Rcpp_1.0.12       xfun_0.46        
## [37] tidyselect_1.2.1  highr_0.11        rstudioapi_0.16.0 knitr_1.48       
## [41] farver_2.1.1      htmltools_0.5.8.1 rmarkdown_2.27    labeling_0.4.3   
## [45] compiler_4.3.2