Background

Neuron-supporting glial cells called astrocytes are the source of the extremely aggressive brain cancer known as glioblastoma. Fast development and the ability to penetrate and kill nearby healthy brain tissue are two of this cancer’s well-known traits. Although it is more commonly diagnosed in older persons, glioblastoma can occur at any age.

The molecular and genetic basis of glioblastoma must be understood because of the disease’s severe nature and the difficulties in treating it. Finding highly elevated and downregulated genes will be the goal of this project’s analysis of gene expression data from glioblastoma samples. Our objective is to identify critical pathways contributing to the advancement of glioblastoma by functional enrichment analysis. This could facilitate the creation of tailored therapeutics and enhanced approaches to management.

Data and Loading Preprocessing

### Load Necessary Libraries

if (!requireNamespace("BiocManager", quietly = TRUE)) {
  install.packages("BiocManager")
}
BiocManager::install("DESeq2")
## Bioconductor version 3.19 (BiocManager 1.30.25), R 4.4.1 (2024-06-14 ucrt)
## Warning: package(s) not installed when version(s) same as or greater than current; use
##   `force = TRUE` to re-install: 'DESeq2'
## Installation paths not writeable, unable to update packages
##   path: C:/Program Files/R/R-4.4.1/library
##   packages:
##     boot, foreign, MASS, nlme, survival
## Old packages: 'Deriv', 'digest', 'httr2', 'lpSolve', 'ps', 'ragg',
##   'RcppArmadillo', 'reactR', 'tinytex', 'xfun', 'yaml'
# Load the libraries
library(readr)
library(gplots)
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(Amelia)
## Loading required package: Rcpp
## ## 
## ## Amelia II: Multiple Imputation
## ## (Version 1.8.2, built: 2024-04-10)
## ## Copyright (C) 2005-2024 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
library(DESeq2)
## Loading required package: S4Vectors
## Loading required package: stats4
## Loading required package: BiocGenerics
## 
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:dplyr':
## 
##     combine, intersect, setdiff, union
## The following objects are masked from 'package:stats':
## 
##     IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
## 
##     anyDuplicated, aperm, append, as.data.frame, basename, cbind,
##     colnames, dirname, do.call, duplicated, eval, evalq, Filter, Find,
##     get, grep, grepl, intersect, is.unsorted, lapply, Map, mapply,
##     match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
##     Position, rank, rbind, Reduce, rownames, sapply, setdiff, table,
##     tapply, union, unique, unsplit, which.max, which.min
## 
## Attaching package: 'S4Vectors'
## The following objects are masked from 'package:dplyr':
## 
##     first, rename
## The following object is masked from 'package:gplots':
## 
##     space
## The following object is masked from 'package:utils':
## 
##     findMatches
## The following objects are masked from 'package:base':
## 
##     expand.grid, I, unname
## Loading required package: IRanges
## 
## Attaching package: 'IRanges'
## The following objects are masked from 'package:dplyr':
## 
##     collapse, desc, slice
## The following object is masked from 'package:grDevices':
## 
##     windows
## Loading required package: GenomicRanges
## Loading required package: GenomeInfoDb
## Loading required package: SummarizedExperiment
## Loading required package: MatrixGenerics
## Loading required package: matrixStats
## 
## Attaching package: 'matrixStats'
## The following object is masked from 'package:dplyr':
## 
##     count
## 
## Attaching package: 'MatrixGenerics'
## The following objects are masked from 'package:matrixStats':
## 
##     colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse,
##     colCounts, colCummaxs, colCummins, colCumprods, colCumsums,
##     colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs,
##     colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats,
##     colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds,
##     colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads,
##     colWeightedMeans, colWeightedMedians, colWeightedSds,
##     colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet,
##     rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods,
##     rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps,
##     rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins,
##     rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks,
##     rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars,
##     rowWeightedMads, rowWeightedMeans, rowWeightedMedians,
##     rowWeightedSds, rowWeightedVars
## Loading required package: Biobase
## Welcome to Bioconductor
## 
##     Vignettes contain introductory material; view with
##     'browseVignettes()'. To cite Bioconductor, see
##     'citation("Biobase")', and for packages 'citation("pkgname")'.
## 
## Attaching package: 'Biobase'
## The following object is masked from 'package:MatrixGenerics':
## 
##     rowMedians
## The following objects are masked from 'package:matrixStats':
## 
##     anyMissing, rowMedians
library(gplots)

Read and Prepare the Data set

# Read in the data set
Glioblastoma_data <- read.csv("C:/Users/user/Desktop/Hackbio/Hackiobio/glioblastoma_data.csv")

# View the data
head(Glioblastoma_data)
##              ...1 TCGA.19.4065.02A.11R.2005.01 TCGA.19.0957.02A.11R.2005.01
## 1 ENSG00000272398                          763                         4526
## 2 ENSG00000135439                         2759                         8384
## 3 ENSG00000130348                          939                          850
## 4 ENSG00000198719                          231                         1266
## 5 ENSG00000169429                          540                          512
## 6 ENSG00000171608                         1282                          720
##   TCGA.06.0152.02A.01R.2005.01 TCGA.14.1402.02A.01R.2005.01
## 1                          683                         1820
## 2                         2763                          294
## 3                         1250                         1398
## 4                          817                          459
## 5                          655                         2891
## 6                         1694                          264
##   TCGA.14.0736.02A.01R.2005.01 TCGA.06.5410.01A.01R.1849.01
## 1                         3113                          284
## 2                          715                          819
## 3                          519                          982
## 4                          114                          305
## 5                         1194                        41877
## 6                          342                         2286
##   TCGA.19.5960.01A.11R.1850.01 TCGA.14.0781.01B.01R.1849.01
## 1                       491251                          949
## 2                        83504                          771
## 3                        59301                         1060
## 4                       165404                          337
## 5                          135                         7248
## 6                          413                         1181
##   TCGA.02.2483.01A.01R.1849.01 TCGA.06.2570.01A.01R.1849.01
## 1                        22400                         9955
## 2                         1504                        21358
## 3                         1553                         1716
## 4                         5404                         4069
## 5                         1911                         3736
## 6                        31702                         1190
tail(Glioblastoma_data)
##                ...1 TCGA.19.4065.02A.11R.2005.01 TCGA.19.0957.02A.11R.2005.01
## 577 ENSG00000135679                         2720                       139511
## 578 ENSG00000132432                         4399                         2629
## 579 ENSG00000163359                       145767                         2658
## 580 ENSG00000130635                       178000                         2292
## 581 ENSG00000240583                         2640                        71274
## 582 ENSG00000108821                       688102                         5620
##     TCGA.06.0152.02A.01R.2005.01 TCGA.14.1402.02A.01R.2005.01
## 577                         4017                         3366
## 578                        62671                        73380
## 579                         4185                          540
## 580                         7071                         2128
## 581                         5641                        22766
## 582                        29933                         2755
##     TCGA.14.0736.02A.01R.2005.01 TCGA.06.5410.01A.01R.1849.01
## 577                         1690                         4553
## 578                        11773                         3645
## 579                          410                         4167
## 580                          248                         5669
## 581                       168871                         8446
## 582                         2169                        27512
##     TCGA.19.5960.01A.11R.1850.01 TCGA.14.0781.01B.01R.1849.01
## 577                         1723                         5375
## 578                         2468                         6383
## 579                          328                         3475
## 580                          859                         9816
## 581                        27033                        11259
## 582                         1229                        31020
##     TCGA.02.2483.01A.01R.1849.01 TCGA.06.2570.01A.01R.1849.01
## 577                         3569                         3093
## 578                         5134                         2166
## 579                         1991                          640
## 580                         3033                          962
## 581                         6072                         7705
## 582                        13036                         5623
str(Glioblastoma_data)
## 'data.frame':    582 obs. of  11 variables:
##  $ ...1                        : chr  "ENSG00000272398" "ENSG00000135439" "ENSG00000130348" "ENSG00000198719" ...
##  $ TCGA.19.4065.02A.11R.2005.01: int  763 2759 939 231 540 1282 647 377 764 188 ...
##  $ TCGA.19.0957.02A.11R.2005.01: int  4526 8384 850 1266 512 720 645 1211 597 1536 ...
##  $ TCGA.06.0152.02A.01R.2005.01: int  683 2763 1250 817 655 1694 1065 186 606 509 ...
##  $ TCGA.14.1402.02A.01R.2005.01: int  1820 294 1398 459 2891 264 879 124 695 311 ...
##  $ TCGA.14.0736.02A.01R.2005.01: int  3113 715 519 114 1194 342 476 1465 312 112 ...
##  $ TCGA.06.5410.01A.01R.1849.01: int  284 819 982 305 41877 2286 795 1030 613 253 ...
##  $ TCGA.19.5960.01A.11R.1850.01: int  491251 83504 59301 165404 135 413 42065 1582 24579 486 ...
##  $ TCGA.14.0781.01B.01R.1849.01: int  949 771 1060 337 7248 1181 1098 1454 821 79 ...
##  $ TCGA.02.2483.01A.01R.1849.01: int  22400 1504 1553 5404 1911 31702 907 13392 851 19548 ...
##  $ TCGA.06.2570.01A.01R.1849.01: int  9955 21358 1716 4069 3736 1190 845 35646 703 1115 ...
summary(Glioblastoma_data)
##      ...1           TCGA.19.4065.02A.11R.2005.01 TCGA.19.0957.02A.11R.2005.01
##  Length:582         Min.   :     0.0             Min.   :     0.0            
##  Class :character   1st Qu.:     1.0             1st Qu.:     1.0            
##  Mode  :character   Median :     7.5             Median :     6.0            
##                     Mean   :  2119.7             Mean   :   809.1            
##                     3rd Qu.:    64.8             3rd Qu.:    46.0            
##                     Max.   :688102.0             Max.   :139511.0            
##  TCGA.06.0152.02A.01R.2005.01 TCGA.14.1402.02A.01R.2005.01
##  Min.   :    0.00             Min.   :    0.00            
##  1st Qu.:    1.00             1st Qu.:    1.00            
##  Median :    5.00             Median :    8.50            
##  Mean   :  484.93             Mean   :  406.76            
##  3rd Qu.:   27.75             3rd Qu.:   47.75            
##  Max.   :77150.00             Max.   :73380.00            
##  TCGA.14.0736.02A.01R.2005.01 TCGA.06.5410.01A.01R.1849.01
##  Min.   :     0               Min.   :    0.0             
##  1st Qu.:     3               1st Qu.:    1.0             
##  Median :    27               Median :    6.0             
##  Mean   :  1202               Mean   :  381.1             
##  3rd Qu.:   172               3rd Qu.:   38.0             
##  Max.   :168871               Max.   :41877.0             
##  TCGA.19.5960.01A.11R.1850.01 TCGA.14.0781.01B.01R.1849.01
##  Min.   :     0               Min.   :    0.0             
##  1st Qu.:     0               1st Qu.:    1.0             
##  Median :     3               Median :    4.0             
##  Mean   :  1732               Mean   :  247.7             
##  3rd Qu.:    27               3rd Qu.:   24.0             
##  Max.   :491251               Max.   :31020.0             
##  TCGA.02.2483.01A.01R.1849.01 TCGA.06.2570.01A.01R.1849.01
##  Min.   :    0.00             Min.   :    0.0             
##  1st Qu.:    0.25             1st Qu.:    0.0             
##  Median :    4.00             Median :    3.0             
##  Mean   :  360.45             Mean   :  303.8             
##  3rd Qu.:   28.75             3rd Qu.:   23.0             
##  Max.   :31702.00             Max.   :35646.0
# Convert data to a data frame
Glioblastoma_data <- as.data.frame(Glioblastoma_data)

# Set rownames to gene identifiers
rownames(Glioblastoma_data) <- Glioblastoma_data[, 1]
Glioblastoma_data <- Glioblastoma_data[, -1]  # Remove the first column which is now the rownames

# Transpose the data to match DESeq2 format
Glioblastoma_data_TRAN <- t(Glioblastoma_data)

# Check for missing data in the glioblastoma_data dataset
missmap(Glioblastoma_data)

Create Sample Metadata

# Create the data frame for colData
Glioblastoma_Info <- data.frame(row.names = rownames(Glioblastoma_data_TRAN))

# Assign tissue types based on the barcode
Glioblastoma_Info$tissue_type <- sapply(rownames(Glioblastoma_Info), function(barcode) {
  Gene_type <- substr(barcode, 14, 15)
  switch(Gene_type,
         "01" = "Solid Tissue Normal",
         "02" = "Primary Tumor",
         "06" = "Metastatic",
         "11" = "Solid Tissue Normal",
         "12" = "Primary Blood Derived Cancer",
         "14" = "Primary Blood Derived Cancer",
         "Unknown")
})

# Display the first few rows of the data frame
head(Glioblastoma_Info)
##                                      tissue_type
## TCGA.19.4065.02A.11R.2005.01       Primary Tumor
## TCGA.19.0957.02A.11R.2005.01       Primary Tumor
## TCGA.06.0152.02A.01R.2005.01       Primary Tumor
## TCGA.14.1402.02A.01R.2005.01       Primary Tumor
## TCGA.14.0736.02A.01R.2005.01       Primary Tumor
## TCGA.06.5410.01A.01R.1849.01 Solid Tissue Normal
# Check if rownames in Glioblastoma_Info match the column names in Glioblastoma_data 
all(rownames(Glioblastoma_Info) %in% colnames(Glioblastoma_data ))  # Should return TRUE
## [1] TRUE
all(rownames(Glioblastoma_Info) == colnames(Glioblastoma_data ))    # Should return TRUE
## [1] TRUE

DESeq2 Analysis

# Rounding the data for DESeq2
Glioblastoma_data <- round(Glioblastoma_data)

# Create DESeq2 dataset
dds <- DESeqDataSetFromMatrix(countData = Glioblastoma_data, colData = Glioblastoma_Info, design = ~tissue_type)
## converting counts to integer mode
## Warning in DESeqDataSet(se, design = design, ignoreRank): some variables in
## design formula are characters, converting to factors
##   Note: levels of factors in the design contain characters other than
##   letters, numbers, '_' and '.'. It is recommended (but not required) to use
##   only letters, numbers, and delimiters '_' or '.', as these are safe characters
##   for column names in R. [This is a message, not a warning or an error]
# Filter low count genes
keep <- rowSums(counts(dds)) >= 10
dds <- dds[keep, ]

# Relevel the reference group for comparison
dds$tissue_type <- relevel(dds$tissue_type, ref = "Solid Tissue Normal")

# Run DESeq analysis
dds <- DESeq(dds)
## estimating size factors
##   Note: levels of factors in the design contain characters other than
##   letters, numbers, '_' and '.'. It is recommended (but not required) to use
##   only letters, numbers, and delimiters '_' or '.', as these are safe characters
##   for column names in R. [This is a message, not a warning or an error]
## estimating dispersions
## gene-wise dispersion estimates
## mean-dispersion relationship
##   Note: levels of factors in the design contain characters other than
##   letters, numbers, '_' and '.'. It is recommended (but not required) to use
##   only letters, numbers, and delimiters '_' or '.', as these are safe characters
##   for column names in R. [This is a message, not a warning or an error]
## final dispersion estimates
## fitting model and testing
# Extract results
Res <- results(dds)
Res <- results(dds, alpha = 0.05)  # Apply p-value threshold
summary(Res)
## 
## out of 582 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up)       : 25, 4.3%
## LFC < 0 (down)     : 78, 13%
## outliers [1]       : 261, 45%
## low counts [2]     : 43, 7.4%
## (mean count < 5)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results

Filter Results

# Apply adjusted p-value cutoff (alpha = 0.05)
Res0.01 <- results(dds, alpha = 0.05)

# Filter for upregulated and downregulated genes (log2 fold change threshold of 2)
Res_filtered <- subset(Res0.01, log2FoldChange > 2 | log2FoldChange < -2)

# View summary of filtered results
summary(Res_filtered)
## 
## out of 454 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up)       : 25, 5.5%
## LFC < 0 (down)     : 78, 17%
## outliers [1]       : 229, 50%
## low counts [2]     : 41, 9%
## (mean count < 5)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
# Separate upregulated and downregulated genes
Upregulated <- Res_filtered[Res_filtered$log2FoldChange > 2, ]
Downregulated <- Res_filtered[Res_filtered$log2FoldChange < -2, ]

# Save upregulated genes to a CSV file
write.csv(Upregulated, file = "Upregulated_genes2.csv", row.names = TRUE)

# Save downregulated genes to a CSV file
write.csv(Downregulated, file = "Downregulated_genes2.csv", row.names = TRUE)

Volcano Plot Analysis

The Plot function creates a scatter plot of log fold change vs. negative log of p-values. - Points are colored red if the p-value is less than 0.05, indicating statistical significance. - A horizontal blue dashed line is added to indicate the significance threshold.

Prepare Gene Lists for Functional Enrichment

# Extract the rownames (gene names) of the upregulated genes
Upregulated_genes <- rownames(Upregulated)

# Save the upregulated gene names to a CSV file for functional enrichment
write.csv(Upregulated_genes, file = "Upregulated_genes_list.csv", row.names = FALSE)

# Extract the rownames (gene names) of the downregulated genes
Downregulated_genes <- rownames(Downregulated)

# Save the downregulated gene names to a CSV file for functional enrichment
write.csv(Downregulated_genes, file = "Downregulated_genes_list.csv", row.names = FALSE)

Select 20 UPregulated Genes and 20 Downregulated Genes

# Separate upregulated and downregulated genes
Upregulated_2<- Res_filtered[Res_filtered$log2FoldChange > 2, ]
Downregulated_2<- Res_filtered[Res_filtered$log2FoldChange < -2, ]

# Sort upregulated and downregulated genes by their log2FoldChange
sorted_upregulated <- Upregulated[order(-Upregulated$log2FoldChange), ]  # Sort by decreasing log2FoldChange
sorted_downregulated <- Downregulated[order(Downregulated$log2FoldChange), ]  # Sort by increasing log2FoldChange

# Get the top 20 upregulated and downregulated genes
top_20_upregulated <- head(sorted_upregulated, 20)
top_20_downregulated <- head(sorted_downregulated, 20)

# View the top 10 upregulated and downregulated genes
top_20_upregulated
## log2 fold change (MLE): tissue type Primary.Tumor vs Solid.Tissue.Normal 
## Wald test p-value: tissue type Primary.Tumor vs Solid.Tissue.Normal 
## DataFrame with 20 rows and 6 columns
##                  baseMean log2FoldChange     lfcSE      stat    pvalue
##                 <numeric>      <numeric> <numeric> <numeric> <numeric>
## ENSG00000198573   26.5725       21.11743   2.48464   8.49918        NA
## ENSG00000169550   14.2660       20.80701   2.68386   7.75265        NA
## ENSG00000227234  106.9928        9.59369   2.56930   3.73396        NA
## ENSG00000231317   71.2125        8.88317   2.11578   4.19853        NA
## ENSG00000211639   61.3815        8.78321   2.30742   3.80651        NA
## ...                   ...            ...       ...       ...       ...
## ENSG00000250993   6.19091        5.51464   2.83965   1.94201        NA
## ENSG00000155495 125.79889        5.42014   1.81952   2.97889        NA
## ENSG00000272763  45.08340        5.39870   1.74348   3.09651        NA
## ENSG00000247345  72.80374        5.39808   1.88181   2.86855        NA
## ENSG00000163646   8.65058        5.39674   2.42496   2.22549        NA
##                      padj
##                 <numeric>
## ENSG00000198573        NA
## ENSG00000169550        NA
## ENSG00000227234        NA
## ENSG00000231317        NA
## ENSG00000211639        NA
## ...                   ...
## ENSG00000250993        NA
## ENSG00000155495        NA
## ENSG00000272763        NA
## ENSG00000247345        NA
## ENSG00000163646        NA
top_20_downregulated
## log2 fold change (MLE): tissue type Primary.Tumor vs Solid.Tissue.Normal 
## Wald test p-value: tissue type Primary.Tumor vs Solid.Tissue.Normal 
## DataFrame with 20 rows and 6 columns
##                   baseMean log2FoldChange     lfcSE      stat    pvalue
##                  <numeric>      <numeric> <numeric> <numeric> <numeric>
## ENSG00000257288    27.3341      -22.98761   2.44822  -9.38950        NA
## ENSG00000233941    56.4191      -22.65230   2.62128  -8.64170        NA
## ENSG00000257541    12.6726      -21.94458   2.65977  -8.25057        NA
## ENSG00000223528   748.9305       -9.01709   2.13982  -4.21395        NA
## ENSG00000235142    93.0452       -8.03376   2.25865  -3.55689        NA
## ...                    ...            ...       ...       ...       ...
## ENSG00000286351    17.3129       -6.33261   2.21201  -2.86283        NA
## ENSG00000178919    32.0847       -6.32057   1.98474  -3.18459 0.0014496
## ENSG00000198719 23385.8008       -6.14107   1.42865  -4.29851        NA
## ENSG00000242021    10.0423       -6.11058   2.14533  -2.84833 0.0043950
## ENSG00000129514    60.0921       -6.09425   1.65635  -3.67932        NA
##                      padj
##                 <numeric>
## ENSG00000257288        NA
## ENSG00000233941        NA
## ENSG00000257541        NA
## ENSG00000223528        NA
## ENSG00000235142        NA
## ...                   ...
## ENSG00000286351        NA
## ENSG00000178919 0.0171300
## ENSG00000198719        NA
## ENSG00000242021 0.0203635
## ENSG00000129514        NA
# Save top 20 upregulated genes to CSV
write.csv(top_20_upregulated, file = "top_20_upregulated_genes.csv", row.names = TRUE)

# Save top 20 downregulated genes to CSV
write.csv(top_20_downregulated, file = "top_20_downregulated_genes.csv", row.names = TRUE)

Visualization: Using Heatmaps

Sequential

For Rows

For column

For both clusters

Enrichment Analysis

Enrichment pathways identify which biological pathways are overrepresented among differentially expressed genes in glioblastoma. Gene lists are prepared, enrichment analysis is conducted, and significant pathways are visualized using bar plots to highlight key pathways involved in the disease.

##   Enrichment.FDR nGenes Pathway.Genes Fold.Enrichment
## 1   0.0000002120     11            99       11.992138
## 2   0.0001270810      8            93        9.284236
## 3   0.0015828410      7            99        7.631361
## 4   0.0000000663     18           294        6.607913
## 5   0.0344762110      5            85        6.348779
## 6   0.0137121320      6           103        6.287141
##                                                                       Pathway
## 1 Path:hsa04061 Viral protein interaction with cytokine and cytokine receptor
## 2                                       Path:hsa04657 IL-17 signaling pathway
## 3                                    Path:hsa04640 Hematopoietic cell lineage
## 4                        Path:hsa04060 Cytokine-cytokine receptor interaction
## 5                           Path:hsa04610 Complement and coagulation cascades
## 6                              Path:hsa04974 Protein digestion and absorption
##                                                    URL
## 1 http://www.genome.jp/kegg-bin/show_pathway?hsa04061 
## 2 http://www.genome.jp/kegg-bin/show_pathway?hsa04657 
## 3 http://www.genome.jp/kegg-bin/show_pathway?hsa04640 
## 4 http://www.genome.jp/kegg-bin/show_pathway?hsa04060 
## 5 http://www.genome.jp/kegg-bin/show_pathway?hsa04610 
## 6 http://www.genome.jp/kegg-bin/show_pathway?hsa04974 
##                                                                                                                   Genes
## 1                                           CXCL13  IL24  CXCL8  CXCL10  CXCL9  PPBP  CCL7  CCL13  CCL17  CCL19  CXCL11
## 2                                                                   CSF2  CSF3  CXCL8  CXCL10  LCN2  MMP13  CCL7  CCL17
## 3                                                                                 CR1  CR2  CSF2  CSF3  EPO  CD1B  CD8B
## 4  CXCL13  IL24  CSF2  CSF3  GDF7  EPO  CXCL8  INHBC  CXCL10  LEP  CXCL9  PPBP  CCL7  CCL13  CCL17  CCL19  CXCL11  GDF3
## 5                                                                                         CR1  CR2  SERPIND1  C4BPA  C6
## 6                                                                         COL1A1  COL5A1  COL6A3  COL7A1  COL10A1  CPA3

Conclusion

This analysis has revealed significant differentially expressed genes (DEGs) in glioblastoma and highlighted essential biological pathways that contribute to tumor progression. The enriched pathways associated with cell growth, invasion, and resistance to apoptosis underscore their role in the aggressive nature of glioblastoma. These insights enhance our understanding of the molecular mechanisms underlying the disease, indicating potential targets for new treatment strategies. By concentrating on the pathways most affected in glioblastoma, future therapeutic approaches could focus on inhibiting tumor growth and enhancing patient survival, leading to more personalized treatment options for this highly lethal brain cancer.