跳转至

161_外泌体小RNA分析

一句话概述

外泌体小RNA分析通过sRNA-seq对外泌体中富集的miRNA、piRNA、tsRNA等进行测序和定量,利用miRDeep2发现新miRNA、预测靶基因并进行功能通路富集,是液体活检和细胞间通讯研究的重要手段。


核心知识点总览

知识点说明
外泌体(Exosome)30-150nm的细胞外囊泡,携带RNA/蛋白质
sRNA-seq小RNA测序,专门捕获18-40nt的小RNA
miRDeep2miRNA发现和定量的金标准工具
miRNA靶基因预测TargetScan/miRDB/miRanda预测miRNA靶标
差异表达DESeq2/edgeR分析组间差异小RNA
外泌体RNA种类miRNA、piRNA、tsRNA(tRNA片段)、lncRNA片段
功能通路靶基因的GO/KEGG富集分析
液体活检应用血清外泌体miRNA作为疾病生物标志物

各步骤详解

第一步:外泌体小RNA的特殊性

白话解释: 外泌体是细胞分泌出来的"小包裹",里面装着各种信号分子(主要是小RNA)。这些小RNA可以被其他细胞接收,改变接收细胞的基因表达——就像细胞间的"微信消息"。通过分析外泌体中的小RNA组成,可以了解细胞的通讯状态,甚至发现疾病生物标志物。

外泌体RNA组成: | RNA类型 | 长度 | 占比 | 功能 | |---------|------|------|------| | miRNA | 20-24nt | 40-50% | 靶基因沉默 | | tsRNA(tRF) | 14-40nt | 15-25% | 翻译调控 | | piRNA | 24-32nt | 5-15% | 转座子沉默 | | rRNA片段 | 多种 | 10-20% | 未完全清楚 | | lncRNA片段 | 多种 | 5-10% | 调控作用 |


第二步:sRNA-seq数据预处理

代码示例:

# === 质控和接头去除 ===
# sRNA-seq读长短(18-40nt),接头污染严重
fastp -i raw.fq.gz -o clean.fq.gz \
  --adapter_sequence TGGAATTCTCGGGTGCCAAGG \
  --length_required 18 \
  --length_limit 40 \
  --thread 8

# 或使用trim_galore (更适合sRNA)
trim_galore --small_rna --length 18 --max_length 40 \
  -o trimmed/ raw.fq.gz

# === 去除rRNA和tRNA序列 ===
bowtie -x rRNA_index --un non_rRNA.fq -S /dev/null clean.fq.gz
bowtie -x tRNA_index --un non_rRNA_tRNA.fq -S /dev/null non_rRNA.fq

# === 长度分布检查 ===
awk 'NR%4==2 {print length($0)}' clean.fq | sort -n | uniq -c | \
  awk '{print $2"\t"$1}' > length_distribution.txt
# 峰值应在21-23nt(miRNA)和30-32nt(piRNA)


第三步:miRDeep2 miRNA发现和定量

代码示例:

# === 安装miRDeep2 ===
conda install -c bioconda mirdeep2

# === Step 1: 比对到参考基因组 ===
# miRDeep2使用自己的mapper
mapper.pl clean.fq.gz -e -h -i -j -l 18 -m \
  -p hg38_index \
  -s reads_collapsed.fa \
  -t reads_mapped.arf \
  -v

# 参数:
# -e: 输入fastq格式
# -h: 去除3'adaptor(已去除可跳过)
# -l 18: 最小长度
# -m: 合并相同序列
# -p: bowtie索引
# -s: collapse后的reads(输出)
# -t: 比对结果ARF格式(输出)

# === Step 2: miRDeep2核心分析 ===
miRDeep2.pl \
  reads_collapsed.fa \
  hg38.fa \
  reads_mapped.arf \
  mature_ref.fa \
  mature_other.fa \
  precursor_ref.fa \
  -t Human \
  2> miRDeep2_report.log

# 输入文件说明:
# reads_collapsed.fa: collapse后的reads
# hg38.fa: 参考基因组
# reads_mapped.arf: 比对结果
# mature_ref.fa: 参考物种已知成熟miRNA(miRBase)
# mature_other.fa: 其他物种的成熟miRNA
# precursor_ref.fa: 参考物种前体miRNA

# === Step 3: 定量已知miRNA ===
quantifier.pl \
  -p precursor_ref.fa \
  -m mature_ref.fa \
  -r reads_collapsed.fa \
  -t hsa \
  -k

# 输出:
# miRNAs_expressed_all_samples*.csv: 表达量矩阵
# expression_*.html: 可视化报告


第四步:差异表达分析和靶基因预测

代码示例:

library(DESeq2)
library(multiMiR)

# === 差异miRNA分析 ===
count_matrix <- read.csv("mirna_counts.csv", row.names = 1)
col_data <- data.frame(
  condition = c(rep("Tumor", 5), rep("Normal", 5)),
  row.names = colnames(count_matrix)
)

dds <- DESeqDataSetFromMatrix(countData = count_matrix,
                               colData = col_data,
                               design = ~ condition)
dds <- DESeq(dds)
results <- results(dds, contrast = c("condition", "Tumor", "Normal"))
sig_mirnas <- results[which(results$padj < 0.05 & abs(results$log2FoldChange) > 1), ]
print(paste("差异miRNA数:", nrow(sig_mirnas)))

# === 靶基因预测 ===
# 使用multiMiR整合多个数据库
top_mirnas <- rownames(sig_mirnas)[1:10]
targets <- get_multimir(
  mirna = top_mirnas,
  table = "predicted",       # "predicted"或"validated"
  summary = TRUE
)

# 获取验证过的靶标
validated_targets <- get_multimir(
  mirna = top_mirnas,
  table = "validated",
  summary = TRUE
)

# === 功能富集分析 ===
library(clusterProfiler)
library(org.Hs.eg.db)

target_genes <- unique(targets@data$target_symbol)
# 转换为ENTREZID
gene_ids <- bitr(target_genes, fromType = "SYMBOL",
                  toType = "ENTREZID", OrgDb = org.Hs.eg.db)

# GO富集
go_result <- enrichGO(gene = gene_ids$ENTREZID,
                       OrgDb = org.Hs.eg.db,
                       ont = "BP",
                       pAdjustMethod = "BH",
                       qvalueCutoff = 0.05)

# KEGG富集
kegg_result <- enrichKEGG(gene = gene_ids$ENTREZID,
                           organism = "hsa",
                           pvalueCutoff = 0.05)

dotplot(go_result, showCategory = 20, title = "GO BP Enrichment of miRNA Targets")


第五步:miRNA-靶基因调控网络

代码示例:

library(igraph)
library(ggraph)

# 构建miRNA-target网络
network_data <- data.frame(
  miRNA = targets@data$mature_mirna_id,
  Target = targets@data$target_symbol,
  Score = targets@data$score
)

# 过滤高可信度互作
network_filtered <- network_data[network_data$Score > 0.8, ]

# 构建图
g <- graph_from_data_frame(network_filtered[, c("miRNA", "Target")], directed = TRUE)
V(g)$type <- ifelse(V(g)$name %in% network_filtered$miRNA, "miRNA", "mRNA")

# 可视化
ggraph(g, layout = "fr") +
  geom_edge_link(alpha = 0.3) +
  geom_node_point(aes(color = type, size = degree(g))) +
  geom_node_text(aes(label = name), size = 2, repel = TRUE) +
  scale_color_manual(values = c("miRNA" = "red", "mRNA" = "blue")) +
  theme_void() +
  labs(title = "miRNA-Target Regulatory Network")


实战命令

# === 完整外泌体sRNA-seq流程 ===
# 1. 质控
fastp -i raw.fq.gz -o clean.fq.gz --adapter_sequence TGGAATTCTCGGGTGCCAAGG \
  --length_required 18 --length_limit 40

# 2. miRDeep2
mapper.pl clean.fq.gz -e -h -l 18 -m -p hg38_idx -s collapsed.fa -t mapped.arf
miRDeep2.pl collapsed.fa hg38.fa mapped.arf mature.fa other_mature.fa hairpin.fa

# 3. 定量
quantifier.pl -p hairpin.fa -m mature.fa -r collapsed.fa -t hsa

# 4. 差异分析和靶基因 (R)
Rscript mirna_analysis.R --counts mirna_counts.csv --output results/

面试常问点

Q1:外泌体miRNA与细胞内miRNA有什么区别?

A: (1) 组成不同:外泌体中某些miRNA被选择性分泌(如miR-21, miR-155在外泌体中富集);(2) 浓度不同:外泌体中总RNA量少(ng级),miRNA占比更高;(3) 稳定性:外泌体保护内部RNA免受RNase降解,在体液中稳定存在;(4) 功能:外泌体miRNA可以远距离调控受体细胞基因表达(旁分泌/内分泌信号)。

Q2:sRNA-seq数据分析的关键质控指标?

A: (1) 读长分布峰值在21-23nt(miRNA)说明建库成功;(2) 接头去除率<50%(过高说明短片段太多);(3) 比对到基因组率>70%;(4) miRNA注释比例>30%(外泌体样本);(5) 重复序列比例:collapse后unique序列占总reads的20-50%是正常的。

Q3:miRDeep2如何发现新miRNA?

A: miRDeep2基于miRNA生物合成的特征:(1) 前体(pre-miRNA)形成稳定的茎环结构;(2) 成熟miRNA位于茎环的一臂上;(3) reads在前体上有特征性的"双峰"分布(5p和3p两臂)。算法先将reads比对到基因组,然后检测符合这些特征的区域,用贝叶斯评分判断是否是真实的新miRNA。

Q4:为什么外泌体miRNA适合做液体活检标志物?

A: (1) 非侵入性:可从血液、尿液等体液获取;(2) 稳定:外泌体保护miRNA免受降解,冻融稳定;(3) 特异性:不同细胞来源的外泌体携带不同miRNA组合;(4) 早期检测:肿瘤早期即有外泌体分泌改变;(5) 可量化:qPCR或sRNA-seq可精确定量。

Q5:如何验证miRNA靶基因关系?

A: 计算预测(TargetScan, miRDB)后需要实验验证:(1) 双荧光素酶报告基因(gold standard):将靶基因3'UTR克隆到报告载体,co-transfect miRNA mimic检测荧光抑制;(2) Western blot:过表达/抑制miRNA后检测靶蛋白变化;(3) AGO-CLIP/HITS-CLIP:免疫沉淀AGO蛋白结合的RNA,高通量鉴定全局靶标。


易错点

1. 接头去除不完全

错误: 读长分布无21-23nt峰,大部分reads偏长。 正确做法: 确认使用了正确的接头序列。sRNA文库的insert只有18-40nt,接头会被大量测序到。接头序列因试剂盒而异(Illumina TruSeq Small RNA默认接头: TGGAATTCTCGGGTGCCAAGG)。

2. 外泌体RNA提取不足

错误: 用常规Trizol提取外泌体RNA(回收率低)。 正确做法: 使用外泌体RNA专用试剂盒(如miRNeasy, exoRNeasy)或酚氯仿法+glycogen共沉淀。外泌体RNA总量极少(ng级),需要灵敏的提取方法。

3. 忽略isomiR和tRNA片段

错误: 只关注canonical miRNA,忽略isomiR变体和tsRNA。 正确做法: 外泌体中isomiR(3'端变异)和tsRNA(tRNA-derived small RNA)含量丰富。使用mirtop处理isomiR,使用MINTmap分析tsRNA。

4. 归一化方法不当

错误: 对sRNA-seq使用FPKM/TPM归一化。 正确做法: sRNA-seq推荐:(1) DESeq2内置的median-of-ratios归一化;(2) CPM(counts per million mapped to miRNA);(3) RPM(reads per million total reads)。不用FPKM因为小RNA长度几乎相同,长度校正无意义。

5. 靶基因预测过度信赖单一数据库

错误: 只用TargetScan预测就做功能分析。 正确做法: 综合多个数据库(TargetScan + miRDB + miRTarBase)取交集或使用multiMiR包整合。单一数据库假阳性率高(>50%)。优先使用实验验证的靶标(miRTarBase)。


补充知识

外泌体sRNA分析工具生态

工具功能语言
miRDeep2miRNA发现和定量Perl
sRNAbench综合小RNA分析Java/Web
Chimira在线miRNA分析Web
MINTmaptRNA片段分析Python
SPORTS1.1全面小RNA注释Perl/R
multiMiR靶基因整合查询R

外泌体数据库

  • ExoCarta: 外泌体内容物数据库
  • EVmiRNA: 外泌体miRNA数据库
  • Vesiclepedia: 细胞外囊泡数据库
  • miRBase: miRNA参考数据库