批量火山图及其绘图

        这个批量火山图的批量原理是读取目录下的所有.txt文件,随后通过一个循环逐个处理这些文件,再输出到相应的_result文件夹下。并且代码循环中自带分组检测,能够识别列名中的字母来实现分组,因此只需要准备好表达矩阵即可,组内的同学可以使用学长学姐整理好的数据🥰,不过需要注意的是样本名不能重复,有重复的话可以手动编号一下。如果遇到很难处理的数据,可以先让ai写出一个小代码,将数据转化为输入数据的格式,再运行代码。

代码主体

1、数据读取和输入

        这里的Normal和Tumor变量用于分组,比如说在这里Normal的功能就是将所用行名中带N的归位正常组,Tumor将所有行名中带T的归为肿瘤组。如果使用TCGA的数据可以把这段代码改为:

Normal <- "01A"
Tumor <- "11A"

# 1. 安装和加载必要的包 --------------------------------------------------------
required_packages <- c("limma", "ggplot2", "pheatmap", "dplyr", "tidyr", "RColorBrewer", "stringr")

# 检查并安装缺失的包
new_packages <- required_packages[!(required_packages %in% installed.packages()[,"Package"])]
if(length(new_packages)) {
  message("正在安装缺失的包: ", paste(new_packages, collapse = ", "))
  install.packages(new_packages, dependencies = TRUE)
}

# 加载所有需要的包
suppressPackageStartupMessages({
  library(limma)
  library(ggplot2)
  library(pheatmap)
  library(dplyr)
  library(tidyr)
  library(RColorBrewer)
  library(stringr)
})

# 输入
setwd("/Users/blastora/Documents/Bioinformation_PROJECT/Volcano_Batch")
Normal <- "N|NORMAL|NORM"
Tumor <- "T|TUMOR|TUMOUR|TUM"

# 2. 主处理流程 --------------------------------------------------------------

# 获取当前目录下所有txt文件
input_files <- list.files(pattern = "\\.txt$", full.names = TRUE)

if(length(input_files) == 0) {
  stop("没有找到任何.txt文件")
}

2、循环主体

        代码运行的主体由一个for循囊括起来,达到自动化的目的


# 处理每个文件
for(input_file in input_files) {
  message("正在处理文件: ", basename(input_file))
  
  # 创建输出目录
  output_dir <- file.path(dirname(input_file), 
                          paste0(tools::file_path_sans_ext(basename(input_file)), "_results"))
  dir.create(output_dir, showWarnings = FALSE)
  
  # 1. 读取数据 --------------------------------------------------------------
  tryCatch({
    expr_data <- as.matrix(read.delim(input_file, row.names = 1, check.names = FALSE))
    message("数据维度: ", nrow(expr_data), " 基因 × ", ncol(expr_data), " 样本")
    
    # 2. 自动分组 ------------------------------------------------------------
    message("\n2. 自动检测样本分组...")
    
    # 转换为大写以防大小写不一致
    upp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值