根据提供的基因ID,注释出该基因的染色体信息+物理位置信息+基因功能注释
创新点:
1、根据基因定位或者测序关联的选择信号区间,快速知道该区间内有多少个基因,基因的注释信息
2、只需要提供区间信息或者基因ID信息
3、适用于玉米第五代基因组(其他版本自行修改)
4、基于R语言实现
一、提供基因ID进行批量注释
# 1. 基础设置 setwd("F:/01.候选区间/王画图") getwd() library(rtracklayer) # 2. 读取GFF3文件 gff <- import.gff3("F:/00.参考基因组/Zm-B73-REFERENCE-NAM-5.0_Zm00001eb.1.gff3") # 3. 只保留基因(过滤mRNA、exon、CDS等) genes <- gff[gff$type == "gene"] # ====================== 核心:从文本文件读取基因ID ====================== # 【修改这里】改成你的基因ID文本文件路径(一行一个ID,无标题) gene_id_file <- "F:/00.参考基因组/gene_list.txt" # 读取文本文件(自动去空行、去空格) target_gene_ids <- readLines(gene_id_file) target_gene_ids <- target_gene_ids[target_gene_ids != ""] # 去掉空行 # ====================== 根据基因ID匹配筛选 ====================== gff_target_genes <- genes[genes$ID %in% target_gene_ids] # ====================== 输出结果(格式完全不变) ====================== result <- data.frame( Chr = seqnames(gff_target_genes), Start = start(gff_target_genes), end = end(gff_target_genes), GeneID = gff_target_genes$ID, UNIPROT_NAME = gff_target_genes$UNIPROT_NAME ) # 控制台查看 cat("===== 目标基因信息 =====\n") print(result) # 输出CSV结果文件 write.csv(result, "F:/00.参考基因组/Candidate.gene.csv", row.names = F)二、根据目标区间位置提取候选基因ID和注释信息
# 1. 基础设置 setwd("F:/00.参考基因组") getwd() library(rtracklayer) # GFF文件路径】 gff <- import.gff3("Zm-B73-REFERENCE-NAM-5.0_Zm00001eb.1.gff3") # 只保留基因(过滤掉mRNA、exon、CDS等) genes <- gff[gff$type == "gene"] # 转换为data.frame便于ggplot2处理 #df_genes <- as.data.frame(genes) # 【你的目标区间】 chr_target <- "chr5" # 5号染色体 start_pos <- 13500000 # 区间起点 end_pos <- 14000000 # 区间终点 # ====================== 4. 筛选区间内基因 ====================== gff_in_region <- genes[ seqnames(genes) == chr_target & start(genes) >= start_pos & end(genes) <= end_pos ] # ====================== 5. 提取基因ID ====================== gene_ids <- gff_in_region$ID # ====================== 提取:ID + UNIPROT_NAME ====================== result <- data.frame( Chr = seqnames(gff_in_region), Start = start(gff_in_region), end = end(gff_in_region), GeneID = gff_in_region$ID, UNIPROT_NAME = gff_in_region$UNIPROT_NAME # 蛋白名称 ) # ====================== 6. 输出结果 ====================== cat("===== 玉米选定区间内所有基因ID =====\n") print(result) write.csv(result, "F:/00.参考基因组/Candidate.gene.csv", row.names = F)结果展示: