前面我们强调了,基因功能推断的数据分析的重要性 ,而且我们已经演示了第一个基因的功能推断方法就是:大队列高低分组后差异分析然后功能富集 ,但实际情况下,我们的表达量并不是离散变量,它高低分组是我们认为划分的,未必不可以高中低的3分组,或者更多可能性,比如根据它的表达量的密度分布曲线来看最佳的阈值进行分组。实际上既然表达量是连续值,我们就可以直接使用连续变量的统计学方法,连续型变量就可以看相关性。
接下来我们就演示大队列表达量相关性排序后gsea分析,这个时候以2023的这个文章为例:《Comprehensive analysis reveals CCDC60 as a potential biomarker correlated with prognosis and immune infiltration of head and neck squamous cell carcinoma》,研究者们首先说明了Coiled-coil domain containing 60 (CCDC60) 这个基因在头颈癌是一个典型的抑癌基因:
首先呢,它在癌症样品里面的表达量所显著的低于正常的癌旁组织
典型的抑癌基因 很明显,Coiled-coil domain containing 60 (CCDC60) 这个基因也不是什么明星基因,那么就需要进行基因的功能推断。让我们一起来看看作者所如何做的吧,方法学是:
方法学 可能是研究者们不怎么懂代码,所以使用了LinkedOmics这个数据库,实际上自己很容易下载tcga数据库里面的头颈癌队列里面的转录组表达量矩阵,然后计算目标基因跟所有的其它基因的相关性,然后根据相关性进行排序,就能定位到跟目标基因的表达量最相关的那些基因:
根据相关性进行排序 有了相关性排序列表,同样的可以进行gsea分析或超几何分布检验,针对go或者kegg等生物学功能数据库。下面是一个示例代码:
load( file = 'step1-output.Rdata' ) dat[1 :4 ,1 :4 ] head(phe) this_gene = 'CCDC60' cc = apply(dat, 1 , function (x) cor( dat[this_gene,],x)) df = as.data.frame(cc) head(df) df$SYMBOL = rownames(df) df2 <- bitr(unique(df$SYMBOL), fromType = "SYMBOL" , toType = c( "ENTREZID" ), OrgDb = org.Hs.eg.db) DEG=merge(df2,df,by='SYMBOL' ) colnames(DEG) DEG =na.omit(DEG) data_all_sort <- DEG %>% #排序 arrange(desc(cc)) geneList = data_all_sort$cc #把foldchange按照从大到小提取出来 names(geneList) <- data_all_sort$ENTREZID #给上面提取的foldchange加上对应上ENTREZID head(geneList) #排序好的基因序列,而且是entrezeID的形式 R.utils::setOption( "clusterProfiler.download.method" ,'auto' ) kkgsea <- gseKEGG(geneList = geneList, organism = 'hsa' , minGSSize = 10 , maxGSSize = 500 , pvalueCutoff = 1 , pAdjustMethod = "none" ) #进行gseKEGG富集分析
文末友情宣传: 生信入门&数据挖掘线上直播课2025年1月班
时隔5年,我们的生信技能树VIP学徒继续招生啦
满足你生信分析计算需求的低价解决方案