RNA编辑分析REDItools¶
一句话概述:RNA编辑是转录后A→I碱基修饰(测序中表现为A→G替换),REDItools/REDInet从RNA-seq数据中检测编辑位点,揭示基因调控的另一个维度。
核心知识点速览¶
| 概念 | 白话解释 |
|---|---|
| RNA编辑 | RNA转录后的碱基被修改,最常见的是A变成I |
| A-to-I编辑 | 腺苷(A)被ADAR酶脱氨变成肌苷(I),测序时读作G |
| ADAR酶 | 执行A-to-I编辑的酶家族(ADAR1, ADAR2, ADAR3) |
| 编辑水平 | 某位点被编辑的RNA分子比例(0-100%) |
| REDItools | 从RNA-seq检测RNA编辑位点的Python工具套件 |
| REDItools2 | REDItools的并行优化版本,适合大数据 |
| REDInet | 2025年新发布的深度学习编辑检测器,准确率>99% |
| REDIportal | 人类RNA编辑位点数据库(~1600万个位点) |
| Alu元件 | 重复序列,A-to-I编辑最集中的区域 |
| 编辑体编辑位点 | 编辑位点的全局图谱(editome) |
一、RNA编辑基础¶
1.1 A-to-I编辑的生物学意义¶
A-to-I RNA编辑的功能:
1. 密码子改变 → 蛋白质序列改变(重编码)
2. 剪接位点改变 → 影响可变剪接
3. miRNA靶位改变 → 影响miRNA调控
4. dsRNA结构改变 → 调控先天免疫应答
5. 影响RNA稳定性和定位
临床意义:
- 多种疾病与编辑异常相关(癌症、自身免疫、神经退行性疾病)
- ADAR1在肿瘤免疫中有重要作用
- 编辑水平可作为生物标志物
1.2 检测挑战¶
A-to-I编辑在测序中表现为 A→G 替换
但A→G替换也可能是:
① SNP(基因组层面的变异)
② 测序错误
③ 比对错误(特别是Alu重复区域)
区分RNA编辑 vs SNP 的策略:
- 配对DNA-seq:如果DNA是A但RNA是G → 编辑
- 数据库过滤:排除已知SNP(dbSNP/gnomAD)
- 链特异性信息:A-to-I只发生在特定链
- 深度学习(REDInet):从序列特征判断
二、REDItools分析流程¶
2.1 安装¶
# 安装REDItools2
git clone https://github.com/BioinfoUNIBA/REDItools2.git # 克隆仓库
cd REDItools2
pip install -r requirements.txt # 安装依赖
python setup.py install # 安装
# 安装依赖工具
conda install -c bioconda samtools # SAMtools
conda install -c bioconda pysam # pysam
conda install -c bioconda tabix # tabix
2.2 数据准备¶
# 1. RNA-seq数据比对(用STAR,支持剪接比对)
STAR --runThreadN 8 \
--genomeDir star_index/ \ # STAR索引目录
--readFilesIn reads_R1.fq.gz reads_R2.fq.gz \ # 测序文件
--readFilesCommand zcat \ # gzip文件需要zcat
--outSAMtype BAM SortedByCoordinate \ # 输出排序BAM
--outFileNamePrefix sample_ \ # 输出前缀
--twopassMode Basic # 两步比对(提高剪接准确性)
# 2. 排序和索引
samtools sort sample_Aligned.sortedByCoord.out.bam -o sample_sorted.bam # 排序
samtools index sample_sorted.bam # 索引
# 3. 去重复(可选但推荐)
picard MarkDuplicates \
INPUT=sample_sorted.bam \
OUTPUT=sample_dedup.bam \
METRICS_FILE=dedup_metrics.txt \
REMOVE_DUPLICATES=true # 去除PCR重复
samtools index sample_dedup.bam # 重新索引
2.3 REDItools2运行¶
# ===== 场景1:有配对DNA-seq数据(最准确) =====
python REDItools2.py \
-f sample_rna.bam \ # RNA-seq BAM文件
-r hg38.fa \ # 参考基因组
-g sample_dna.bam \ # DNA-seq BAM文件(配对)
-o output_table.txt \ # 输出文件
-t 8 \ # 线程数
-q 30 \ # 最小比对质量
-bq 25 \ # 最小碱基质量
-c 10 \ # 最小覆盖深度
-m 0 # 同源位点质量
# ===== 场景2:无配对DNA(需要额外过滤) =====
python REDItools2.py \
-f sample_rna.bam \
-r hg38.fa \
-o output_table.txt \
-t 8 \
-q 30 \
-bq 25 \
-c 10 \
-S # 链特异性模式
# 结果列说明:
# Region: 染色体
# Position: 位置
# Reference: 参考碱基
# Strand: 链
# Coverage: 覆盖深度
# Frequency: 编辑频率(0-1)
# AllSubs: 所有替换类型及其数量
2.4 编辑位点过滤¶
# REDItools输出需要严格过滤以减少假阳性
# 过滤步骤:
# 1. 只保留A→G替换(A-to-I编辑在测序中表现为A→G)
awk '$4=="A" && $5~"G"' output_table.txt > AG_sites.txt # 过滤A→G
# 2. 排除已知SNP
# 下载dbSNP数据
# wget https://ftp.ncbi.nlm.nih.gov/snp/organisms/human_9606/VCF/All_20180418.vcf.gz
bedtools intersect -v \
-a AG_sites.bed \
-b dbSNP_common.bed \
> filtered_no_snp.txt # 去除SNP位点
# 3. 排除简单重复区域的假阳性
bedtools intersect -v \
-a filtered_no_snp.txt \
-b simpleRepeats.bed \
> filtered_final.txt
# 4. 保留覆盖深度足够的位点
awk '$6 >= 20' filtered_final.txt > high_coverage_sites.txt # 覆盖≥20
三、REDInet深度学习检测(2025新方法)¶
# REDInet使用时序卷积网络(TCN)分类编辑位点
# 训练数据来自REDIportal的>900万个已知编辑位点
# 安装REDInet
pip install redinet # 安装
# 使用REDInet进行编辑位点分类
# 步骤1:用REDItools2预处理BAM文件
# 步骤2:用REDInet对候选位点进行分类
# REDInet特点:
# - 不需要配对DNA数据
# - 分析101碱基窗口的核苷酸频率
# - 训练准确率 >99%
# - 独立验证集准确率 >96%
# - 输出每个位点的编辑P值
四、R语言下游分析¶
# 读取REDItools输出
editing_sites <- read.delim("filtered_editing_sites.txt") # 读取编辑位点
# 编辑水平分布
library(ggplot2)
ggplot(editing_sites, aes(x = Frequency)) +
geom_histogram(binwidth = 0.05, fill = "steelblue") + # 直方图
labs(x = "Editing Level", y = "Number of Sites",
title = "Distribution of A-to-I Editing Levels") +
theme_minimal()
# 基因组区域注释
library(GenomicRanges)
library(TxDb.Hsapiens.UCSC.hg38.knownGene)
# 将编辑位点注释到基因组区域
sites_gr <- GRanges(
seqnames = editing_sites$chr,
ranges = IRanges(start = editing_sites$pos, width = 1),
strand = editing_sites$strand
)
# 与Alu元件重叠分析
# 大部分A-to-I编辑位于Alu重复序列中
alu_regions <- read.delim("Alu_repeats.bed", header = FALSE)
alu_gr <- GRanges(seqnames = alu_regions$V1,
ranges = IRanges(start = alu_regions$V2, end = alu_regions$V3))
overlaps <- findOverlaps(sites_gr, alu_gr)
alu_pct <- length(unique(queryHits(overlaps))) / length(sites_gr) * 100
cat("Alu区域编辑位点占比:", round(alu_pct, 1), "%\n")
# 正常情况下应该 >90%
五、与REDIportal数据库比较¶
# REDIportal (2025版) 收录了~1600万个A-to-I编辑位点
# 来自GTEx项目 >9000个RNA-seq样本
# 下载REDIportal数据
# https://rediportal.unicampus.it/
# 比较自己的编辑位点与数据库
rediportal <- read.delim("REDIportal_hg38.txt") # 读取数据库
# 找已知编辑位点
known_sites <- merge(
editing_sites, rediportal,
by = c("chr", "pos"),
all.x = TRUE
)
known_pct <- sum(!is.na(known_sites$rediportal_id)) / nrow(known_sites) * 100
cat("已知编辑位点占比:", round(known_pct, 1), "%\n")
# 比例越高说明检测结果越可靠
常见报错与解决¶
| 报错信息 | 原因 | 解决方案 |
|---|---|---|
pysam: truncated BAM | BAM文件损坏 | 重新排序和索引 |
Too many false positives | 过滤不够严格 | 增加覆盖深度要求,排除SNP |
No A-to-G sites found | 链特异性设置错误 | 检查-S参数和链信息 |
REDItools2: memory error | 大基因组内存不足 | 分染色体运行或用并行模式 |
Low Alu overlap | 可能非人类数据 | 使用对应物种的重复序列注释 |
速查表¶
# REDItools分析流程
STAR比对 → samtools排序/索引 → REDItools2检测
→ 过滤SNP → 过滤低质量 → REDIportal验证 → 下游分析
# 关键过滤标准
替换类型: 只保留A→G(A-to-I编辑)
覆盖深度: ≥20x
碱基质量: ≥25
比对质量: ≥30
排除: dbSNP已知变异、简单重复区域
# 工具选择
有配对DNA: REDItools2(最准确)
无配对DNA: REDItools2 + 严格过滤 + REDInet验证
深度学习: REDInet(2025年,不需要DNA数据)
# 正常人类编辑位点特征
总位点数: ~1600万(REDIportal)
Alu区域占比: >90%
最常见区域: 3'UTR、内含子
编码区编辑: 较少但功能影响大
# ADAR酶家族
ADAR1: 广泛表达,编辑Alu重复序列
ADAR2: 主要在脑中表达,编辑编码区
ADAR3: 无催化活性,可能是负调控
面试高频问题¶
Q1:A-to-I RNA编辑的机制是什么?¶
答:ADAR(作用于RNA的腺苷脱氨酶)家族酶识别双链RNA(dsRNA)结构,将其中的腺苷(A)脱氨基转变为肌苷(I)。I在翻译时被核糖体识别为鸟苷(G),因此在测序中表现为A→G替换。ADAR1主要编辑Alu重复序列形成的dsRNA,ADAR2主要编辑编码区的特异性位点(如谷氨酸受体GluR-B的Q/R位点)。
Q2:如何区分RNA编辑和SNP?¶
答:三种策略:①最直接——配对DNA测序,如果DNA是A但RNA是G则为编辑;②数据库过滤——排除dbSNP/gnomAD中的已知变异位点;③统计特征——RNA编辑的编辑水平通常<100%(因为不是所有RNA分子都被编辑),纯合SNP的替换频率接近100%。2025年的REDInet用深度学习从周围序列上下文特征直接分类,准确率>96%,不需要DNA数据。
Q3:为什么大部分编辑位点在Alu序列中?¶
答:ADAR酶需要识别双链RNA(dsRNA)结构。Alu是灵长类特有的约300bp短散在核元件(SINE),基因组中有>100万个拷贝。当两个反向Alu元件位于同一个pre-mRNA中时(如两个相邻内含子中),它们的互补序列会折叠形成dsRNA结构,被ADAR识别并大量编辑。因此>90%的人类A-to-I编辑位于Alu序列中。
Q4:RNA编辑在癌症中有什么作用?¶
答:①ADAR1在多种肿瘤中过表达,促进肿瘤免疫逃逸——通过编辑dsRNA防止其激活PKR和MDA5等先天免疫传感器;②特定编辑事件改变蛋白功能——如AZIN1编辑在肝癌中获得功能性突变;③编辑水平的全局改变可作为生物标志物;④ADAR1已成为免疫治疗增效的潜在药物靶点——抑制ADAR1可以增强免疫检查点抑制剂的效果。
Q5:REDItools和SPRINT等其他工具有什么区别?¶
答:REDItools是最经典的工具,支持配对DNA和无配对DNA模式,产出全面但需要大量后续过滤。SPRINT专门为无配对DNA设计,利用重复序列特征减少假阳性。2025年新推出的REDInet用深度学习取代了传统的经验过滤规则,训练集来自>900万个已验证的编辑位点(REDIportal),准确率>96%且不需要DNA数据。实际使用中推荐REDItools2预处理+REDInet分类的组合方案。