본문 바로가기

논문 및 데이터 분석

[MAST, limma, DESeq2] 공통 DEGs 분석

# MAST, limma, DESeq2에서 추출한 DEG의 rownames (유전자 이름)을 각각 가져옵니다.
degs_mast_genes <- rownames(degs_mast_filtered)  # MAST에서 필터링된 DEG
degs_limma_genes <- rownames(degs_limma_filtered)  # limma에서 필터링된 DEG
degs_deseq2_genes <- rownames(degs_deseq2_filtered)  # DESeq2에서 필터링된 DEG

# 세 가지 방법에서 공통된 DEG 찾기
common_degs <- Reduce(intersect, list(degs_mast_genes, degs_limma_genes, degs_deseq2_genes))

# 공통 DEG 개수 확인
length(common_degs)

# 공통된 DEGs에 대한 정보를 가져오기
common_degs_data <- degs_deseq2_filtered[common_degs, ]  # 여기서는 DESeq2 결과를 사용

# 결과 확인
head(common_degs_data)

# 필요한 패키지 로드
library(ggplot2)

# Volcano plot 그리기
ggplot(common_degs_data, aes(x = log2FoldChange, y = -log10(padj))) +
  geom_point(aes(color = log2FoldChange > 0), size = 1.5) +
  scale_color_manual(values = c("blue", "red")) +  # 다운레귤레이션(blue), 업레귤레이션(red)
  theme_minimal() +
  labs(title = "Volcano Plot of Common DEGs",
       x = "Log2 (Fold Change)",
       y = "-log10 (Adjusted P-Value)") +
  theme(plot.title = element_text(hjust = 0.5))

# 업레귤레이션된 유전자
up_regulated <- sum(common_degs_data$log2FoldChange > 0)

# 다운레귤레이션된 유전자
down_regulated <- sum(common_degs_data$log2FoldChange < 0)

cat("Up-regulated genes:", up_regulated, "\n")
cat("Down-regulated genes:", down_regulated, "\n")


# 필요한 패키지 설치 및 로드
if (!requireNamespace("pheatmap", quietly = TRUE)) {
  install.packages("pheatmap")
}
library(pheatmap)

# 공통된 DEGs에 대한 발현 데이터 추출 (D26과 D54 세포만)
expression_data <- counts_data[common_degs, ]  # 공통 DEGs의 발현 데이터

# Seurat 객체에서 D26과 D54 세포의 메타데이터(stage 정보)만 추출
stage_data <- seurat_object$stage

# D26과 D54 시점의 세포들만 필터링
d26_d54_cells <- which(stage_data %in% c("D26", "D54"))
expression_data <- expression_data[, d26_d54_cells]

# Z-score 정규화: 유전자별로 표준화를 수행하여 비교할 수 있도록 함
expression_data <- t(scale(t(expression_data)))


# stage 정보를 다시 저장
cell_stage <- stage_data[d26_d54_cells]


# 히트맵의 색상 팔레트 조정
pheatmap(expression_data, 
         annotation_col = data.frame(Stage = cell_stage),  # D26과 D54 시점 표시
         clustering_method = "ward.D2", 
         scale = "row", 
         color = colorRampPalette(c("blue", "white", "red"))(100),  # 색상 팔레트 설정
         show_rownames = FALSE, 
         show_colnames = FALSE, 
         main = "Hierarchical Clustering of Common DEGs")

# 클러스터링 방법을 변경해 시도 (예: complete linkage)
pheatmap(expression_data, 
         annotation_col = data.frame(Stage = cell_stage),
         clustering_method = "complete",  # 다른 클러스터링 방법 시도
         scale = "row", 
         color = colorRampPalette(c("blue", "white", "red"))(100),
         show_rownames = FALSE, 
         show_colnames = FALSE, 
         main = "Hierarchical Clustering of Common DEGs")

# 클러스터링 방법을 변경해 시도 (예: average)
pheatmap(expression_data, 
         annotation_col = data.frame(Stage = cell_stage),
         clustering_method = "average",  # 다른 클러스터링 방법 시도
         scale = "row", 
         color = colorRampPalette(c("blue", "white", "red"))(100),
         show_rownames = FALSE, 
         show_colnames = FALSE, 
         main = "Hierarchical Clustering of Common DEGs")

'논문 및 데이터 분석' 카테고리의 다른 글

Cell Ranger 설치 및 실행  (2) 2024.11.07
SRA Toolkit 사용해서 데이터 받기  (3) 2024.11.06
[Seurat][DESeq2] DEGs 분석  (0) 2024.09.19
[Seurat] [limma] DEG 분석  (0) 2024.09.19
[Seurat] [MAST] DEGs 분석  (0) 2024.09.19