首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【ChIP-seq分析】超级增强子系列2:ROSE准备gff文件:peak 信息文件转化为9列gff格式文件R代码

【ChIP-seq分析】超级增强子系列2:ROSE准备gff文件:peak 信息文件转化为9列gff格式文件R代码

作者头像
三兔测序学社
发布2025-12-24 15:58:25
发布2025-12-24 15:58:25
980
举报
代码语言:javascript
复制
# 处理子文件夹下*ChIP.txt文件的函数
simple_convert_to_gff <- function(input_dir = ".", recursive = TRUE) {
  # 获取所有符合条件的文件
  pattern <- "*_ChIP\\.txt$"
  files <- list.files(path = input_dir, pattern = pattern, 
                      full.names = TRUE, recursive = recursive)
  if (length(files) == 0) {
    cat("未找到匹配的*ChIP.txt文件\n")
    return(NULL)
  }
  cat("找到", length(files), "个匹配的文件:\n")
  print(files)
  # 对每个文件进行处理
  for (input_file in files) {
    cat("正在处理文件:", input_file, "\n")
    # 读取文件,跳过前33行
    data <- read.table(input_file, skip = 33, sep = "\t", 
                       stringsAsFactors = FALSE, comment.char = "")
    # 过滤掉包含下划线的染色体行
    # 假设染色体信息在第二列
    data_filtered <- data[!grepl("_|^chrM$|^chrEBV$|^chrY$", data[, 2]), ]
    # 确保输出文件在同一文件夹中
    output_dir <- dirname(input_file)
    # 提取文件名前缀(去掉ChIP.txt后缀)
    file_prefix <- sub("_ChIP\\.txt$", "", basename(input_file))
    output_file <- file.path(output_dir, paste0(file_prefix, "peak.gff"))
    # 直接构建GFF行
    gff_lines <- apply(data_filtered, 1, function(row) {
      paste(
        row[2],      # 第1列: chr (原始数据的第2列)
        row[1],      # 第2列: PeakID (原始数据的第1列)
        ".",         # 第3列: 用点表示缺失
        row[3],      # 第4列: start (原始数据的第3列)
        row[4],      # 第5列: end (原始数据的第4列)
        ".",         # 第6列: 用点表示缺失
        ".",         # 第7列: strand (使用点号)
        ".",         # 第8列: 用点表示缺失
        row[1],      # 第9列: PeakID (原始数据的第1列)
        sep = "\t"
      )
    })
    # 写入文件(不包含列名)
    writeLines(gff_lines, output_file)
    cat("转换完成!输出文件:", output_file, "\n")
    cat("转换了", length(gff_lines), "行数据\n\n")
  }
  cat("所有文件处理完成!\n")
}
# 批量处理特定文件夹的函数
batch_convert_chip_files <- function(input_dir = ".", recursive = TRUE) {
  simple_convert_to_gff(input_dir, recursive)
}
# 1. 处理当前目录及其子目录下的所有*ChIP.txt文件
simple_convert_to_gff()
# 2. 处理指定目录下的所有*ChIP.txt文件(不包括子目录)
simple_convert_to_gff("/path/to/your/files", recursive = FALSE)
# 3. 处理指定目录及其子目录下的所有*ChIP.txt文件
simple_convert_to_gff("/path/to/your/data")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 三兔测序学社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档