mcpField
R
rna-seq-analysis

rna-seq-analysis

github.com/awslabs数据与数据库6878 次安装4 周前更新
代码仓库

关于 rna-seq-analysis

为 RNA-seq 定量和差异表达分析提供决策逻辑与排错提示,适用于选择流程及配置 DESeq2 的用户。内容聚焦 STAR 与 Salmon 的取舍、链特异性验证和建模常见问题。

主要功能

  1. 01根据 BAM 需求选择 STAR 或 Salmon
  2. 02指导链特异性确认
  3. 03说明 Salmon 结果接入 DESeq2 的方法
  4. 04提示 DESeq2 设计公式与预过滤设置
  5. 05排查样本顺序和批次混杂问题

适用场景

  1. 01选择 RNA-seq 比对或定量流程
  2. 02确认文库链特异性后进行计数
  3. 03使用 DESeq2 分析差异表达

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/awslabs/hcls-agent-skills --skill rna-seq-analysis

安装后在 Claude Code 中输入/rna-seq-analysis确认已加载。

附带文件scripts/deseq2_contrast.py

详细介绍

RNA-seq 分析 — 流水线技能(轻量脚手架)

概述

添加用于选择定量路径(STAR 与 Salmon)、确定链特异性,以及规避大模型经常出错的 DESeq2 建模陷阱的决策逻辑。

用法

  • 在选择基于比对(STAR+featureCounts)还是无需比对(Salmon)的定量方法时启用
  • 在使用任一计数来源设置 DESeq2 时启用
  • 在排查计数异常偏低或 DE 信号较弱时启用

核心概念

决策逻辑

Need BAMs? (variant calling, fusions, novel transcripts)
├── YES → STAR two-pass + featureCounts
└── NO → Salmon (faster, lower RAM, bias-corrected)

Salmon output → DESeq2:
└── Use DESeqDataSetFromTximport (preserves length offset)
    └── NEVER round txi$counts and pass to DESeqDataSetFromMatrix

Filtering strategy (VQSR equivalent):
├── ≥30 samples → VQSR-like (default DESeq2 shrinkage works well)
└── <30 samples → still works, but pre-filter aggressively

链特异性判定(计数前必须验证):

试剂盒featureCounts -sSalmon -l
TruSeq Stranded / dUTP2ISR(PE)/ SR(SE)
Ligation / forward1ISF / SF
Unstranded0IU / U

使用 infer_experiment.py(RSeQC)或 Salmon 的 lib_format_counts.json 进行验证。

关键参数

参数值何时更改
--sjdbOverhangreadLength - 1(默认值为 100)读取长度不是 100bp 时
--twopassMode BasicDE 时始终启用仅在 QC 运行中为提升速度而跳过
Salmon --gcBias --seqBias始终启用Illumina 测序数据中绝不跳过
Salmon --validateMappings始终启用启用选择性比对
featureCounts -s取决于试剂盒务必通过实验数据验证
DESeq2 预过滤rowSums(counts >= 10) >= smallest_group浅度测序时调整 10
lfcShrink type"apeglm"任意对比时使用 "ashr"
设计公式~ batch + condition(感兴趣的变量放在最后)始终将感兴趣的项放在最后

常见错误

  • 错误: 猜测链特异性(-s),而不是根据实验数据验证
    正确: 运行 featureCounts 前,使用 infer_experiment.py 或 Salmon 的 lib_format_counts.json 检查
    原因: 链特异性设置错误会导致计数降低 2–10 倍,且 DE 信号较弱

  • 错误: 将归一化计数(TPM、FPKM、CPM)传给 DESeq2
    正确: 始终从原始整数计数开始
    原因: 归一化值会破坏负二项分布模型

  • 错误: 对 txi$counts 四舍五入后传给 DESeqDataSetFromMatrix
    正确: 使用 DESeqDataSetFromTximport(txi, ...),以保留长度偏移量
    原因: 四舍五入会丢弃针对转录本长度偏差的逐基因长度校正

  • 错误: 在设计公式中将感兴趣的变量放在第一位(~ condition + batch)
    正确: 将感兴趣的变量放在最后:~ batch + condition
    原因: DESeq2 默认检验最后一项

  • 错误: 认为 DESeq2 会重新排列样本以匹配顺序
    正确: 创建 DESeq 对象前,断言 stopifnot(all(colnames(cts) == rownames(coldata)))
    原因: 顺序不匹配时,DESeq2 会静默地错误标记样本

  • 错误: 跳过低计数基因的预过滤
    正确: 使用 rowSums(counts(dds) >= 10) >= smallest_group_size 进行过滤
    原因: 接近零的基因会增加运行时间,并削弱多重检验校正的效果

  • 错误: 对链特异性文库使用 STAR ReadsPerGene.out.tab 的第 2 列
    正确: 根据试剂盒使用第 3 列(正向)或第 4 列(反向)
    原因: 第 2 列为非链特异性数据;将其用于链特异性数据会使有效计数减半

  • 错误: 纳入比对读段少于 10M 或比对率低于 70% 的样本
    正确: 拟合前排除这些样本或将其标记出来
    原因: 低质量样本会扭曲 size factor 和离散度估计

  • 错误: 在 batch 与 condition 完全混杂时进行建模
    正确: 先检查 table(coldata$batch, coldata$condition)
    原因: 任何统计模型都无法分离完全相关的效应

回复格式

  • 先给出用户所需的命令或代码,再进行解释
  • 结构为:确认输入 → 可运行的代码 → 解释关键参数 → 注意事项
  • 每项任务提供一个完整可运行的示例;不要展示所有替代方案
  • 代码注释保持精简且实用(说明用途,而非存在原因)
  • 目标:50–100 行代码,并附简短说明

评论

支持 Markdown