1. 项目概述
在肿瘤研究中,DNA甲基化作为表观遗传学的重要调控机制,其异常变化与肿瘤的发生、发展和预后密切相关。TCGA(The Cancer Genome Atlas)数据库提供了大量肿瘤样本的甲基化数据,为研究者开展甲基化与肿瘤分子表型的关联分析提供了宝贵资源。本系列文章旨在分享基于TCGA甲基化数据进行数据挖掘和分子表型验证的完整流程代码。
在前两期内容中,我们已经完成了甲基化数据的基础分析,包括数据下载、预处理、差异甲基化位点分析等。本期将聚焦于更深入的生物学问题解析,主要包括:
- 特定基因甲基化信号值的可视化比较
- 生存分析(Kaplan-Meier曲线和Cox回归)
- AUC分析等高级分析方法
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据准备与预处理
2.1 数据加载与整理
首先需要加载前期处理好的甲基化数据和临床数据:
r复制# 加载甲基化数据
load('./00.data/pangguangai_21paired_meLoad_data_412481.Rdata')
# 读取临床数据
dd = read.delim('../00.data/clinical.tsv')
2.2 数据质量控制
在进行深入分析前,需要对数据进行严格的质量控制:
- 样本筛选:确保只包含肿瘤样本
r复制sample$sample_type_fix[sample$sample_type_fix=='Primary Tumor']='Tumor'
exp = normalized_counts[,sample$sample_type_fix %in% "Tumor"]
- 临床数据处理:
- 转换生存时间为月份单位
- 定义事件状态(0=存活,1=死亡)
- 处理年龄分组
r复制meta$time = ifelse(meta$vital_status == 'Alive',meta$days_to_last_follow_up,meta$days_to_death)
meta$time = as.numeric(meta$time)/30
meta$event = ifelse(meta$vital_status== 'Alive',0,1)
meta$age = ceiling(abs(as.numeric(meta$days_to_birth))/365)
meta$age_group=ifelse(meta$age>median(meta$age,na.rm = T),'older','younger')
3. 甲基化信号值可视化分析
3.1 单个基因甲基化水平比较
我们可以通过折线图和柱状图展示特定基因在不同样本组中的甲基化水平差异。以IFFO1基因为例:
r复制# 设置颜色
color <- c("#E63863","#0228A5")
gene <- "IFFO1"
# 提取目标基因数据
marker_plot_sub = marker_plot[marker_plot$gene %in% gene,]
# 绘制折线图
ggplot(marker_plot_sub, aes(x = rowname, y = AVG, group = group, colour=group, shape= group, fill = group)) +
geom_line(size=0.5)+
geom_point(size=3)+
geom_text(aes(label=AVG),position = position_dodge(.9),vjust =-1,hjust=1.3)+
scale_shape_manual(values = c(24,22)) +
scale_fill_manual(values =color)+
scale_color_manual(values = color)+
labs(x="",y="β value", title = "IFFO1", subtitle = "Padj < 0.00001 & |logFC| >= 0.4") +
theme(
axis.text.x = element_text(size = 12,colour="black"),
axis.text.y = element_text(size = 12,colour="black"),
axis.
