p_load(METAFlux, tidyverse)
### bulk Rnaseq
dir.create('./metaflux')
tpm <- read.csv('tpm.csv', row.names = 1)
data('human_gem', 'cell_medium', 'human_blood')
scores <- calculate_reaction_score(tpm)
flux <- compute_flux(mras=scores, medium = cell_medium)
### cubic root normalization to flux scores, optional
cbrt <- function(x) {sign(x) * abs(x)^(1/3)}
flux <- cbrt(flux)
### pathway level activity
pathway <- unique(unlist(human_gem$SUBSYSTEM))
pathway_score <- list()
for (i in pathway){
path <- i
activity_score <- c()
for (d in 1:ncol(flux)){
activity_score[d] <- mean(abs(flux[which(unlist(human_gem$SUBSYSTEM)==i),d]))
}
pathway_score[[i]] <- activity_score
}
all_pathway_score <- as.data.frame(do.call(rbind,pathway_score))
colnames(all_pathway_score) <- colnames(tpm)
pdf('./metaflux/pathway_flux.pdf', height = 18, width = 10)
mapal <- colorRampPalette(RColorBrewer::brewer.pal(11,"RdBu"))(256)
pheatmap::pheatmap(all_pathway_score, cluster_cols = F, color = rev(mapal), scale = "row",
cutree_rows = 2, gaps_col = 3, angle_col = 45)
dev.off()
write.csv(all_pathway_score, './metaflux/all_pathway_score.csv')
### differential analysis via limma
p_load(limma)
list <- gsub('_[0-9]+$','',colnames(all_pathway_score)) %>%
factor(., levels = unique(.), ordered = F)
list <- model.matrix(~factor(list) + 0)
colnames(list) <- c('ctrl', 'treat')
df.fit <- lmFit(all_pathway_score, list)
df.matrix <- makeContrasts(treat - ctrl, levels = list)
fit <- contrasts.fit(df.fit, df.matrix)
fit <- eBayes(fit)
res <- topTable(fit, n = Inf, adjust = 'fdr')
write.csv(res, './metaflux/pathway_score_diff.csv')
metaflux
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 国际黄金行情走势分析: 周一(3月8日)亚洲时段,现货黄金延续上周五纽约时段涨势,最高触及1714美元附近,目前交...
- 今天是小姐姐们的节日。 我老司机一次搞大以强悍忠诚的“女士用品”身份,在这里祝所有小姐姐们日进斗精。 如何用商业电...